Advanced ESP32 Internet Weather Station with 5-day Forecast
2023-06-16 | By Mirko Pavleski
License: General Public License LCD / TFT Arduino ESP32
A weather station typically includes sensors that measure various environmental factors, and data collected by these sensors is then utilized to predict the weather for the next few hours or days. In this case the data is taken from Opeweathermap where we can create a free API key, so the device contains a minimum number of components. Some time ago I happened to watch a video with this weather station. The author of this project is Andrey Ushakov , and all credits go to him. He also provided a link to the code. However, the archive is full of many different versions, and other data. In addition, the code is relatively complex and has too many options, such as the type of microcontroller used, MP3 player, FM radio, support for external sensors, different types of displays, the option of two displays for greater visibility, infrared control, calendar, and many others. It was really hard to navigate through all the code versions, options, and information.
So, I decided to make and document this project in a little more detail, so that anyone can make it in no time. At the same time, I decided to leave out all accessories and options, and stick to the basic purpose of the device which is just an advanced weather station with a big clock. I say advanced, because it contains all possible weather information, including a five-day forecast.
As I mentioned before, the device is extremely simple to make and consists of only few components:
- Esp32 dev module microcontroller board
- 2.8 Inch TFT color Display with IL9341 control chip
- and one Button, or as in my case, a metal plate connected to the specified pin of the ESP32
Now let's follow the order and method of installation of the microcontroller. First, you need to install the ESP32 board files in Arduino IDE.
1. In your Arduino IDE, go to File> Preferences
2. Enter the following into the “Additional Board Manager URLs” field:https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json Then, click the “OK” button:
3. Open the Boards Manager. Go to Tools > Board > Boards Manager…
4. Search for ESP32 and press install button for the “ESP32 by Espressif Systems“. Just to mention that in my case I used the Arduino core for ESP32 ver.2.0.4 :
5. That’s it. It should be installed after a few seconds.
Next, the ESP32 filesystem uploader should be installed on the Arduino IDE.
1. Go to the given page and click the ESP32FS-1.0.zip file to download. https://github.com/me-no-dev/arduino-esp32fs-plugin/releases/
2. Find your Sketchbook location. In your Arduino IDE, go to File > Preferences and check your Sketchbook location.
3. Go to the sketchbook location, and create a tools folder
4. Unzip the downloaded .zip folder. Open it and copy the ESP32FS folder to the tools folder you created in the previous step.
5. Finally, restart your Arduino IDE.
To check if the plugin was successfully installed, open your Arduino IDE. Select your ESP32 board, go to Tools and check that you have the option “ESP32 Sketch Data Upload“.
As for the Arduino IDE, I specifically used version 1.8.16. Next, all the libraries provided in the library folder should be installed. Just to emphasize that in order to compile the code without errors the given versions of libraries need to be installed. If you previously had newer or older versions, they should be deleted. Also, in this folder there is a modified E TFT SPI library that matches the given schematic diagram. Next, in the text file "data.txt" located in the "meteo" folder, enter the data for the API key that we previously generated on the Openweathermap page. Then in the Arduino IDE we open the meteo.ino sketch located in the folder of the same name, compile it, and upload it to the microcontroller. If during compilation an error appears with the description that there is not enough space, we need to go to Tools-Partition Scheme, and select Huge APP. With this step, the initial installation is completed successfully and when starting the device, a certain message appears on the screen.
Based on this message, we need to connect with a smartphone to the Access Point with a name "ESP-Meteo" and password is 11111111. Then, enter the address 192.168.11.11 in a web browser. When the page opens, we enter the credentials from our local Wi-Fi network in the blank fields.
With this step, the complete installation ends. Now we restart the device, and after a certain time information should appear on the display.
This is the main screen with basic information. It contains a medium-sized clock, date, current weather with UV index, wind speed and direction and air pressure, sunrise and sunset time, forecast for the next 3 and 6 hours, as well as for the next four days. Really a lot of useful weather information on one screen.
By touching the metal plate on top of the device, we move through several screens containing different weather information. Below you can see screenshots of these screens:
And finally, a short conclusion. This is probably the most advanced weather station for the construction of which instructions can be found on the Internet, especially if you know that the device I presented in the video is only a small part of the whole project. Also, this is a very good example of how a great device can be made with very little hardware and good software. The device is installed in a suitable box made of PVC material with a thickness of 5 mm and covered with self-adhesive colored wallpaper. UPDATE:
The code also contains a mini analog clock and internet radio. This menu is accessed by a long click from any previous condition. In order to enter Internet stations according to our own desire, we need to modify the text file "i_stat" which is located in the "meteo" folder. The digital audio signal is generated on pins 25 and 26 and we need to use an audio decoder chip and small audio amplifier. For example, MAX98357 audio decoder with amplifier board. Also, with a small modification of the code, high-ohm headphones can be connected directly to the microcontroller.
Due to the size, I could not upload the code here, so you can download it at:
Libraries: https://rb.gy/3xpt1
Have questions or comments? Continue the conversation on TechForum, DigiKey's online community and technical resource.
Visit TechForum