An IoT weather station built on the TM4C123 LaunchPad that fetches real-time weather data from the OpenWeatherMap API and displays it on a color LCD.
Course: CECS 447 — Embedded Systems, Spring 2024
Team: Nathan Wong, Youssef Shafeek, George Elassal
The system connects to a Wi-Fi access point via the CC3100 SimpleLink module, accepts user input through a serial terminal (TeraTerm), queries openweathermap.org for weather data, and renders the results — including animated weather icons — on an ST7735R 128×160 color LCD.
- Query weather by city name, city ID, geographic coordinates, or ZIP code
- Displays temperature, min/max temp, humidity, and weather description
- Animated weather icons for Rain, Clouds, and Clear conditions
- Dual output: ST7735 color LCD + TeraTerm serial terminal
- UART-based user input interface
| Component | Description |
|---|---|
| TM4C123 LaunchPad | Main microcontroller |
| CC3100 SimpleLink | Wi-Fi module for internet connectivity |
| ST7735R LCD | 128×160 color display |
Pin connections: GND, VCC, Reset, D/C, TFT_CS, MOSI, SCK, LITE (see schematic in project report)
- TivaWare / TM4C123 driverlib
- CC3100 SimpleLink SDK
- ST7735 LCD driver (
ST7735.c) - OpenWeatherMap API (free account required)
- Create a free account at openweathermap.org and obtain an API key.
- In
ST7735main.c, update the following defines:Replace the#define SSID_NAME "YourNetworkName" #define SEC_TYPE SL_SEC_TYPE_WPA #define PASSKEY "YourPassword"
APPIDstring with your own API key. - Build and flash the project onto the TM4C123 LaunchPad.
- Open TeraTerm at 115200 baud.
- Press Reset on the board — a menu will appear.
Welcome to my Embedded Weather Quester!
Please choose your query criteria:
1. City Name
2. City ID
3. Geographic Coordinates
4. Zip Code
Select an option, enter the requested input, and weather data will be displayed on both the LCD and terminal. Press Reset to query a new city.
├── ST7735main.c # Main application logic (Wi-Fi, HTTP, UART, LCD output)
├── ST7735.c # ST7735R LCD driver
├── ST7735.h # LCD driver header
├── bmps.h # Bitmap data for weather animations
└── README.md
This project was developed for academic purposes at California State University, Long Beach.