Software apps and online services
Hand tools and fabrication machines
I have put a lot of work and research into improving on the LoRa GPS Tracker I wrote about here: https://www.instructables.com/id/LoRa-GPS-Tracker/
I have been asked about how to apply that project to things like:
- Wildlife tracking
- Personal S.O.S alert
- Aged care tracker for dementia patients
One challenge common to all these was long battery life, so I made a number of changes to the Ripple LoRa mesh protocol, the Commander app, and the device firmware to get the power consumption down to a minimum.
The Ripple Commander app is used for setting up the mesh network, and can be downloaded from Google Play here: https://play.google.com/store/apps/details?id=com.spleenware.deviceprovision
It now has the screen below for configuring the GPS Tracker devices:
The top section is for devices which will feature an alert S.O.S button. This is optional, eg. you would leave this unchecked for a wildlife tracker application.
The Power Modes section is where all the new magic is. For the different device modes (Standby, Live Track, etc) you can now set the power mode for the MPU (main processor) and whether to enable to Peripheral power pin. You can now wire up a transistor or a dedicated voltage regulator with an ENable pin, to Pin 12 of the Feather.
In the screen-shot above, when in STANDBY mode, the MPU will sleep for 2 minutes (Low Power3) AND power down the Peripherals. (ie. the GPS receiver).
When in LIVE track mode, the MPU will stay on (Normal) AND it will power up the Peripherals (ie. the GPS receiver).
You could also, for example have LIVE use Low Power2 and enable Peripheral pin. With this combination, the MPU would sleep for 30 seconds, and only power up the peripherals (GPS receiver) briefly to obtain a geo-location, then power back down.
For a number of use-cases, like aged care, the device will mostly be in the STANDBY mode, and only rarely needs the LIVE tracking enabled (ie. if a dementia patient has wandered off). The admin can simply enable this mode, remotely waking up the device. (see screen below)
With the 850mAh lipo battery the device can stay in Low Power3, with Peripheral off, for approximately 7 days.
With a much smaller 220mAh battery I got about 2 days of standby.
When the user long-presses the button ( > 2 seconds), the device goes into S.O.S mode, and sends an alert text message to the radio connected to the Commander Android device. It also changes the status of the device to 'Help!' as seen in the device list in the main screen:
The Peripheral pin is also enabled which turns on the GPS receiver, and the MPU is put into Normal (stay on) mode.
The admin can see where the device is on the 'Map' tab, which shows a Google Map view with pins showing live location.
Wiring Up The Device
Below is a wiring diagram for the Adafruit Feather and the different peripherals needed:
For help installing a LoRa antenna to the Feather please see the original article (link near top of this article).
NOTE: for some use-cases you may want the GPS receiver to stay on, and not use the Peripheral enable pin. In this case you'd simple wire the BN-180's VCC pin to the 3.3V output power on the Feather, and not use the Polulu regulator.
You need to make sure you have the Arduino IDE installed, with the SAMD Zero boards support added. Go to the Ripple Github site for instructions:
For this project, you need to flash this specific binary:
The Ripple Commander app has TWO launcher icons. For defining and configuring the devices on the mesh network, launch from the 'Device Provision' icon.
Tap on the 'NEW' menu in the top Actionbar. then enter a unique ID and name. Select 'GPS Tracker' in the Device Role drop down. (optionally, you can set custom config with the '...' button)
Click on SAVE, then back on the main screen, there should be a new device in the list with the name you assigned. Tap on the small 'computer chip' icon next to it to go into the 'Program Device' screen.
Connect a USB OTG cable from Android to the Feather device. Now tap on the 'Program' button in the Commander app, and if all goes well there should be a '... done' message.
The device should now have its ID, config and encryption keys stored in its EEPROM.
You also need to setup a Ripple device and connect over USB-OTG cable to the Android running the Commander app. This is the 'home' node (and will assume ID 1).
You need to flash one of the 'Messenger' (or Repeater) firmware binaries to this device. For the TTGO V2 board (which I recommend), you would flash this firmware: https://github.com/spleenware/ripple#repeater-or-messenger---433-to-915mhz-configurable--usb-otg-only-5
If you have a 3D printer, you can make your own case to protect the components. I designed one for use with a small 220mAh battery, where I can just slot the battery into the underside to turn it on:
Let me know in the comments if you want the STL files.
If you find this project useful and feel like throwing some Bitcoin my way, I'd be really grateful:
My BTC address: 1CspaTKKXZynVUviXQPrppGm45nBaAygmS
I will be conducting an initial trial of these devices at an aged care village. It will be interesting getting some real-world feedback and refining the product.
I continue to work on this project because it really engages me and interests me. I hope it can prove to be useful to the wider community. Feel free to message me here if you have questions.