Andy’s Status Report for Apr 19

Learning Reflections

As I progressed through the design, implementation, and debugging phases of our project, I encountered several hardware components that required me to acquire new technical knowledge and hands-on skills for the bring up of them. Specifically, I faced challenges in bringing up the Raspberry Pi (RPi) system, the RPi camera module, the uninterruptible power supply (UPS) module, and the Blues Notecard module.

To overcome these challenges, I adopted a multi-pronged learning strategy:

  • Official Documentation: For each hardware module, I began by reading the official documentation. This provided a solid baseline for understanding the intended setup procedure and configuration parameters.
  • Online Video Tutorials: I found YouTube tutorials especially helpful for the RPi camera and Blues Notecard bring-up process. These informal resources often included demonstrations on how to install the modules properly that helped me troubleshoot physical connections, and install proper software dependencies.
  • Community Forums and Stack Overflow: When encountering unexpected issues (such as I2C readings from the UPS module), I found useful informations on Stack Overflow from a similiar question discussion before.

Summary of Work This Week:

This week is mainly integration testing and final wrap-up and final documentation preparation. I did the power adapter system integration testing in-vehicle. I measured output voltage and current of the adapter during driving conditions to verify power stability and confirmed that the UPS output to the Raspberry Pi 5 consistently delivered the required 5V 5A, ensuring reliable operation.

At the same time, I worked together with my teammates on assembling slides and visuals for the final presentation and began preparing talking points and demo setup for the final showcase.

Progress:

We are currently on progress, we finished most system integration testing, and are ready to prepare for final demo and documentation preparation.

Next Steps and Schedule:
• Record final demo footage and supporting visuals for the video presentation.
• Deliver final presentation and participate in demo day.

We are currently on track

Team Status Report for 4/12

Validations Done

  • We conducted five in-vehicle tests to confirm that the car cigarette lighter reliably powers the unit for 30-minute sessions.
  • In real-world testing, we deployed the dash cam in a vehicle for a 30-minute drive, during which the driver continuously called out the license plate numbers observed. During the 30-minute session, the driver identified 25 license plates while driving. All 25 were correctly detected by the dash cam system. In addition, the dash cam detected an extra 117 license plates that the driver was unable to observe while driving.
  • To evaluate end-to-end system latency, we conducted 10 field tests and record timestamps at key stages. Average on-board detection latency is 123ms, OCR latency is 134ms, watchlist query latency is 469ms, and image upload latency is 7332ms.

Validations To Do

  • In the lab, we will verify that the unit’s weight is less than 1.5lbs using a scale.
  • We will time the initial setup process with five participants, ensuring that the average setup time is under 10 minutes.
  • We will verify that the system’s startup and shutdown scripts execute within 30s of a power change through five simulated tests and five field tests, ensuring that no file corruption occurs during the process.
  • We will test the opt-in switch functionality through 10 separate activation/deactivation cycles to confirm that the system reliably transitions its ALPR setting within 1s.
  • We will verify that data at rest on the dash cam is erased upon shutdown, that non-match data on the server is deleted immediately, and that matched data is retained for 21 days.

Risks

  • Since we are now in the testing phase, we find calculating our performance data quite challenging. It involves a lot of manual work as we need to look through footage to identify additional license plates that the dash cam caught.

Changes

  • We modified the image uploading pipeline due to a hardware limitation with I2C bandwidth. Initially, we planned for two parallel threads on the dash cam: one for uploading chunked images upon server request and another for ongoing inference and license plate number queries. However, our hardware supports only one active I2C communication at a time, preventing simultaneous uploads. To address this, we now pause inference and plate number query during image uploads, resuming them afterward. With an average upload time of 500ms, the impact on real-time detection is minimal. This approach also makes sure we prioritize plates on watchlists, as the chance of detecting another watchlist plate immediately after is very low.
  • We removed loop recording since it’s not the main focus of the project and it’s challenging for development and testing. Similarly, we decided to remove text formatting as current performance metrics looks good and it’s not the main focus of the project.
  • For security compliance, we’ve added an API key to the dash cam communication APIs. This ensures only authorized devices can access the system (send detection query / upload images). We can implement rate limiting to prevent API abuse. If necessary, we can trace back activities to specific dash cams.
  • Since we have limited bandwidth, we decided to cut the server load testing to conserve both budget and effort. This allows us to better focus on the integration and presentation.

Schedule

Andy’s Status Report for 4/12

Verification and Validation Update:

As we transition into the verification and validation phase, we are aligning our testing approach with our core engineering design and use case requirements. I am mainly in charge of the dashcam circuit components so my individual testing are more oriented with the dash cam power supply system.

Our dashcam power system is designed to draw power from the car’s cigarette lighter, which is converted by an adaptor to 8.4V 2A for the UPS(Uninteruptable Power Supply). The UPS then regulates this input to provide a stable 5V 5A output to the Raspberry Pi, while also managing seamless switching to its internal battery when the car is turned off—ensuring a safe shutdown process for the RPi.

Tests Completed:

  • Power Regulation Test: Verified that the adaptor consistently provides stable output (8.4V ± 0.3V and 2A ± 0.2A) under both nominal and surge input conditions to the RPi UPS module.
  • UPS Power Supply Test: Verified that the UPS consistently provides stable output (5V ± 0.3V and 5A ± 0.4A) under both nominal and surge input conditions from the simulated power supply from car. Also I tested and verified that the UPS consistently provides stable output when the power supply simulated from the car is off, which means the UPS switched to its battery for backup power supply.

After verified the system works during simulation test in the lab, I tested the system on a car with actual car cigarette lighter.

  • In-Vehicle Test: Validated system stability in a real car environment with varying RPMs and load conditions. Continously measured the voltage for 5 min while another driver is driving the car under normal driving condition.

Verification Approach:

  • Instrumentation: Use multimeters, current clamps to monitor real-time voltage and current waveforms.
  • Simulation: Use voltage generator from ECE labs

Planned Tests:

  • Endurance Test: Run the complete system for an extended period to test long-term reliability, focusing on consistent voltage and system uptime.
  • Integration Test: Connect with RPi to conduct end-to-end testing for the entire system while continously measure the voltage and current to check for abnormal circuit behaviors.

Summary of Work This Week:

  • Cigarette Lighter to Adaptor Simulation Testing:
    • Used a wire-to-car-cigarette-lighter converter to simulate a car’s power source.
    • Connected our adaptor to a breadboard to measure voltage and current under standard conditions.
    • Confirmed that the adaptor correctly regulated the voltage from the car cigarette lighter.
    • Simulated transient input spikes ranging from 10V to 20V, which can occur due to vehicle alternator behavior or load switching.
    • Verified that our adaptor provided clean, regulated power even during input fluctuations.
  • Raspberry Pi UPS Power Test:
    • Used the stabilized adaptor to power a Raspberry Pi UPS HAT.
    • Disassembled the RPI and UPS HAT for isolated testing.

Next Steps and Schedule:

  • Continue full integration testing with the RPI in-vehicle.
  • Monitor long-term stability under varying driving conditions.
  • Begin logging power behavior during startup and shutdown phases.

Progress:

This week, I made progress by completing the majority of the circuit-level testing. I verified the power regulation behavior of our adaptor and UPS module, both in simulation and in a real vehicle environment. With these components confirmed to be working, we are ready to move forward with full system integration using the car cigarette lighter as the actual power source.

Additional tests, including endurance and thermal testing, are planned to further ensure reliability under extended and realistic conditions.

 

 

Team Status Report for 3/29

Risks

  • Chunked image upload: The chunked image upload process is fairly complicated because we’re implementing it from scratch. While we considered S3 multipart upload, it wasn’t suitable for our file sizes. This approach introduces more moving parts, including chunk splitting, metadata tracking, individual uploads, and image assembly. While this complexity increases the potential for issues (e.g., missing chunks, incorrect assembly), we’ve developed a solid design for the image upload protocol this week (details in PR description) and got the basic structure in place. The focus next week will be on thoroughly testing and debugging to minimize risks and ensure reliability before integration.
  • Power supply integration: Integrating our uninterruptible power supply (UPS) with car cigarette lighter power sources presents potential challenges, as the UPS currently operates reliably only from stable stationary power outlets. We have procured an adapter and an additional cigarette lighter wiring adapter specifically for testing purposes. Before any on-road implementation, we plan extensive lab testing to verify functionality, stability, and safety under simulated automotive conditions. This cautious approach aims to mitigate risks associated with unstable voltage, unexpected power fluctuations, or hardware incompatibility when connecting to a vehicle’s power system.

Changes

  • GPS module: We changed the GPS module from Adafruit Automate GPS to Sparkfun GPS RTK according to Professor Tamal’s recommendation. 
  • Image upload protocol: We realized that Blues Notehub’s 8KB file size limit requires us to use chunked uploads for images (~45KB). Originally, we implemented S3 pre-signed URLs for full image uploads, but that approach wouldn’t work with the size limitations. As a result, we’re implementing the chunked image upload process from scratch. 
  • Partial match instead of message queue: Instead of implementing a message queue in the watchlist query server for asynchronous processing, we are prioritizing local filtering (partial matching) on the dashcam for now since this approach can more directly reduce bandwidth consumption and server load. By performing partial matching directly on the dashcam, we can simplify server-side operations, minimize data transmission, and enable faster, more efficient processing at the edge. The dashcam will locally store a synced watchlist and perform partial matches (e.g., comparing the first few characters of license plates) before sending only the relevant matches to the server. We still need to figure out the best way for the dash cam to sync with the server.

Schedule

Pics!

Andy’s status report for 3/29

This week, I successfully tested and brought up the uninterruptible power supply (UPS) module. Activities included setup, initial testing, installation, and integration with the Raspberry Pi 5 (RPI5).

Initially, powering via cable was unsuccessful due to lower-than-expected voltage, so I instead installed and powered the module directly through the RPI pins.

I brought up the UPS module connected to the RPI, wrote a script to detect battery charging and discharging states through if the direction of current flow, and modified this script to safely initiate an RPI shutdown sequence when power from the car is disconnected. This is very important for our project because we want to protect the board and the storage card for our system but the power supply from car shuts off right when the car is turned off by the driver. I also tested the script and if the safe RPI shutdown process was executted correctly when the power supply to the UPS is off.

Additionally, I reviewed the UPS documentation to investigate if automated restart of the RPI could be achieved when power returns. Currently, the UPS module lacks direct support for this function.

Next week, I plan to explore alternative solutions to automate restarting the system and eliminate the need for manually toggling the UPS module. Also next week I plan to test the safety and stability of the car cigarette lighter-to-UPS power supply adapter.

Progress:

Overall, progress is on track. I integrated together with Vicky on rpi modules and they are currently working. All team members conducted a initial road testing with our dash cam system to test the end-to-end functionality. We currently used a portable power supply for the power supply source for the UPS module before we could safely use the car cig-lighter power supply adaptor. The end-to-end system tested to be working as we could receive API calls on our AWS server from our dash cam.

Schedule:

  • Explore alternative solutions to automate restarting the system and eliminate the need for manually toggling the UPS module.
  • Test the safety and stability of the car cigarette lighter-to-UPS power supply adapter
  • Interim Demo

Andy’s Status Report for 3/22

This week, I focused on the bring-up of the Blues module with the Raspberry Pi 5, as well as the setup and testing of the Blues Notehub system.

After successfully initializing the Blues Notecard chip on the Raspberry Pi 4, I migrated the setup to the Raspberry Pi 5. The migration was successful, and the chip was fully set up and operational on the new platform.

In parallel, I configured Blues Notehub, which serves as the cloud interface to receive and process requests sent from the Blues Notecard chip. I verified successful communication between the chip and Notehub by sending and receiving test requests.

Additionally, I collaborated with my team to integrate the request-sending flow. We successfully sent requests using a demo URL, confirming the proper functionality of the system pipeline. We also worked together to connect and send requests to our central server via the AWS API. While the request was sent, we encountered some errors during the process, which we plan to debug and resolve in the upcoming week.

Progress:

Overall, progress is on track after I have shifted my focus from the web app to assisting Vicky and Christine with dashcam and server implementation. We are having a little issue with integrating the Blues LTE service with communicating with the AWS server, but we believe we could fix this on time.

Schedule:

  • Test GPS with Blues
  • Test UPS HAT with uninterupting power supply
  • Get Blues to be able to communicate with AWS

Andy’s Status Report for 3/15

his week, I focused on planning power testing, discussing the web application, and beginning the Blues module bring-up by testing it on the RPi4.

To ensure a stable power supply for the RPi5, I developed a power testing plan. I researched various Uninterruptible Power Supply (UPS) HATs compatible with the RPi5 and placed an order. While waiting for delivery, I started planning the circuit testing process to ensure the module functions correctly and continues supplying power even when its main power source is turned off.

On the software side, I discussed with my team and Tamal the idea of not implementing a web portal but instead opting for a flexible and easier-to-implement API for user interaction.

Additionally, I began bringing up the Blues module, starting with initial tests on the RPi4 to verify communication and connectivity. I booted up the RPi4 and started integrating the Blues cellular chip with it.

Progress:

Overall, progress is on track. I have shifted my focus from the web app to assisting Vicky and Christine with dashcam and server implementation.

Schedule:

•Test the UPS module (if it arrives)

•Bring up the Blues module and test GPS

•Test uploading and receiving data from the server using the Blues chip on the RPi

Andy’s Status Report for 3/1

This week, I focused on solving the dash cam circuit issue, worked on rpi5 and camera module bring up, started web app backend implementation, and worked on the design report.

Since the RPi5 must shut down gracefully when the car’s engine is turned off, ensuring a stable interim power supply is crucial. I compared several available modules based on output voltage, run-time capacity, size constraints, and ease of integration, with the goal of finding a solution that meets both our technical and cost requirements.

I collaborated with Vicky to bring up the RPi5 and Camera Module 3, verifying that the drivers and interfaces worked correctly on our target hardware. We tested that the camera is working by taking test images to see if it meets the resolution. And we started thinking how to implement the loop recording and ALPR calling function on the rpi camera.

On the software side, I began implementing the backend for our web application.

Lastly, I spent time writing and refining our design report.

Progress:

overall the progress is on time, but the web app backend implementation could go a little faster as there are still many functionality not implemented yet. But luckly next week is the spring break and I plan to make some progress during the week. But overall, I am on progress

Schedule:

  1. Finalize the UPS module and purchase.
  2. Test the UPS module
  3. Finish deploy ML on edge
  4. Blues module bring up and GPS test
  5. Web app backend

Team Status Report for 3/1

Risks

  • We have identified a new risk related to our power source. During our weekly meeting, we discussed using a UPS to address the circuit issue in the dash cam system. We need to finalize which UPS solution to adopt, since it must be compatible with the RPi5 and ideally support power input from a car’s 12V cigarette lighter. We also decided that, as a fallback, we could mitigate sudden power loss by installing a manual switch to perform a clean shutdown. This ensures the RPi can complete its shutdown process and minimize the risk of data corruption.

Changes

  • We re-evaluated the scope of our ALPR accuracy. Previously, we considered accuracy on a per-frame (per-image) basis, but through experimentation, we realized that assessing accuracy per car provides a more practical measurement. If an average of three images is captured for a single vehicle, we consider it a missed detection only when all three images fail to detect the plate correctly. Shifting to a “per-car” approach more accurately reflects real-world conditions and helps us measure performance in a way that aligns better with our actual use case.
  • We updated the use-case requirement of ALPR accuracy from 90% to 80%. Based on experimentations and literature review, we find 80% accuracy to be a more realistic requirement for U.S. real-world dataset end-to-end accuracy due to license plates’ varied and complicated designs.
  • We modified the image upload flow in the Central Server to use direct S3 uploads instead of routing through API Gateway. Initially, the system validated and forwarded image uploads via API Gateway and AWS Lambda before storing them in S3. However, this approach introduced inefficiencies due to API Gateway’s payload limits, added latency, and increased costs. To optimize performance, we implemented pre-signed S3 URLs, allowing dash cams to upload images directly to S3. When a license plate is detected, the watchlist query layer checks against a DynamoDB-stored watchlist; if a match is found, an AWS Lambda function generates a pre-signed URL and sends it to Blues NoteHub for direct upload. Once the upload completes, an S3 event triggers another Lambda function, logging the match in RDS and sending alerts via SNS. This change removes API Gateway as a bottleneck, improves system efficiency, reduces costs, and enhances security by restricting upload access to authorized clients with temporary URLs.
  • We updated the Web App access layer in the Central Server by replacing an EC2-based backend with AWS API Gateway and Lambda functions. Initially, we assumed an EC2 instance would be more cost-effective, but upon further analysis, we found that law enforcement officers access the system from multiple geographic locations, requiring a more scalable solution. API Gateway now serves as the system’s entry point, with Lambda functions dynamically handling officer requests, interacting with DynamoDB for watchlist storage and RDS for match history retrieval. This adjustment improves scalability by automatically adjusting to traffic loads without manual intervention. While API Gateway introduces some cost, it remains minimal, estimated at $3.50 per million requests, and offers greater flexibility compared to EC2. Given that officer interactions are a small portion of total traffic, this approach balances scalability and cost-effectiveness while ensuring efficient and reliable access to the system.

Schedule

Special Questions

A was written by Andy, B was written by Vicky, and C was written by Christine.

  • Global Factors: Our crowdsourced ALPR (Automatic License Plate Recognition) system is designed with global factors in mind to ensure its effectiveness and ethical use across different regions. One of the primary considerations is legal and regulatory compliance. Laws governing ALPR technology vary significantly across countries and even within regions. To address these concerns, we are implementing privacy-focused features, such as not storing license plate information and our data retention policy, ensuring compliance with different legal frameworks. Another key global factor is technological accessibility and infrastructure. The system needs to function reliably in various environments, from developed cities to other areas with limited connectivity. To accommodate this, we are designing edge-processing capabilities so that the dash cameras can locally process images and only upload essential metadata, reducing bandwidth usage. Additionally, the license plate recognition system is trained with real world data that will be optimized to work in diverse conditions, from bright urban environments to low-light or rainy conditions in rural settings.
  • Cultural Factors: On one hand, PlatePatrol harnesses community empowerment and civic engagement by transforming everyday dash cams into a crowdsourced public safety network, resonating with America’s tradition of grassroots participation and innovation. On the other hand, the continuous collection and processing of vehicle data raise deep-seated privacy concerns and fears of surveillance in a society that values individual freedom, while historical issues of biased enforcement heighten anxieties about disproportionate targeting of minority and economically disadvantaged communities.
  • Environmental Factors: The PlatePatrol system promotes environmental sustainability by leveraging existing dash cams instead of deploying new fixed surveillance cameras, reducing hardware waste and energy consumption. It utilizes AWS Lambda for serverless computing, ensuring resources are used only when needed, minimizing energy waste. Furthermore, by digitizing and streamlining law enforcement workflows, PlatePatrol reduces reliance on paper-based documentation, cutting down waste and promoting an eco-friendly approach to public safety operations.

Andy’s Status Report for 2/22

This week, I focused on the UX/UI design and implementation of the webapp, and the circuit design for the dash cam:

I kepted working on the initial version of the frontend using React.js + TypeScript with Ant Design. The draft includes:

  1. A login page with JWT-based authentication.
  2. A dashboard that allows law enforcement to view and modify the police officer’s individual watchlist entries, add new license plates to the system, and check the recent history of matched list.
  3. A page to display founded alert.

For the circuit, it is used to help the rpi5 conduct the safe shut down process because the power supply on car will stop as soon as the car is shut off, but our rpi5 requires an additional period of time to execute the shut down process or the video stored or the board itself could be damaged.

For this week, I had a initial plan and circuit desig using LTspice, but more design and discussion is required.

In case this does not work, I also did research online and found a module called UPS hat for rpi seems could be utilized to solve our problem.

https://www.waveshare.com/ups-hat.htm

Progress
My progress is on schedule.

Schedule:

  1. Start backend implementation from the interface with cloud server
  2. Continue on dashcam circuit design
  3. Design report