Selaa lähdekoodia

Completed README.md

tags/v1.2.2
Bertrand Lemasle 6 vuotta sitten
vanhempi
commit
c64884ba88
1 muutettua tiedostoa jossa 43 lisäystä ja 18 poistoa
  1. +43
    -18
      README.md

+ 43
- 18
README.md Näytä tiedosto

@@ -1,40 +1,65 @@
# High autonomy automatic GPS tracker system.
This project aims to provides an autonomous GPS tracker system based on an Arduino as the central unit. Battery saving has been incorporated into every step of the design.
# High autonomy automatic GPS tracker.
This project aims to provides an autonomous GPS tracker based on an Arduino as the central unit. Battery saving has been incorporated into every step of the design.
# Features
The device will fetch and save GPS position and device metrics at regular intervals. Those intervals are dynamiccaly adjusted to try to find the best compromise between accurate tracking of a moving target and battery saving.
Additionaly, all those data can be send to an HTTP(S) based web server.
* High autonomy
* Automatic acquisition of GPS position
* Dynamically adjusted positions acquisition frequency based on speed and time of the day
* Local buffer of 4095 positions
* Backup positions using GPRS network and HTTP(s) POST requests
# Requirements
## Hardware
The project has been build on a ATMega328p for its ease of use, low power consumption and wide support, being at the core of the Arduino UNO. The downside is a relativly limited space. That space gets filled almost completly by the project in its current state, leaving very few possibilities for further improvments and features. Even adding Serial debugging statements can sometimes be impossible.
The project has been build on a ATMega328p for its ease of use, low power consumption and wide support, being at the core of the Arduino UNO.
Appart from the main ATMega328p, several chips are needed :
* [SIM808](https://simcom.ee/documents/?dir=SIM808) : GPRS & GPS module.
* [DS3231](https://www.maximintegrated.com/en/products/digital/real-time-clocks/DS3231.html) : Real Time Clock, used for time keeping and battery saving.
* [24LCxxx](https://www.microchip.com/wwwproducts/en/en010828) : EEPROM used to buffer raw data before sending.
## Additional Librairies
On top of the hardware librairies, the project use two libraries :
* [Low-Power](https://github.com/rocketscream/Low-Power) for reliable power management.
* [Arduino-Log](https://github.com/thijse/Arduino-Log/) for customizable Serial logging.
## Using standard Arduino boards
This project can be build using standard Arduino boards and shields. For instance, you can start from an Arduino UNO with an Adafruit FONA shield.
This should only be done for testing and debugging purpose though, as both are not designed with energy saving in mind, and will rapidly consumes all your battery life.
# Building the hardware
## Using a dedicated board
For optimum energy management and maximum autonomy, a double-sided, surface mounted [circuit board]() has been engineered. Taking that path requires either using soldering paste or some fine soldering skills : the SIM808 package can be quite hard to solder by hand.
## Using standard Arduino materials
This project can be build using standard Arduino materials and shields. For instance, you can use an Arduino UNO with an Adafruit FONA shield.
This should only be done for testing and debugging purpose though, as both are very energy inefficient, and will rapidly consumes all your battery life.
## Software
The project has been build using Arduino 1.8.5. Ditching Arduino IDE in favor of an advanced IDE (VS Code, Visual Micro) is strongly recommended.
## Using a dedicated board
For optimum energy consumption, a double-sided, surface mounted [circuit board]() has been engineered. Taking that path requires some fine soldering skills : the SIM808 package can be quite hard to solder by hand.
### Arduino Librairies
* [SIM808]()
* [uDS3231]()
* [E24]()
* [Low-Power](https://github.com/rocketscream/Low-Power)
* [Arduino-Log](https://github.com/thijse/Arduino-Log/)
## Configuration
The projects currently use 9 arduino "named" pins on the ATMega. There are all listed in [Pins.h](/src/Pins.h).
To fully use the project, you will need to adjust some values based on your needs. Each file under [src/config](src/config) can be modified, but the one you'll be most likely interested in are :
* [Alerts.h](/src/config/Alerts.h) : Alerts level and contact phone number
* [BackupNetwork.h](/src/config/BackupNetwork.h) : Network backup activation and configuration
* [Sleeps.h](/src/config/Pins.h) : Sleeps duration configuration
# How does it work ?
TODO : description of the general principles of the tracker. Which components are used and why/when ?
Each traditional `loop` execution procedes through the following phases :
* Acquisition of current GPS position
* Triggering alerts
* Backuping positions
Each one of these phases requires long waits (acquiring GPS signal, registering to the networks, etc). To preserve battery during those waits, all non-essentials devices are turned off, including the main ATMega328p. An interrupt coming from the RTC DS3231 chip (powered by & 3V coin battery) is used to woke up the main unit.
## Backuping positions
As positions backup can take quite some time, they're only backup in two cases :
* When stopping for a long time
* When stopped and many positions are buffered
This behaviour prevent the backup from distrupting the rate at which positions will be acquired.
# Limitations
## Adding features
The downside of using an ATMega328p is a relativly limited space. That space gets filled almost completly by the project in its current state, leaving very few possibilities for further improvments and features. Even adding Serial debugging statements can sometimes be impossible.
## Using an SD card
An SD card was firt intended to be used for logging, data saving and configuration purposes. Due to the limited space available on an ATMega328p (32k), it has been removed early in the development process. Parts of the intended code (using [SdFat](https://github.com/greiman/SdFat)) is still in the repository, buts its use has been disabled.

Ladataan…
Peruuta
Tallenna