The Reddit user /u/MealsWheeled had a problem: Their upstairs neighbour was noisy and thus annoying them. What should one do in such a situation? Leave a note or go and talk to them? Not if you are an engineer. And that is what /u/MealsWheeled is. Their solution was to invent what they call the TallyWhacker.
The TallyWhacker consists of an ESP8266, a 20 kg RC servo, a battery pack to make it wireless, and, most importantly, a spring doorstop. Once put together in the 3D-printed enclosure, the device is screwed to the ceiling and the servo pulls back the spring doorstop and lets it loose. The obnoxious noise resonates through the ceiling and floor, leading right in to the annoying neighbour’s flat.
If you have ever had someone living above you who places their phone on the floor, you will know how easily vibrations can penetrate the ceiling. Now imagine the weak vibration motor in a phone being replaced with a sturdy spring, and you will know how annoying the TallyWhacker can be.
What you will need for this project
As already indicated, this project consists of six components (not counting the enclosure): An ESP8266, which can be any board you can get your hands on, a powerful servo, a relay (more on that later), a spring doorstop, an 18650 battery holder with two slots, and a buck converter.
Considering that the TallyWhacker is mounted to the ceiling, you are unlikely to have a socket anywhere near. As the enclosure needs to be large enough to accommodate the spring doorstop, I would suggest the use of a LOLIN (formerly WEMOS) D1 mini. Using such a board has the advantage of you being able to power it using the Micro-USB port. Although the creator of this project doesn’t use theirs, I will show you how it could be used further down.
How the TallyWhacker is constructed
The ESP8266 board connects to and controls both the relay and the servo. The relay’s only function is to conserve battery power: When the servo isn’t in use, it gets no power. When it needs to be activated, the relay closes the circuit and allows power to be delivered.
As the double slotted 18650 battery holder delivers 7.4V, it needs to be stepped down to 5V. All the electronic parts used in this project (ESP8266 board, relay, and servo) can be powered of 5V, so there is no further messing with voltages needed. To be able to get 5V from the 18650 batteries, a step-down (buck) converter is required. The creator of the TallyWhacker appears to have chosen one containing a seven-segment display. That display will tell you the exact output voltage, sparing you the use of a multimeter. Make sure the ESP8666 and servo (through the relay) are powered using separate power lines. You should never hook up the servo directly to an ESP8266, ESP32, or Arduino board.
With everything in place, all that is needed is the 3D-printed case. Unfortunately, the creator hasn’t publicly shared their STL files, so you would have to design your own enclosure. However, you might want to do that anyway, as the doorstop of the TallyWhacker bangs against the current enclosure, which reduces the oscillation.
Programming the TallyWhacker’s ESP8266
Despite using an ESP8266 and being connected to Home Assistant, the TallyWhacker does not use ESPHome. Instead, the creator has opted to use Arduino code, as that is what they are most familiar with.
However, I could imagine that porting this project to ESPHome wouldn’t present to many difficulties, as it supports both relays and servos natively. For those interested in creating an identical TallyWhacker, the Arduino code has been published on Pastebin.
How to improve the TallyWhacker
There are few obvious improvements that could be made to the TallyWhacker, such as designing a big enough enclosure, switching to ESPHome, and figuring out deep sleep. Then there are those that I, personally, would make, but not everyone might agree with.
To start off with, I would most likely exchange the battery holder with an 18650 shield. Using such a shield, there is no need for a buck converter, and such shields generally also support charging with all the necessary protection circuits. Another option would be to use a buck converter that only steps down to 5V. There are models available with USB boards, which could power an ESP8266 without having to solder any additional wires.
Finally, as I’ve never really seen the point of having buck converters with a display, as it only gets used once, I would recommend just getting a multimeter. That way, you can set up any buck converter with a variable output. Plus, if you are interested in creating more electronics projects, you will need a multimeter sooner rather than later anyway.