My YouTube feed is currently a steady stream of oscilloscopes, dev boards, firmware walkthroughs, and "$12 microcontroller does WHAT?" thumbnails. I'm not fighting it.
A few weeks ago I stumbled across this video: A first look at: Elegoo ESP32 Starter Kit.
I had already been sketching ideas that required more than resistors and LEDs in the Maker Box. The ESP32 kit looked like the right level of friction: inexpensive, capable, and just enough parts to build something real.
I ordered it. And then I did what I always do: mentally filed it under "future experiment." That didn't last long.
How Did the ESP32 Escape Me?
I've owned almost every Raspberry Pi generation. I've built multiple Arduino-based projects. Somehow, the ESP32 just never entered my workflow.
That changed the moment I read about ESP-NOW.
- Peer-to-peer wireless.
- No router required.
- Low latency.
- Broadcast or targeted messaging.
- Runs on a board that can be as cheap as $1.80.
That is not a dev board. That is a product substrate.
I immediately ordered more boards: a few from Amazon for speed, a few from China for economics. If you're building distributed embedded systems, you don't buy one.
Unboxing: Physical Constraints Matter
The Elegoo kit arrived. First task: unwrap, inventory, and re-pack.
The components barely fit back in the case. People complain about that online. They are right, but you can solve it: rotate modules 90 degrees, stack vertically, move jumpers to the side. Mechanical packing is just another constraint to optimize.
That small exercise is part of the game. Hardware always pushes back.
Tooling Setup
I already had Arduino IDE installed, so the setup was straightforward:
- Install ESP32 board definitions
- Select DOIT ESP32 DEVKIT V1
- Confirm Serial Monitor works
- Flash "Hello World"
It worked out of the box. That matters. The faster you get a clean signal, the more momentum you build.
A Story from 10–15 Years Ago
My wife once had a product idea she was practically obsessed with.
She wanted to press a button, on a device or from her phone, and have a durable wrist-mounted device on a child vibrate to alert them to come back.
The use case was painfully practical: sitting on a park bench, kids at the noisy playground, tired of yelling.
It was a good idea.
At the time, I told her I couldn't help. I could build backend services. I could architect distributed systems. But I knew nothing about mechanical design, power electronics, motor drivers, enclosures, or how to manufacture even a prototype.
She was disappointed. And she remembered.
Fast Forward: 2026 Is a Different World
- ESP32 boards as cheap as $1.80
- Integrated WiFi + Bluetooth
- ESP-NOW peer-to-peer networking
- Cheap vibration motors
- 3D printers
- ChatGPT
- AI-native coding workflows (Cursor + Copilot)
The constraints collapsed. So of course this had to be the first project.
Architecture: A Two-Node Distributed System
The system is conceptually simple:
That's it. But even simple systems have layers:
- Hardware input
- Wireless transport
- Message protocol
- Power switching
- Actuation
- Feedback and acknowledgment
Each layer is independently testable.
Development Strategy (Systems First)
I ran two Arduino IDE windows side by side, one for TX, one for RX. That allowed simultaneous flashing and serial monitoring.
Minor tooling note: do not open the same files in Cursor and Arduino IDE at the same time. Arduino IDE does not like file contention and will happily freeze itself into oblivion. Once most of the code was stable, I switched to copy/paste workflow from Cursor into Arduino.
Build Timeline
- Verify ESP-NOW communication: serial logging on both boards, then command send/receive with ACK path from RX to TX.
- Confirm TX button input: GPIO with INPUT_PULLUP, state transitions measured, debounced trigger verified.
- Test an active buzzer from the kit: quick actuator sanity check on RX before moving to motor hardware.
- Build the motor driver stage: 2N2222A low-side switch, 1k base resistor, flyback diode, and debug through real measurements.
The RX side eventually drove a 3V N20 vibration motor through a textbook transistor stage. It didn't work at first.
After measuring base voltage and walking through the circuit, I discovered I was off by one breadboard row on the transistor collector pin. That was it. One pin misaligned.
That's the kind of bug that used to take me hours years ago. With structured debugging and AI assistance walking through expected voltage readings, it was resolved in minutes.
What Surprised Me
It mostly worked on the first full pass. Wireless. ACK handling. Buzzer check. Motor driver. Button trigger.
That is not because hardware is easy. It is because constraints are better documented, reference patterns are abundant, AI can sanity-check assumptions instantly, and iteration cycles are short.
The difference between "I cannot build this" and "This took a Saturday" is tooling.
Physical Iteration and Range Testing
I found a clean printable case for the ESP32: Thingiverse model.
Printed it in pink as a test. Obviously. It fit well and leaves antenna clearance, which matters for range.
Mechanical packaging is next:
- Integrate vibration motor
- Ensure antenna end is not buried in plastic
- Design for wrist strap integration
- Consider power and charging
ESP-NOW claims solid indoor range. I have not formally tested it yet. The plan:
- Line-of-sight distance
- Through-wall tests
- Park simulation
- Measure packet loss rate with sequence IDs
I expect indoor attenuation to be the limiting factor, not the protocol itself.
The Emotional Part
My wife was there for several of the "It worked!" moments.
Ten years ago I told her I couldn't build this. Now, in a few focused hours on a weekend, we had a functioning prototype.
Not production-ready. Not optimized. Not miniaturized. But real. And buzzing.
That matters.
What This Project Represents
This isn't about an ESP32. It's about capability compression.
Ten years ago:
- I had the software skills.
- I lacked the hardware literacy.
- Tooling was fragmented.
- The barrier to entry felt high.
Today:
- Microcontrollers are system-on-chip powerhouses.
- Wireless stacks are built in.
- Power electronics are $0.10 components.
- AI accelerates debugging.
- 3D printing removes mechanical gatekeeping.
The surface area of what a single motivated person can prototype has expanded dramatically.
Artifacts
Repo: github.com/warreneblackwell/esp32-buzzer
Next iteration:
- Multi-child ID support
- Battery + charging module
- Power optimization (light sleep on RX)
- PWM intensity control for haptic feel
- Enclosure design for wrist wear
Further Reading
Closing Thought
This project was not technically difficult. But it closed a loop.
Sometimes growth isn't about learning something new. It's about revisiting something old with better tools.
And pressing the button. Buzz.