This project was designed to take some of the chaos out of mornings by helping to organise everybody while getting ready in the mornings for work, school, collage, appointments and take some stress away from being told how little time you have left. This is a Clock that organises everybody's tasks to get them out the door on time.
Nowadays nearly everybody has devices that can remind them to do things, be places and generally nag them about how bad their memory is.
Alarms are great to remind you to do one thing like join a meeting, watch a TV program, join an online event, chat to a friend.
If you are getting ready to go out for the day or to work then there is more than one thing to do before you leave. Such as get belongings, make food, find items to take with you, get you coat and shoes.
You may allow yourself 20 minutes to do those things but time can seem to go faster than you expect and you find yourself leaving late.
When more than one person needs to get ready then time just seems to vanish. Especially trying to get kids to focus on getting ready and leave on time. Unfortunately as a parent/guardian that can be constantly telling the kids to hurry up, go and do this, go and do that. Which can be stressful for both the parent/guardian and child.
I thought sometime ago that it would be good to have a clock that takes on the nagging in a less stressful way and let everybody know what they should be doing at what time to get ready to leave on time.
Recently Seeed Studio offered me a Wio Terminal to build some projects with and I thought the naggy clock idea would be a good project for this device.
Wio Terminal by Seeed Studio
The Wio Terminal is microcontroller development board with a built in screen and various buttons, sensors and connectors.
- a 320 x 240 LCD display,
- a buzzer,
- a Microphone,
- Light sensor,
- IR transmitter 940nm,
- 5 way switch,
- 3 programmable Buttons,
- Built in WiFi and Bluetooth,
- 2 Grove multi function connectors,
- Micro SD Card slot,
- Power Off & Reset Switch
- a Raspberry Pi compatible 40 pi GPIO port with digital and analogue connections as well as the usual I2C, SPi, PWM connections.
- 4 MB External Flash, 192 KB RAM
The Wio Terminal can be programmed using Arduino IDE, ArdyPy, Micropython, AT Firmware and CircuitPython. As I have been writing Microcontroller programmes in CircuitPython and Adafruit has added support for the Wio Terminal from version 7, I decided to create the project using that. The only disadvantage is WiFi and Bluetooth are not currently supported in CircuitPython.
WiFi is not important for my project but does make the Wio Terminal a great little package as a portable sensor monitor for your programs and for interacting with other devices and IoT you may have.
Additional item for the Project
The Wio Terminal ATSAMD51 has a built in clock but as I needed a battery backed up clock I have used a Adafruit DS3231 Precision RTC with a I2C connection.
A Microwave Doppler Radar RCWL-0516 for Motion sensing. Then there are two white LED's used as a visual alarm. These are all mounted to the Wio Terminal on a custom stand.
Let's Go Clock Project
The concept is that the Wio Terminal displays a task that you regularly have with the time you need to do it. Nothing amazing with that, my phone can do that.
But with every task there is a sequence of events to achieve it on time. For example getting ready for work.
Once I have washed and dressed I come down stairs. I usually have 20 minutes to get my breakfast and eat it, make my pack lunch, get my Laptop and accessories, pack my rucksack, get my shoes and coat and then leave for work.
Maybe I take a bit longer making lunch, looking for something nicer than usual, and before I know it I'm now running late and the rest of the time is a bit of a rush.
Now where the Let's Go Clock comes in, is my morning routine is described in a specifically formatted csv file, Each part of the morning is allocated a time. Not only does the Wio Terminal Display tell me when I have to leave by but also what task I should be doing now and how long I have left to complete it. So if I am making my lunch and I hear it beeping I know I need to speed up a bit to stay on time.
Where this can help is if children are getting ready for school they can see what they should be doing now and how long they have left. Which means there should be less time chasing the kids to finish their breakfast and allow you to concentrate more on what you should be sorting out.
The schedule
The schedule is a csv file that contains the date and time of a task and a list of all the smaller tasks needed to complete the main task, with the length of time, in minutes, it should be started before the final alarm. If a task is done every week on a Monday then you can choose the day of the week rather than enter a date.
event_date | event_time | event_name | repeat_frequency | Mon | Tue | Wed | Thu | Fri | Sat | Sun | alert1 | event1 | alert2 | event2 | alert3 | event3 | alert4 | event4 |
08:10 | Rick Work | d | y | y | y | y | y | 25 | Breakfast | 15 | Make Lunch | 5 | Get Bag | 1 | Shoes & Coat | |||
08:15 | Rachael School | d | y | y | y | y | y | 25 | Breakfast | 15 | Put Lunch in bag | 13 | Books PE Kit | 5 | Shoes Bag Coat | |||
08:20 | Leon School | d | y | y | y | y | y | 25 | Breakfast | 15 | Lunch in Bag | 10 | Books & Equipment | 5 | Shoes Bag Coat | |||
08:25 | Roy Collage | d | y | y | y | 25 | Breakfast | 15 | Lunch in Bag | 10 | Books & Equipment | 5 | Shoes Bag Coat |
When the Wio Terminal is started up or the time passes midnight, the schedule is checked for any events due in the next 25 hours. Then when it is time to display the first sub task of an event the Lights Flash and Buzzer sounds for a bit of attention seeking.
Then the current Event is shown with the time it should be completed, basically when you should be out of the door. An Orange bar works across the screen to track the progress.
The next line is what sub task should be in progress to leave on time. This also shows the remaining time to complete the sub task as well as a green bar to visually track the progress of the sub task.
The next line, in pale blue, is to show what sub task is due next. For those who are on time and ready to start the next sub task in advance.
As each sub task is completed the lights flash and buzzer sounds to alert everybody of the new tasks.
There can be a maximum of four separate Alerts shown on screen at a time. Any additional alerts will be tracked but not shown until one of the current alerts is complete.
Once an alert is complete the buzzer plays a different sounds to the other alerts and the "Times Up" message shows for 1 minute. If all goes to plan you should never see that message because you should have already left your home.
When there are no alerts active, the current time is shown along with the time of any alerts due later in the day.
At this point the motion sensor is activated. If there is no movement for three minutes then the display is switched off until motion is detected again.
The motion sensor is a Microwave Doppler Radar that can sense movement from behind the custom Wio Terminal stand and kept out of view.
This module sends a two second signal along the data wire to a GPIO pin while motion has been detected. The CircuitPython script checks once a second for the signal and turns the screen on when motion is detected.
The Adafruit DS3231 Precision Real Time Clock module keeps the time while the Wio Terminal is switched off. This is connected via GPiO I2C connections.
The LED's are connected to the GPIO as well and mounted onto the stand for visibility.
Additional Features:
The schedule currently only works with entries that have a specific date or is repeated on a certain day or days of the week.
The next stage is to complete a Monthly Alert which is partially implemented. This will be an alert that goes off on the same date of the month at a specified time. This can be useful for monthly clubs or meetups.
A yearly event will be used for Birthdays and other Anniversary events. The yearly events could remind you to buy a birthday present a week before someone's birthday. Then a few days before, remind you to send the present to them. Then on the day display that it is their birthday.
These annual events will be shown all day when no current Daily/ Monthly events are being shown.
So Does it Work?
I have put the Wio Terminal out each morning when I have got up and watched how everybody in the family gets ready for their daily tasks. The younger teenager and children do take notice and actively have an interest in what everybody should be doing as well as keeping themselves on time. Even highlighting who should be doing what, which makes a change from the adults doing that. The older teenagers know what they need to do and just get on with getting ready.
For the adults I would say it is also useful. When the sub alert alarms goes, off it helps to keep a sense of your progress getting ready. Also for giving alerts when it is time to pick up the kids. We are getting better warning to get ready instead of just realising it is time to go.
Some of the alerts, like picking up the kids from school, is not something I would set a phone alarm for but I have set an alert for on this project. This has been useful, so just having a dedicated device like this does make you use it for things you may not set other alarms for.
I also think that people with memory problems would find this useful as it alerts them through an event and keeps them on track.
A Phone Calendar alarm or Voice assistant alarm will be most peoples first choice but this program complements these for certain times of the day when you need a bit more feedback on getting ready.
I will make the CircuitPython script available once the additional features have been added and tested.
Thank you to Seeed Studio for supplying the Wio Terminal to build this project with.