The war against failed package deliveries continues, and although it’s been almost two months since it began, it’s still a work in progress. I’ve been doing a lot more stuff (including rebuilding my home infrastructure and running some cloud benchmarks), but a recent delivery miss bumped this back to the top of the order of business, so today I spent a couple of hours tinkering with electronics.

Current Ammunition

Last time I glued a contact sensor to the bell’s inductive coil, tacked a buzzer on an ESP-01, loaded it with Sonoff-Tasmota and called it a day. Later on, I took the time to solder the various bits onto a tiny piece of protoboard with a neater arrangement:

Version 1.1, on naked protoboard, with most of the components tucked under the ESP-01.

Since I treated the buzzer just like another device, it was trivial to plug in to my home automation setup1 as another bit of MQTT/Node-RED logic:

The extra buzzer only pipes in during the daytime

As it turns out, the resident humans found the buzzer sound annoying (which was kind of the entire point, since I wanted to get them to actually act upon it). But it was also not loud/distinctive enough to carry to the back of the house, which eventually forced me to start looking for a “nicer” solution.

MP3 Playback On a Budget

I soon found out about the JQ6500, a tiny MP3 player that can be made to playback specific samples either via a UART or 5 pull-down pins, as well as having the ability to drive a sub-1W loudspeaker.

It comes with a micro-USB port (so no need to use a standalone micro-USB breakout), but I still need to add a voltage regulator to power the ESP-01 off it. To pull down the relevant input, I just tossed in an N-channel MOSFET, and the resulting circuit looks pretty much the same as before:

A bit more complex than before

Uploading your own audio is as simple as cloning the rescue tool repository, building the jqtool binary on my lab Raspberry Pi and telling it to upload a folder’s worth of MP3 files, so I am trying out a few chimes as well as “regular” doorbell noises. Physically, the entire thing is only a slight bit larger due to the ESP-01 breadboard adapter:

This is actually simpler than it looks.

Since I’m still using Sonoff-Tasmota, this was wired up on Node-RED in exactly the same way and there is zero code involved–which was rather disappointing, really, as I’ve been feeling the need to do something besides Spark and Python.

I’ve already established that the tinny little speaker I’m using isn’t going to cut it (but, as usual, planned ahead for that), so I’m just waiting on a few PAM8403 3W amplifier modules and beefier speakers to go with them. Once they arrive, I intend to build at least two much louder doorbell extenders, and 3D print cases to house them.

And if the resident humans don’t appreciate the volume, well… At least now I can take requests for which chimes to use.

  1. I should probably mention (since it’s been a while now) that I’ve also been fiddling with Alexa and WeMo emulation (both directly to Sonoff-Tasmota flashed devices and via Node-RED), and that it’s been working OK–although I still do not allow Alexa or Google Assistant to access anything of consequence due to their (in)security model. ↩︎

See Also: