Showing posts with label Bluetooth Low Energy. Show all posts
Showing posts with label Bluetooth Low Energy. Show all posts

Monday, 11 January 2016

It's all in the application: Recon Instruments Snow 2 vs Paragliding (Part 5)

With the Christmas break spent optimizing my BLE implementation (to get some degree of reliability in messaging from the Bluetooth enabled vario), I figured I was set to begin field testing with my upcoming trip to Brazil.

Then an email from the trip organizer -> we will be using turn points to keep everyone close to roads, making for easy retrieve. 

Looks like navigation support just got bumped in priority.

The turn points were distributed via the standard .wpt file format. I just needed a way for one to select the points, assign radii, display bearing and distance to the next point, and pop them from the queue as they are reached.

A split implementation seems best -> build the list on the phone and push to the HUD.

The HUD side: 



The red inverted triangle shows the bearing to waypoint that is 4.4 km away. 

The MFD has been updated to include the height above launch to its cycle of information when within 5 km of launch.




A short while later while on bar and gliding away from the turn point (looking back at it), a wind guesstimate shows up. Heuristics need tuning.


Flight time is in the lower left corner.

The phone side:



Turn points from .wpt loaded and parsed.


Launch point selected, now able to add to waypoint list at bottom


'Add' selected, enter the radius in meters.


Launch and landing added - aggregate non-optimized distance displayed. 'Save' is now available. Selecting a waypoint in the bottom list will replace the 'Add' button with a 'Remove'.


The Save has been re-purposed to 'View' for now. Launch visible with the turn point radius in green.

...and the LZ. The black line is the path to be taken. Again non optimized.

Once saved, the waypoints (along with associated turn points and radii) are pushed to the HUD via Wifi P2P. The HUD has a thread watching for the turn point file to be updated and will pick it up when the upload is complete. The HUD will then populate the navigation queue and display the next waypoint on the compass (as above).

Next steps include the ability to slide the vertices of the flight path around within the turn point cylinder radii (hand optimization). Following that would be automated optimization using some form of the Travelling Salesman genetic algorithm.

Continued in Part 6

Monday, 14 December 2015

It's all in the application: Recon Instruments Snow 2 vs Paragliding (Part 4)

BLE - Bluetooth Low Energy.

Its all the rage in 'wiring' up sensors to a flight data aggregator (such as the GliderHUD on the Recon Instruments Snow2).

Now that the GliderHUD app can display flight data generated by the internal GPS, its time to look at external data sources like the XCTracer vario/GPS.

Using the sample application provided by Recon (which is based on the Android BLE tutorial published by Google) - I was able to get the Snow2 and XCTracer chatting with one oddity. It appears that the BLE stack on the Snow2 struggles with multipart messages. This is not particularly surprising as the only BLE device the Snow2 could talk to originally was the remote. I imagine that the up/down state of 6 buttons could easily be packed in the 20 byte limit of a BLE message - precluding the need to address a rapid chain of messages hitting the onboard transceiver and protocol stack. Just a hunch though. It could also be the quality of the Bluetooth chip itself. Who knows.

Well, the message format I wanted to support out of the box was the native XCTracer frame with a plethora of data.

But it is not to be.

After the third (sometimes fourth) XCTracer subpart, a new message begins - meaning the remainder of the original is dropped. Trying to accommodate a rapid turn around within the characteristic notification callback, I tried posting the byte data to a Handler immediately. Still no dice. Maybe a bug on my part.

What I do know works (mostly...mostly) is the LXWP0 format - it comes across in two parts as opposed to the five or six portions with the XCTracer sentence.

So LXWP0 it is.

Sadly this costs me the groundspeed - it would be nice to be able to skip using the onboard GPS on the Snow2 altogether except as a backup.

The changes are up on GitHub - https://github.com/Levemus/GliderHUD

The vario data coming from the XCTracer via BLE (the XCTracer is reporting the altitude as a negative, which the altitude display floors at 0 m):






Continued in Part 5