Hello everyone,
for my projects, I currently use sensors from DFRobot which I hooked onto a Heltec WiFi LoRa 32 V3. The measured data is sent via LoRaWAN. You can see the code here: https://github.com/JuliaSteiwer/IoT-Water-Quality-Monitoring/tree/main/Working%20Code. This code so far works reliably, there’s just one thing that has been an issue since day 1:
The sensors are actually all tested with Arduino UNO on DFRobot’s side, which means libraries and functions often do not work with the Heltec at all.
For me, that means lots of testing and debugging to get properly working code to control the sensors with. No “plug and play”, as you would have it with an Arduino. Just recently, I gave up frustrated on trying to run a sensor with the Heltec (spend > 5h trying to get somethin to work), and when I hooked the sensor to a Minima R4, everything worked perfectly immediately.
Now you might say “Julia, if your current code works fine, why bother changing anything?” but the thing is, with a new Heltec version available (Heltec WiFi LoRa 32 V4) and DFRobot releasing more and better sensors frequently, it’s neither efficient nor feasible to try and manipulate code for hours just to force it to work with a different chip. Improving the system doesn’t really work when more time is spent on fixing code compatibility rather than trying new things.
What do I want now? Proper deep sleep, LoRaWAN, and plug-and-play for the sensors, all while evading a cost explosion.
My ideas were the following:
- “Die eierlegende Wollmilchsau”: The MCU that has it all and solves it all, which… apparently does not exist (or maybe it’s just the enshittification of online search). You can get (a) Arduino without any of the other things, (2) Arduino with LoRa but not Deep Sleep, or (3) ESP32-based with Deep Sleep and LoRa but Arduino-specific libraries won’t work. But not something that has it all.
- Heltec + Arduino. Use the Arduino for triggering the sensors only. Use wire to get the sensor data from the Arduino to the Heltec. Use the Heltec to control Deep Sleep and communication. Using a cheap Arduino and HeltecV4, I’m at 5€ more with my usual shop than with just the V3.
So, I tried idea 2 with the LoRa V3 and the Arduino Minima R4 I currently have at home. Just for testing, I kept it as simple as possible: Have a code for the Arduino that prints something, sends that via RX/TX to the TX/RX of the Heltec, then the Heltec gets a code that prints the Arduino message. Despite how easy that should be, it’s not working. Looking at the pin-out, I should be using GPIO43 for RX and GPIO44 for TX on the Heltec. I wired the Arduino’s RX to the Heltec’s TX and the Arduino’s TX to the Heltec’s RX. It does not work. I made sure that their GNDs are connected and that both are supplied with power. At some point, my PC outright refused to connect with the Heltec anymore, resulting in the dreaded Failed to execute script 'esptool' due to unhandled exception! Failed uploading: uploading error: exit status 1 error message.
Out of despair I then tried asking “AI” chatbots (LLMs are essentially just glorified auto-correct but at some point in despair…). Outstanding results, they invited GPIOs that outright do not exist, completely ignoring pin-out diagrams, data-sheets and schematics.
In my plight, I return here with the question: How can I transfer data from an Arduino board to a Heltec board?
The logic I’d like to achieve is:
1. Heltec board (HTB) wakes up from deep sleep after time t.
2. HTB powers the Arduino board (AB).
3. AB powers the sensors and gets data from them.
4. AB sends data to HTB.
5. HTB sends received data via LoRaWAN.
6. HTB goes back to sleep, powering off the Arduino.
How would I implement such a solution? Or is there a better way?
Please let me know your ideas and insights, I’m looking forward to and being grateful for all of them!




LoRaWAN (RadioLib Persistence)
Easy and flexible code implementation of new sensors.