![]() |
![]() |
Welcome to the repository for the Uberlogger, a simple yet powerful ESP32-based & STM32 WiFi enabled logging device. The logger can log 8 analog channels and 6 digital channels at maximum 250 Hz at 16 or 12 bits to CSV or raw data file on an SD card and is fully stand-alone. The analog channels can be set as either NTC inputs or normal analog inputs with input ranges varying from -10V to +10V DC or from -60V to + 60V DC. There is a web UI interface to configure the device and see live data and an API to retrieve data using your own scripts or devices.
50% of the profits go to EDELAC, a school for the poorest children in the city Xela of Guatemala. Through this product, I am helping them a bit with getting education and you, the end user, with logging your data. You can find more information about the school here.
I decided to make this open source, since I have little time to make more features alone by myself, and next to that I notice there are hobbyists and research people who might be interested in using or adjusting the code to their needs. Since I value innovation and education, it made sense to make this open source. The source is what it is, with all the things that are nice and not so nice :-) I'm not at full-time programmer, so I was also learning along the way. What makes it a challenge to debug is that it needs to be stable over long periods over time and it uses 2 chips, from which the documentation was not always completely right. I don't have time to give support for new features you might want to add, but you are free to adjust or contribute and do whatever you want with it.
This repo is the software for the ESP32-S2 chip. The repo for the STM32G032 can be found here.
As written above, when you buy the Uberlogger, you help the children in Guatemala. Ordering can be done at our partner Eleshop for best and fast international shipments. As written below, the code is open source, but the hardware is not. Sorry.
The code in this repository is licensed under the MIT License. You are free to use, modify, and redistribute it — even commercially — as long as proper attribution is provided.
The hardware design, including schematics, PCB layouts, mechanical components, and industrial design of the Uberlogger, is proprietary. It is not covered under the MIT License and may not be reproduced, sold, or modified for commercial use without explicit written permission from the author.
- NTP sync: I tried to integrate this, but when there is a request to do an NTP sync while it also wants to send data while logging, the ESP32 stack may run into issues. My architecture is not build to handle this well, so you may have to refactor this or hack your way to make it work (but the latter is generally not recommended with this device)
- Add MQTT / Home-assistant support . Doing this in parallel with existing polling method / webserver might put stress on resources, but I haven't done much research on it
- Showing MAC addresses of the WiFi ESP32 hotspot and client controllers in the web UI. Might help you with easy recognition of devices for firewalls and stuff.
- Increase log speed. This is challenging, but not impossible. Main issue is the small buffer memory you have on the STM32 for sending SPI data.
- Stream live data instead of polling on the web UI. Comes with challenges to make it work on all devices, though. Polling is just easy and straight forward.
- Reduce JSON size for settings / live data
- Increase possiblities of low-power energy => very valuable! But lot of work (lots of testing mainly)
- Add unit tests where you can...
- Add password for logging in
- History data for the live charts even when navigating between pages
- Your fantastic feature....
This guide provides instructions for setting up your development environment and configuring the project for the ESP32-S2 using ESP-IDF v5.2.x.
-
Install ESP-IDF v5.2.x:
Follow the official Espressif setup guide for your OS:
👉 ESP-IDF v5.2.x Setup (Windows) 👉 ESP-IDF v5.2.x Setup (Mac/Linux) -
Clone this repository and open a terminal in the root directory.
Sometimes the sdkconfig
file lacks some important ESP32-S2 settings. After cloning:
- Open the ESP-IDF Console
- Run:
idf.py menuconfig
- Go to:
Component config → ESP32 System setttings
- Ensure the following values are set:
- Component Config
- ESP System Settings
CPU frequency
=240 MHz
- ESP System Settings for debugging
Panic handler behaviour
=GDBStub on panic
: only if you want to stop the Uberlogger while executing and use the GDBStub to halt in your code IDE in case of crashesChannel for console output
=USB CDC
if you want to enable a UART port on USB to output debug messages. However, this can lead to instability if too many debug messages are printed and/or logging at high speed.
- ESP Sytem Settings for release
Panic handler behaviour
=Print registers and reboot
Channel for console output
=none
, since all performance is needed while running
- ESP System Settings
- Putting Uberlogger in programming mode
- Turn on the Uberlogger
- Then hold the "mode" and "reset" button simultaneously and release the "reset" button. A new COM port should pop on your PC.
- Use
idf.py build flash
to build and flash the Uberlogger or add the-p COMPORT
parameter where COMPORT is the COM port name/location, to flash directly without using auto-detect. - After flashing is done, you need to manually press the reset button again to make the new software active.
Back when I started coding this, I wasn't familiar with the log library of ESP32, so I made defines inside config.h
which you can uncomment to create additional debug outputs for each module. Of course, you can also enable log output of the ESP32 log library for the components of ESP32.
With the above debug settings, the GDB Stub is enabled. To monitor debug output and catch kernel panics:
idf.py monitor
This allows real-time inspection of system crashes and other low-level events.
Happy Hacking! 🛠️