At ThingPulse, we’re all about turning clever hacks into robust, real-world solutions. Over the years, we’ve explored how to squeeze more out of the ESP32 than it was ever really intended to do. One of those challenges? Using ESPNow and WiFi simultaneously on a single ESP32.
Sounds tricky? It used to be. But not anymore.
🧠 The Two-Chip Gateway: A Solution Ahead of Its Time
Let’s start with where this journey began. We initially tackled this challenge with our ThingPulse ESPGateway, which packed two ESP32 chips into one sleek device. One chip handled ESPNow communication with remote sensor nodes; the other pushed the data via WiFi to a server.
We even wrote a detailed blog post about it. But interest was limited, and eventually, we stopped producing it.
🔁 One ESP32, Two Worlds
Thanks to persistent tinkering, we’ve simplified things. You can now run ESPNow and WiFi concurrently on a single ESP32, like our ThingPulse ESPGateway Ethernet.
This setup allows:
- ✅ One or more ESPNow sensor nodes
- ✅ A central hub
- ✅ Hub forwards data via HTTPS
However, there’s one crucial caveat:
🔒 ESPNow and WiFi must be on the same channel.

🛑 Hardcoding the Channel? Not Ideal
You could hardcode the WiFi channel into the sensor nodes, but that’s fragile. Access points can change channels (yes, even yours), and suddenly your nodes are yelling into the void.
Another approach is what Random Nerd Tutorials proposed: nodes scan for the AP’s SSID and extract the channel. Clever — but only works if the sensor is in range of the AP.
Which… kind of defeats the point of ESPNow, doesn’t it?
🧭 Our Solution: Dynamic Channel Scanning
Instead, our sensor node code uses channel hopping.
Here’s how it works:
- The node iterates through all channels.
- It attempts to send an ESPNow packet to the hub.
- When it gets an ACK – bingo! Channel found.
⏱️ The whole process takes less than a second.
This means:
- ✔️ It works even if the AP changes channels.
- ✔️ Nodes don’t need to be in WiFi range.
- ✔️ It just works.
🧰 Hub Code Available
You can find our hub code on GitHub. The gateway listens for ESPNow messages and forwards them to your server. No fluff, no nonsense.
Perfect for use cases like:
- 🏡 Garden sensors
- 🧪 Lab monitors
- 🌍 Environmental trackers
✅ Recap
- ✅ One ESP32 does the job
- ✅ ESPNow + WiFi simultaneously
- ✅ Auto channel scanning = resilience
- ✅ Works outside WiFi range

Dear Team,
nice design, just some more in deep about the “Works outside WiFi range”, this means that the sensor node should have a local memory to retain the data otherwise the packet that is not succesfully sent will be lost, I’m right?
Thanks for your work!
Bye
Fire