Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

ESP8266-Based E-Paper Wi-Fi Weather Station

DZone's Guide to

ESP8266-Based E-Paper Wi-Fi Weather Station

With an ESP8266, some e-paper, magnets, and a display, see how to build a low power weather station you can put on the fridge!

· IoT Zone ·
Free Resource

I’m a fan of all kind of weather stations. When Daniel Eichhorn tweeted about his new version using an e-paper display module, I immediately preordered one. I decided to build a station with a custom enclosure, so here is my version of a 3D-printed version featuring magnets so it can be attached to the fridge:

E-Paper Weather Station

E-paper weather station

Using e-paper for a weather station is an ideal solution, as the data does not need to be updated often. By default, the station reaches out every 20 minutes for new data over Wi-Fi and then updates the display. Daniel Eichhorn already has published kits for the OLED (see Wi-Fi OLED Mini Weather Station with ESP8266) and touch display (see Wi-Fi TFT Touch LCD Weather Station with ESP8266). I like them both, but the TFT one is especially power-hungry and not really designed to work from batteries. What I would like is a station that can run for weeks.

The e-paper weather station from Squix/Daniel Eichhorn is available in two versions:

Features:

  • Waveshare 2.9″ E-Paper 296×128 (black, white)
  • ESP8266 Wi-Fi module
  • JST LiPo connector and charging circuit (100 mA/h)
  • 3 user buttons
e-paper module front

e-paper module front

Because the ‘lite’ kit was supposed to be available earlier, I ordered that version. I wanted to build custom enclosure anyway.

Setup

Daniel provides extensive and well-documented software for the module on GitHub. The setup guide is available at https://blog.squix.org/espaper-setup-guide.

Because I was familiar with his other weather stations, I had the module up and running in less than 30 minutes.

Because the ‘lite’ kit does not include a programmer (actually a USB to Serial Converter), I ordered a CP2102 module.

mini USB-2-UART converter

Mini USB-2-UART converter

And I did not need to build an adapter cable:

programming the ESP8266

Programming the ESP8266

Display

The display is attached to the PCB with double-sided tape, but I noticed that in the factory, it had been slightly misaligned:

Misaligned Display

Misaligned Display

After consulting Daniel Eichhorn, I was able to carefully remove the display with a razor knife:

Warning: This can easily break the display, do this only on your own risk!

Removed Display

Removed display

According to the label on the backside of the display, it must be the https://www.waveshare.com/2.9inch-e-paper.htm

Enclosure

I considered creating an enclosure with acrylic and the laser cutter, but then I decided to do a 3D printed one for greater flexibility.

E-Paper Enclosure

E-paper enclosure

The design includes a table stand as an option, a front, and a back part.

Weather Station on Table Stand

Weather station on a table stand

The battery fits into the back part of the enclosure:

Battery attached

Battery attached

No screws or glue is needed to keep the front and the back part together. The back part has two round holders for magnets so it can stick to metal objects:

Using Magnets to attach to metal

Using Magnets to attach to the fridge

Summary

I’m happy with the design and the functionality: I have a very low power weather station in the kitchen, which I can use on a stand or attach to metal surfaces. The station has run for nearly two weeks on the same battery with only a 10 mV drop so far — with an update of data over Wi-Fi every 20 minutes. The gray color is fine, but maybe I will try another version with a different color. Or do another one with the laser cutter. I think I might build up a few more of these…

Happy weathering!

Links

Topics:
weather station ,tutorial ,iot ,esp8266 ,3d printing ,wi-fi

Published at DZone with permission of

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}