A simple NodeMCU / BME280 Weatherstation with WaveShare E-Paper 1.54 inch Display



A couple of months ago I wrote an article about the WaveShare 1.54 inch e-paper display connected to an Arduino MKR1000. At some point of time, and for unknown reasons, the MKR1000 stopped working, and I didn’t want to shell out another freakin’ 35 bucks for a new one. In the meantime, I learned to love the ESP8266 platform, because it is dirt cheap and it comes along in many flavors, from the ESP-01 basic Wifi module up to the ESP32 dual core and highly integrated MCU.
The Arduino IDE has been extended to support almost all of the ESP8266 boards, with very little configuration necessary. So, two of the most popular platforms team up, and you can develop really funky stuff for the ESP8266 platform and just continue using the Arduino IDE for development. What’s also worth mentioning is that the ESP8266 modules have a lot more flash memory than even the Arduino Mega, plus a matching number of digital pins, I2C, SPI, but only a few (well, just one) analog input.

This article is about collecting weather data from a BME280 sensor (temperature, humidity, air pressure), display the data on a WaveShare e-paper display, and running a web server which provides a web page with the current weather data. We connect the BME280 sensor via I2C and the e-paper module connects via SPI and a few other signals / pins.

Parts list:

1 x BME280 sensor
1 x NodeMCU WIFI micropocessor module
1 x WaveShare 1.54 inch e-paper display module
1 x Breadboard
12 x Jumper Cable

What makes this setup a bit special is that we use Adafruit GFX libraries to control the e-paper display module instead of the vendor’s EDP libraries. And choosing the right pins for connecting the display to the NodeMCU module proved to be critical.
If you want to run the whole setup on batteries, using the e-paper module is a good choice, as its power consumption is really low. On the other hand, the NodeMCU’s design is not very battery friendly. Although its deep sleep mode is intuitively to use, it still consumes around 10mA of current due to the USB controller chip and the voltage regulator which are soldered on the module. There are a few articles on the internet how you can get rid of them.

2 thoughts on - A simple NodeMCU / BME280 Weatherstation with WaveShare E-Paper 1.54 inch Display

  • First of all, thank you for all the information you have provided so far, I want to give you a quick update about connecting to NodeMCU, some new boards are coming with ESP8266EX which is much power friendly but for some reason a little bit more picky, Since I have both normal NodeMCU and that (Robodyn NodeM is a goos example) we must about using RESET on D4, instead I moved it DC BUSY and RST pins to D1, D2 and D3 respectively and it is working for both versions, I guess it would be good to have this reflected on your blog since It will discourage folks for using it. With this set I could, also, use originals WaveShare example successfully.

    Here is the set of pins I am using, tested against GxEPD and EPDiF (WaveShare, smaller, less memory hanger and full featured)

    // Pin definition
    #define RST_PIN D0
    #define DC_PIN D2
    #define CS_PIN SS
    #define BUSY_PIN D1