ystems Coursework

Ambient Display Project Writeup



Overview


We developed a "baby monitor". The baby monitor consists of two main parts: an ambient display and a sound detecting device. When the sound detecting device detects sound, it connects to the display controller. The display consists of a light shining upward through a colored bowl of water. This causes the reflection of the water to be projected on the ceiling. When the display controller receives a connection, it causes a solenoid to tap the bowl. The resultant disturbance in the water is reflected on the ceiling. The disturbance in the water will be proportional to the baby's cries. In this way, one can monitor the baby while involved in other activities.


Implementation


Sound Detection


Sound dectection was implemented through a TINI board (click here for more information). The Tini was connected to an A/D converter (DS2450) through the one-wire, and powered by a 9V power supply. The AD converter was connected to a 6V power supply, and a microphone. The microphone was powered through a 4.5V power supply. This setup worked well, though either the AD Converter or microphone (or maybe even both) takes a while to stabilize. The AD Converter also has a rather low sampling rate. One mistake we made in setting this up involved ground - you must be certain to connect all grounds together. The code for sound dectection monitors the values from the converter and takes an average of every ten values. When the average is higher than 10,000 (silent is around 800 - crickets around 8000), it mods the average with 10,000 adds one, and connects that many times to the display server. (The Tinis are connected thourgh a LAN.) It does this in a continuous loop. We were originally using slush (the Tini's shell) and running the code by hand, but it is currently loaded into the Tini and boots automatically when power is supplied.

Display


The display was driven by a TINI board. The display, which was a reflection of water on the ceiling was created by placing a bowl filled with water over a light. We used a colored bowl - this worked well to better display the disturbance. The bowl was held over the light using a modified candle stand. The water was tapped by a soleniod. The soleniod was controlled by the T1R microcontroller from Point Six and powered by a 24V power supply. The ground from the power was connected to the C connection on the T1R while the high was connected to the solenoid. The other wire fomr the solenoid was connected to the NC connection on the T1R. The T1R had its own power in the form of a 12V power supply which was connected to the + and - connections on the T1R. The one wire connected to the S connection - the green protrusion on the T1R. The data signal from the one wire belongs on the inside and the ground on the outside. The one wire was connected to the TINI. Everytime the TINI receives a connection it send a signal over the one-wire to the T1R which causes the embedded switch (a DS2406) to switch. This in turn causes the solenoid to tap the water. Our solenoid was not a push/pull - power caused it to pull, so we placed a pring inside which caused the solenoid to jump when power was shut off. This worked well, though I think that a future improvement would be a solenoid that doesn't get so hot. :) This was also originally run by hand but is now loaded into the TINI and boots when power is supplied.

Code

Click here for a tar ball of our code.



Improvements


There are a few improvements that someone might make to this project. The AD converter has a low sampling rate. The solenoid gets too hot and tends to work erratically. The client and server code is very basic - it could use some robustness, especially in the server. The client-connection algorithm could also use some refining.


Acknowledgements

There were many people who helped us with this project. Thanks to Michael Terry, who supplied the code on which we based ADTest.java, allowed us to borrow his equipment, and answered thousands of questions. Thanks to Thomas O'Connell for providing the pointers to sample code which drove a DS2407 - the DS2407 code also operates the embedded DS2406. Thanks to David Eison for providing that last hint that got it all working. Thanks to Ken Edmundson at Dallas Semiconductor for promptly responding to our emails. Thanks to MIT Media Lab for the original idea (click here for more information). Finally, thanks very much to Chris who helped us endlessly and signed the receipts. :)



About the designers:

Alison Smith and Jennifer Dempsey are graduating seniors at the Georgia Institute of Technology. Both are earning bachelor's degrees in computer science. After graduation, Jennifer plans to work for Andersen Consulting and Alison plans to pursue her Ph.D. at the University of Texas.

Alison may be contacted at ans@cc.gatech.edu
Jennifer may be contacted at jed@cc.gatech.edu