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.


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


Adafruit Feather HUZZAH with EPS8266 Arduino Libraries

If you're new to the Adafruit Feather HUZZAH EPS8266, 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. You can manually install them by downloading the direct links below, or use the Library Manager in the Arduino IDE to search and install them.

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!

Obtain Wunderground API Key

The arduino sketch uses the Wunderground API to pull weather data. You'll need to sign up and register an account with Wunderground.com It's completely free. Once registered and logged in, go to the API section of the site and create an API key. Copy it to your clipboard and save it. It will need to be pasted in the settings.h file.

Register Account

Goto the registation page and enter your email, desired username, password and agree to the terms of service.

Get Your API Key

Once registered, goto the API developer page and choose the Stratus Plan (it's free). Then, click on the "Purchase Key" button to continue.

Register Your API Key

Now you'll need to fill out the form by entering your credentials and agreeing to the terms of service. Click, Purchase Key when you're finished.

Retrive API Key

You'll be presented with your API Key. Copy and save it somewhere safe – You can always login and retrive your API key.



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 "Wunderground Underground" section. Here, you'll need to enter your Wunderground API key, desired language, country, and city. The format of the city includes the state, so reference the sample code below.

// Wunderground Settings
const boolean IS_METRIC = false;
const String WUNDERGRROUND_API_KEY = "api_key_here";
const String WUNDERGROUND_CITY = "FL/Royal_Palm_Beach";

Sleep / Power Conservation

The display is programmed to turn off after 10 seconds. When the display is tapped, it will automatically turn back on. You can adjust the "awake" time by adjust the delay value in the code (found in the weather_station_color.ino file).

 // for AWAKE_TIME seconds we'll hang out and wait for OTA updates
    for (uint16_t i=0; i<AWAKE_TIME; i++  ) {
      // Handle OTA update requests

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)
  • 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.

Initial Startup

The first time the Arduino Sketch runs, it will turn the ESP8266 into an access point. The display will instruct you to connect to the ESP8266 WiFi access point.

Connect to ESP8266

You should see the ESP8266 listed in your available WiFi network. Select "ESP8962600". No password is needed.

Configure WiFi

Once connected, your computer will automatically launch a Join WiFi login page. You'll have the option to scan for available WiFi networks or enter it manually.

Enter WiFi Credentials

Choose your preferred WiFi network and enter your password. Then click on the save button.

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? :-)

3D Printing

 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.