Bike theft around the world has become a serious issue in need of addressing. Sentinel, a guardian who stands and keeps watch, is reflective of our mission statement to empower bike owners in safeguarding their bikes.
- Motion detection
- Motion detection using MPU6050 IMU
- User-adjustable motion sensitivity
- Battery
- 60 hours of battery life
- Rechargeable battery with USB-C
- Networking and Communication
- Integrated LTE cellular connection
- MQTT publish-subscribe communication
- Location tracking
- GPS with 10m accuracy
- Location triangulation using cell tower and wifi nodes
- Deterrence
- Motion or user-activated 85 dB alarm
- Stealth push notifications to users
Refer to the setup guide in the embedded section.
Our backend consists of a single service deployed with AWS EC2 and it serves requests made by our embedded device and mobile app. The server is responsible for provisioning AWS SNS for push/SMS events, retrieving and modifying data in our MongoDB database (also deployed in AWS), and serving requests made by our mobile app and embedded device.
Our database schema reflects a 1-to-1 relationship for mobile apps and embedded devices, and store relevant authentication and identification data for managing real-time events and alerts. HiveMQ is used to send and receive MQTT emits for event-driven communication with the bike tag device. This design handles various event and state changes such as bike alarm warnings and alarms, lock/unlock, manual alarm triggers, etc.
We make use of several external services/ APIs. API keys may be needed for the following services:
- MongoDB
- AWS
- EC2
- SNS
- Google Cloud
- HiveMQ Cloud
- Maps Geocode
Any instance types with support for npm will work. For our use case, a T2 micro instance met our requirements.
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash
source ~/.bashrc
nvm install 19.4.0
git clone https://github.com/Sentinel-IGEN/sentinel.git
cd sentinel/backend
npm i
We use pm2 to spawn and manage daemon processes.
npm install pm2 -g
pm2 --name Sentinel start npm -- start
pm2 ps
pm2 delete 0
pm2 logs




