This week I was very busy with assignments from other classes, so I did not work on the project as much as I would have liked. I helped Arden with testing his code for LoRa communication, and he was able to get nodes to communicate with each other. I also learned how to use the timer interrupts, and started working on code for sending the node into a low power mode using an interrupt, but I haven’t gotten it quite working yet. My goal for this week is to get timer interrupts to time sending the node into low power and taking measurements with the temperature sensor.
Arden’s Status Report for 10/22
This week I established a communication channel between two nodes. This was a multi-step process involving programming the nodes to use UART communication from the MCU to the LoRa transceiver. Unfortunately two of our transceivers were broken, and will have to be replaced before we can conduct a test of our 8 node and gateway topology. My progress is slightly behind schedule, however, now that nodes can send and receive data the development of the STP and LSA protocols can begin. I plan on getting a topology of 3 or four nodes either establishing a tree topology or gathering link-state and sending it to the gateway. I will be working with Ankita to develop the border gateway side of the routing algorithms.
Karen’s Status Report for 10/22
This week I started working with the STM32s. After learning how to use the CubeIDE, I started by learning how to enter Standby and STOP mode and use the RTC to wake up from these low power modes. I also connected a temperature sensor to the nucleo board and got a reading from it using the ADC. I tested it using a hairdryer to see if it responded to temperature changes, and it did. Further testing will have to be done with a match/lighter to determine the best way to detect the temperature change caused by the flame. Arden also got two nodes to send messages using the LoRa transceivers, so the next step seems to be putting it all together so that the nodes wake up from a low power mode, take a sensor reading, send it to another node, then go back to a low power mode.
Ankita’s Status Report for 10/22
In the past few weeks since the last status report, I worked with the rest of my team writing up the design document. After writing all our individual parts, we spent many hours combining our content into our document. I went home for fall break and took the Raspberry Pi with me. It was difficult to deal with because my home network is not that great but I got our fire-away web application up and running. Right now it is a skeleton web app and simply has text. I am trying to create a database that can take the status of each of the 8 nodes to signal to the application if the node is alive or not but am having trouble with that. I need to figure out how to create some table or database to keep track of that. Debugging some of the setup for the web application did take me some time. I have decided that if I were to create a skeleton that is taking in the data and assist with the actual routing protocol and network and then come back to the application to make it pretty and professional, it would be a more efficient use of my time. Therefore, depending on how much I get done in the upcoming week, I will shift around my individual Gantt chart components to have something worthwhile to show at the Interim Demo. So, I want to get the data inputs up and running but am not sure how to get that working. I will do more research on that and attempt it.
Karen’s Status Report for 10/08
Unfortunately this week I did not get much done. I thought that the microcontrollers we had ordered had not yet been delivered, and without them I wasn’t able to start assembling the nodes and programming them. I had planned to experiment with sending the nodes into different power modes, but without the boards I couldn’t accomplish this. I did look a bit more into standby mode, and how it might be possible to preserve some of SRAM in that mode. I also started working on the design document with the rest of the team. This week, I plan to start assembling the nodes and programming a node to go into different power modes on a schedule. I also want to get the nodes to take measurements with the temperature sensors. I will likely have to do some work over the break in order to catch up to where I want to be with the project after the break.
Arden’s Status Report for 10/08
This week I focused on calculating the power consumption for the design presentation. I used Semtek’s LoRa calculator to estimate the current draw of running the routing algorithm. After getting some feedback on the previous TX-schedule distribution algorithm, we decided to pivot to another approach which was both more power efficient and took less time to run. The final numbers calculated for the design presentation considered primarily a 30min sensor sampling rate, and tree-reforming period. I also spent some time working on the design document, consolidating the various aspects of the routing algorithm, and parsing through essential details. Next week I will begin developing the TDM STP protocol on the dev boards themselves, and will finalize the design document.
Team’s Status Report for 10/08
This week we had our design presentation and we got a good amount of feedback on it. From the presentation, we learned that we need to specify certain aspects of our design more clearly in the design document. For example, when we consider “scaling up” our project, we have to decide which part is actually realistically scalable. As a team, we think that our routing protocol and the node architecture can definitely be expanded if this project was deployed in a real world setting. We met as a team on 10/08 to review what needed to be done for the design document and each of our individual statuses. We learned that we had actually received two packages containing our parts and will pick them up on Monday to start actually constructing the nodes. Some of our work has been delayed due to personal conflicts, but we are planning on catching up to our schedule in the upcoming weeks.
Ankita’s Status Report for 10/08
This week has set me behind a lot in my intended schedule as mentioned in the Gantt chart. I had intended to have Django all up and running on the RPi, but I have yet to do that after falling sick this past week. Due to my work being stagnant, I have adjusted my schedule and have laid it out as the following: By the start of fall break, I intend to download Django and all other software needed onto the Raspberry Pi. I also intend to create a dummy web server with the finalized design that has no actual functioning components yet but looks how we want it to look. I have read up on a lot of documentation regarding Django and what might end up becoming future challenges for me, so I have taken note of that. I have decided that everything related to the web application will be written in Python for simplicity. After recovering, I am hoping to catch up to my Gantt chart so that my component is completed on time. Unfortunately, this might lead to some work being done during the break.
Arden’s Status Report for 10/01
This week I focused on narrowing down the design of the wireless sensor network. After having spoken to Prof. Mukherjee, we pivoted to a time-division multiplexing approach rather than an asynchronous medium access control method to optimize power consumption even further. Furthermore, to reduce maintenance cost, we want our network to be resilient to link failures (e.g. if multipath effects caused by inclement weather degrades the quality of the channel between two nodes). Since a forest fire is not a frequent occurrence, and since the time before spreading to an open fire is 60 minutes, we would like to detect node failures (or critical link failure) within a timeframe of 15-30 minutes of the actual event. After having read a paper on TDM MAC for wireless sensor networks by Koutsonikolas and Salonidis, I decided to base our forest fire WSN’s MAC algorithm off their approach. Now, we have a good method for ensuring that sensor data can be transmitted and forwarded across the network from any node in the mesh network to the gateway. The clock synchronization method described in the paper enables each node to correct their clock drift in regular intervals, and to match up to a global transmission and reception schedule. I also soldered pin headers to the gas sensor and plan to test whether it can detect a match being lit next to it by interfacing it with an STM32 via SPI by Monday.
Team’s Status Report for 10/01
This past week our team finalized our design for our project. We got our Raspberry Pi and set it up and ordered our STM32’s for each of our nodes. We mainly spent the week figuring out components of our design and working on the design presentation. One of the main tasks completed this week was looking into routing and networking protocols to use. We settled on a combination of spanning tree protocol as a MAC protocol, and time-division to ensure that nodes are transmitting to listening nodes (not in low-power mode). We’re basing our protocol on Koutsonikolas and Salonidis’s paper on TDM MAC Protocol Design and Implementation for Wireless Mesh Networks. However, we’re simplifying the node TX/RX scheduling, and have replaced Dijkstra’s algorithm for creating a tree out of the mesh network to using STP to create a tree, and then using source-routing from the gateway to route packets to the nodes. We’re also currently working on testing the VOC sensor and the temperature sensor to determine whether they can detect the presence of lit match (we will demo the sensor network with this method). We also now have our Raspberry Pi setup and are able to ssh into it to download any software necessary. We are hoping to have the materials we ordered soon to start testing and working on implementation.