WUnderground no longer provides API keys for free so we've updated the code in this guide to use the newer OpenWeatherMap code, the assembly is the same but the final graphics will differ!

Weather Station

In this project, we'll learn how to make a DIY fully featured weather station using an ESP8266 and a 2.4" TFT touchscreen display. This project pulls weather data using the Wunderground API. It displays the date, time, current weather conditionals, 4-day forecast and even moon phases.

This great code is by Daniel Eichhorn - we just made a lovely case for it!

Prerequisite Guides

We recommend walking through the guides listed here to get a better understanding of the components used in this project.

Parts

You'll need the following parts to build this project.

Tools & Supplies

  • Soldering Iron & Solder
  • 3D Printer & Filament
  • microUSB Data Cable
  • 30AWG Silicone Coated Stranded Wire
WUnderground no longer provides API keys for free so we've updated the code in this guide to use the newer OpenWeatherMap code, the assembly is the same but the final graphics will differ!

Adafruit Feather HUZZAH with ESP8266 Arduino Libraries

If you're new to the Adafruit Feather HUZZAH ESP8266, you'll need to install the board and libraries in order to compile and upload code to it using the Arduino IDE. Follow the guide below to install the board and libraries, then come back here once you've successfully installed it.

The guide walks you through installing the Arduino IDE as well.

Download & Install Arduino Libraries

You'll need to download and install a few libraries in order to compile the sketch.

The Adafruit libraries are in the library manager so use that to install them:

If using an earlier version of the Arduino IDE (pre-1.8.10), locate and install Adafruit_BusIO (newer versions handle this prerequisite automatically).

Then back to…

Arduino Sketch

Download the Arduino Sketch by clicking the green button below. 

The original software was written by Daniel Eichhorn @ http://blog.squix.ch we made some changes to make it plug-n-play with this setup!

Settings 

You'll need to manually adjust a few settings in order to properly display weather conditions from your area. In the settings.h file, look for the "WIFI SSID" section. Here, you'll need to enter your WiFi SSID & Password

// Setup
#define WIFI_SSID "yourssid"
#define WIFI_PASS "yourpassw0rd"
#define WIFI_HOSTNAME "ThingPulse-weather-station-color"

Then, lower down find

String OPEN_WEATHER_MAP_LOCATION = "Zurich,CH";

and change it to say

String OPEN_WEATHER_MAP_LOCATION = "New York,US";

Finally, you can set your timezone at this section by adjusting the UTC offset for your location - if you have to deal with DST, there's also code to set that as well!

#define UTC_OFFSET +1
struct dstRule StartRule = {"CEST", Last, Sun, Mar, 2, 3600}; // Central European Summer Time = UTC/GMT +2 hours
struct dstRule EndRule = {"CET", Last, Sun, Oct, 2, 0};       // Central European Time = UTC/GMT +1 hour

// Settings for Boston
// #define UTC_OFFSET -5
// struct dstRule StartRule = {"EDT", Second, Sun, Mar, 2, 3600}; // Eastern Daylight time = UTC/GMT -4 hours
// struct dstRule EndRule = {"EST", First, Sun, Nov, 1, 0};       // Eastern Standard time = UTC/GMT -5 hour

Uploading Sketch to Adafruit HUZZAH with ESP8266

Once your adjustments have been made, you can upload the sketch to the board. Before you do, goto Tools > Board and select Adafruit HUZZAH ESP8266. Then, check the varies options below:

  • CPU Frequency: 80 MHz
  • Flash Size: 4M (3M SPIFFS) - this is not default!
  • Upload Speed: 115200

Plug in a microUSB data cable into the board and connect it to a USB port on your computer. Under the Port section, in the Tools menu, you should see the board listed. (If you're on a Mac, it will be listed as /dev/cu.SLAB_USBtoUART.)

With those options selection, you can now upload the code to the board by clicking the upload button. You'll see the status of the upload in the black window on the bottom of the Arduino IDE.

Connected ESP8266 WiFi

The ESP8266 will then automatically download the assets (weather condition icons) to the board. Once it's finished, it'll automatically display the date, time, weather, and moon phases. Pretty cool, huh? :-)

 Design Files

 You can download the files below.

Slice Settings

Depending on your 3D printer, you may need to adjust the slice settings. We tested the enclosure  on a Sigma BCN3D, Deltaprintr Go and a Printrbot Play. They do not require any support material and are oriented to print "as is".

  • Nozzle: 0.4mm
  • Extrusion Multiplier: 1.0
  • Extrusion Width: 0.48mm
  • Layer Height: 0.2mm
  • Nozzle Temperature: 220c

Fusion 360 Design Archive

You can remix the design if you'd like to make any adjustments or reuse components. 

Solder Headers onto Adafruit Feather HUZZAH

First, we'll need to solder on plain male headers onto the pins of the Adafruit Feather HUZZAH. You can follow the detailed instructions on the Adafruit Feather HUZZAH guide.

Mount 2.4" TFT Display to Adafruit Feather HUZZAH ESP8266

With the male headers now soldered to the Adafruit Feather HUZZAH, we can mount it to the back of 2.4" TFT FeatherWing. Line up the pins with the header and press them together until they're fully seated. 

Turn on TFT Display

You'll need to set the slide switch on the back of the display to ON.

Connect Battery (Optional)

If you'd like the Weather Station to be portable, you can connect a battery. Here, we have a 2000mAh lithium ion battery. Plug in the male JST connector to the female JST port on the Adafruit Feather HUZZAH.

Connect Slide Switch (Optional)

If you'd like to turn off the circuit without having to remove the display from the case, you can break out the slide switch. You'll need to wire up a a slide switch. It will need to connect to the EN and GND labeled pins on the 2.4" TFT FeatherWing. Here, we connected the terminals of slide switch to jumper cables. The jumpers can plug into the female headers on the 2.4" display.

I used the tips from male jump cables to create a "slim" version by removing the plastic housing and trimming it short. Then, I soldered the tips to pieces of wire – This way, I can easily plug into the female header on the TFT display.

Install TFT DIsplay to Enclosure Cover

The enclosure cover has four standoffs that match up with the mounting holes on the 2.4" display. Orient the display and the cover so the side with black strip lines up with the opening in the lip. 

Install Cover to Case

If you added a battery, place it in the enclosure. Notice the two openings in the enclosure. They're for the microUSB port and the  microSD card. Orient the Adafruit Feather HUZZAH so the ports line up with the openings on enclosure. Lay the cover over the enclosure and press the two together. The case has two little nubs on the edge that will click into the dimples on the lip of the cover.

Finished Assembly!

And thats it! You can mount the case in all sorts of ways. For example, you can attach a magnet to the back to stick it on metal surfaces such as your refridgerator.

This guide was first published on Dec 07, 2016. It was last updated on Mar 08, 2024.