top of page

Wakey Talkie

Smart Alarm Clock System

This product consists of a network of two types of devices: a centralized touchscreen hub, and various peripheral alarm clocks.

From the hub, a user can set an alarm (the time when it should go off, and what sound it should play) on each peripheral device. It can also record audio messages of up to 15 seconds, which then get sent out to the chosen devices.

Aside from playing the alarms at the specified time, the peripheral devices can also detect activity in the room, such that, when it receives a live audio message, it only gets played when it senses that someone is in the room; otherwise, the message is stored, and can be played at a later time.

The idea for this product came about when thinking of a family with many children, living in a big house. Picture this: you're a single parent, living with your 3 kids. They each have to wake up at different times to get ready, but they're all having breakfast together (which you're preparing!). Instead of having to wake each of them up on time, and then go around the house screaming when breakfast is ready, you can use the Wakey Talkie! Just set each of their alarm times, and, whenever you're done cooking, broadcast a message out to all the children that aren't there yet!

Duration

Sep 2024 - Dec 2024

Team Size

3

Technologies

ESP32, Raspberry Pi, Python, wireless communication protocols, laser cutting

Technical Details

The hub consists of a graphic user interface developed using the Tkinter library in Python. This script is run by a Raspberry Pi 4 computer, which is connected to a TFT touchscreen display for maximized flexibility and interactivity. This display sits on a custom-made laser-cut acrylic stand. The audio is captured by an external USB microphone at a sampling rate of 40 KHz.

All kinds of communication between the hub and the peripheral devices happens through a wireless serial protocol, executed by the nRF24L01 Rx/Tx module. This includes alarm settings, audio messages, and acknowledgement packets sent back to the hub. Each message was encoded into a custom communication protocol, which ensured straightforward processing on the receiving end. On both kinds of devices, the physical modules connect to I/O pins on the processor board and interact with them using the SPI standard.

Each peripheral is powered by an ESP32-WROOM-32, connected to a 32x32 RGB LED matrix. All of its main functionalities are rooted on timer interrupts: updating the time, refreshing the display, and playing audio samples. The audio samples received via wireless serial are stored in a double buffer, which allows for mostly seamless playback. Additionally, an accurate timestamp is retrieved from the time.is API via WiFi on boot, and periodically throughout the device's execution. Users interact with these devices using large, panel mounted pushbuttons, through which they can stop a playing alarm, or hear a pending stored message.

My Role

I was responsible for implementing most of the hub's functionalities, including setting up the Raspberry Pi and the touchscreen, developing the user interface, and setting up the interface for recording audio messages.

I also took on the role of researching and setting up the audio transmission, and its playing on the receiving end. This required experimenting with different technologies (e.g. Bluetooth, which allowed for fast data transmission, but did not allow for long distances between devices) and forms of sending data (streaming live audio vs. recording a full message and then sending it).

Additionally, I took charge of most of the physical prototyping and manufacturing, including the acrylic mount for the touchscreen, and the cardboard box structure for the peripheral devices (all of which were laser cut, and engraved with the team members' names!)

Video Demo

This video was made as a fun representation of a potential use case of the Wakey Talkie, co-starring my incredible teammates!

Photo Gallery

bottom of page