Baby Safety Monitor
Yehonatan Ginzberg & Moshe Sulamy
"Watch Me" is a system intended to help parents monitor the safety of their babies. It is combined of two watches, for the parent and for the baby, monitoring the baby's temperature and making sure the parent is always nearby.
The system is meant to be simple, low-power, and easy to use, and interfere as little as possible in daily life - in order to fit any parent, for a long time.
The system consists of 2 ez430-Chronos watches, and MSP430 LaunchPad with RF Module board.
The watches communicate with each other regularly, transmitting data about the baby's safety while making sure the parent is around to receive the data. The MSP430 LaunchPad is used for testing, able to send, receive, and sniff RF data and simulate a watch through the PC.
Whenever the baby's in danger, or the parent is too far from him, a "baby in danger" mode is activated notifying the parent. For high temperatures, the baby's watch itself goes into this mode to indicate anyone nearby of the danger.
When in danger mode, the watch buzzes without stop, showing a message on the watch. The parent then has the option of discarding the message by waiting a limited time for a new sync – either trying to sync with the baby immediately (going into danger mode again if not found in a few minutes), or indefinitely – until a successful sync is made with the baby's watch.
Beyond that, the parent also has the option to put the watch in an alarm clock state (called "LATER"), shutting down its danger mode until a specified hour (by which the watch goes into the limited sync mode), or indefinitely - until a sync.
How It Works
The 2 watches communicate with each other with RF, using the SimpliciTI stack.
In order to maintain low-power, the watches synchronize once per minute, with the baby sending a "sync" to the parent. Upon receiving it, the parent's watch knows the baby is safe and close-by, and continues regular operation until the next sync. The message also allows the parent watch to synchronize its clock with the child's watch, in order to determine when the next sync is scheduled for.
In order to accommodate low RF signals, bad data, and missed transmissions in general, the parent's watch has a "miss counter" for sync messages. Each time a sync period arrives and the parent's watch doesn't receive a sync message, the counter is raised. When reaching its max value of 3, the parent's watch enters the danger mode.
We used the LaunchPad to test and debug the system, acting as a bridge between the PC and the ez430-Chronos. The SimpliciTI stack was loaded on the LaunchPad enabling it to send and receive packets, and it was connected by UART to a PC. We wrote a C# program that communicates with the LaunchPad through a COM port, and thus were able to test communication and emulate various states of the system easily from our computers.
Our code used the basic watch framework provided by Texas Instruments, and built on that. Their code provided a basic menu system with various demos, upon which we've added the menu for "Watch Me" and added all logic behind it. We've trimmed some unnecessary code and provided an actual watch system, with "Watch Me" as its main function.
The watch is operated with 5 buttons – Up, Down, Number, Star, and Light. We've kept the standards proposed by TI, operating the watch similar to the other menus provided by it.
Because debugging was an issue on the ez430-Chronos watches, and we had 2 watches for 2 developers, we needed a way to test functionality easily and in separate.
The ComPort application was used for testing, debugging, and emulating various states of the system through our computers, while the LaunchPad acted as a bridge – connecting by UART to the PC and bridging all such data to/from SimpliciTI packets sent by the watches.
The Watch Me menu is in the lower part of the watch. Use # to go through menus until a blinking heart icon appears - this means you're in the Watch Me menu, and the user type (BABY / PARENT) appears on the lower part of the screen.
To turn Watch Me on or off, press the ▼ button. When in other menus, the heart icon signifies whether Watch Me is on or off.
To change the user type, long-press the # button while in the Watch Me menu and Watch Me is off. This will enter the user select menu, which will enable to change the user type – accepted by the * button, or cancelled by waiting for timeout.
Upon turning Watch Me on, a link procedure is started, during which the peer watch should be turned on – the watches will be linked, showing an "ON" message. If the link fails, an "OFF" message is shown.
When on, the parent and baby watches will ping among themselves, making sure the baby is safe and the parent is nearby. If the parent is far, or its watch battery is low – it enters danger mode. The baby enters it when the temperature is too high.
When in danger mode, the watch buzzes until a button press is made to confirm the danger – pressing * if danger is for the baby's watch, or either */# for the parent's watch, entering the parent watch into SYNC mode.
Pressing # enters limited sync mode, while * enters unlimited sync mode.
While in sync mode, the parent watch constantly tries to find the baby's watch. In unlimited sync mode it will try indefinitely – until the baby is found. In limited sync it will enter danger mode again if the baby isn't found in a short time.
Should the parent wish to avoid danger mode altogether (if he's going to work, for example), a long press on # while in Watch Me menu will enter the LATER menu.
In this menu, the parent can define an hour until which the Watch Me module will be put to sleep – after which it will enter limited sync mode. Another option is selecting SYNC, which enters the watch into unlimited sync mode.
Long-pressing the # button while still waiting for the hour defined in the LATER menu will make the watch enter limited sync mode (otherwise the LATER menu will be shown).
When turning Watch Me off, an unlink procedure is started – which tries to notify the peer watch to turn itself off as well. It is followed by an "OFF" message shown on the watch. If successful, an "OFF" message will be shown on the peer watch.
Possible Enhancements and Obstacles
At its current state, the system is a 1-to-1 system – meaning it supports a single baby and parent.
While the interface of the ez430-Chronos watches is very simple, a more advanced watch/board can provide easy interface for monitoring several babies, postponing syncs with only some of them, etc., while another possibility is a system with several parents, relaying messages among each other and monitoring the babies even when separate.
With added components, it's also possible to monitor and report other measures about the baby (and can be easily added in a section of our code), and improve its safety even further – such as breathing, heart rate, etc.
Our largest obstacle was the available hardware – while the watch is comfortable and a good product for the system, it has few and unclear buttons and a very limited LED screen.
Each year we hear of babies left and forgotten in cars, closed and overheated, leading to death, and "Watch Me" began as a tool meant to prevent it.
While we found the TI hardware (ez430-Chronos) limited and hard to use, we could still manage to create a product that we believe not only addresses the issue, but also addresses other dangers facing babies who are neglected by accident, and can save lives.
Overall, developing an embedded system can be complicated and tedious, requiring very careful coding, rigorous testing, and lots of work (sometimes grunt work). However, with the right tools and framework, and the right hardware – it opens up a world of possibilities.