Most IoT projects depend on WiFi, MQTT brokers, or cloud platforms to communicate between devices. But ESP-NOW, a protocol developed by Espressif, lets ESP8266 and ESP32 boards communicate directly using MAC addresses over 2.4GHz — no router, no access point, no internet required. Latency is in the single-digit millisecond range, and the protocol works even when WiFi is completely off.
This article covers 4 progressive projects built as part of my 100 Days of IoT challenge, all written in MicroPython.
Things used in this project:Hardware:
- 2x ESP8266 NodeMCU boards
- Push buttons (x4 for Day 56)
- LEDs
- 4-channel relay module
- DHT11/DHT22 sensor
- SSD1306 OLED display (128x64)
- Jumper wires, breadboard
Software:
- MicroPython firmware for ESP8266
- Thonny IDE
- espnow MicroPython library
Why ESP-NOW?
When you're building a remote control system, the usual approach is WiFi + MQTT. But that requires both devices to be connected to the same network, adds broker latency, and fails completely if the router goes down. ESP-NOW solves all of this. It is peer-to-peer, connectionless, and blazing fast. You just need the MAC address of the receiver and you're good to go.
Here's how the series progressed:
Day 54 — ESP-NOW LED Control
The simplest starting point. One ESP8266 acts as the transmitter and sends a message over ESP-NOW. The other ESP8266 acts as the receiver and toggles an LED when it receives the message. This project validates the full send-receive pipeline and confirms ESP-NOW is working correctly between two boards.
Key learning: How to initialize ESP-NOW in MicroPython, register a peer using MAC address, and send/receive raw bytes.
Day 55 — Button to LED Control
A physical push button on the sender board triggers an LED on the receiver board — wirelessly, in real time. No polling delays, no WiFi handshake. Press the button, LED toggles instantly on the other device.
Key learning: Debouncing in MicroPython, interrupt-driven button handling, and mapping physical input to wireless output.
Day 56 — 4-Channel Wireless Relay Controller
Four push buttons on the sender, four relays on the receiver. Each button independently controls its corresponding relay over ESP-NOW. This is where the project becomes practically useful — think wireless switching of appliances, lights, or motors without any wiring between the control panel and the load side.
Key learning: Structuring multi-channel command packets, relay logic, and handling multiple GPIO inputs cleanly.
Day 57 — Bidirectional Smart Relay and Sensor System
This is the most complete project in the series. The sender controls relays on the receiver as before, but now the receiver also sends back live DHT temperature and humidity readings to the sender, which displays them on an SSD1306 OLED screen. Full two-way communication over ESP-NOW — control going one way, sensor data coming back the other.
Key learning: Bidirectional ESP-NOW communication, structuring response packets, and rendering live sensor data on OLED using MicroPython.













Comments