The Challenge
Find or build a low-cost self-help device to help an aging parent remove the frustrations from living alone with restricted abilities. There should be no need for great eyesight or short term memory, both skills that deteriorated with my Dad's normal aging. He wants to know what day and time it is, when his next meal is and when the care workers are arriving next.
The Solution
A button box with multiple buttons that can be pressed at any time of day or night that will tell him the date and time, when his next meal is and when he has any upcoming events. It will be tied to a Google Calendar so that when his online calendar is updated, the new events will play on the next button press.
We prerecord generic messages about care worker arrival times and use cron jobs to auto play the messages at the related times of day. The date/time messages will use Google's Text to Speech API.
Using a Raspberry Pi keeps the footprint and learning process to a minimum. Using Google APIs keeps the processing requirements down. This version can be run on on a Raspberry Pi Zero W.
I am also working on a standalone single button version only used for date/time and cron job alarms. Because it doesn't require a calendar, I'm hoping it can be be built as a portable box with UPS, using a local TTS product like PIPERor MIMIC3. This will require a Raspberry Pi 4B with 8GB Ram and 64 bit O/S.
The Speak-To-Me Button Box
This project uses a Google Calendar and Google Text-to-Speech to announce appointments and events on a scheduled or ad-hoc basis.
It is written with Python 3.9 scripts using the RPi.GPIO library
Examples of Usage:
- When care workers are arriving
- When it's time for next meal
- Upcoming appointments or events coming soon
- Current date/time and how long until next meal
- Reading chapters from downloaded audio book with button to stop and then restart where it left off
- Playing music files with button to stop and then restart where it left off
- Downloading podcast on a schedule and playing on demand
Tools:
- cron jobs for playing of prerecorded phrases
- cron jobs to download podcasts on a schedule
- rc.local and bash script to start button script on reboots
- Python script stores meal times and meal description preset phrases
Wiring the buttons
This was a learning process for me. The buttons required 12V power and had to be wired to GPIOs for input to detect when they were pressed.
A final working circuit is shown below using the big buttons, resistors and a DC plug on a breadboard.
Here's the Falstad circuit diagram I used to make sure I got the 12V down to 3V before GPIO
When the button closes, it uses a voltage divider circuit with resistors to get the 12V down to 3V before to send a notice to the GPIO that its connected button has been pushed.
I made a video of an early version that reads aloud calendar events, next meal times, and play/stop/resume button for chapters of a book.
Future Changes:
Decided I'm going to need automated announcements for todays events - and possibly tomorrow. His confusion seems to be mounting when reading calendar on TV.
Some method of auto adding crontab announcements four hours and one hour before events might work. I'll have to find a way to auto-edit the crontab as well, removing announcements after event has passed.
One more ask from him is finding a way to hookup the audio book readings to his bluetooth headphones he uses for TV movies right now. I've had issues with Raspberry Pi and bluetooth in the past so that might be a big research project with much testing.
Woohoo! Just made finalist in the Assistive Tech challenge. Thanks for your support Hackaday and sponsors. Really looking forward to fleshing this out