ESP8266 based SensorNode

In last weeks I put together a Sensor-Node based on ESP8266. The software part provides:
  • the standard WiFiMonitor to setup the WiFi credentials
  • a web page to configure the connected sensors
  • a web service to read the configuration and current sensor values
  • the data are published via MQTT in a format to be feed into a influxdb
The following sensors are supported:
  • DS18B20 (multiple)
  • BME280
  • Si7021

SensorNode config page
SensorNode configuration page

I designed a board to be put into a USB port with a temperature and a humidity sensor. 
SensorNode circuit
SensorNodeUSB circuit

SensorNode pcb bottom side
SensorNodeUSB PCB bottom side

SensorNode pcb top side
SensorNodeUSB PCB top side
More information can be found in the GitHub repo SensorNode.


ESP8266 - Convert from human readable date/time to epoch timestamp in Lua

For my current ESP8266 NodeMCU project I need a Lua function to convert the date/time returned by the DS3231 to epoch timestamp.

Update: I also wrote a function to verify the validity of the input parameter (see this github gist)



ESP8266 (NodeMCU) + 1.8 Inch TFT LCD Display Modul 128X160 SPI Serial ST7735B

Some notes how to connect a "1.8 Inch TFT LCD Display Modul 128X160 SPI Serial ST7735B IC SD Card für Arduino" to a ESP8266 running with NodeMCU.

You need a NodeMCU firmware with (at least) the modules bit and UCG (with st7735 display option).

NodeMCU custom build options.
[Update] Also SPI must be selected! (Thanks to Lorenz)


The display has a 8-pin and 16-pin interface. The TFT interface in both are the same. You can choose either of the two interfaces for wiring.

     ESP8266 --             DISP             -- ESP8266
     OPTION 1                                   OPTION 2
                |      ST7735B 1.8 TFT     |
                |                          |
         GND -- | GND  (1)                 |
         3V3 -- | VCC  (2)                 |
                | NC   (3)                 |
         3V3 -- | BL   (4)         (1) RST | -- GPIO16 (D0)
                | NC   (5)         (2) CS  | -- GPIO15* (D8) 
GPIO16  (D0) -- | RST  (6) TFT     (3) D/C | -- GPIO02 (D4)
GPIO02  (D4) -- | RS   (7) TFT     (4) DIN | -- GPIO13 (D7)
GPIO13  (D7) -- | SDA  (8) TFT     (5) CLK | -- GPIO14 (D5)
GPIO14  (D5) -- | SCK  (9) TFT     (6) VCC | -- 3V3
GPIO15* (D8) -- | CS   (10)TFT     (7) BL  | -- 3V3
                | CLK  (11)SD      (8) GND | -- GND
                | MISO (12)SD              |
                | MOSI (13)SD              |
                | CS   (14)SD              |
                | NC   (16)                |
                | NC   (15)                |

*) pull-down 10k to GND

ESP8266 NodeMCU dev board connected to 16pin interface of TFT
ESP8266 NodeMCU dev board connected to 8pin interface of TFT


I use the GraphicsTest.lua to test the connection. GraphicsTest is part of the NodeMCU examples (you have to upload also all GT_*.lua files to run the test).


Flash ESP8266-12/12E

Steps to flash new firmware:
  1. (optional) Backup flash
    esptool.py --port port-of-esp8266 --baud 115200 read_flash 0x000 4194304 fw_backup.bin
  2. Erase flash
    esptool.py --port port-of-esp8266 --baud 115200 erase_flash
  3. Write esp init data (see SDK Init Data)
    esptool.py --port port-of-esp8266 --baud 115200 write_flash 0x3fc000 esp_init_data_default.bin
  4. Write firmware
    esptool.py --port port-of-esp8266 --baud 115200 write_flash 0x0000 fw.bin