Parents often find it challenging to capture candid moments of their children without causing disruption. KidKeeper is a toy-like system that unobtrusively records family memories through "integrated capture," blending continuous recording with everyday activities. It strikes a balance between parents' desire to preserve memories and children's focus on play, allowing kids to be their authentic selves while preserving those precious moments.
Picture taken in April 2025
Recording: The touch sensor is located in the arm of the plush toy. When squeezed, it starts recording via the microphone for 10 seconds.
Playing Back: After an audio has been recorded, it is played back through the speakers.
Email Notification: The recordings are stored in the Raspberry PI, and sent via email.
Figure: Caraclock user flow diagram showing components and user interactions
Hardware:
Raspberry Pi 4: It is a single-board computer that handles the input and output of the components connected.
SD card: this is the storage of the Pi.
USB Stereo Speaker: It is used to play the recorded audios.
USB Microphone: Captures the audio input.
Battery or AC/DC Adapter: the adapter is ideal for stationary use. and the battery option allows portability.
TTP223B Digital touch sensor: It detects touch input
Jumper wires: Consider getting long jump wires to route the touch sensor to the Pi.
Monitor: it will be useful to check the IP address of your Raspberry pi.
SD Card reader/adapter or laptop with a SD card slot: used to set up SD card.
Case:
Stuffed animal (with enough space to house components)
Sewable velcro strip for the back of the stuffed animal
Thread and needle
Setting up SD card:
If you are using an SD card that already has Raspberry Pi Operating System (OS) installed, you can skip this step and go straight to Step 2. This step is also helpful if you ever need to re-flash your SD card at some point.
If you are using a brand-new SD card, you will need to install the Raspberry Pi operating system on it:
Download the Raspberry Pi Imager from the official Raspberry Pi Software page: https://www.raspberrypi.com/software/ and choose the version of the Imager that matches your computer's OS (e.g. Windows, MacOS).
Insert the SD card into your laptop using an SD card slot or a USB card reader/adapter.
Use the Imager to Install Raspberry Pi OS
Open the Pi Imager. The Graphical User Interface (GUI) should look similar to the image below.
Image: Raspberry Pi Imager GUI taken in May 2025
Click on the CHOOSE OS button to select the operating system. The OS recommended by Imager is at the top of the list.
Click on the CHOOSE STORAGE button and select your SD card
Click the WRITE button to begin the installation
4. (Optional but recommended) Under OS Customization, configure the wifi network if known and enable ssh for remote access.
5. Once the verification is completed, the SD card can be removed
To learn more information about these steps, go to the official site: https://www.raspberrypi.com/documentation/computers/getting-started.html#setting-up-your-raspberry-pi
Insert the SD card into the card slot of the Pi
Plug the USB speaker and USB microphone into the USB ports on the Pi.
Wire the touch sensor to the Pi as follows:
Sensor pins → Raspberry Pi pins
OUT pin → a GPIO pin (e.g. GPIO17)
VCC → 3.3V pin
GND → Ground pin
Plug the Pi into a power supply using a USB-C power cord or portable battery.
You can refer to the diagram on the right to check pin numbers.
Image: wired touch sensor using GPIO 21
Image: circuit with short female-to-female wires on touch sensor
Install Visual Studio Code (VS Code)
On your laptop, go to the official VS Code website: https://code.visualstudio.com/download
Download and install VS Code for your operating system.
Install the Remote - SSH Extension
Open VS Code
Click on the Extensions icon in the left-hand toolbar
In the search bar, type "remote ssh"
Click install on the extension "Remote - SSH" (the one published by Microsoft) as shown in the image below
Image: Remote SSH extension
Prepare Pi
7. Connect your Raspberry Pi to a monitor using an HDMI cable.
8. Plug in a keyboard and mouse
9. Open the terminal on the Pi.
10. To find the IP address (a unique identifier on your network), run:
hostname -I
11. To check the pi name, run the command:
whoami
the default username is usually "pi"
12. Connect both your Raspberry Pi and laptop to the same Wi-Fi network
Use the Remote SSH Extension
13. Open VS Code on your laptop,
14. Click at the bottom-left corner of the IDE as shown on the image below
Image: bottom-left corner of IDE
15. Click on "Connect to Host"
16. Type: ssh piusername@ipaddress -A
Replace piusername with your Pi's username (e.g. pi) and ip address with the IP you noted earlier (e.g. 192.168.0.103).
17. Press Enter. If it is your first time connecting, you will be asked to confirm the host fingerprint. Click yes.
18. Enter the Pi’s password when prompted.
19. Now you should be able to see Now you should be able to see the contents of the Raspberry Pi’s filesystem directly within VS Code.
Assuming you are remotely connected to your pi, open your terminal
Install Git on your Pi by running the command:
sudo apt-get install git
Git is a version control system that lets you download and manage code from GitHub.
Clone the GitHub repo:
git clone https://github.com/Memory-Museum/KidKeeper.git
❓not familiar with Github? check out the additional resources section below.
Navigate to the project folder
Image: KidKeeper folder through VS Code IDE
Edit the TouchSensorMicSpeaker.py file
Update line 24 with the GPIO pin you used for the touch sensor
touchSensorPin = X # Add your actual GPIO pin, not the board pin
Update the email sender and receiver list on lines 30 and 31
email_from = "sender@gmail.com" # Replace with the actual email
email_list = ["receiver1@gmail.com", "receiver2@gmail.com"] # Replace
Your sender Gmail account must have 2-step verification enabled.
Create an App Password and copy it.
Edit the .env file with the sender's email password.
Run the script to test the setup:
python TouchSensorMicSpeaker.py
Use scissors to carefully open a seam along the back of the stuffed animal.
Take out the stuffing
Sew velcro strips along the cut seam
Make sure there is enough space to either route the power cable or replace the battery pack.
Image: Sewing stuffed animal's seam
Position the touch sensor using long jumper wires at your desired interaction location. We decided to add it to one of the paws of the stuffed animal.
Sew around the wires to securely position the sensor at your desired location.
Place the speaker and microphone near the mouth or chest for clearer sound.
Add the stuffing back
Insert the Raspberry Pi and battery pack safely.
How to fix the SSH Host Key Error:
If you get this error: Could not establish connection to "192.168.0.101": Remote host key has changed, port forwarding is disabled.
Run this command on your terminal to solve the problem: ssh-keygen -R 192.168.0.XXX
Try to connect again
Contributors:
Milan Garcia and JC (Spring 2024)
Belen Saavedra and YoungSoon Takei (Fall 2024 and Spring 2025)
Original Paper:
Jasmine Jones, David Merritt, and Mark S. Ackerman. 2017. KidKeeper: Design for Capturing Audio Mementos of Everyday Life for Parents of Young Children. In Proceedings of the 2017 ACM Conference on Computer Supported Cooperative Work and Social Computing (CSCW '17). Association for Computing Machinery, New York, NY, USA, 1864–1875. https://doi.org/10.1145/2998181.2998348