This is an app for Android tablets and car head units, that provides all the functions required when chasing a high altitude balloon (ideally one transmitting LoRa packets, but other modes can be integrated):
- Chase car upload to Habitat
- LoRa reception and upload, via USB or Bluetooth or Pi LoRa Gateway
- Backup reception of telemetry via Habitat
- Reception of telemetry via UDP over WiFi
- Display of telemetry
- Display of distance and direction to payload
- Display of map with balloon and chase positions
- Function to display driving route on map
- Function to provide navigation to balloon using external navigation app
- SSDV (live imaging) page
- Audio indication of new packets
- Audio indication of alarms
- Speech “e.g. payload XYZ is descending”
- Automatic status updates to Twitter
There are several options for LoRa reception. First, it can use an OTG USB connection (if supported by your device) to a simple receiver comprising a LoRa module plus microprocessor with USB port; this is now available in the Uputronics store, or to build one see this article. Or it can use a Bluetooth connection to similar hardware, using a Bluetooth adapter (e.g. HC-06) connected to the Arduino. Or, if you have your own LoRa receiver that can feed data via Bluetooth or USB, then it is simple to add the required protocol. Finally, it can use one or two LoRa gateways on the same network. In all of these cases, the LoRa parameters (frequency etc.) can be controlled from the app.
Install and start the program. When it starts it will ask for permission to use the device’s location; since this is needed for almost all program functions then it’s best that you agree!
Connect HAB Receiver
For USB, connect the LoRa receiver via a USB OTG cable, taking care to connect the host end to the phone and the slave end to the receiver. Android will ask you if you wish to allow the app to use the device (again, you do!). Check the box so that this app is automatically started when you reconnect this USB LoRa device.
For Bluetooth, you will need to pair the phone with the receiver before it can be used, and then choose the paired device under Settings –> BT. Within a few seconds the app should then connect to the Bluetooth receiver.
For a LoRa Gateway, enter the IP address or hostname of the gateway device on the Settings –> Gateway 1 (or 2) screen. Note: Android will not normally work with local hostnames, however if you configure your gateway(s) to emit UDP metadata, then that data contains the gateway hostname and IP address. You can then set the Android app to listen to the same UDP port, and when it hears that data it will match the hostname to the IP address so it can connect via that.
If you have other receiving devices – LoRa or otherwise – that broadcast HAB telemetry over a network connection using UDP, then provided they use a supported format then you can tell the app to listen to them (Settings –> UDP). Supported formats include raw UKHAS telemetry, OziMux and OziPlotter formats.
The app has 3 screen sections. At the top is the HAB status bar with up to 3 payload buttons (gree text = good; red text = telemetry loss), plus the position of the selected payload (if you have multiple payloads, select by touching the appropriate button):
On the left is the main menu with 7 buttons.
The buttons are:
- Payloads – Shows received telemetry for up to 3 payloads
- Direction – Shows the direction and distance to the selected payload
- Map – Embedded Google map showing balloon(s) and chase device
- Navigate – Open an external app for on or off-road navigation to selected payload or predicted landing point.
- SSDV – Embedded SSDV page for the current payload(s)
- Log – Event log
- Settings – Shows the various setup screens
At the bottom there’s a status bar with source status for the various HAB data sources and local GPS source, plus local GPS position.
This shows the status for the 2 LoRa gateways (GW1 and GW2), USB, Bluetooth (BT), UDP, Habhub (HH) and GPS. The bar also shows current UTC time from the tablet’s GPS. The circles, where present, show the upload status to Habitat (Green = Good, Red = Failed, Gray = Not in use).
The central area is for function-specific screens, and initially just shows a splash screen with app version number.
Up to 3 payloads can be displayed; if a 4th is heard then it will replace whichever of the other 3 has the oldest data.
Each displayed payload shows the payload ID, time since last message received, UTC time of that message (as sent by the payload), latitude and longitude, altitude (with maximum altitude in brackets), ascent/descent rate,
If you do have multiple payloads then you can select between them by touching the button at the top; once done, the selected payload will be used on the direction screen and for navigation.
This screen shows the distance and direction from your location to the latest position received from the payload.
If your tablet has a magnetic compass then that will be used; if not then the GPS “heading” value will be used. The former gives direction to the phone’s orientation; the latter gives the the phone’s direction of movement and for tor this to be accurate you need to be moving, so if you aren’t then drive or walk approx 10-20 metres in a straight line. If the tablet isn’t reporting a heading then the compass marker will be in red, and will show the payload direction relative to North (North = straight ahead).
To the right there are blocks for the payload latitude, longitude, altitude, ascent rate and TTL (Time Till Landing, filled in during descent).
This shows an embedded Google map:
The map will initially centre on your location, but will then allow you to drag the map around at will. If you wish it to remain centred on your location then touch the “Car” button; if you wish it to centre on the payload then touch the “Payload” button.
This screen provides functions for for navigation and map directions to the payload. First, choose the payload on the left (if not already selected), then the target type (current balloon position or predicted landing position), then the type of navigation you wish to use.
You have these choices for navigation:
- Navigate invokes a navigation app, and is intended for driving directions. First time you do this Android will ask you to choose which app you want to use for navigation (e.g. Waze, Google Maps).
- Show Route uses an embedded (i.e. within this app) Google Map to show road directions to the payload.
- Off Road is the same as Navigate, but is intended for off-road directions. It uses a different Android “intent” which means that Android will ask again for your choice and will remember that choice separately. So you can choose a different app e.g. Back Country Navigator or another OS mapping app.
This is simply an embedded web browser showing the SSDV page for the current payload(s).
This screen shows logged events, such as when the app notices that a payload has been launched or is descending.
Each event can be spoken out loud – see the Settings/General page. Events can also be Tweeted – again, see that settings page.
The buttons on the right add manual events to the log – of use if you are tweeting progress of your flight.
There are 8 sections on the settings page:
- General – Various settings that don’t have a home elsewhere
- GPS – Controls upload of tablet GPS position
- Gateway 1/2 – Settings for network-connected LoRa gateways
- USB – Settings for the attached USB LoRa receiver
- BT – Setting for the attached Bluetooth LoRa receiver
- UDP – Settings for listening to other receivers via UDP
- Habitat – Settings for Habitat downloads
Touch the appropriate button to enter your desired section. Once there, make your adjustments and then touch “Apply” or “Cancel”.
- “Callsign” is used for uploads from USB or Bluetooth receivers.
- “Post Updates To Twitter” posts events (e.g. balloon is descending” to your Twitter account
- “Position Beeps” enables a short and fairly quiet beep sound every time a new position is received from a payload.
- “Alarm Beeps” enables a beep on alarm conditions (e.g. telemetry lost)
- “Speech” enables speech output of events.
“Chase Car ID” is what your position will appear as on the spacenear.us map.
“Period” is how many seconds between uploads.
Touch “Enable Upload” (so it is highlighted in yellow) to enable the uploads.
- “Network Address” is the IP address of the gateway (use this if it’s fixed and known) or the hostname. Note: Android will not normally work with local hostnames, however if you configure your gateway(s) to emit UDP metadata, then that data contains the gateway hostname and IP address. You can then set the Android app to listen to the same UDP port, and when it hears that data it will match the hostname to the IP address so it can connect via that.
- “Port”is the TCP/IP port for to connection to the gateway (normally 6004).
- “Ch0/1 Frequency” is the frequency to listen to for that channel (LoRa gateways can have 1 or 2 channels).
- “Mode” is the LoRa mode from 0 to 7.
LoRa USB Settings
“Frequency” is the centre frequency to set the receiver to.
“Mode” is the LoRa mode to set from 0 to 7; most commonly 0 is used for telemetry, and 1 for SSDV with telemetry.
The 2 buttons enable upload of telemetry and SSDV from the tracker, using the callsign from the Settings/General page.
LoRa Bluetooth Settings
As for the USB section above, except for the addition of a “Device” box from where you can choose the paired Bluetooth device. This pairing must be done before entering the settings screen.
This section is useful if you have receivers that broadcast telemetry – for example an installation of auto_rx (Sonde receiver) or HABDEC (RTTY receiver).
“Port” is the port number that the app will listen telemetry toe the telemetry sent to.
“White List” is one or more payloads, separated by commas, that the app will download telemetry for from Habitat. This is useful if you do not have a receiver connected to your phone.
The “Enable” button enables download of payloads listed in the white list, or any received directly via LoRa etc.
To see the status of the data sources, touch the status bar on any of the source buttons (USB/Habitat/GPS etc).
If you want to change which apps are invoked from the Directions screen, go to Android Settings –> Apps, choose the existing app, then choose “Open by default”, then “Clear defaults”.