Android Gps And Imu Logger With The Tactigon

About the project

Connect The Tactigon to a GROVE GPS breakout board and send position and euler angles to an Android device for portable data logging

Project info

Difficulty: Difficult

Platforms: AndroidArduino

Estimated time: 1 hour

License: GNU General Public License, version 3 or later (GPL3+)

Items used in this project

Hardware components

Grove - GPS Grove - GPS x 1
3D Gesture Sensor (Mini) For Arduino 3D Gesture Sensor (Mini) For Arduino x 1
Complex Programmable Logic Devices Complex Programmable Logic Devices with Bluetooth Low Energy x 1

Software apps and online services

Arduino IDE Arduino IDE
Processing Processing

Hand tools and fabrication machines

Electronic Case Electronic Case x 1

Story

We connected a GROVE GPS to The Tactigon, to pair position data to Euler's Angles. Libraries offers both Bluetooth Low Energy and Serial communication, so we connected the GPS using UART and we used Bluetooth Low Energy to transmit data to our Android Smartphone, programmed using Processing Android Mode.

KML - Keyhole Markup Language

To format gathered data we used KML files, since we needed a way to pair Global Position data with parameters read by sensors on board (in this case Euler's angles, Pitch, Roll and Yaw). KML format is use4d by Google Earth, Google Maps and many other software to share paths, positions, and is broadly used by programmers. KML file generated by our application is structured as follow:

<Placemark>
    <name>172043.0</name>
    <ExtendedData>
        <Dataname="Roll">
            <value>-140.57332°</value>
        </Data>
        <Dataname="Pitch">
            <value>18.839018°</value>
        </Data>
        <Dataname="Yaw">
            <value>-91.80548°</value>
        </Data>
    </ExtendedData>
    <Point>
        <coordinates>9.385868,45.57182,0.0</coordinates>
    </Point>
</Placemark>

Placemark tag identify our point over the map. This point has a name (<name> tag, we used the UTC timestamp), a point made of geographic coordinates (latitude and longitude, <Point> tag), in DD format, and related data, <ExtendedData>, where in our application are Roll, Pitch and Yaw values recorded in the current position. This format describes now a series of points with all the informations we wanted to monitor, readable with free tools.

In the following images, we can see the path and a point detail, showing Roll, Pitch and Yaw.

Communication - UART - BLE - Arduino Sketch

The Tactigon is connected to GPS Receiver by a serial port, UART, and thanks to The Tactigon's Library is possible to pair a callback triggered by each byte received.

We created a buffer, analyzed when an endline value is retrieved. The sketch parses the lines and grabs latitude and longitude.

Bluetooth Low Energy is used to transmit data (GPS and Angles) to a BLE Central Device, in our case an Android Smartphone.

Android - Logging

Processing code receives data from The Tactigon and log it in KML format file in the internal storage.

We used BLEPDROID library to use Bluetooth Low Energy with Processing Android Mode.

Schematics, diagrams and documents

fritzing_RL18Ga5i7y.jpg

Code

GPS.ino

V7.rar

Full source code

Download

BLEGPS.pde

Buffer.pde

Data.pde

GPSData.pde

IMUData.pde

Utils.pde

AndroidManifest.xml

sketch.properties

Credits

Photo of The Tactigon

The Tactigon

The Tactigon is a brand of Next Industries Milano. Next Industries is a born of a passion to develop devices and sensors fit for Iot Technology. Our team is made of incredible experts in movement detection for big structural monitoring systems, software development and wearable device.

   

Leave your feedback...