Inhaltsverzeichnis:
- Lieferungen
- Schritt 1: GPS-Daten abrufen
- Schritt 2: Senden von GPS-Daten über Funk
- Schritt 3: Speichern von Daten mit einem SD-Kartenmodul
- Schritt 4: Senden und Speichern von GPS-Daten
- Schritt 5: Danke
Video: Smart Boje [GPS, Radio (NRF24) und ein SD-Kartenmodul] - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:15
Diese Smart Buoy-Serie zeigt unseren (ehrgeizigen) Versuch, eine wissenschaftliche Boje zu bauen, die mit handelsüblichen Produkten aussagekräftige Messungen über das Meer vornehmen kann. Dies ist Tutorial zwei von vier – stellen Sie sicher, dass Sie auf dem neuesten Stand sind, und wenn Sie eine schnelle Einführung in das Projekt benötigen, sehen Sie sich unsere Zusammenfassung an.
Teil 1: Durchführen von Wellen- und Temperaturmessungen
In diesem Tutorial zeigen wir Ihnen, wie Sie GPS-Daten abrufen, auf einer SD-Karte speichern und per Funk irgendwohin senden.
Wir taten dies, damit wir den Standort unserer Seeboje verfolgen konnten. Das Radio bedeutet, dass wir es aus der Ferne sehen können und die SD-Karte bedeutet, dass wir, wenn etwas kaputt geht und es wandert, die Daten herunterladen können, die es während seiner ungeplanten Exkursion gesammelt hat - falls wir es jemals wiederfinden!
Lieferungen
GPS-Modul - Amazon
SD-Kartenmodul - Amazon
SD-Karte - Amazon
2 X Funkmodule (NRF24L01+) - Amazon
2 X Arduino - Amazon
Schritt 1: GPS-Daten abrufen
Die intelligente Boje führt Sensormessungen durch, während sie sich im Meer befindet, einschließlich GPS-Standort und Datumszeit. Schauen Sie sich den Schaltplan an, der zeigt, wie wir die Schaltung einrichten. Das GPS-Modul kommuniziert über eine serielle Verbindung, daher verwenden wir die serielle Bibliothek der Arduino-Software sowie die winzige GPS-Bibliothek, um damit zu kommunizieren. Diese Bibliotheken machen alles super einfach. Lassen Sie uns Sie durch den Code führen…
#enthalten
#include // Das TinyGPS++-Objekt TinyGPSPlus gps; // Die serielle Verbindung zum GPS-Gerät SoftwareSerial ss(4, 3); struct dataStruct{ doppelter Breitengrad; doppelter Längengrad; langes Datum ohne Vorzeichen; lange Zeit ohne Vorzeichen; } gpsDaten; Void setup () {Serial.begin (115200); ss.begin(9600); aufrechtzuerhalten. Void loop () { while (ss.available () > 0) { if (gps.encode (ss.read ())) { getInfo (); printResults(); } } } void getInfo () { if (gps.location.isValid ()) { gpsData.latitude = gps.location.lat (); gpsData.longitude = gps.location.lng(); aufrechtzuerhalten. Sonst {Serial.println ("Ungültiger Speicherort"); aufrechtzuerhalten. Wenn (gps.date.isValid()) {gpsData.date = gps.date.value(); aufrechtzuerhalten. Sonst {Serial.println ("Ungültiges Datum"); aufrechtzuerhalten. Wenn (gps.time.isValid()) {gpsData.time = gps.time.value(); aufrechtzuerhalten. Sonst {Serial.println ("Ungültige Zeit"); }} void printResults () {Serial.print ("Ort: "); Serial.print (gpsData.latitude, 6); Serial.print (, "); Serial.print (gpsData.longitude, 6); Serial.print("Datum:"); Serial.print (gpsData.date); Serial.print ("Zeit: "); Serial.print (gpsData.time); Serial.println(); }
(Schauen Sie sich das Video zu diesem Code unter https://www.youtube.com/embed/xz1ix76U28E an)
Schritt 2: Senden von GPS-Daten über Funk
Angenommen, die Boje befindet sich auf See und nimmt Messungen vor, aber wir möchten die Daten sehen, ohne nasse Füße zu bekommen oder die Boje an Land zu bringen. Um die Messungen aus der Ferne zu erhalten, verwenden wir ein Funkmodul, das auf beiden Seiten der Kommunikation mit einem Arduino verbunden ist. Zukünftig werden wir das empfängerseitige Arduino durch ein Himbeer-Pi ersetzen. Das Radio funktioniert mit beiden Schnittstellen ähnlich, so dass der Austausch ziemlich einfach ist.
Das Funkmodul kommuniziert über SPI, was etwas mehr Verbindungen als I2C erfordert, aber dank der NRF24-Bibliothek trotzdem sehr einfach zu bedienen ist. Mit dem GPS-Modul für die Sensormessungen übertragen wir seine Daten von einem Arduino zum anderen. Wir werden das GPS- und Funkmodul mit dem Arduino verbinden und auf der anderen Seite ein Arduino mit dem Funkmodul - sehen Sie sich den Schaltplan an.
Sender
#enthalten
#include #include #include #include TinyGPSPlus gps; SoftwareSeriell ss(4, 3); RF24-Funk (8, 7); // CE, CSN struct dataStruct{ double latitude; doppelter Längengrad; langes Datum ohne Vorzeichen; lange Zeit ohne Vorzeichen; } gpsDaten; Void setup () { Serial.begin (115200); ss.begin(9600); Serial.println ("Radio einrichten"); // Senderradio einrichten radio.begin (); radio.openWritingPipe(0xF0F0F0F0E1LL); radio.setChannel (0x76); radio.setPALevel(RF24_PA_MAX); radio.setDataRate(RF24_250KBPS); radio.stopListening(); radio.enableDynamicPayloads(); radio.powerUp(); Serial.println ("Beginnt zu senden"); aufrechtzuerhalten. Void Schleife () { while (ss.available () > 0) { if (gps.encode (ss.read ())) { getInfo (); radio.write(&gpsData, sizeof(gpsData)); } } } Void getInfo () { if (gps.location.isValid ()) { gpsData.longitude = gps.location.lng (); gpsData.latitude = gps.location.lat(); aufrechtzuerhalten. Sonst { gpsData.longitude = 0,0; gpsData.latitude = 0,0; aufrechtzuerhalten. Wenn (gps.date.isValid()) {gpsData.date = gps.date.value(); aufrechtzuerhalten. Sonst { gpsData.date = 0; aufrechtzuerhalten. Wenn (gps.time.isValid()) {gpsData.time = gps.time.value(); aufrechtzuerhalten. Sonst { gpsData.time = 0; } }
EMPFÄNGER
#enthalten
#einschließen #einschließen RF24-Funk (8, 7); // CE, CSN struct dataStruct{ double latitude; doppelter Längengrad; langes Datum ohne Vorzeichen; lange Zeit ohne Vorzeichen; } gpsDaten; Void setup () { Serial.begin (115200); // Empfängerradio einrichten radio.begin (); radio.openReadingPipe(1, 0xF0F0F0F0E1LL); radio.setChannel (0x76); radio.setPALevel(RF24_PA_MAX); radio.setDataRate(RF24_250KBPS); radio.startListening(); radio.enableDynamicPayloads(); radio.powerUp(); aufrechtzuerhalten. Void Schleife () { if (radio.available ()) { radio.read (&gpsData, sizeof(gpsData)); Serial.print("Ort:"); Serial.print (gpsData.latitude, 6); Serial.print (, "); Serial.print (gpsData.longitude, 6); Serial.print("Datum:"); Serial.print (gpsData.date); Serial.print ("Zeit: "); Serial.print (gpsData.time); Serial.println();} }
(Schauen Sie sich das Video zu diesem Code unter https://www.youtube.com/embed/xz1ix76U28E an)
Schritt 3: Speichern von Daten mit einem SD-Kartenmodul
Das Funkmodul ist recht zuverlässig, aber manchmal braucht man einen Notfallplan für den Fall, dass auf der Empfängerseite der Strom ausfällt oder das Funkgerät außer Reichweite gerät. Unser Notfallplan ist ein SD-Kartenmodul, das es uns ermöglicht, die von uns gesammelten Daten zu speichern. Die Menge der gesammelten Daten ist nicht so groß, sodass selbst eine kleine SD-Karte problemlos die Daten eines Tages speichern kann.
#enthalten
#include #include #include TinyGPSPlus GPS; SoftwareSeriell ss(4, 3); struct dataStruct{ doppelter Breitengrad; doppelter Längengrad; langes Datum ohne Vorzeichen; lange Zeit ohne Vorzeichen; } gpsDaten; Void setup () { Serial.begin (115200); ss.begin(9600); if (! SD.begin (5)) { Serial.println ("Karte fehlgeschlagen oder nicht vorhanden"); Rückkehr; } Serial.println ("Karte initialisiert."); Datei dataFile = SD.open("gps_data.csv", FILE_WRITE); if (dataFile) { dataFile.println ("Breitengrad, Längengrad, Datum, Uhrzeit"); dataFile.close(); } Else {Serial.println ("Nein kann die Datei nicht öffnen"); aufrechtzuerhalten. aufrechtzuerhalten. printResults(); saveInfo(); } } } void getInfo () { if (gps.location.isValid ()) { gpsData.latitude = gps.location.lat (); gpsData.longitude = gps.location.lng(); aufrechtzuerhalten. Sonst {Serial.println ("Ungültiger Speicherort"); aufrechtzuerhalten. Wenn (gps.date.isValid()) {gpsData.date = gps.date.value(); aufrechtzuerhalten. Sonst {Serial.println ("Ungültiges Datum"); aufrechtzuerhalten. Wenn (gps.time.isValid()) {gpsData.time = gps.time.value(); aufrechtzuerhalten. Sonst {Serial.println ("Ungültige Zeit"); }} void printResults () {Serial.print ("Ort: "); Serial.print (gpsData.latitude, 6); Serial.print (", "); Serial.print (gpsData.longitude, 6); Serial.print("Datum:"); Serial.print (gpsData.date); Serial.print ("Zeit: "); Serial.print (gpsData.time); Serial.println(); aufrechtzuerhalten. Void saveInfo () { Datei dataFile = SD.open ("gps_data.csv", FILE_WRITE); if (dataFile) { dataFile.print (gpsData.latitude); dataFile.print(", "); dataFile.print (gpsData.longitude); dataFile.print(", "); dataFile.print (gpsData.date); dataFile.print(", "); dataFile.println (gpsData.time); dataFile.close(); aufrechtzuerhalten. Sonst {Serial.println ("Nein, keine Datendatei"); } }
(Wir sprechen diesen Code im Video https://www.youtube.com/embed/xz1ix76U28E durch)
Schritt 4: Senden und Speichern von GPS-Daten
Schritt 5: Danke
Tragen Sie sich in unsere Mailingliste ein!
Teil 1: Durchführen von Wellen- und Temperaturmessungen
Teil 2: GPS NRF24-Radio und SD-Karte
Teil 3: Energie für die Boje planen
Teil 4: Einsatz der Boje
Empfohlen:
On Off Latch-Schaltung mit UC. Ein Druckknopf. Ein Stift. Diskrete Komponente.: 5 Schritte
On Off Latch-Schaltung mit UC. Ein Druckknopf. Ein Stift. Discrete Component.: Hallo zusammen, habe im Netz nach einer Ein/Aus-Schaltung gesucht. Alles, was ich fand, war nicht das, was ich suchte. Ich habe mit mir selbst gesprochen, es gibt unbedingt einen Weg dazu. Das habe ich gebraucht. - Nur ein Druckknopf zum Ein- und Ausschalten. - Muss nur
EIN ALTES HANDY (NOKIA 6600) IN EIN SUPERGADGET-MIKROCOMPUTER VERWANDELN: 37 Schritte
WIE MAN EIN ALTES HANDY (NOKIA 6600) IN EIN SUPERGADGET-MIKROCOMPUTER VERWANDELT: http://www.internetsecretbook.com https://www.youtube.com/thebibleformulaInmitten der Schwierigkeit liegt die Chance. - Albert Einstein Das Nokia 6600 bietet neue fortschrittliche Bildgebungsfunktionen, darunter ein helles TFT-Display mit 65.536 Farben und ca
So richten Sie ein Heimnetzwerk ein: 6 Schritte
So richten Sie ein Heimnetzwerk ein: Das Einrichten eines Netzwerks kann zunächst entmutigend klingen, aber sobald Sie alles haben, was Sie brauchen, ist es sehr einfach. Die traditionelle Einrichtung erfordert ein Modem und einen Router, aber einige benötigen möglicherweise mehr und andere weniger. Es gibt viele verschiedene
So schließen Sie ein Mini-HiFi-Regalsystem (Soundsystem) richtig an und richten es ein: 8-Schritte (mit Bildern)
So schließen Sie ein Mini-HiFi-Regalsystem (Soundsystem) richtig an und richten es ein: Ich bin ein Mensch, der gerne Elektrotechnik lernt. Ich bin eine High School an der Ann Richards School for Young Women Leaders. Ich mache dies anweisbar, um jedem zu helfen, der seine Musik von einem Mini LG HiFi Shelf Syste genießen möchte
Wie konvertiert man ein physisches Buch in ein E-Book?: 7 Schritte (mit Bildern)
Wie wandelt man ein physisches Buch in ein E-Book um?: Als Student im Hauptfach Chemieingenieurwesen habe ich normalerweise umfangreiche Lehrbücher, technische Bücher und Notizen zum Scannen (manchmal drucken) Ich habe seit einiger Zeit nach einem effizienten Buchscanner gesucht, aber die meisten sind es teuer, extrem groß. Es dauerte nicht lange