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