Arduino Uno R3/Arduino Mega 2560 R3 + TFT Display + Esp8266 (Esp-01)
- Esp8266 Library
- Kuman TFT Display Shield Libraries
- Arduino JSON
- Arduino JSON version 5.13.5 worked for me
This project assumes you have some basic knowledge when it comes to using both the Esp8266 WiFi Module and the Kuman TFT Display Shield.
- This project uses OpenWeathers API to access online data. Go to OpenWeather.org to setup a free account and get your API key.
- In the "TFT_ESP_SCRAPPER.ino" file you will have to change a fiew things.
- Input your Wifi Network credentials in ssid & password
- Input your API link with your city ID (& other parameters) as well as the API key
- You can use ArduinoJson which is a parsing assistant to break down the Json file
- There is an extra box for whatever other API you want to scrape. Some APIs I would recommend:
- Unfortunately I attempted to scrape a (https) snowday predictor but it never ended up working.
The TFT display shield consumes all the pins when directly mounted on the Arduino Uno R3 so instead follow this wiring scheme:
| TFT Display | Arduino | Mega |
|---|---|---|
| 5V | 5V | 5V |
| 3.3V | 3.3V | 3.3V |
| Ground | Ground | Ground |
| LCD_DO | 8 | 8 |
| LCD_D1 | 9 | 9 |
| LCD_D2 | 2 | 2 |
| LCD_D3 | 3 | 3 |
| LCD_D4 | 4 | 4 |
| LCD_D5 | 5 | 5 |
| LCD_D6 | 6 | 6 |
| LCD_D7 | 7 | 7 |
| LCD_RST | A4 | A4 |
| LCD_CS | A3 | A3 |
| LCD_RS | A2 | A2 |
| LCD_WR | A1 | A1 |
| LCD_RD | A0 | A0 |
| SD_SS | 10 | 53 |
| SD_DI | 11 | 51 |
| SD_DO | 12 | 50 |
| SD_SCK | 13 | 52 |
- View the documentation of both the board and the GUI library to familiarize yourself with it. Walk throught the examples in the GUI library specifically the graphics and SD card examples. You can also reference the GUI documentation for syntax.
- The SD card does not work for the Arduino Mega when it is mounted as a shield. It requires you to wire the SD pins to (50-53) because they support SPI.
To flash the WiFi Module ensure you have the following wirings connected:
| Esp8266 | Arduino |
|---|---|
| VCC | 3.3v |
| Ground | Ground |
| Tx | Tx |
| Rx | Rx |
| CHPD(Enable) | 3.3v |
| GPIO | Ground |
| Reset - Ground |
Arduino IDE setup:
- In File/Preferences/Additional Boards Manager URLs:, add the following URL, http://arduino.esp8266.com/stable/package_esp8266com_index.json
- In Tools/Boards click on Board Manager and download the Esp8266 library. I used version 2.5 because it was the only library that worked with my module
- Change the Baudrate of the board in the serial monitor and Board Manager. Mine worked ad 115200
- Select generic Esp8266 module and upload the code.
- Once the code is uploaded open the Serial Monitor and check what the board is outputting
- When flashing the WiFi Module with new code ensure you unplug the VCC power cable and replug it back in. This Should reboot the WiFi Module into Flash mode while clearing its memory
To upload code to the Arduino board ensure you have the following wirings connected:
| Esp8266 | Arduino |
|---|---|
| VCC | 3.3v |
| Ground | Ground |
| Tx | Tx |
| Rx | Rx |
| CHPD(Enable) | 3.3v |
| GPIO | Ground |
| Reset - Nothing |
Arduino IDE setup:
- Ensure the TFT libraries are imported
- In Tools/Boards change the board to Arduino Uno
- Upload the code
- Once the code is uploaded Switch the Tx and Rx cables. This will allow the Arduino board to receive and transmit data to the TFT display
- Once you are finished all the above steps Switch the GPIO pin on the Esp8266 to 3.3v. This ensures that it boots up into a none flash mode and reads the code in its flash memory.
- This project is still being completed...
- This display does not support the degrees symbol
- If you decide to change the BMP images familiarize yourself with the libraries documentaiton on Bitmaps because it is a little complicated.
- The sketch became too large for an Arduino Uno R3 (32K bytes) so I have upgraded to an Arduino Mega.

