The prototype model for an AVR/Arduino powered GPS tracking device.
Inspired originally by a motorcycle theft incident I experienced, the project was intended as a bare minimum hardware/software template that can be easily put together and used for remote location monitoring and alerts. A more refined, closed-source production model is currently in the works. Broken down into 4 distinct parts:
- Hardware setup
- Embedded software
- Android monitoring app
- Web API to interface between hardware and Android app
Nano V3.0 ATmega328P | 3.7v to 5v Step-up PCB |
---|---|
LiPoly Battery 3.7v | Sim808 GPRS Module |
---|---|
The GPRS board specified for this project can be replaced with any board capable of serial communication and some basic AT commands (must be able to fetch coordinates and make HTTP/HTTPS requests)
To build/compile the embedded software for the Atmega328P microcontroller, you'll need to have either the Arduino IDE installed, or the Arduino CLI tools. For the bootloader, the Atmega328P requires atmega328old
. So your compilation command would be:
arduino-cli compile --fqbn arduino:avr:nano:cpu=atmega328old
To flash the compiled executable:
arduino-cli upload -p /dev/{port} --fqbn arduino:avr:nano:cpu=atmega328old
Where the pathname is the file descriptor of your connection to the microcontroller.
The code for the Android app is plug and play for Android 8.0 ( Oreo and up ), except you will need an API key from Google to access their maps API. Likewise you will need to change the endpoint locations for your own API to interface with remote data from the microcontroller.
For this project I used a t2.micro
EC2 instance from AWS, and setup a local MySQL with credentials specified in an .env
file. The PHP written for this project can get a bit specific with directory structure, so you will likely have to modify those elements as needed.
NOTE: You'll need to define the API endpoints in both the Arduino sketch, and the Android application to hit your own server. The endpoints currently referenced no longer exist.
Inside view ( With components ) | Cover plate |
---|---|
Inside view ( Without components ) | Enclosed View |
---|---|