Parcel location displayed on the web application
Homepage of the web app for accessing the location of the parcel
Home screen of the carrier Android application which scans the mac addresses and updates location of packages if mac addresses match
The interface for adding new package tracking tags by scanning the NFC which contains metadata
interface for entering package tracking ID
Overview of the system
Competing with 2.1T market cap company by building cheaper technology
One of our team members has recently sent important documents regarding student loans by post. Unfortunately, the package got lost and there was no way to locate it. It sparked the question in our minds how postal services could find the lost packages, make the delivery more reliable, and efficient and ensure a better user experience.
What it does
Modules with Bluetooth chips are attached to parcels that allow tracking them by periodically broadcasting their own MAC address. The addresses are discovered by the delivery driver’s phone that has GPS enabled which then updates their last location, id, and timestamp in the database. A customer or service provider can use a package tracking number to accurately obtain the latest parcel’s location and basically track it in real-time on an interactive map.
How we built it
The MVP hardware prototype tag is built out of a BT05 or SPP-C Bluetooth module and an NFC tag to store its metadata. To power the Bluetooth module 370mAh rechargeable LiPo battery is used.
Our software solution is divided into 2 parts: a carrier Android application and customer-side web application for interactive real-time tracking. We developed the driver-side app with Android Studio using Java. Carrier’s mobile application had to satisfy the following requirements:
- Discover MAC addresses of nearby parcel modules
- Create new parcel instances in the database using metadata stored in the NFC tag
- Get the current location data of the phone, link this to nearby parcels, and update their status in the Firebase Realtime Database
We chose to develop an Android application because all delivery drivers carry an Android phone. In addition, Android Studio provided seamless integration of GPS, NFC, and Bluetooth technologies.
The customer-side web application was developed with Flask (Python) and it had to fulfill these requirements:
- Query the Firebase Realtime Database by parcel tracking number
- Get the last known coordinates of the parcel
- Display the location info on an interactive map
We chose Flask to develop a lightweight application with Jinja2 templating engine.
Finally, both applications are registered within a Firebase project and share a single database.
Challenges we ran into
- Java :D
- React integration with Google Maps API (very strange “google is not defined” error). A mentor warned us that debugging it might take as long or longer than creating a new application from scratch with Leaflet library. Therefore, we decided to switch to Flask
- Using off-the-shelf hardware components caused the prototype to be not the best-looking. A fully integrated ground-up design would allow us to make the chip significantly smaller
Accomplishments that we're proud of
- Having built a minimal viable hardware and software solution in an extremely short period of time
- Writing code while being sleep deprived
- Productive teamwork by dividing tasks well
What we learned
Avoid unnecessary dependencies at all costs because they lead to unnecessary headaches.
What's next for Parcel Tracking System
- A custom PCB design with a custom plastic casing
- Using location history to optimize routes and further user experience
- Parcel tracking in warehouses using IoT devices by attaching BLE quipped chips to the factory ceiling to form a gird and precisely pinpoint the location of parcels
- Automating the parcel stamping process; e.g. a sorting machine puts the modules on a parcel and automatically links the module with a tracking identification number