Direkt zum Inhalt
PekawayPekaway
GPS hinzufügen (Basics)

GPS hinzufügen (Basics)

Die aktuelle Position des Vans zu wissen und zu überwachen, sorgt für ein ruhiges Gewissen und ermöglicht selbstverständlich weitere Automatisierung. Deswegen soll es in diesem Tutorial über die grundlegende Einrichtung eines GPS-Moduls in unser System gehen. 

GPS SERIAL Module

Für das Hinzufügen von GPS behilft man sich im standardmäßig von fertigen Modulen, welche sich um die Auswertung der GPS Signale kümmern und die Daten dann über eine Schnittstelle zur Verfügung stellen. Meistens passiert dies über eine serielle Verbindung (UART) oder über eine "USB" serielle Verbindung. 

Auf dem Bild seht ihr ein GPS Module mit dem NEO-6m chip von U-Blox. Dieses Modul ist sehr verbreitet und dieses haben wir auch für unseren Test verwendet. Prinzipiell sollten aber auch andere Module genauso funktionieren. 

Diese Module brauchen also nur Strom und eine serielle Verbindung. Auf unserem Relayboard sind euch bestimmt schon die Pins in der Mitte des Boards aufgefallen. 

 

Verwendung am Relayboard

Diese Pins sind dafür da, genau solche Module direkt auf dem Relayboard zu verlöten. Wir haben deswegen den I2C-Bus und zwei UARTS in verschiedene Pinbelegung für verschiedene Boards raus geführt. 

Da das Raspberry PI 4 - 5 UARTS, also serielle Schnittstellen besitzt, können wir diese perfekt dafür nutzen. ACHTUNG, dies geht nicht mit dem PI3

Hier ist beispielhaft ein U-Blox Modul auf dem UART4 angeschlossen. Leider hatten wir kein "blaues" Modul mehr, dort hätte die Pinbelegung genau gepasst und wir hätten es direkt auflöten können.  Momentan haben wir auf unserem Image durch die Verwendung von wiringPI auch Probleme mit dem Verschalten von den GPIOS. Deswegen funktioniert momentan nu der UART1 (Display) und UART5 (Multiuart). Wir haben im weiteren Tutorial also UART5 verwenden. (links neben den Pins auf dem Bild und auf dem JST-Stecker auf der Rückseite rausgeführt)

UARTS Aktivieren

Um die Uarts auf dem Rapberry PI zu nutzen, müssen wir diese erst aktiveren. Dies passiert über die Config.txt auf der Boot-Partition der SD. 

Dort können wir mit dem Befehl: 

dtoverlay=uart5

den zusätzlichen UART aktiveren und später auch nutzen. Der UART wird im System zur seriellen Schnittstelle /dev/ttyAMA1. Also der zweite Port im System. /dev/ttyAMA0 (=/dev/ttyS0) wird zur Kommunikation mit dem Display genutzt. 

Aktiviert ihr mehr Schnittstellen werden die unter AMA2,AMA3 usw. zur Verfügung gestellt. 

Nachdem wir nun also die serielle Schnittstelle aktiviert und unser Modul verbunden haben, müssen wir die Daten in Node-Red empfangen. 

Node-Red verbinden

Um die Daten vom GPS-Modul zu empfangen, benutzen wir einfach eine "serial-node". Schaut mal in unseren Connections-Flow dort gibt es viele davon. Standardmäßig sollte dort auch die Schnittstelle /dev/ttyAMA1 zu finden sein, da wir den UART5 schon aktiviert haben. 

Bitte löscht der Einfachhalt halber alles raus, was hier mit AMA1 findet. Da wir sonst das Tutorial viel umfangreicher machen müssten. 

Danach nehmt ihr euch ein "serial-node-in" dieses konfiguriert auf die folgenden Einstellungen. 

/dev/ttyAMA1   baudrate 9600 8N1 

und wählt aus das ihr die Daten nach 100ms Ruhezeit getrennt werden sollen.  

Unter Windows mit angeschlossenen USB-GPS Empfänger würdet ihr einfach den entsprechenden COM auswählen.  

 

Node-RED Auswertung der Daten

Die Daten, die über den UART Port kommen sind ohne weiteres erstmal nicht aussagekräftig für uns. Daher verwenden wir das parse-gps Plugin.

https://www.npmjs.com/package/node-red-contrib-parse-gps 

Wir finden dieses Plugin allerdings nicht in der Palette bei Node-RED, sondern müssen es manuell mit npm (Node Package Manager) installieren. Dafür loggen wir uns per SSH in unserem System ein und wechseln dann in das Verzeichnis von Node-RED mit

" cd ~/.node-red/"

und installieren dort das parse-gps Modul mit

"npm install node-red-contrib-parse-gps"

Dann starten wir Node-RED einmal neu, damit wir die Node im Editor verwenden können:

"sudo systemctl restart nodered.service".

Wenn das soweit geklappt hat, konvertieren wir die empfangenen Daten vom GPS-Modul zu einem String in einer Function Node. (Oder ihr stellt es direkt in der "serial-node" ein, falls es dort nicht eh vor eingestellt ist)

Danach können wir das installierte parse-gps Plugin hängen. Wenn kein GPS Signal empfangen wird, sehen wir Folgendes:

Sobald wir ein Signal empfangen haben, bekommen wir aber msg.payload.lat und msg.payload.lon angezeigt und haben damit unseren Standort. 

Bitte beachtet, dass dies beim Erststart der Module bis zu 10min dauern kann. Beim nächsten Mal sollte es schneller gehen. Dafür haben die Module eine kleine Batterie, um die letzten Werte zu halten und für einen schnelleren Start zur Auswertung herangezogen werden können. 

 

Was ihr nun mit den Daten macht, ist momentan noch euch überlassen. :) Wetterdaten anzeigen, automatische Abschaltung aller Relays beim Abstellen in der Garage oder was ihr euch sonst noch so vorstellt. 

Wir werden demnächst das Ganze in unsere IOT-Bridge einbinden. Dann könnt ihr relativ einfach euer Fahrzeug orten. Auch werden wir einen API-Endpunkt bauen um, die Daten aus unserem System einfach wieder herauszubekommen. 

Hinterlasse einen Kommentar

Deine Email-Adresse wird nicht veröffentlicht..

weitere Tutorials

OpenSource needs Support

werde jetzt Patron

Mehr Projekte, mehr Tutroials und mehr unterstütze Geräte. Unsere Community wächst und freut sich auch über deine Unterstützung. Werde also jetzt Patron um immer die neuesten Inhalte zu erhalten und gleichzeitig das VAN PI Projekt zu unterstützen.

Patron werden
Warenkorb 0

Dein Warenkorb ist leer

Beginn mit dem Einkauf