A comprehensive ESP32-based IoT development kit for makers, hobbyists, and learners
MakerBuddy is an all-in-one IoT learning platform that combines multiple sensors and actuators with a hosted WebApp dashboard. The firmware and WebApp use real-time WebSocket communication for monitoring and control. The sequence-based automation engine supports four loop modes: None, Forever, Timer (interval-only), and Condition.
Current releases: firmware 2.10 (23 October 2026) and WebApp 3.6 (24 October 2026).
This public repository contains the open-source Arduino firmware, WebApp, and PCB design files. Other MakerBuddy clients are maintained separately and are intentionally not included here.
- WebApp - Hosted/static responsive dashboard for modern browsers
- Arduino Code - ESP32 firmware with sensor integration and web server
- PCB Design - PCB design files (Fritzing
.fzz)
- DHT11 - Temperature and humidity sensor
- DS18B20 - Waterproof temperature probe
- LDR - Light level detection
- MQ-2 - Gas/smoke sensor
- Soil Moisture Sensor - For plant monitoring
- HC-SR04 - Ultrasonic distance sensor
- HC-SR501 - Motion detection sensor
- Push Button - Digital input
- LED - PWM brightness control
- RGB LED - Full-color control
- Relay - Switching high-power devices
- Servo Motor - Position control from 0–180°
- Buzzer - Audio alerts
- LCD Display (16x2) - Real-time information with sensor wildcards
- Real-time sensor data via WebSocket (push-based, no polling)
- Sequence automation with four loop modes and up to 10 multi-step rules
- Priority-based device locking (Condition > Timer > Forever > None)
- Optional two-sensor conditions with independent comparisons and AND/OR logic
- Potentiometer mapping to LED PWM, RGB color wheel, or Servo
- Soil moisture calibration with NVS persistence
- OTA firmware updates with LCD progress
- WiFi connectivity with mDNS support (
devicename.local) - REST API and WebSocket endpoints for all actuators
- Mobile-responsive dashboard with dark/light theme
- Device information display (name, IP, firmware, MAC, uptime, and free memory)
- LCD validation based on rendered 16-column output
- ESP32 Development Board
- Arduino IDE (v1.8.x or later)
- Required Arduino libraries listed in Arduino Code
- Web server such as Apache/XAMPP for hosting the dashboard
-
Clone the repository
git clone https://github.com/MakerBuddy/MakerBuddy-V1.0.git cd MakerBuddy-V1.0 -
Upload the Arduino code
- Open
Arduino Code/MakerBuddy/MakerBuddy.inoin Arduino IDE. - Upload it to the ESP32 board.
- On first boot, connect through the built-in
MakerBuddy_XXXXprovisioning access point.
- Open
-
Set up the WebApp
- Copy the
WebAppfolder to your web server. - Open
index.htmlin Firefox, Safari, or Edge. - Enter the MakerBuddy device name or IP address to connect.
- Copy the
- ESP32 Development Board and MakerBuddy PCB V1.0
- 2x 15-pin female headers, 2x 15-pin male headers (optional), and 2x 5-pin male headers (optional)
- 680uF 10V capacitor and 2.54mm JST connectors
- 10K resistor for LDR and 4.7K resistor for DS18B20
- Potentiometer, soldering station, desoldering pump, and sensor cables
- DHT11, DS18B20, LDR, MQ-2, soil moisture, HC-SR04, HC-SR501, and push button
- 5mm LDR, 5mm LED, and 5mm RGB LED (common-anode wiring)
- 5V relay module, SG90 servo motor, passive buzzer, and 16x2 I2C LCD
We welcome contributions. Feel free to report bugs, suggest features, submit pull requests, and share projects built with MakerBuddy.
WebApp 3.6
- Every component wiring guide (the ⓘ button on each sensor and control card) shows new photography of the IoT Kit V1.0: the green board with the part highlighted, or the module with its lead to the right port.
- Each guide has a light and a dark image, and the popup shows the one for the current theme.
- Firmware is unchanged at 2.10.
Firmware 2.10 / WebApp 3.5
- Firmware 2.10 pushes the rule list to connected dashboards whenever a rule starts, finishes or stops on its own (at most once per second, and the final state always arrives), so "
▶️ Running" badges and automation locks no longer go stale. - Start on a Condition rule resumes monitoring and begins its first cycle at step 0 once the condition is true; if the condition is false, nothing runs.
- Timer intervals up to the dashboard's 999 h maximum are stored correctly.
- WebApp 3.5 sends LED brightness 0 as 0 (it previously meant full brightness), keeps the LED slider locked while a rule owns the LED, fixes two operator labels and styles the Stopped rule badges.
WebApp 3.4
- Check for firmware updates and release notices through the public raw GitHub feed. Download links the device cannot install over the air are shown as requiring manual installation. See WebApp/deployment.
- Firmware remains 2.9.
WebApp 3.3
- Add Boolean condition selectors, rule duplication, step drag/reorder controls, clearer Add Step spacing, and clearer firmware-feed checks. Firmware remains 2.9.
Firmware 2.9 / WebApp 3.2
- Disable the Servo Mapping sensor/inversion controls and the potentiometer Servo option while an enabled, running rule contains a servo step, including timer waits and non-servo steps. Enabled condition rules also reserve mapping while monitoring.
- Firmware 2.9 pauses existing sensor/pot servo mapping throughout that reservation, holds the last angle, and rejects mapping enables through REST/WebSocket. Stop, disable, delete or one-shot completion releases it; an existing mapping resumes smoothly.
- None and unrelated potentiometer targets remain available subject to their own rule locks. Saved mapping settings and rule-to-rule step priority are preserved.
Firmware 2.8
- Reserve a separate ESP32 LEDC timer bank for servo PWM to prevent sharing with RGB/single-LED outputs on earlier Arduino-ESP32 3.x cores.
- Preserve the commanded endpoint during holds and timer intervals; log PWM initialization failures. Protocol and saved rule formats are unchanged.
WebApp 3.1
- Rename servo movement choices to Range and Range + reverse; stored modes and timing are preserved.
Firmware 2.7 / WebApp 3.0
- Style the servo movement selector and duration fields consistently with the rule editor; stack fields on phone layouts and support both themes.
- Add one-way Start → destination and Start → destination → start movements, duration per direction, and hold after the entire movement. Select Forever to repeat within 0–180°.
- Each cycle positions at start first; one-way repeats reposition to start. Zero-duration return settles at start. New movement options require firmware 2.7.
- Keep motion non-blocking and respect rule priority. Version-2 servo companion records read older version-1 options without resizing the legacy rule structs.
Firmware 2.6
- Fix downward servo movement wrapping through unsigned timer arithmetic and getting clamped to 180°.
- Sensor mappings, including inverted LDR mapping, keep responding to rising and falling readings. The fix also covers potentiometer mapping and smooth absolute/relative rule steps.
- Existing WebApp commands, mapping defaults, GPIO assignments, protocol, and saved configurations remain compatible.
Firmware 2.5 / WebApp 2.9
- Add a separate Servo Mapping card with a compact sensor dropdown and Invert direction. Select None to disable mapping; changes apply immediately.
- Map soil moisture, gas, light, humidity, DHT11, or DS18B20 automatically to 0–180°. Potentiometer, motion, push button, and distance are excluded from the dropdown.
- Use automatic sensor ranges and built-in filtering; preserve rule ownership, stale/invalid holds, and disabled mapping after reboot.
- Keep demo servo motion aligned with the currently displayed sensor reading and allow independent mapping-card visibility.
- Preserve legacy explicit mapping ranges and binary NVS layouts.
Firmware 2.4 / WebApp 2.8
- Add sensor-to-servo mapping for soil moisture, gas, light, DHT11 temperature, DS18B20 temperature, and humidity, with input/output limits, inversion, smoothing, and deadband.
- Add absolute/relative servo rule steps, non-blocking smooth movement duration, and hold after arrival.
- Enforce servo ownership across rules, sensor mapping, potentiometer mapping, and manual commands; pause invalid/stale sensor mapping.
- Preserve existing binary rule records with versioned companion options. Mapping settings persist but mapping starts disabled after reboot.
- Run DS18B20 conversions asynchronously to keep smooth motion responsive.
WebApp 2.7
- Adds a hardware-free demo session when
demois entered as the device host. - Shows animated sample telemetry, locally responsive controls, device/settings data, and example rules.
- Clearly labels demo data and prevents example-rule changes from being stored.
WebApp 2.6
- Detects Firefox and directs users to the official MakerBuddy Firefox Add-on, matching the existing Chrome extension prompt.
WebApp 2.5
- Aligns sensor and control icon tiles with the mobile client's theme-aware violet-soft surfaces in light and dark modes.
- Uses the aligned violet-soft icon background as the default dashboard-settings accent color.
WebApp 2.4
- Keeps the optional second sensor editor hidden until its checkbox is enabled.
- Uses explanatory AND/OR radio choices for two-condition and second-range logic.
- Aligns both sensor condition rows and their optional ranges across desktop and mobile layouts.
Firmware 2.3 / WebApp 2.3
- Added optional two-sensor condition rules with independent comparisons,
AND/ORlogic, and range support for each sensor. - Preserved existing saved rules through separate versioned
seqc_Ncondition records in ESP32 NVS.
Firmware 2.2
- LCD wildcard validation now measures each wildcard using its current formatted sensor value, matching the physical 16-column display.
- Sequence LCD validation now agrees with the WebApp and allows templates such
as
Temperature={temp}when the rendered value fits.
WebApp 2.1 / 2.2
- LCD counters use current telemetry values and refresh as sensor values change.
- Longer source templates are allowed when their rendered output fits the LCD.
- Checks the official firmware feed and suppresses dismissed release notices for 24 hours per firmware version.
Firmware 2.1
- A finishing condition step retains ownership of its actuator until its configured delay expires.
- Opposing condition rules retry without consuming their delay, enforcing actuator dwell times.
Firmware 2.0 / WebApp 1.9
- Uses the configured device name consistently across LCD, mDNS, REST, and WebSocket identity responses.
- Shows connected WiFi/IP and device-name screens at boot and in the LCD rotation.
- Validates custom LCD templates against 16 rendered columns.
- Adds the ESP32-reported IP to Settings and live 16-column LCD counters.
Firmware 1.9 / WebApp 1.7
- Timer mode became interval-only and parked sequences release their devices.
- Added push-button telemetry, sidebar persistence, and safer LED/Servo controls.
v1.8
- Added optimized NVS sequence storage, ADC averaging, WiFi power saving, relay protocol fields, and legacy potentiometer migration.
v1.2
- Added WebSocket telemetry, the multi-step rule engine, potentiometer mapping, soil calibration, OTA updates, mDNS discovery, LCD wildcards, and dark/light theme persistence.
v1.0
- Initial release with sensors, actuators, REST API, basic IF-THEN rules, provisioning, and responsive dashboard.
- License: GNU General Public License v3.0 (GPL-3.0)
- Applies to: Arduino Code and WebApp
- See LICENSE-GPL for the full license text.
- PCB design files are distributed under their applicable hardware-design license. See the files in PCB Design.
Copyright (C) 2024 Muhammad Afzal
Website: makerbuddy.cc
Email: info@makerbuddy.cc
If MakerBuddy helps you, consider supporting the project on Patreon.
Made with ❤️ by MakerBuddy Team
Empowering makers, one project at a time.