Bau meines LoRaWAN GPS Tracker

Ich habe mir endlich den Adafruit Ultimate GPS Feather Wing bestellt und auf meinen Adafruit 32u4 Feather LoRa aufgesteckt. Damit ist mein Testaufbau des LoRaWAN GPS Tracker auch schon fertig. Ihr müsst wirklich nur die Buchsenleisten an den 32u4 löten und die Stiftleisten an den GPS Wing und beides zusammen stecken. An dem 32u4 müsst ihr natürlich noch eine Antenne anlöten und eine Verbindung zwischen IO1 und Pin6 herstellen, das hatte ich ja bereits beschrieben. Wirklich benötigt werden nur die vier Kontakte, 3V, GND, RX und TX für den GPS Feather Wing. So erhaltet ihr einen schön kompakten Node, welcher seine GPS-Daten an das TTN übertragen soll. Der gesamte Aufbau war einfacher als gedacht, da die meisten Probleme bereits vorher schon gelöst worden sind.

LoRaWAN GPS Tracker

Der Ultimate GPS Feather Wing besitzt eine LED. welche euch über den GPS-Status informiert. Diese LED blinkt im Sekundentakt, sobald der GPS Chip nach Satelliten sucht und blinkt im Abstand von 15 Sekunden, sobald Die Verbindung aufgebaut ist. Somit seht ihr direkt am Node ob er einen GPS Fix hat.

Ihr könnt auch eine externe Antenne anschalten, aber darauf verzichte ich, da ich eine kleinen und tragbaren Node erstellen wollte. Das Batterie-Backup für die interne RTC ist nicht nötig, verkürzt aber die Zeit bis zum Fix, wenn der Node gestartet wird.

 

LoRaWAN GPS Tracker Arduino Sketch

Den Sketch habe ich auf GitHub gestellt, damit bekommt ihr eueren Tracker ans Laufen. Änderungen am Sketch werden dort auch immer wieder einfließen. Ihr müsst natürlich eure Keys und die Device Address anpassen. Der Sketch verwendet TinyGPS, ihr müsst also die Bibliothek noch in der Arduino IDE einbinden. Nach dem Upload, sendet der Node seine Daten bereits an das TTN.

Der GPS-Part des Codes basiert auf der Arbeit von Pieter Hensen. Ebenfalls verwende ich die Arduino LMIC-Library von Matthijs Kooijmanand.

 

Payload dekodieren

Die Payload ist codiert und so müsst ihr Decoder anlegen. Innerhalb des TTN wechselt ihr auf eure Console unter Applications >> Application-Name >> Payload Formats >> Decoder. Anschließend seht ihr unter Data die Koordinaten eingeblendet. Ich muss zugeben, das war natürlich nicht meine Idee. Das Thema wurde bereits an dieser Stelle im TTN-Forum diskutiert und ich habe mich des Codes bedient. Ich musste nur eine Kleinigkeit anpassen, damit es später mit dem Geohash-Node in Node-RED zusammen arbeitet.


function Decoder(b, port) {

  // Amsterdam: 52.3731, 4.8924 = MSB 07FDD3 00BF1C, LSB D3FD07 1CBF00
  // La Paz: -16.4896, -68.1192 = MSB FD7BE0 F59B18, LSB E07BFD 189BF5
  // New York: 40.7127, -74.0059 = MSB 063657 F4B525, LSB 573606 25B5F4
  // Sidney: -33.8688, 151.2092 = MSB FAD500 17129C, LSB 00D5FA 9C1217

  // LSB, Least Significant Bit/Byte first! Your node likely sends MSB instead.

  // Sign-extend the 3rd and 6th bytes into a 4th and 8th byte:
  var lat = (b[0] | b[1]<<8 | b[2]<<16 | (b[2] & 0x80 ? 0xFF<<24 : 0)) / 10000;
  var lng = (b[3] | b[4]<<8 | b[5]<<16 | (b[5] & 0x80 ? 0xFF<<24 : 0)) / 10000;

  return {
    location: {
      lat: lat,
      lon: lng
    },
    love: "TTN payload functions"
  };
}

 

Hier seht ihr die decodierte Payload in TTN, jedoch hat der Tracker gerade keinen Fix und somit wird keine gültige Position übertragen.

gps tracker

 

Ich hoffe ihr könnt damit etwas anfangen oder das Ganze auch noch verbessern. Ihr solltet damit jedenfalls selbst in der Lage sein eueren eigenen LoRaWAN GPS Tracker aufzubauen. Demnächst werde ich noch eine Beitrag veröffentlichen in dem es darum geht, die Daten zu verarbeiten und zu visualisieren.

  Gefällt mir

1 Gedanke zu “Bau meines LoRaWAN GPS Tracker”

Schreibe einen Kommentar