Inhaltsverzeichnis:
- Schritt 1: PCB-Design mit Eagle
- Schritt 2: Löten der Platine
- Schritt 3: Software … Funktionalität … Ergebnisse
- Schritt 4: 3D-gedruckter Fall … irgendwie
- Schritt 5: Dinge zu verbessern…
Video: GPS-Überwachung mit OLED-Display-Projekt - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:16
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:
- PCB-Design.
- Stückliste, die Sie benötigen, um die Leiterplatte zu montieren
- Schneller Blick auf die Software und den Code selbst und einen Test für die Hard- und Software.
- 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
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
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
Die Software wird in 4 Teile unterteilt:
- USART zur Kommunikation mit dem ATGM332 GPS-Modul.
- SPI zur Kommunikation mit OLED.
- USB-CDC.
- 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:
- GPGGA
- GPRMC
- 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:
- Grüne LED an PA06 angeschlossen und blinkt, wenn ein gültiger Geo-Standortwert vorhanden ist.
- Orange LED an PA07 angeschlossen und blinkt einmal pro Sekunde, wenn kein gültiger Geo-Standort vorhanden ist.
- 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
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…
- Verschieben Sie den SWD-Anschluss nach oben, da er einfacher mit Ihrem Programmierer verbunden werden kann.
- 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.
- Machen Sie eine Benutzertaste etwas größer, damit sie leichter zu drücken ist.
- Hinzufügen von USB-CDC-Code, damit Sie ein spezielles Programm für MAC/PC/Linux kommunizieren/entwerfen können.
- 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).
- 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:
Heimwerken -- Einen Spinnenroboter herstellen, der mit einem Smartphone mit Arduino Uno gesteuert werden kann – wikiHow
Heimwerken || Wie man einen Spider-Roboter herstellt, der mit einem Smartphone mit Arduino Uno gesteuert werden kann: Während man einen Spider-Roboter baut, kann man so viele Dinge über Robotik lernen. Wie die Herstellung von Robotern ist sowohl unterhaltsam als auch herausfordernd. In diesem Video zeigen wir Ihnen, wie Sie einen Spider-Roboter bauen, den wir mit unserem Smartphone (Androi
Bewegungsaktivierte Cosplay Wings mit Circuit Playground Express - Teil 1: 7 Schritte (mit Bildern)
Bewegungsaktivierte Cosplay-Flügel mit Circuit Playground Express - Teil 1: Dies ist Teil 1 eines zweiteiligen Projekts, in dem ich Ihnen meinen Prozess zur Herstellung eines Paars automatisierter Feenflügel zeige. Der erste Teil des Projekts ist der Mechanik der Flügel, und der zweite Teil macht es tragbar und fügt die Flügel hinzu
Raspberry Pi mit Node.js mit der Cloud verbinden – wikiHow
So verbinden Sie Raspberry Pi mit Node.js mit der Cloud: Dieses Tutorial ist nützlich für alle, die einen Raspberry Pi mit Node.js mit der Cloud, insbesondere mit der AskSensors IoT-Plattform, verbinden möchten. Sie haben keinen Raspberry Pi? Wenn Sie derzeit keinen Raspberry Pi besitzen, empfehle ich Ihnen, sich einen Raspberry Pi zuzulegen
Wie man eine Babygewichtsmaschine mit Arduino Nano, HX-711 Wägezelle und OLED 128X64 herstellt -- Kalibrierung des HX-711: 5 Schritte
Wie man eine Babygewichtsmaschine mit Arduino Nano, HX-711-Wägezelle und OLED 128X64 herstellt || Kalibrierung von HX-711: Hallo Instructables, vor wenigen Tagen wurde ich Vater eines süßen Babys?. Als ich im Krankenhaus war, stellte ich fest, dass das Gewicht des Babys so wichtig ist, um das Wachstum des Babys zu überwachen. Also ich habe eine Idee? um eine Babygewichtsmaschine von meinem Selbst zu machen. In diesem Instructable ich
Verbinden eines GPS-Moduls mit dem Raspberry Pi: Dashcam Teil 2: 3 Schritte
Anbindung eines GPS-Moduls an den Raspberry Pi: Dashcam Teil 2: Dies ist Teil 2 des Dashcam-Projekts und in diesem Beitrag erfahren Sie, wie Sie ein GPS-Modul an den Raspberry Pi anschließen. Wir verwenden dann die GPS-Daten und fügen sie dem Video als Textüberlagerung hinzu. Bitte lesen Sie Teil 1 über den untenstehenden Link, bevor Sie