(Due at the beginning of class on 10/22/08)
This assignment will be graded out of 50 points.
In this project, you will program a network of wireless sensor nodes. The code will be developed over the TinyOS operating system and will run on a number of Tmote Sky sensors aka TelosB motes that we have acquired recently. The assignment can be entirely developed and simulated on your home machine using the simulator TOSSIM that is available with the TinyOS distribution. You can work on this assignment in groups of 3. Each group will get 4 motes to work with (of which at least 2 will be sensor motes, the rest will be relay motes). These may not be enough for testing your code entirely, but it is enough to learn programming and to be able to see programs in action. For the project, you can simulate your code on your home machine using TOSSIM. Once your code works well on the simulator, you can test it in the TA’s lab (WVH208) with a larger collection of motes (10-12).
Here is some warm-up work to help you prepare for your sensor programming project.
You can get Moteiv toolkit installation CD from the TAs. The installation guide comes with the installation CD or you could download it from here.
Please note that we have limited number of motes and they are expensive, so please take good care of your motes and make sure you return the motes in working condition at the end of the semester. We provide you anti-static wrist bands as well as antistatic ziplock bags – please use them and avoid shorting out the motes. The mote plug right into the usb interface.
II. Getting started
We strongly recommend you to
test your installation after you complete step 1. You could try installing
Blink application to your motes. Blink is a very simple nesC
application provided by TinyOS. You could install it
by going through the following steps.
connect 1 mote to the usb interface on your machine. (As to how to install the driver, please refer the quick start guide of moteiv)
$make tmote reinstall,1
The LED blinking very quickly indicates that program is being written to the mote. After the program is completely installed on the mote, the Blink application will be automatically executed. The LED on the mote will blink every 1 second.
Another application named Delta, is mentioned in the "Tmote Sky Quick Start Guide".
III. Go through the TinyOS tutorial
<![if !supportLists]>· <![endif]>Go to the TinyOS tutorial, study Lesson 1 through 8. Pay attention to the sample programs and programming model of NesC.
<![if !supportLists]>· <![endif]>All the examples in the tutorial can be tried out on TOSSIM - the sensor network simulator. The command to compile a PC version of the program is "Make pc", and the program is stored under the build/pc directory in your program directory.
<![if !supportLists]>· <![endif]>Read the TOSSIM tutorial for issues in controlling the simulation.
<![if !supportLists]>· <![endif]>Optional: Read the nesC Language Reference Manual. (Lessons 1 through 8 of the TinyOS tutorial should suffice for the assignment.)
IV. Toy project using two motes
You have the first mote do light sensing. You could use the TSR interface provided by HamamatsuC component. (For detail about how to use the components, please check the tutorial or reference) If the light level is above a certain threshold, this mote will notify the second mote via radio, so that the second mote will turn on its LED. If the light sensed by the first mote is below some threshold, it will send the notification to the second mote, and that mote will turn off the LED.
This project is NOT required, thus won't be graded. However, this would definitely help you prepare for the final project, since you would know better about nesC, radio communication, multihop, sensing data collection, etc. after you are done with this toy project.
V. Sensor Programming Project
The goal of the sensor project is to set up a shortest-path spanning tree over the nodes reachable from a central node. After the whole network converges to the static topology, the network should support the following features:
<![if !supportLists]>· <![endif]>Set the central or root node by pressing the user button. Serialize using a timestamp and break ties using nodeID.
<![if !supportLists]>· <![endif]>Each mote in the network displays its number of hops back to the central mote.
<![if !supportLists]>· <![endif]>Once you manually change the motes placement, say remove a certain mote, the network should recover to static state within short time. And related motes should update their number of hops in LED.
<![if !supportLists]>· <![endif]>Each mote is capable of sensing the TSR value. Once the value is below the threshold predefined in your program, the mote sends an alarm back to the central mote. And all motes along the route from this mote back to the central mote should turn on the LED, so that the route could be displayed.
<![if !supportLists]>· <![endif]>You could use CC2420Control to configure the transmission power. The default transmission power is pretty high, and the transmission range could reach around 100 meters. You could set up the radio with minimum transmission power, which has range of around 0.5 meter. Hence, it's possible to show your demo in the classroom. We haven’t decided completely yet how we will do the demo, it will be either in the class or at a separate meeting, time and venue to be decided.