Introducing the Zyron ESP32 Starter Kit: 20 Projects, One Library
We use ESP32 on almost every hardware project we build — greenhouse automation, BMS monitoring, industrial sensor nodes, remote telemetry. Over time we accumulated a set of reference implementations that every new project started from. We've cleaned them up, documented them properly, and published them as the Zyron ESP32 Starter Kit on GitHub (github.com/Markus-Olivier/zyron-esp32-starter-kit).
This isn't a beginner tutorial repackaged as a library. It's the actual code we use as a starting point for production firmware — structured, tested on real hardware, and accompanied by the wiring diagrams and troubleshooting notes we wish existed when we started.
What's in it
Twenty complete Arduino projects, split across three difficulty tiers. Eight beginner projects cover GPIO fundamentals: LED control, PWM dimming, pushbutton debouncing, reading LDR light sensors, DHT22 temperature and humidity, HC-SR04 ultrasonic distance, PIR motion detection, and I2C OLED display output. These are the building blocks every ESP32 project draws from.
Seven intermediate projects step into connectivity: WiFi station and AP modes, HTTP GET and POST to REST APIs, MQTT publish and subscribe, MQTT with JSON payloads, servo motor control over MQTT, and relay switching with safety interlocks. This is where most IoT projects actually live — local sensing plus cloud or LAN connectivity.
Five advanced projects cover the firmware engineering side: deep sleep with timed wakeup, deep sleep with interrupt wakeup for battery-powered nodes, OTA firmware updates over WiFi, structured data logging to SPIFFS, and a full sensor-to-dashboard stack tying the previous projects together.
The ZyronSensors library
The core of the kit is ZyronSensors.h — a lightweight C++ abstraction over the Adafruit sensor libraries that we use across all our projects. Instead of writing the same DHT22 read-and-validate logic in every project, you get a consistent interface: initialise the sensor, call read(), get back a struct with temperature, humidity, and a validity flag.
The library handles the edge cases that trip up most implementations: DHT22 NaN returns under electrical noise, HC-SR04 timeout when nothing is in range, I2C address conflicts when multiple devices share a bus. These aren't documented anywhere obvious — they show up in production. The library encodes the fixes so you don't rediscover them.
The 10-lesson introduction course
Alongside the code, we've included a 10-lesson written course in the docs/course/ directory. It covers the ESP32 board layout, GPIO numbering, power rails, and the specific characteristics of each component in the kit: how the DHT22 signal protocol works and why 10-second polling is the minimum, how HC-SR04 echo timing translates to distance, the difference between PIR detection zones and sensitivity adjustments, I2C addressing and how to handle collisions, and relay coil mechanics and why normally-closed is almost always safer than normally-open for automation.
The course is designed for someone who can already write code but hasn't worked with embedded hardware. It explains the electronics context that makes the firmware decisions make sense.
Hardware compatibility
The kit targets standard ESP32 development boards (ESP32-WROOM-32 and compatible) with the Arduino framework. All 20 projects have been tested on the components listed in the wiring diagrams: DHT22 (not DHT11 — the resolution difference matters for real applications), HC-SR04, generic PIR modules, LDR with 10kΩ pull-down, SSD1306 128×64 OLED on I2C, 5V 2-channel relay module, SG90 servo, passive buzzer, and a tactile pushbutton.
Wiring diagrams for each component are in docs/wiring-diagrams.md. Pin assignments use GPIO numbers, not the physical pin numbers printed on some development boards — a distinction that causes more debugging sessions than it should.
Why we open-sourced it
Most of what we build for clients is proprietary — custom firmware for specific hardware, backend integrations, control interfaces. The starter kit is the foundation layer beneath that, and keeping it private doesn't benefit anyone. If it gets an engineer up to speed faster, reduces the number of times someone has to debug a DHT22 NaN in production, or gives a student a solid reference implementation for a university project, that's a better outcome than sitting in a private repo.
The library is MIT licensed. Use it in personal or commercial projects. If you find a bug or have a component you'd like to see added, open an issue or a pull request — we maintain it actively because we use it ourselves.
What comes next
We're building on top of this foundation. The next additions to the kit will be an ESP32 + MQTT + Node-RED pipeline example, a BLE peripheral example (relevant to the BMS monitoring work we've covered previously), and a FreeRTOS multi-task example that runs the sensor loop, MQTT client, and OTA check as separate tasks with proper synchronisation.
If you're starting an ESP32 project and want help architecting something beyond what the starter kit covers — a production sensor node, a custom dashboard, a hardware-to-web integration — that's exactly the kind of work we take on.
Need this built, not just explained?
We build production systems around exactly this kind of engineering. Tell us what you're working on.
Start a conversation