09 · Ready-wired projects
Example projects
Every bundled example as its own guide: the circuit preview, the parts on the bench, the code, and a one-click link that opens it live in the simulator.
Each card below is a complete, working project. The page shows the exact circuit the simulator renders, the code it runs, and every part on the bench; the button on each page opens it live so you can probe, edit, and break it.
My first circuitBattery → resistor → LED. The hello-world of breadboards.
555 LED flasherThe classic NE555 astable blinking an LED at ~1.5 Hz. Probe the cap to watch it ramp.
3D-printer fume extractor (two boards)The whole appliance across TWO boards: a 12 V power board (jack → buck → fan) and a 5 V logic board (MCU, SEN55, OLED, boost button), bridged by three jumpers. PM2.5 sets the fan speed; the button boosts.
MCU blinkA BB-NANO running real AVR machine code, toggling D13 every 0.5 s. The Code tab holds the matching editable Arduino sketch; sign in and press Compile & upload to build and flash your own.
555 tone generatorThe astable at ~1.4 kHz drives a piezo buzzer. Click 🔊 in the header to actually hear it; change C or Rb to change the pitch.
Burn-out labOne LED wired right, one wired wrong: watch the wrong one cook. Then press the button to short the rail and blow the fuse.
Relay + flyback diodeHold the button to energize the coil; COM swings to NO and lights the LED. The diode across the coil tames the inductive kick.
5 V regulated supplyA 7805 turns the 12 V barrel jack into a clean 5 V rail. Watch the voltmeter hold 5 V as you change the input.
Pi Pico blinkA real emulated RP2040 (Cortex-M0+ at 125 MHz) running bare-metal Thumb assembly: 3.3 V logic blinking an LED on GP2.
ESP32-C3 blinkA real emulated ESP32-C3 (RISC-V RV32IMC at 160 MHz, Rust→WASM) booting genuine MicroPython and blinking the LED on G2. The blink code lives in the Code tab; edit it and run it again.
ESP32 (classic) blinkA real emulated classic ESP32 (dual-core Xtensa LX6 at 160 MHz, Rust→WASM) booting genuine MicroPython and blinking the LED on G2. The blink code lives in the Code tab; edit it and run it again.
ESP32-C6 blinkA real emulated ESP32-C6 (single RISC-V RV32IMAC at 160 MHz, Rust→WASM) booting genuine MicroPython and blinking the LED on G2. The blink code lives in the Code tab; edit it and run it again.
Wi-Fi dashboard (OLED)Boot the actual Espressif Wi-Fi stack, scan the virtual ether, associate with BreadboardNet and get a DHCP lease, then render the live link (SSID, IP, channel, RSSI) to an OLED. Open the 📡 Sniffer to watch every frame, and click the board for its radio state.
ESP-NOW pair: two boards talkingTwo ESP32-C3 boards share the virtual air and ping-pong ESP-NOW messages, each showing its own TX/RX tally and the last message received on its OLED. Watch the glowing packets fly between the chips, follow every frame in the 📡 Sniffer, and click either board for its radio state. One script runs on both; each derives its peer from its own MAC.
WPA2 secure join (OLED)Join a password-protected network and watch the real WPA2 4-way handshake happen: the unmodified supplicant runs genuine PBKDF2/AES against the virtual AP. The OLED shows a padlock, the SSID and the leased IP over the encrypted link; the 📡 Sniffer shows EAPOL messages 1–4 then DHCP over CCMP.
ESP32-S3 Wi-Fi HTTP client (OLED)The dual-core ESP32-S3 boots the real Wi-Fi stack on both LX7 cores, joins BreadboardNet, and fetches a page from the in-core virtual server over a genuine TCP socket, rendering the status, response body, and a live request counter to a big 1.5″ 128×128 OLED, re-fetching every couple of seconds. Open the 📡 Sniffer to follow the whole conversation: SYN/ACK, the GET, the streamed response, and the FIN teardown.
Two boards: HTTP server + clientBoard B runs a real MicroPython socket server; board A fetches from it every 1.5 s. The boards lease unique addresses (192.168.4.2 and .3) and every hop (ARP, SYN, the request, the reply) is a genuine 802.11 frame relayed across the virtual air, two real lwIP stacks end to end. Open the 📡 Sniffer and the per-board serial tabs to watch both sides.
OpenThread CLI: a real Thread nodeA real emulated ESP32-C6 running the unmodified OpenThread stack, with its CLI on the serial monitor. Type `dataset init new`, `dataset commit active`, `ifconfig up`, `thread start`, then `state`, and watch a genuine Thread node come up as leader — the radio encrypts its MLE traffic with the real hardware AES-CCM* path. Open the 📡 Sniffer to see the 802.15.4 frames. Add a second C6 with the same dataset (the Thread mesh example) to form a leader + child network.
Zigbee network: coordinator + lightTwo ESP32-C6 boards run the real esp-zigbee stack over the shared 802.15.4 air: one is the coordinator (on/off switch) that forms and opens a network, the other an end-device light that joins and is bound to it. No typing — both auto-start; watch each side narrate in its serial tab and follow the beacon requests, association and secured frames in the 📡 Sniffer. (The crypto-heavy stack runs a bit slower than real time, so the full join takes a moment.)
Thread mesh: two nodesTwo ESP32-C6 boards running OpenThread on the shared air. Bring the same dataset up on both (`dataset` …, then `ifconfig up` / `thread start`) and they form a Thread network — one becomes leader, the other attaches as a child, exchanging MAC-secured MLE frames. Check the roles with `state` and follow the traffic in the 📡 Sniffer.
LED ticker (32×8 matrix bar)A message scrolls across the 4-in-1 cascaded MAX7219 bar, pushed over bit-banged SPI at cycle accuracy: a 32×8 framebuffer shifted one column per frame, exactly how the real max7219 drivers do it. Edit the message in the Code tab.
Encoder menu (big OLED)A settings page on the 1.5″ 128×128 SH1107, driven by a rotary encoder decoded in MicroPython (gray code on two GPIOs with external pull-ups). Select the encoder and use its Inspector arrows to scroll; click the button to toggle an entry.
3D-printer fume extractor (ESP32, full build)The complete appliance on one bench: a 12 V barrel jack → buck converter powers an ESP32-C3 and a 120 mm PWM fan, while a Sensirion SEN55 measures the air and an MQ-2 sniffs for smoke. Real MicroPython ramps the fan from the live PM2.5, and the MQ-2 alarm (drag its Gas slider past the threshold) slams the fan to 100 % in SMOKE! mode, after the sensor’s genuine 5 s heater warm-up. Hold the boost button for manual 100 %; everything editable in the Code tab.
Air-quality station (SEN55 + OLED)A desk-ready monitor: the ESP32 polls a Sensirion SEN55 over I2C and renders live PM2.5, humidity, and temperature to the OLED once a second. Press Run, then ▶ Run script in the serial monitor, and the display updates like the real appliance.
Bubble level (MPU-6050 + OLED)A spirit level built from an IMU: the S3 reads the accelerometer gravity vector and floats a bubble across the OLED. Run the prefilled script, then tilt the sensor from its Inspector (accel X/Y) and watch the bubble chase the slope.
Arduino Uno blink (open bench)The classic first sketch on the classic board: a real emulated ATmega328P Uno on the open bench, D13 wired to an LED pin-to-pin. The Code tab opens with the sketch; sign in and press Compile & upload to build it on the server and flash the result.
Keypad door lock (keypad + OLED)A real embedded project: an ESP32 scans a 4x4 matrix keypad and drives an OLED lock screen. Press keys to enter a code (default 1234), * to clear, # to submit; the display shows UNLOCKED or DENIED. Demonstrates matrix scanning, edge detection, and live display, all in MicroPython.
SH1106 1.3″ OLED helloThe 1.3" SH1106 OLED (the bigger cousin of the SSD1306) showing live text. Demonstrates a correct SH1106 driver: page addressing with the classic 2-column RAM offset.
Pocket e-reader (e-ink pages)Three pages of Alice in Wonderland on the 1.54″ e-paper panel. Click the button to turn the page; each turn streams 5000 bytes into the SSD1681 RAM and fires a full refresh, flash and all. The current page survives a power cut, exactly like the paperback it is.
E-ink badge (persistent display)A 1.54″ e-paper panel driven by a real SSD1681 SPI sequence: the script writes the controller RAM, fires Master Activation, and polls BUSY through the ~1 s refresh flash, and then the image stays put even if you cut the power. That’s e-paper.
LED matrix beating heart (MAX7219)An 8×8 LED matrix driven by a MAX7219 over SoftSPI, pulsing a heart. The SPI words are decoded with cycle accuracy: registers 1–8 = the eight rows.
Plant monitor (soil + OLED)A soil-moisture probe on the ADC, its reading shown as a percentage and bar on the SH1106 OLED. Drag the probe’s Moisture slider in the Inspector to water the plant.
Laser tripwire alarmA laser aimed at a photoresistor; the ESP32 reads the light on its ADC and sounds the buzzer when the beam is broken. Drop the photoresistor’s Light-level slider to break the beam.
Analog joystick readerReads the two joystick axes on the ADC and the push switch, printing the direction. Move the stick with the X/Y sliders in the Inspector, or press its button.
PIR motion lightA PIR motion sensor lighting an LED when it detects movement. Press “Trigger motion” in the PIR’s Inspector; OUT pulses high for a couple of seconds and the LED follows.
Sensor on the open bench (no breadboard)The workbench in its purest form: a battery, an ESP32, and a BME280 floating free, wired pin-to-pin, no breadboard anywhere. Run it and read the sensor from the REPL with the prefilled script.
Servo on PWM (LEDC)A servo on G4 driven by the real ESP32 LEDC peripheral. The serial monitor opens with a ready-made sweep script; press ▶ Run script and watch the horn move.
Weather station (BME280)A weather sensor the way drivers actually see it: the BME280 answers on the I2C bus with its real register map, and the Bosch compensation math lands exactly on the conditions you set in its Inspector. The prefilled script reads it end to end.
Motion sensor (MPU-6050, S3)Wake a 6-axis IMU exactly like a real driver: WHO_AM_I check, sleep-bit clear, then a burst read of the accelerometer. The prefilled script prints the gravity vector in g; change the tilt in the Inspector and read again.
Boot screen on an OLED (no typing)Press Run and watch the ESP32-C3 boot on the screen: CPU check, flash, I2C, the real Wi-Fi radio coming up (with its MAC), a progress bar, then a live uptime/heap status line. Stock ESP-IDF firmware driving the SSD1306 over I2C.
S3 peripheral tour (no typing)Fully autonomous: a stock ESP-IDF app on the ESP32-S3 writes the OLED over I2C, animates the NeoPixel strip over RMT, and reads the pot on ADC1. Just press Run.
Pico ADC voltmeterThe Pico’s ADC samples the real solved net voltage: turn the pot, watch the millivolts change on the serial monitor.
74HC595 binary counterAn MCU bit-bangs a shift register; four LEDs show the low bits counting up ~10×/second. The Code tab holds the same counter as an editable Arduino sketch.
MCU reads SEN55 (I²C)An ATmega runs bare-metal I²C to read PM2.5 from a SEN55 and prints it to the serial monitor.
OLED hello (I²C)An SSD1306 128×64 OLED speaking the real I²C protocol: the MCU inits it, clears GDDRAM, and draws pixels.
LCD hello worldAn MCU drives a 16×2 HD44780 character LCD over the real 4-bit protocol: nibbles, E strobes, init dance and all.
Ultrasonic rulerAn MCU pings an HC-SR04 and prints the distance over serial. Drag the distance slider and watch the readings follow. The Code tab holds the same ruler as an editable Arduino sketch.
DHT11 climate monitorBare-metal single-wire protocol: the MCU reads temperature and humidity from a DHT11 and prints them over serial.
120mm fan PWM controlA 4-pin 120mm fan driven by a PWM source, with its tachometer pulled up: the core of an extraction-fan controller.