🌈 ESP32-S3 Rainbow: ZX Spectrum Emulator Board! Get it on Crowd Supply →
Teaser Image
atomic14

atomic14

Here's a list of all the videos from my YouTube channel - you can watch them here or pop over to and watch them there.

Want to keep up to date with the latest posts and videos? Subscribe to the newsletter
  Âˇ     Âˇ     Âˇ     Âˇ     Âˇ   Posts  Âˇ   Videos  Âˇ   Tools  Âˇ   Support

Why This ESP32 Reset Button Didn’t Work

Had a slightly annoying issue: one ESP32 dev board’s reset button did nothing while the LED kept happily blinking. Schematic and PCB layout were fine, EN net buzzed out, but there was no continuity across the reset switch. Reflowing didn’t help; under the microscope the joints looked good. The culprit? The tactile switch was gunked up with flux. A soak in IPA brought it back to life—continuity restored, reset works, programming mode good. Moral of the story: sometimes it’s not the design—just clean it. Use more alcohol.
05 April 2026

The Devil’s Package - SOT666

I tracked some QA failures on my ESP32 rainbow boards down to the USBLC6 ESD IC in a SOT666 package—under the microscope the part wasn’t actually landing on the pads. Reflowing fixed it, but that shouldn’t be necessary, so I compared KiCad’s SOT666 footprint to the ST datasheet and found big mismatches. Turns out “SOT666” isn’t consistent across vendors (KiCad/Nexperia/Diodes/EasyEDA all differ), so the only safe move is to follow the exact datasheet for the specific part. I built a new footprint in KiCad per ST’s land pattern, tweaked the routing, and the 3D preview looks good—fingers crossed the next...
05 April 2026

$3 AliExpress Heart Rate and Oxygen Sensor Module

You know how it is—you grab one cute little AliExpress module, then another… so I finally put an ESP32-C3 to work. Under the microscope it looks solid (nice 3.3V reg, ceramic antenna I’m not trusting for Wi‑Fi), and I paired it with a MAX30102 heart-rate/SpO2 sensor. Wired up I2C (SCL pin 6, SDA pin 5, INT to pin 2, 5V in), ran a scan, and boom—two devices found. After some finger-fiddling, the readings matched a commercial oximeter. Code’s on GitHub—cheap, fun, and it works.
05 April 2026

How to make your ESP32-S3 code faster.

I put my ESP32-S3 dev board from PCBWay through a quick performance workout by decoding a baked-in animated GIF with Larry Bank’s decoder and tweaking ESP-IDF settings. Cranking the CPU to 240MHz gave the expected ~1.5× bump, -Os beat -O2, switching flash from DIO to QIO shaved a bit more, and turning the caches up to 11 pushed it further. Best combo: 240MHz, -Os, QIO, max caches (with a larger partition and watchdog off). Nice little speed win.
05 April 2026

Even more AliExpress gadgets

Another shamelessly overstuffed mailbag—cheers to PCBWay for fueling the bench carnage. I poked UV sensor cards with a curing lamp (they go purple then fade), sifted through robot gears, and lit some fragile LED filament letters (~2.7 V, happy around 100 mA). A USB photocatalytic mosquito trap spins at 0.02 A (teardown later), an OV7670 cam joins the ESP32/UVC experiments, and a chunky COB strip looks like a 12 V amp-gobbler. Bonus: surprisingly decent keyring torches with ‘police’ flash, a hilarious translation on a temp/humidity doodad, and watch oiler wands that are perfect for painting on solder resist—projects incoming.
05 April 2026

I Turned an ESP32 into a Thermal USB Webcam

Last time I made an ESP32 pretend to be a webcam; this time it’s a real USB UVC cam streaming MJPEG. Then I go further: I bolt on a tiny 32x24 infrared sensor, scale it up to 320x240 with nearest-neighbor or bilinear, JPEG it, and stream it like any normal webcam. Along the way I show why ESP32-CAM won’t work (no native USB), dive into I2C gremlins (run a scanner first, check pull-ups), and fix a flaky 3.3V regulator solder job. Quick hardware tour: onboard 2.2K pull-ups, ME6212 LDO, and an AT32F415 MCU. Audio can wait—today’s all about making thermal...
05 April 2026

Amazon Basics vs SanDisk: I Cut Them Open

I cracked open an Amazon Basics microSD-to-SD adapter (the one I fixed last video) and a branded SanDisk to see what’s actually different inside. Under the microscope the contact geometry is surprisingly different: Amazon uses springy bent pins the card slides under—with a clear fatigue weak point I already snapped—while the SanDisk has staggered-length contacts the card presses down onto, with what looks like heavier gold plating. I’m leaning toward the SanDisk for robustness; shout out to PCBWay for the dev boards, and let me know—A or B?
05 April 2026

My ESP32S3 Thinks It's a WebCam!

I turned a vanilla ESP32-S3 dev board into a USB UVC webcam that doesn’t use a camera at all—first streaming a static test card, then an animated GIF, and finally a real-time Pong game. The ESP32 pre-decodes GIF frames to RGB, JPEG-encodes them, and streams MJPEG, and for the live game it renders to a framebuffer, JPEG-encodes in ~23 ms, and just about hits 30 fps. There’s room to optimize (dual-core draw/encode), and this approach is great for dashboards, sensor visualizations, or testing video pipelines. Shout out to PCBWay for the boards—they turned out great.
05 April 2026

Why did I fix this?

Quick little teardown and bodge-fix: my scratchy-sounding SD card adapter had a wonky contact pin. I cracked it open, tried to bend it back, promptly snapped it, then lost the bit. So I chopped a resistor leg, soldered it in under the microscope, tweaked the pins for continuity, and slapped it back together. Plugged it in—holy crap, it worked! Not the prettiest fix, and I probably won’t trust it long-term, but that was fun.
05 April 2026

I Spent Hours Debugging My Software…

Quick bench update: I tried to get a 32×24 pixel IR module talking over I2C and it just would not play ball—pull-ups, library swaps, address scans, nothing. First silly mistake was not bridging the I2C jumper. Even after fixing that, still dead. Under the microscope I spotted the real issue: poorly soldered pins on the IC. A quick reflow and some IPA cleanup later, it sprang to life. Moral of the story: if yours won’t talk, check the underside soldering. Project video coming soon.
05 April 2026

Drones and Lasers?

It’s been a while since we’ve done an unbagging, and I’ve clearly been on an AliExpress bender. Big thanks to PCBWay for fueling the chaos. Today’s haul: a pair of tiny ESP32‑C3 OLED modules (no idea why I ordered two, but here we are), a finger pulse/SpO2 sensor, a USB‑C PD trigger with DIP switches that happily serves up 5/9/12/15/20V (1+3 gives 20V—very handy), an INMP441‑compatible MS8625 mic, a surprisingly nice transparent clock with temp/humidity, a couple of rechargeable nightlights that only charge on dumb USB because there are no CC resistors, a laser and matching detector (pew pew!), and,...
05 April 2026

Train Surgery

I take a fun but unbelievably loud battery train and give it some train surgery: measure the 4xAA pack (~6 V), gut the coal car, shoehorn in an 18650 with a charge/protect/boost board set to about 5.5 V, wire it up, sanity-check polarity, and get the wheels turning. Then I tame the racket by putting a potentiometer inline with the speaker, chop some plastic so the knob pokes out, and hot-glue it all in place. Result: rechargeable power, adjustable volume, same charm—minus the living-room headache. (Quick shoutout to PCBWay for the boards.)
05 April 2026

Three ESP32 Rainbow Boards Failed QA — Can we fix them?

I’m assembling another batch of ESP32 Rainbows: PCB house does the boards, UV silkscreen and some parts, and I finish assembly and QA here in Scotland. I run through three QA fails—no sound, dodgy keyboard, and no USB—then fix two: the audio fault was lifted pads on the headphone jack, so I bodged it back with flux and solder (speaker and headphones now work, but it’s a spares board). The no‑USB issue was an ESD protection IC sitting off its pad; I reflowed it on a mini hot plate, cleaned up with IPA, verified continuity, and it now enumerates and...
05 April 2026

Stop Using printf() - Debug ESP32 the Right Way

Right, let’s give this a go. Instead of drowning in printf()s and blinking LEDs, I show how the ESP32-S3’s built‑in USB JTAG lets you hit Debug in the Arduino IDE (or PlatformIO) and actually step through code. We set breakpoints, add watch expressions, use conditional breakpoints, and even edit variables live with a simple FizzBuzz/LED demo. It’s quick, it works, and it beats “works on my machine”—just mind real‑time code and ISRs. Works on ESP32s with native USB.
05 April 2026

I Built My Own ESP32-S3 Board… And It Actually Works!

I finally assembled my super simple ESP32‑S3 dev board—voltage regulator, reset button, three status LEDs (5V, 3.3V, and a GPIO blinker), and all pins broken out. I showed two build methods: stencil + hot-plate reflow (quick, with a few USB bridges to clean up) and full hand-solder under the microscope, complete with the rigorous ‘solid’ test. Soldered the ESP32‑S3 module (skipping the center thermal pad unless you need it), plugged in, got power LEDs, confirmed USB enumeration, flashed a blink sketch, and we’ve got a blinking LED. Next up: turning this basic dev board into something more professional for production....
05 April 2026

I Built a 27V PCB to Fix This $3 Display...

I resurrected the LCD writing tablet I blew up last time by designing a drop‑in PCB that generates a 27 V pulse to clear the screen. It’s a regulated dual‑joule‑thief variant with two magnetically coupled 20 µH inductors (soldered opposite ways), a 27 V zener for regulation, inrush limiting, and a few caps and a bleed resistor. I assembled it with PCBWay boards, tried both Voltera‑printed paste and manual SMD under the microscope, salvaged the blister button, and profiled it on the Nordic PPK—peaks ~18–19 mA, ~7 mA while regulating—totally coin‑cell friendly. It fits with a bit of mechanical fiddling,...
05 April 2026

How Is This 10¢ Chip Talking?

I got a 10‑cent MCU literally talking. With just 16K of flash and 2K of RAM, I used PWM and a tiny transistor amp to play 6+ seconds of audio at 8 kHz by compressing it with super‑simple 2‑bit ADPCM—4:1 compression and a decoder in under 2 KB. I built a handy WAV‑to‑2‑bit‑ADPCM tool to make it easy. For longer phrases, I switched to the Talkie library (TI LPC speech synthesis from the TMS5220/TMS5100 era—think Speak & Spell and classic arcades), and I even made a web tool and player for generating and previewing LPC data. It’s wild what you...
05 April 2026

10¢ MCU Brain Surgery - CH32V003

I crack open a punchy little toy, show how the original just squishes two contacts to light the eye LEDs off a pair of LR41s, then perform some brain surgery to cram in a tiny lithium cell and my own board that triggers lights—and an incredibly annoying tune—on each punch. It sips about 7 µA in deep sleep and wakes via a yellow trigger wire, but the soldering was fiddly and full of swearing. Tape it up, cram it back in the head, and yes, it works a treat… maybe too well, because the beeping is driving me mad.
05 April 2026

10¢ MCU Music Hack - CH32V003

I spun some tiny WCH boards at PCBWay around an 8‑pin MCU (48 MHz, 16k flash, 2k RAM) to beep tunes off a coin cell. I tried hand-soldering, then used my paste-dispensing PCB printer—expired paste still worked great. Standby sips under 8 µA, but it locks out programming; a WLink flash wipe rescued me. Wake draws ~3.3 mA, and audio peaks hit ~130 mA (~13–14 mA average), which browned out the coin cell. A tiny 80 mAh LiPo with a TP4056 (modded to ~100 mA) proved the design, then swapping the buzzer’s base resistor from 1k to 10k tamed it...
05 April 2026

ESP32 PDM Microphone - What do you do with the L/R pin?

I treated myself to some hands-free probes and dug into the PDM mic on my ESP32 board. I was confused that the new I2S PDM API only asks for clock and data—no LRCLK—yet the mic datasheet shows an LR/SEL pin. The trick: in PDM, LR is just a static select. Tie it low and data is valid on the rising edge; tie it high and it’s valid on the falling edge, so two mics can share the same I2S lines by picking opposite polarities. I proved it on the scope and realized I don’t need to burn a GPIO on...
05 April 2026

ESP32-S3 USB UAC Audio Device - does it work?

Time for an audio project: I took my PCBWay ESP32‑S3 board for a spin—fixed the common anode/cathode LED mix‑up, verified the IMU and battery charger, then tested an I2S PDM mic and tiny speaker with a Web Serial Audio Studio (scope, spectrogram, tuner). I also turned it into a USB UAC device in ESP‑IDF: the mic is clean, but speaker over UAC is crackly (Mac/Windows toggle oddity); direct I2S WAV playback is perfect, so the hardware passes QA.
05 April 2026
← Older posts Page 1 of 10
Subscribe!
All content copyright Chris Greening © 2026 • All rights reserved.
Made with Jekyll

This website uses cookies to enhance your browsing experience and analyze site traffic.