Team status report 2/26

This week was about making decisions on our system design. Once we presented our design review, we continued to make revisions on our software. Having reduced time in the lab has been changing our schedule a lot, but we are hopeful to get working hardware with some programs flashed before we head home for spring break. Nevertheless, we worked on initializing the software-side components. We set up our github repo, provisioned our database, and started experimenting with Amazon’s python ioT & DB APIs. We also hope to translate Minu’s pseudocode into working algorithms to process collected data into “parking spot availability” information. The accuracy of this algorithm still remains our biggest concern.

Neville’s status report 02/26

I finished up drafting implementation detail slides for the design review presentation and gave the talk. After that, I ended up changing our communication stack when attempting to request cloud resource credits. We ported everything to an AWS solution i.e CloudMQTT -> AWS iOT core, MongoDB -> DynamoDB &  Atlas -> EC2. The main reason being that we felt getting credits would be more convenient under the AWS umbrella. The connection process and other components used still remain the same. I calculated our necessary resource usage for these services and our requirements can be satisfied given the free subscription limits so I did not fill out the resource request form. For example, free iOT core allows 2.5 million connection hours https://aws.amazon.com/iot-core/pricing/ (way longer than necessary for our 2 MVP spot modules)Unlikely, but if our testing is run 24/7 for prolonged days, we may later request credits to increase our DynamoDB write/read capacity units. I also walked through some mock tutorials to enable connectivity to our iOT device(See AWS console image below) and read dynamo DB’s boto3 python API to familiarize with making backend queries.

 

Mrinmayee Status Report 2/26

I did not get a chance to visit the lab this week due to the design presentations. According to our gantt chart, I was supposed to help Kanvi build the spot modules. Instead, I focused on working on pseudocode for how the back-end of our web app would look like. According to Pennsylvania law(https://www.dmv.pa.gov/Driver-Services/Driver-Licensing/Driver-Manual/Chapter-3/Everyday-Driving/Pages/Parking.aspx), the tires of the car must be within 12 inches of the curbside. We will use this metric to tune the ultrasonic sensors inside the spot modules. Since each module has its own nodemcu unit, each module will be able to communicate with the database independently. Moreover, we will be statically storing their arrangement on software via unique ids that indicate which modules are next to each other. Overall, the database will store information, such as availability, location of the spot module(coordinates), location city, unique id of module, and a “assigned user” attribute. Thus, when the web app receives a request from a user, who inputs their destination, we use geocoding (https://developers.google.com/maps/documentation/javascript/geocoding) to convert the address to coordinates, with which we can query the database. The city attribute can help index through data faster. We will use the google maps api to calculate the minimum distance (https://developers.google.com/maps/documentation/distance-matrix?csw=1). It is important that we find not one available module that is closest, but rather three modules that are next to each other, since they are spaced 8ft apart each. Furthermore, since more than one user will be requesting parking spaces, we will assign priority to requests based on the request timestamp and use a queue to process all requests. To make sure the app does not direct two users to the same parking space, we set the “assigned user” attribute for a module in the database when a spot module is technically available according to sensor information in the database but is already assigned to a user request. Everytime the module gets occupied and is no longer available, this “assigned user” attribute gets reset for future use. Next week, I hope to work with Kanvi and build the module, and work with the team overall to turn this pseudocode into code, changing details as needed.

Kanvi’s Status Report for 2/26

With online presentations this week, lab time was cut short. My original plan to connect all our ordered hardware and flash a basic program onto them was not fulfilled. Instead, I was able to research and draft up a program to flash as soon as I get into the lab. I found examples of simple HTTP client/server code (http://www.nodemcu.com/index_en.html#fr_5475f7667976d8501100000f) and the firmware (https://github.com/nodemcu/nodemcu-firmware) we will have to work with in order to develop with the ESP8266 and NodeMCU platform. The NodeMCU documentation (https://nodemcu.readthedocs.io/en/release/getting-started/) helped me get started with downloading the correct flasher for my system and building an environment for programming. Now my computer should be set to program the dev board as soon as we get into the lab. I will put together the system with Minu on Monday and plan to have a debugged program flashed by the end of Wednesday!

Team Status report for 2/19

Our team prepared for the design review this week. We focused on reviewing all the feedback from our proposal presentation last week, and examined the technical details of our system. Our main goal was to order some parts as soon as possible. Kanvi ordered the building blocks of the hardware spot modules excluding the covering. We will cover this once we have assembled the parts together. Beyond that the rest of our week focused on specificity. This included settling on the HC-SR04 sensors, the ESP8266 (hardware), MQTT, MongoDB, Python and Javascript (software). Based on feedback, we made changes to our system requirements from the operator’s perspective. We used cost, setup time as the overarching factor in determining the hardware components considering the project’s scalability as opposed to technical impressions. For example, we figured that we could build entire spot modules for as low as 15$ with Wi-fi capability so why consider LoraWaN. Our biggest risk right now is being able to obtain 95% promised accuracy in car detection based on our detection algorithm and module arrangement. If our initial algorithm doesn’t provide great results, we would have to iterate quickly in considering improved solutions with minimal overhead.

Neville’s status report for 2/19

This week I researched and finalized specifications in the software workflow. I settled on storing our sensor data in aMongoDB database via an intermediary MQTT broker. Specifically, the sensor data will be sent from our hardware programming interface running the ESP8266 WiFi module to a cloud-hosted MQTT broker exposed via a Python API (https://github.com/eclipse/paho.mqtt.python). We will install Micropython on the interface for this (https://docs.micropython.org/en/latest/esp8266/tutorial/intro.html).The MQTT broker will then forward the packets to an Atlas-hosted MongoDB collection (table) via a webhook endpoint we will configure. I am currently on track for the tasks detailed on the Gantt chart. I will put in an order for “Atlas credits” once I detail the exact resource cost we need.

Kanvi’s Status Report for 2/19

This week I finished up researching IoT devices and instead of using the XBee devices from last week’s research, I decided to go with the ESP8266 NodeMCU. They consume less power, are cheaper, and have more documentation on projects similar to ours. I ordered three of these modules with dev boards and I’m excited to get working on wiring this to the sensors that Minu ordered next week. Alongside the NodeMCU decision, I also researched long-term power supplies for these boards and have come across other people’s trade-off research: https://diyi0t.com/best-battery-for-esp8266/. Once we get the boards and set them up with the sensors, we will do some of our own comparisons of power supplies. In class, I worked with Neville to figure out how the ESP8266 dev boards can communicate with our database directly. I also worked on the Design Review slides, making a detailed block diagram and writing up our system specifications. After our meeting with our TA and professor, we were able to make really specific decisions and we are excited to present this week!

Mrinmayee Status Report 2/19

This week I focused on finding sensor components to prepare for the design review. I settled on the HC-SR04 ultrasonic sensor after reading an article where the sensor is interfaced with a NodeMCU (https://randomnerdtutorials.com/esp8266-nodemcu-hc-sr04-ultrasonic-arduino/). The cost of each sensor is approximately at most $2, according to amazon pack options (https://www.amazon.com/Ultrasonic-Sensors/s?k=Ultrasonic+Sensors). Additionally, the sensor requires 5V for power, so I made the decision to leave the idea of solar energy for our initial prototype and use batteries instead. Some details about the different choices of batteries are explained in this article (https://diyi0t.com/best-battery-for-esp8266/). Next, I started to research points to consider when trying to detect a parked car. If the sensors are placed along the curbside in regular intervals of about 8 ft (about half the length of an average car), then whenever there are 3 sensors in a row that are not detecting any objects, it is guaranteed that there is enough space for a car. I will continue to think about the software vs hardware tradeoffs between having a one-to-one or one-to-many relationship between the nodemcu unit and sensors. Currently, I am on track for the tasks from the gantt chart.

Team Status Report 2/12

Our team prepared and practiced for our proposal presentation. Our design plans did not drastically change, it only became a bit more specific to save cost + accuracy. We decided to use as few ioT devices in the field as possible rather than our initial 1:1 model where an Arduino might be running in each spot. We also decided to use a time-series database as those are custom-made for periodic data. We are looking into the specific types of wireless technologies that would best fit the requirements of our system. We found that ultrasonic sensors are the best type of sensors for this project application, and PIR sensors should be used as an additional “verification” tool. Whether or not the final implementation includes both sensors will be determined after testing our system on the field and the data from cost + accuracy tradeoff. We are looking into using the Digi XBee 3 Zigbee 3 RF Module to communicate from the sensor to the larger database. Once we test how this works, we will be able to start making the physical sensor set up. Our biggest risk currently is being able to detect an available curbside parking spot with accuracy, even in inclement weather. We will continue to research and adjust requirements if needed in the future. Overall, no big changes have been made to the existing system design or schedule this week.

Kanvi’s Status Report for 2/12

I started this week by working on the proposal presentation slides, as I made the Gantt chart and researched the use case requirements. After Minu presented, I stuck to our schedule for this week and started to compare IoT communication devices. I started with Xbee modules because I saw some in our inventory. The different aspects that were compared were the range, power consumption, size, and price of different RF modules (https://www.digi.com/products-compare/56576/56577/56460). From our use case requirements, I know that we want to keep the price low but also want to make sure we can have a long lasting power supply that will be easily replaceable. Out of the modules that I looked at, I have decided to go with the Digi XBee 3 Zigbee 3 RF Module (https://www.digi.com/products/embedded-systems/digi-xbee/rf-modules/2-4-ghz-rf-modules/xbee3-zigbee-3) because of the low 6.3mW to 79 mW power consumption paired with 2 mile radius and the advanced ZigBee networking protocol. I looked through the inventory but did not find this so I will be putting in an order by the end of the week for at least one so we can start working with them physically. Before ordering, I will communicate with Minu and Neville in order to make sure this device is going to be compatible with the sensor we choose and the networking protocol we want to use. I think I want to spend a couple more days researching other modules, like the NodeMCU protocol ones, so this will take out maybe two days of the schedule. Super excited to get working on the physical module!