Due - Wednesday 4/7 - 3:30PM
There are several shortcomings of the program you wrote for Project 1. First, during the off cycle, no sensing occurs. This is useful for energy conservation, but limits the fidelity of the data collected. Second, in-network data aggregation could provide additional energy savings. The goal of this assignment is to implement a clustering algorithm to provide improved fidelity while maintaining limited energy usage.
For this assignment, you will implement a clustering algorithm similar to LEACH. (If you haven't read the paper, do that now!) Your algorithm will identify clusterheads that will remain continuously on to detect movement and sample the temperature. This provides increased fidelity (continuous sampling of the environment) with minimal additional overall energy cost.
Periodically, as in Project 1, all nodes will turn on and spend 5 seconds detecting movement and reporting the temperature (the LISTEN period) followed by 5 seconds of deep sleep. If movement is detected, a node will report the movement to its clusterhead, not to the base station. Nodes will also report temperature information to the clusterhead, not directly to the base station. Nodes need not report neighbor information to the base station as in Project 1. The clusterhead will aggregate the movement detection information and send a report to the base station once per second. The report will indicate whether there has been movement in the cluster and will also indicate the minimum and maximum temperatures collected within the cluster in the preceeding 1 second. In this way, fewer messages traverse the network to the base station and energy can be saved.
The details of the algorithm are as follows:
- A new round begins every 4th LISTEN period (40 seconds).
- At the beginning of the round, all nodes determine whether to become a clusterhead. The decision is based on the preconfigured suggested percentage of clusterheads, the current round, and the clusterheads of previous rounds as described in the paper.
- The nodes that have chosen to be clusterheads send a broadcast message with TTL 1 indicating their status.
- Each non-clusterhead determines which clusterhead to join based on the received signal strength (RSSI) of the message received. Once a clusterhead is chosen, the transmit power for subsequent messages destined for the clusterhead can be set to the minimum level.
- All nodes in a given cluster will show the same color on their LEDs. The clusterhead will choose the color and broadcast it to all nodes.
- When movement is detected, a node will unicast a message to its clusterhead.
- Every 1 second, each node will sense the temperature and send the measurement to its clusterhead, also using unicast.
- Clusterheads will unicast a message to the base station regarding movement and min/max temperature in its cluster every 1 second as described above.
Assumptions
- All nodes are within range of the basestation.
- The IEEE address of the basestation is statically configured at each node.
Due - Wednesday 4/7 - 3:30PM
- For full credit, you must upload your code to your SVN repository. Upload your code into directories using the following naming convention. Failure to use this exact naming scheme may result in deduction of points.
- <username>/cs685/proj2/ClusteringSPOT
- <username>/cs685/proj2/ClusteringBaseStation
- A demonstration will be required in class on Wednesday, 4/7.
- See this SVN How-to for more information on using SVN.