ESP32 Board Builder
Program an ESP32 or ESP8266 dev board right from your browser. Drop parts on the board, drag wires to its pins, and flash it over USB with MicroPython. Your WiFi password never leaves this page.
Drag from a part's pin to a board pin (or tap one, then the other). Drag a part to move it. Grey pins are power. Now pick a board pin. Faded pins don't fit. Esc cancels.
Add a part to see how to wire it.
No problems. Plug in your board and hit Program.
Live values
Readings and button presses show up here once the board is running. Turn on Debug mode in Build settings to also see raw pin changes.
Setup wizard
What should this board do besides read its parts?
Your WiFi details. ESP boards only see 2.4 GHz networks.
Saved only into secrets.py on your board. Never sent to TurtleBytes, never stored in this browser.
Where should values go?
Values go to .
Home Assistant finds the board through MQTT discovery. Make sure the MQTT integration is set up in Home Assistant and points at the same broker.
Leave it as homeassistant unless you changed it in Home Assistant. Each value becomes a sensor under one device named after this build. Mesh nodes show up as their own devices through the gateway.
This board sends its values over ESP-NOW to a gateway board, no router needed. Range is about the same as WiFi.
This board listens for nodes and forwards their values to MQTT under .
Use the same group on the gateway and every node. Boards ignore other groups. ESP-NOW is not encrypted, so don't send anything secret.
Nodes must be on the channel the gateway's router uses. The WiFi test on the gateway shows it (and fills it in here).
With deep sleep the board wakes up, reads everything once, sends it, and sleeps again. Great on batteries, but outputs like LEDs and relays turn off while it sleeps.
Program an ESP32 in four steps
-
Step 1
Pick your board
Choose your ESP32, ESP8266, S3 or C3 dev board. Every pin is mapped, with the ones to avoid marked.
-
Step 2
Drop in parts
Drag sensors, buttons, relays, LEDs and servos onto it and drag a wire from each part to a pin. Bad pins get flagged before anything is flashed.
-
Step 3
Set it up
Change read intervals and thresholds, link parts together, and turn on WiFi, MQTT, Home Assistant or a mesh with the setup wizard.
-
Step 4
Program it
Plug the board in over USB and click Program. MicroPython gets installed if needed, your code is uploaded, and the live console shows what it is doing.
Supported dev boards
-
ESP32 DevKit V1 (30 pin)
ESP32
The common DOIT ESP32 board. CP2102 or CH340 USB serial, blue LED on GPIO2.
-
NodeMCU v1.0 (ESP8266)
ESP8266
ESP-12E board with D0-D8 labels. One analog pin (A0), LED on D4.
-
Wemos D1 Mini (ESP8266)
ESP8266
Small ESP8266 board. Same D-pin numbers as the NodeMCU.
-
ESP32-S3-DevKitC-1
ESP32-S3
Espressif S3 board with two USB ports. Flash through the UART port. GPIO35-37 are left off, they belong to the PSRAM on most versions.
-
ESP32-C3 SuperMini
ESP32-C3
Tiny C3 board with native USB. Blue LED on GPIO8 (on when low), BOOT button on GPIO9.
Sensors and parts you can wire up
- 💡 LED - An LED that stays on, stays off or blinks.
- 🔘 Push button - Reports pressed / released. Uses the built-in pull-up, no resistor needed.
- 🔌 Relay - Switches a relay on, off, or when another value goes above or below a limit.
- 🌡️ DHT22 / DHT11 - Temperature and humidity.
- 🌡️ DS18B20 temperature - Waterproof one-wire temperature probe. Several can share one pin.
- 🪴 Soil moisture (capacitive) - Capacitive soil probe, reported as 0-100%.
- ☀️ Light sensor (LDR) - Photoresistor module, reported as 0-100% brightness.
- 🚶 PIR motion sensor - HC-SR501 / AM312 motion sensor. Reports motion true / false.
- 📏 HC-SR04 distance - Ultrasonic distance in cm, 2-400 cm.
- 🔊 Passive buzzer - Beeps at startup, or while another value is true.
- ⚙️ Servo (SG90) - Hobby servo. Holds an angle or sweeps back and forth.
New parts are added all the time. Missing one you need? Tell me.
Questions
Can I program an ESP32 from my browser?+
Yes. In Chrome or Edge on a computer, plug the board in with a USB data cable and click Connect. The builder reads the chip, installs MicroPython if it is missing, and uploads your code over Web Serial. Nothing to install.
Which dev boards does it support?+
ESP32, ESP32-S2, ESP32-S3, ESP32-C3 and ESP8266 boards, with ready pin maps for ESP32 DevKit V1 (30 pin), NodeMCU v1.0 (ESP8266), Wemos D1 Mini (ESP8266), ESP32-S3-DevKitC-1 and ESP32-C3 SuperMini. Other boards with the same chips work too, pick the closest one.
What language does the code use?+
MicroPython. The builder writes main.py, a commented config.py and a small helper library, and you can edit any of it in the built-in code editor before you program the board.
Does it work with Home Assistant and MQTT?+
Yes. The setup wizard turns on WiFi, MQTT and Home Assistant MQTT discovery, so your sensors show up in Home Assistant on their own. Boards out of WiFi range can join an ESP-NOW mesh and send through a gateway board.
Is my WiFi password sent to TurtleBytes?+
No. Passwords go straight from the page to your board in secrets.py. They are not saved or sent to the server.
Is it free?+
Yes. An account is only needed to save builds, and that is free too.
My board does not show up when I click Connect. What now?+
Use a USB cable that carries data (many charge-only cables do not). Some older boards with CH340 chips need the USB driver on Windows or macOS. On boards that will not connect, hold the BOOT button while you click Connect.
Need something bigger than a breadboard?
I build custom hardware and software, from greenhouse controllers to full web apps. Real person, real replies.