These are a few of my favorite ESPs

I’ve tended to reach for a Raspberry Pi Pico W when I want to try things, as the UF2 (Mass Storage) bootloader makes it so easy to get started and rapidly iterate. Doesn’t hurt that I can always pick up another one at my local Microcenter for $5.99 and, unlike many ESP32 boards, they fit comfortably on a solderless breadboard.

Why doesn’t this random $3 ESP32 board fit properly on a breadboard?!

Every First-Time ESP32 User

But the more I’ve used the Pico W, the more I’ve found the Wi-Fi to be… troublesome.

Espressif has learned their lesson about size and pretty much all of their current designs — except those based on the legacy ESP32-DevKitC form-factor — are ~25.4mm or narrower, but 3rd-party boards that use older and wider designs dominate the marketplace. Especially when shopping primarily based on price. And people who should know better will still suggest those boards to people asking how to get started. #smh

I’ve come to the conclusion that buying cheap, “classic” ESP32 boards is being penny-wise and pound-foolish. I now only want to buy ESP32-S3 boards, because a perk of the -S3 is native USB support that allows for a UF2 bootloader to be installed for the Pico-like experience. And I want them to have some PSRAM, because I’ve managed to run out of memory in CircuitPython despite my best efforts to aggressively release memory and trigger garbage collection. And, of course, I want boards that fit comfortably on a a breadboard.

My current group of favorites are all from Waveshare and even narrower than 25.4mm:

The ESP32-S3-Mini is the board I’m reaching for first, as the smallest and lowest-priced of the bunch. It has 2MB PSRAM, 4MB flash, 13 usable GPIO pins, plus pads that can provide up to 11 more GPIO. It fits a 170-point breadboard with 8 rows to spare and the sequential pin numbering is a massive quality-of-life improvement over most boards.

The ESP32-S3-Nano replicates the Arduino Nano ESP32 at around half the price. It has 8MB PSRAM, 16MB Flash, and 22 usable GPIO pins. It can also (barely) fit on a 170-point breadboard.

And the ESP32-S3-Pico faithfully replicates the Raspberry Pi Pico form-factor and pinout. It has 2MB PSRAM, 16MB Flash, and 26 usable GPIO pins.

Again, these are not dirt-cheap boards — the -Mini gets down to $6.15 pre-soldered if you buy 4+ direct from Waveshare, plus $6 shipping to the US, or $12.49 on Amazon — however, objectively they’re not expensive and I feel bring plenty of value over the absolute cheapest boards. I love the -Mini for its overall compactness. The other two cost more but I believe are fair values on their own merits, and compatibility with accessory products from their respective ecosystems — which are vast — is a sweet bonus.

The -Pico and -Mini also come in slightly cheaper ESP32-C3 and/or -C6 variants, if you don’t find the -S3 compelling or have an affinity for RISC-V.

I would suggest extreme caution if looking at 3rd-party boards claiming to be copies of the Espressif’s big boi 44-pin ESP32-S3-DevKitC-1: Every one I’ve found on Amazon copies the pin arrangement but is ~28mm wide instead of ~25.4mm. The give-away is that they’ve silkscreened the GPIO labels next to the pins instead of between them — the ESP32-S3-WROOM-1/1U/2 modules don’t leave enough room for that on a board ≤ 25.4mm wide. There are correctly-sized clones on AliExpress, I bought five from this listing for $23 delivered, but that’s a deal that probably won’t last and other listings don’t come at much of a discount to buying the genuine Espressif board for $15 on Amazon. Waveshare managed to make their compatible ESP32-S3-DEV-KIT-N8R8 shorter by around 7mm while retaining the genuine WROOM module, but it carries a premium over all their other ESP32-S3 boards. Given the prices. and the ginormous size of the Espressif design with substantial overhang at both ends, I think this format should be reserved for projects requiring more GPIO than the alternatives.

And, finally, if you’re supremely budget-constrained and absolutely have to go with a board that’s $5 on Amazon or even less from China, the magic search terms are “ESP32 38-pin Narrow.” Those should be 25.4mm, but sometimes they are wider and you should always try to find documentation of the dimensions before buying.

My First PCB

Over the weekend I attended an introduction to PCB building class at Freeside Atlanta. They are an exceptionally friendly and welcoming group with an awesome space full of all the goodies I could ever hope to have access to for electronics, metal, wood working, and even blacksmithing, but sadly I live much too far away and would use the space too little to justify the membership costs. 11/10, would recommend them to anyone living near the airport.

With a few more hours work the next day, I’ve constructed and ordered my first prototype PCB for the coop controller:

The v3 prototype is probably not going to make it to the coop because it really needs longer screws and spacers to fit comfortably in the outdoor enclosure, and that just feels wasteful to track down and buy for what was intended to be an extremely temporary solution, so hopefully when this PCB gets here it actually works 🤣

I also ordered Omlet’s new smart controller. For science.

It appears to be trivial to replace the firmware but trying to hack on that isn’t high on my priority list right now. I am curious if it has a real-time clock module — the “RTC” built-in to the ESP32-S3 is a clock that ticks, not a clock that follows and preserves Earth time after power loss like found in a typical computer — but the markings on all the ICs are obscured by a coating.

Progress on the Chicken Door

This is v3:

First with v2 I switched to an ESP32-S3 board, because the Wi-Fi on the Raspberry Pi Pico W… sucks. For several days I battle-tested the Pico W against an ESP32-C3 with the classic PCB trace antenna, an Arduino Nano ESP32-S3 with a fancy resonant cavity antenna (like the Pico’s), and two other ESP32-S3 boards with ceramic antennas in the location I need this to go, and while I’m not sure there’s a clear winner, the Pico W was the worst.

Then I worked on adding physical controls and a DS3231 RTC module. Cleaning up my garbage “Make it do something” code and migrating to asyncio coroutines. Learning things like: Sometimes the motor doesn’t start and doesn’t draw significant current, so monitoring that the current has risen above a certain threshold is a thing I needed to do.

This v3 is prepping a more suitable version to go outside. It’s nearly ready…

Just in time for Omlet to have released their own Wi-Fi controller 😂🤣😭

Tho it doesn’t sound like it does the things I want my controller to do.