ESP32 progress update

Things have been progressing at a steady pace with the ESP32 port. Finally resolved enough of the hardware changes to warrant fabricating a new PCB with all of the functions to date:

Look familiar? It’s easy to mistake it for the ESP8266 based V5 IoTaWatt. That’s because one of the design goals was to put this into the same enclosure, which this will satisfy. The ESP32 devkit is about the same size as the ESP8266 but has 38 pins instead of 30 as in the ESP8266 devkit.

This version is also laid out the same with respect to the common components so that I could use the same PCB stencil (hand worked the extra components). The final version will probably move some of the components around to better utilize space and accommodate a few more components (more about that later).

The major hardware changes are:

  • SDcard now uses 4 bit data path at 40MHz instead of 1 bit at 20MHz (8x improvement).

  • ADC power, reference voltage and bias are now supplied by an independent 3.3V supply powered directly from the ~5V raw USB feed. The 3.3V available from the ESP32 devkit was just too variable and noisy. With a dedicated power supply just for measurements, things are rock solid.

The major firmware functions are working: Sampling, datalog, web server, inmflux, emoncms, file manager, message log.

The datalog record size has been increased x4 to 1024 bytes. This allows for more accuracy in measurements like VAR, and opens the door for tracking import/export, additional inputs, and other metrics from other sensors.

The plan is to add a second PCB with an additional 14 power inputs. The concept is to make it field expandable with a ribbon cable to this unit and an enclosure riser that would sit between the two, adding maybe 12 or 13 mm to the height. Still researching the connectors, but should have a prototype with provisional wiring soon to test the sampling with 28 channels.

Amazing how fast I’ve run out of IO pins. Have a few input only remaining. Considering adding a 16 port I2C chip to the expansion board and using one or two of the input pins for interrupts from it.

Currently thinking more about adding drivers to support third party bluetooth data like temp, humidity etc.

Have experimented with using an ESP-WROVER instead of ESP-WROOM-32 as it has a lot of additional memory in the external PSRAM. Have an adapter to run with one, and it works fine, except for two things:

  • The PSRAM takes away two more GRIO (16 & 17)

  • The form factor would require a change to a component in the enclosure mold.

So the memory comes at a cost. Right now, there’s still quite a bit of heap using the VROOM, so I’m staying with that. That said, I’m starting to experiment with supporting HTTPS, so heap could disappear quickly. Not sure the PSRAM will solve that, but good to know it’s there.


Awesome! Thanks for keeping all of us posted on the progess… Am so excited!

hello Bob,

what about adding IN RUSH function for current measurement, as an extra option, maybe not for all channels ?
very good ideea to add support for temperature measuring or humidity,maybe as extra option for a second board that can extend number of inputs measuring current to extra parameter as mentioned.

Any chance of making the ESP32 changes to the code available? I build the ESP8266 code already and run it. Running on a ESP32 would be great.

It’s more than a few changes. The whole approach and operating environment is different (and the hardware is changed somewhat as well). I do expect to publish the firmware and schematic when it’s done, but right now it’s still changing too fast to publish.

OK. Thanks for the reply. Will keep tracking the progress of ESP32.

Fabulous to hear. I personally have swapped to ESP32 for new Arduinos, the Dual I2C and more features really make it a no brainer compared to ESP8266, when the price is really not that much more.
The ESP32-CAM-AI-Thinker are about the same price as ESP8266/nodemcu’s which is insane.

Looking forward to more updates and design decisions!