BerdeBox is a remote delivery pick-up box, which is fully controllable by your phone so that you can accept packages, anywhere, anytime. Aside from picking up delivieries, BerdeBox includes a cashbox module which allows users to complete Cash-on-Delivery transactions remotely.
This is a project for UP Diliman's Department of Computer Science's IoT Cup 2024.
BerdeBox is a smart mailbox that can function as a personal delivery assistant. The following features allow for convenience and assurance:
- The application sends push notifications when the delivery person presses the doorbell, to notify the user that their package has arrived.
- Photos are taken when the delivery person presses the doorbell, when the lockbox has been opened and when the cashbox module has been opened, to allow for verification. These photos can be accessed in the log.
- An auto-locking mechanism has been implemented, to ensure that the mailbox will close and lock even if the delivery man fails to do so.
An ESP8266
was the main microcontroller of BerdeBox. Most of the sensors (doorbell button) and actuators (main lock servo, cashbox lock solenoid, 2 LEDs, buzzer) are connected to the ESP8266.
An ESP32 CAM
is used for taking photos. The camera is connected to the ESP32
. We decided to use the Firebase library for the ESP8266
for direct communication with the Firebase Realtime Database (RDB). However, the same could not be done with the ESP32
because it would need to have access to both the RDB
and Firebase Storage. Hence, all communication with the RDB is done by the ESP8266
and the ESP32
only uploads a photo to the Firebase Storage. For the ESP32
to take a photo when needed, the ESP8266
has to send a packet using the ESP NOW
library which enables communication between ESP devices through the WiFi.
Sensors and Actuators | Circuit Set-up |
---|---|
Since the project required data to be persistent, we decided to use Google Firebase to store all of our data. We used the following Firebase services
Firebase Realtime Database
for communications between the web app and the hardwareFirebase Storage
for uploading photos from the ESP32 CAM and retrieving photos to display in the web app.Firestore Database
to store user information and BerdeBox informationFirebase Authentication
, Firebase Cloud Messaging and Firebase Cloud Functions for registering and implementing push notifications based on changes in the real-time database
We decided to use SvelteKit
for our web app. To allow our web app to simulate our ideal final product, we turned it into a progressive web application to simulate a native mobile application and allow push notifications.
Using Firebase, we were able to communicate with the changes from the hardware using Firebase Real-time Database. We were also able to retrieve the photos taken by the ESP32 camera by accessing Firebase Storage.
With Firebase, we are able to implement authentication to allow users to add their own BerdeBoxes and implement push notifications with Firebase Cloud Messaging and Firebase Cloud Functions. These were implemented to simulate the user flow when using the mobile application.
Home Page | Controls | Logs |
---|---|---|
- Opening BerdeBox remotely
IMG_6625.mov
- Opening the cashbox module remotely