This old and unusual dial-less telephone now helps well-being and productivity to co-exist in the home office! Beneath its vintage grille a NeoPixel ring lights up its 24 LEDs in sequence for an hour, switching to an eye-catching rainbow display when it's time to take a break. Ignore the rainbow and the LED ring starts flashing red, accompanied by a subtle but un-ignorable beep from the phone's original buzzer unit.
To cancel the beeping or reset the timer at any time I just need to either press the button on the phone or momentarily lift the handset - both of which force me to get up and walk across the room, then seeing as I'm up anyway I may as well stretch my legs, grab a coffee....you see how it works.
The whole thing is powered by a nice old Raspberry Pi 2, using the phone's original switches and buzzer alongside the NeoPixel ring.
It's powered from a USB hub on my work laptop, and boots up automatically when I start up in the morning, so there's nothing to do but reset the timer when I take a break.
In case you can't see the embedded YouTube video it's at https://youtu.be/tvHFPuEaWAIInspiration
After staring at this strange old phone in the corner of my office for a month I thought it was about time it actually did something. I didn't want to spend too much time or money on it, so decided to only use parts I had in the workshop, as kind of a challenge.
I picked the phone up at a street antiques fair almost two years ago, and never could figure out its purpose, it has a grille instead of a dial, but no speaker inside - it was supposedly from a local air force base, so could have been an intercom or extension of some kind.
I decided to pair it with a Kitronik Zip Halo LED ring - this was just the right size and had also been haunting the workshop for over a year, unused. It was unused because technically it's for the bbc micro:bit, but having finally found a purpose for it I realised it's just a dressed-up NeoPixel ring, and can be controlled like any other strip of WS2812B RGB LEDs.Push to Break
After a quick dismantle and scrub-up, the telephone parts were much more approachable, and I set to getting them connected up with the Raspberry Pi.
The original button was the easiest, this turned out to be an early micro-switch, with screw terminals, so it was easily connected up to some female jumper cables. The small red lamp was a little trickier, but just needed to have its bulb replaced with a white LED, otherwise the holder was all left intact, again wired up to jumper cables.
Next I wanted to be able to lift the phone's handset to reset the break timer, so with a multi-meter set to "resistance" I began testing different combinations of the original screw connections on the phone, eventually stumbling over a pair of terminals that would connect directly to the receiver switch.
I was a bit unsure of the buzzer, as it was marked "12v" - I considered using a small relay board and a 9v battery, but then after testing I realised it would beep quite nicely at 3v, so wired it directly to jumper cables.Wiring and Pi Setup
I'd used quite long jumper cables on all the switches, so assembly wasn't too difficult. First I secured the Raspberry Pi board in place with some sticky-bolts (3m cable tie holders with small bolts drilled through) and then wired up the pieces to the GPIO one by one.
Apart from the NeoPixel ring, which was wired up to 5v, GND and GPIO18, the components were set up as follows:
GPIO12 (Input) - Original ButtonGPIO16 (Input) - Handset Receiver SwitchGPIO14 (Output) - Original Phone BuzzerGPIO26 (Output) - LED for lamp
To get the Pi to work with the NeoPixel ring I first installed some software for a board based on the same kind of LEDs (The Pimoroni Unicorn HAT):
curl -sS https://get.pimoroni.com/unicornhat | bash
This setup script did most of the hard work, and I recommend giving it a go if you need to control WS2812B LEDs, it comes with some great examples. Depending on the number of LEDs in your strip/ring you may need to edit...
sudo nano /usr/local/lib/python3.7/dist-packages/unicornhat.py
... as this controls (I'm pretty sure) the number of LEDs the software is expecting to find.
After getting the basics working I pulled together a Python script that would control the LEDs and buzzer, integrated with the two switches. This took some trial and error but the script I used is available on GitHub - it could easily be adapted to use different inputs & outputs. It works but it's not perfect!
The last part of the setup was getting the script to run at startup, so I edited...
sudo nano /etc/xdg/lxsession/LXDE-pi/autostart
...adding the line...
sudo python3 /home/pi/timer.py &
..to the end of the file, saving and rebooting.
The final part of the assembly was just putting the two halves of the phone case together - conveniently held in place by the original bolts.Take a Break
I really like this phone now, it sits quietly in the corner of the office, looks nice, has one job (forcing me to move occasionally) and does it well. It was fun and quick to build, but very hard to photograph - the LEDs are much brighter and more vivid than in the pictures!
I've always worked from home a few days a week, and in normal times it was an opportunity to work longer hours at a stretch and get more work done, without distractions.
That's not a sustainable way of working when you're WFH every day though, in a long-haul situation like this it's so important to take those small comfort breaks, for the sake of (in my case especially) your lower back and mental health.
Thanks for reading, stay safe and take those breaks home-workers!
My other Old Tech, New Spec projects are all on Hackster at https://www.hackster.io/martin-mander/projects