Inhaltsverzeichnis:

GPS-Überwachung mit OLED-Display-Projekt - Gunook
GPS-Überwachung mit OLED-Display-Projekt - Gunook

Video: GPS-Überwachung mit OLED-Display-Projekt - Gunook

Video: GPS-Überwachung mit OLED-Display-Projekt - Gunook
Video: Tasmota OLED Display [ SSD1306 /SH1106 ] 2024, Juli
Anonim
GPS-Überwachung mit OLED-Display-Projekt
GPS-Überwachung mit OLED-Display-Projekt
GPS-Überwachung mit OLED-Display-Projekt
GPS-Überwachung mit OLED-Display-Projekt
GPS-Überwachung mit OLED-Display-Projekt
GPS-Überwachung mit OLED-Display-Projekt
GPS-Überwachung mit OLED-Display-Projekt
GPS-Überwachung mit OLED-Display-Projekt

Hallo zusammen, in diesem kurzen Artikel werde ich mit Ihnen mein Projekt teilen: ATGM332D GPS-Modul mit SAMD21J18-Mikrocontroller und SSD1306 OLED 128 * 64-Display, ich habe eine spezielle Platine dafür auf Eagle Autodesk gebaut und mit Atmel Studio 7.0 und ASF4 programmiert In diesem Artikel werde ich diese Reise und die von mir verwendeten Dateien mit Ihnen teilen, wenn Sie daran interessiert sind, dies selbst zu tun.

Wenn Sie nun Ihre MCU / Entwicklungsplatine mit Arduino programmieren, sollte dieses Projekt relativ einfach für Sie sein, aber hier werde ich ASF4 (Advanced Software Framework 4) von Atmel / Microchip verwenden, das auf der Sprache C basiert und Ihnen eine Idee geben würde um die GPS-NMEA-Nachricht mit dem asynchronen USART-Treiber (Rückruf) zu lesen und Ihnen eine einfache Bibliothek zur Verfügung zu stellen, die Sie mit jedem Mikrocontroller und jeder anderen Plattform verwenden können, indem Sie einfach den entsprechenden Treiber hinzufügen, den Sie verwenden, um die Nachricht vom GPS (NMEA-Nachricht).

Ich unterteile diesen Artikel in:

  1. PCB-Design.
  2. Stückliste, die Sie benötigen, um die Leiterplatte zu montieren
  3. Schneller Blick auf die Software und den Code selbst und einen Test für die Hard- und Software.
  4. zu guter letzt noch ein verbesserungspunkt für dieses projekt.

Sie finden alle Materialien zu diesem Projekt auf Github (Hier)

Schritt 1: PCB-Design mit Eagle

PCB-Design mit Eagle
PCB-Design mit Eagle
PCB-Design mit Eagle
PCB-Design mit Eagle
PCB-Design mit Eagle
PCB-Design mit Eagle
PCB-Design mit Eagle
PCB-Design mit Eagle

Dieses Projekt basiert hauptsächlich auf dem ATGM332D GPS-Modul, einfachem GPS, da es nur ein paar passive Komponenten benötigt, um zu funktionieren, und wir könnten eine Backup-Batterie hinzufügen, um die Uhrzeit / das Datum zu speichern, wenn wir die Hauptstromquelle vom Modul abschalten.

und um alle Signale in der Schaltung zu steuern, habe ich den Mikrocontroller ATSAMD21J18B, das TQFP64-Paket, verwendet, da es 128 KByte Programmspeicher und 32 KByte Datenspeicher hat (und ich habe viele davon auf meiner Werkbank).

die Schaltung soll von einer USB 5V-Quelle mit Strom versorgt werden, auch der USB kann als virtueller COM-Port (CDC USB) fungieren und Sie können einen Code dafür hinzufügen, wenn Sie mit dem Gerät über USB kommunizieren möchten.

Für das Display habe ich SSD1306 0,96 'OLED-Display mit SPI-Bus ausgewählt, es ist klein, aber für die gewünschte Leiterplattengröße geeignet, die Platinenabmessung 100x31 mm.

Die Programmierung des Mikrocontrollers erfolgt über einen SWD-Programmierer (ich verwende Atmel ICE) und wird über eine 1,27 mm 10p-Stiftleiste verbunden.

Außerdem habe ich Fusion360 verwendet, um eine 3D-Ansicht für das Board zu erhalten, und Sie können auch ein gerendertes Bild dafür sehen.

Schritt 2: Löten der Platine

Löten der Platine
Löten der Platine
Löten der Platine
Löten der Platine
Löten der Platine
Löten der Platine

Sie haben die Wahl, eine Schablone mit Ihrer Leiterplatte zu bestellen, es ist einfacher, die Lötpaste mit der Schablone auf die Platine aufzutragen, ich habe eine Heizplatte verwendet, um die Komponenten zusammenzulöten, mit Heißluft ist auch OK, aber seien Sie beim Löten der LED vorsichtig, da sie sind so hitzeempfindlich.

Das Löten der Unterseite ist etwas einfacher, da sie nur die SWD-Stiftleiste und die Pufferbatterie hat, die Sie mit einem Lötkolben verlöten können.

Bevor Sie den Stromkreis mit einer USB-Stromquelle verbinden, prüfen Sie auf Kurzschlüsse.

Schließen Sie Ihre GPS-Antenne an und stellen Sie sicher, dass Sie den Stecker richtig verlöten. Ich habe die Antenne an der Unterseite der Platine befestigt.

Schritt 3: Software … Funktionalität … Ergebnisse

Image
Image
Software … Funktionalität … Ergebnisse
Software … Funktionalität … Ergebnisse
Software … Funktionalität … Ergebnisse
Software … Funktionalität … Ergebnisse

Die Software wird in 4 Teile unterteilt:

  1. USART zur Kommunikation mit dem ATGM332 GPS-Modul.
  2. SPI zur Kommunikation mit OLED.
  3. USB-CDC.
  4. GPIO zur Steuerung von LEDs

Schließen Sie zuerst den USB-Stecker an, um den Circuit einzuschalten, und verbinden Sie dann das Flachbandkabel mit dem SWD-Stecker.

Laden Sie den Code von github herunter (Link hier).

Um den Geo-Standort zu erhalten, haben Sie 3 verschiedene NMEA-Nachrichtenoptionen:

  1. GPGGA
  2. GPRMC
  3. GPGLL

Ich habe den GPRMC-Satz verwendet, um den Ort, die Uhrzeit und das Datum (Uhrzeit ist 0,0 GMT) zu erhalten, so dass Sie im Code Folgendes finden:

GPRMC. Enable=1;/*0 wenn diese Nachricht nicht benötigt wird*/

GPGGA. Enable=0;/*0 wenn diese Nachricht nicht benötigt wird*/

GPGLL. Enable=0;/*0 wenn diese Nachricht nicht benötigt wird*/

Sie können sie alle zusammen aktivieren und gleichzeitig lesen, um die benötigten Daten zu erhalten.

Sobald ein gültiger GPRMC-Satz vorhanden ist, wird GPRMC. Ready zu 1 und Sie können alle in diesem Satz verfügbaren Daten abrufen. Klicken Sie auf diesen Link, um die in diesem Satz verfügbaren Daten anzuzeigen.

Wenn Fix 'A' ist, bedeutet dies, dass der Standort verfügbar ist, wenn Fix 'V' ist, bedeutet dies, dass der Standort nicht verfügbar ist.

Beachten Sie, dass ATSAMD21 eine interne RTC hat, aber hier verwende ich sie nicht und verwende stattdessen Zeit und Datum direkt vom GPS. Wenn Sie also die CR1220-Backup-Batterie nicht verwenden möchten, werden Sie die USB-Stromquelle trennen Zeit/Datum verlieren und beim nächsten Einschalten der Schaltung ist der Zeit-/Datumsbereich auf dem Display leer, bis das GPS einen gültigen Zeit-/Datumswert hat.

Das Display zeigt Ihnen den aktuellen Status des GPS und zeigt die Geo-Position an, sobald diese verfügbar ist, es gibt jedoch 3 LEDs auf der Platine:

  1. Grüne LED an PA06 angeschlossen und blinkt, wenn ein gültiger Geo-Standortwert vorhanden ist.
  2. Orange LED an PA07 angeschlossen und blinkt einmal pro Sekunde, wenn kein gültiger Geo-Standort vorhanden ist.
  3. Rote LED, die mit dem PPS-Pin des GPS-Moduls verbunden ist und nur blinkt, wenn ein gültiges Signal für den Standort vorhanden ist.

Ergebnisse

Die Schaltung hat bei mir sehr gut funktioniert, die Geo-Ortung vom GPS zu bekommen dauerte 20-30 Sekunden im Freien bei klarer Sicht zum Himmel und zwischen Gebäuden ohne Probleme sogar mit Antenne auf der Unterseite des Boards.

Schritt 4: 3D-gedruckter Fall … irgendwie

3D gedruckte Hülle… irgendwie
3D gedruckte Hülle… irgendwie

Ich habe einen einfachen Fall (genauerer Halter) für diese Schaltung vorbereitet, aber aufgrund der COVID-19-Epidemie und der Sperrung, in der ich mich gerade befinde, konnte ich meinen 3D-Drucker nicht erreichen, um ihn zu drucken, daher werde ich diesen Abschnitt mit stl aktualisieren Datei und ein Foto für den Inhaber, sobald es verfügbar ist.

Schritt 5: Dinge zu verbessern…

Dinge zu verbessern…
Dinge zu verbessern…
Dinge zu verbessern…
Dinge zu verbessern…
Dinge zu verbessern…
Dinge zu verbessern…
  1. Verschieben Sie den SWD-Anschluss nach oben, da er einfacher mit Ihrem Programmierer verbunden werden kann.
  2. Ich habe die Schaltung über eine Lithiumbatterie mit Strom versorgt, indem ich einen Jumper gelötet habe, und es hat gut funktioniert, wobei zu beachten ist, dass der Linearregler (LDO) eine V-Drop-Spannung hat, wenn (Vbat - Vout) kleiner als die Vdrop-Grenze ist, funktioniert die Schaltung möglicherweise nicht richtig.
  3. Machen Sie eine Benutzertaste etwas größer, damit sie leichter zu drücken ist.
  4. Hinzufügen von USB-CDC-Code, damit Sie ein spezielles Programm für MAC/PC/Linux kommunizieren/entwerfen können.
  5. Für die GPS-Antenne habe ich für dieses Projekt eine aktive Antenne verwendet, die Verwendung einer passiven Antenne ist möglich, indem ein rauscharmer Operationsverstärker wie AT2659 hinzugefügt wird (siehe auch den Schaltplan auf ATGM332 Datenblatt S.14).
  6. Für OLED 0.96 'SSD1306, die offizielle Bibliothek von Mikrochip, die ursprünglich für 128 * 32-Anzeigen verwendet wurde, müssen Sie zu ssd1306.c gehen und den Code ändern (siehe Bild), um den Code für die Arbeit mit 128 * 64 zu ändern.

Empfohlen: