Skip to content

TechPioneer/GoodMorningMachine

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Introduction

the Good Morning machine

The "Good Morning machine" idea came out of a desire to be able to have a fun, lightweight way to check in on loved ones. My mother recently started living alone and she was afraid that if she fell or was otherwise incapacitated, that no one might notice for days or longer.

We started by sending each other a text each morning, but I wanted something more interactive and I didn't love the idea of filling up our chat history with tons of "good morning" messages.

My goal for this project was to build a gamified way for us to say good morning to each other, while keeping the cost to a bare minimum. To that end, I used a cheap "Simon" knockoff from Amazon, a Raspberry Pi, and a custom circuit board. All said and done, the BOM for each unit is less than $20.

Operation

Person 1 presses one to four buttons on their unit. Those buttons light up locally and also on the remote unit. Person 2 then presses those same buttons, causing them to go dark on both units. Once all of the buttons are dark, the unit goes into a "breathing" mode where the button lights slowly fade in and out. At this point, both people have checked in with each other.

Now, when a button is pressed in the "breathing" mode, a happy little song will play and the unit will reset for the next check-in tomorrow.

Software

The software is using MicroPython. It's using MQTT for communication and for that, I use hivemq.cloud, as they have a free account that offers more than enough messages/month.

To get started, you should load MicroPython on your Pico, copy the files over, edit secrets.py and config.py for your particular setup, and you should be good to go.

You can also add Birthdays to songs.py to play Happy Birthday on that day. There are a few other holiday songs in there that only play on certain days. Otherwise, on a normal day, a random song plays.

Songs

For the songs, I looked for short, happy tunes. Something 5-10 seconds long works best. For this, I found that video game fanfare pieces (Mario beating a level, Link getting an item, etc) are a great choice.

I searched for sheet music online and when I found a tune that would work, I would manually transcribe it into MuseScore. The Good Morning machine only has a monophonic speaker, so you'll need to simply the songs down to the bare minimum. Once you have something that will work, save it as a MIDI file and then run from the MuseScore/ directory:

pip install -r requirements.txt convert.py song_file.mid

This will output the notes in a format that the MicroPython code will understand. Save this output into a new variable in song_listings.py and then reference it in the "songs" list in songs.py.

Hardware

I used a cheap Simon-like game (aka a memory game) from Amazon. The exact unit I bought is no longer available, but this is a close copy: https://www.amazon.com/tingbowie-Electronic-Memorizing-3-7x5-6x1-4-01/dp/B09Y9D2X41

However, since it's not the same game, you'll probably need to tweak the circuit diagram to make it fit. I reused the internal speaker and the shell. The original board and electronic components were tossed.

The circuit board was designed in KiCad and then manufactured by JLCPCB.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages