Indholdsfortegnelse:

Smart bøje [GPS, radio (NRF24) og et SD -kortmodul]: 5 trin (med billeder)
Smart bøje [GPS, radio (NRF24) og et SD -kortmodul]: 5 trin (med billeder)

Video: Smart bøje [GPS, radio (NRF24) og et SD -kortmodul]: 5 trin (med billeder)

Video: Smart bøje [GPS, radio (NRF24) og et SD -kortmodul]: 5 trin (med billeder)
Video: 699 000 $ 2000 OFFSHORE 62 'Flushdeck FAST Trawler в 4K / Экспедиционный яхт-тур на сафари Explorer 2024, Juli
Anonim
Image
Image

Denne Smart Buoy-serie viser vores (ambitiøse) forsøg på at bygge en videnskabelig bøje, der kan foretage meningsfulde målinger af havet ved hjælp af produkter på hylden. Dette er vejledning to af fire - sørg for at være opdateret, og hvis du har brug for en hurtig introduktion til projektet, kan du se vores resumé.

Del 1: Udførelse af bølge- og temperaturmålinger

I denne vejledning viser vi dig, hvordan du får GPS -data, gemmer dem på et SD -kort og sender dem et sted ved hjælp af radio.

Vi gjorde dette, så vi kunne holde styr på placeringen af vores havbøje. Radioen betyder, at vi kan se det eksternt, og SD -kortet betyder, at når noget går i stykker, og det går en vandring, kan vi downloade de data, det indsamlede under sin uplanlagte udflugt - hvis vi nogensinde er i stand til at hente det!

Forbrugsvarer

GPS -modul - Amazon

SD -kortmodul - Amazon

SD -kort - Amazon

2 X radiomoduler (NRF24L01+) - Amazon

2 X Arduino - Amazon

Trin 1: Hent GPS -data

Afsendelse af GPS -data via radio
Afsendelse af GPS -data via radio

Den smarte bøje foretager sensormålinger, når den sidder i havet, herunder GPS -placering og datotid. Tag et kig på skematikken, der viser, hvordan vi opretter kredsløbet. GPS -modulet kommunikerer via seriel forbindelse, så vi bruger Arduino -softwarens serielle bibliotek samt det lille GPS -bibliotek til at kommunikere med det. Disse biblioteker gør alting superenkelt. Lad os tage dig igennem koden …

#omfatte

#include // TinyGPS ++ - objektet TinyGPSPlus gps; // Den serielle forbindelse til GPS -enheden SoftwareSerial ss (4, 3); struct dataStruct {dobbelt breddegrad; dobbelt længdegrad; usigneret lang dato; usigneret lang tid; } gpsData; ugyldig opsætning () {Serial.begin (115200); ss.begyndt (9600); } 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 (); } else {Serial.println ("Ugyldig placering"); } hvis (gps.date.isValid ()) {gpsData.date = gps.date.value (); } else {Serial.println ("Ugyldig dato"); } hvis (gps.time.isValid ()) {gpsData.time = gps.time.value (); } else {Serial.println ("Ugyldig tid"); }} void printResults () {Serial.print ("Location:"); Serial.print (gpsData.latitude, 6); Serial.print (","); Serial.print (gpsData.longitude, 6); Serial.print ("Dato:"); Serial.print (gpsData.date); Serial.print ("Tid:"); Serial.print (gpsData.time); Serial.println (); }

(Tjek videoen til denne kode på

Trin 2: Afsendelse af GPS -data via radio

Afsendelse af GPS -data via radio
Afsendelse af GPS -data via radio

Antag, at bøje er i havet og tager målinger, men vi vil se dataene uden at blive fugtige i fødderne eller bringe bøje i land. For at få målingerne eksternt bruger vi et radiomodul forbundet til en Arduino på begge sider af kommunikationen. Fremover vil vi udskifte modtager-siden Arduino med en hindbær pi. Radioen fungerer på samme måde med begge disse grænseflader, så det er ret ligetil at bytte dem.

Radiomodulet kommunikerer ved hjælp af SPI, som kræver et par flere forbindelser end I2C, men stadig er virkelig let at bruge på grund af NRF24 -biblioteket. Ved hjælp af GPS -modulet til sensormålingerne overfører vi dets data fra den ene Arduino til den anden. Vi skal forbinde GPS- og radiomodulet til Arduino og på den anden side en Arduino med radiomodulet - se på skematikken.

Senderen

#omfatte

#include #include #include #include TinyGPSPlus gps; SoftwareSerial ss (4, 3); RF24 radio (8, 7); // CE, CSN struct dataStruct {dobbelt breddegrad; dobbelt længdegrad; usigneret lang dato; usigneret lang tid; } gpsData; ugyldig opsætning () {Serial.begin (115200); ss.begyndt (9600); Serial.println ("Opsætning af radio"); // Opsætning af senderradioradio.begin (); radio.openWritingPipe (0xF0F0F0F0E1LL); radio.setChannel (0x76); radio.setPALevel (RF24_PA_MAX); radio.setDataRate (RF24_250KBPS); radio.stopListening (); radio.enableDynamicPayloads (); radio.powerUp (); Serial.println ("begynder at sende"); } void loop () {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 (); } ellers {gpsData.longitude = 0,0; gpsData.latitude = 0,0; } hvis (gps.date.isValid ()) {gpsData.date = gps.date.value (); } ellers {gpsData.date = 0; } hvis (gps.time.isValid ()) {gpsData.time = gps.time.value (); } ellers {gpsData.time = 0; }}

MODTAGER

#omfatte

#include #include RF24 radio (8, 7); // CE, CSN struct dataStruct {dobbelt breddegrad; dobbelt længdegrad; usigneret lang dato; usigneret lang tid; } gpsData; ugyldig opsætning () {Serial.begin (115200); // Opsætning af modtager radioradio.begin (); radio.openReadingPipe (1, 0xF0F0F0F0E1LL); radio.setChannel (0x76); radio.setPALevel (RF24_PA_MAX); radio.setDataRate (RF24_250KBPS); radio.startListening (); radio.enableDynamicPayloads (); radio.powerUp (); } void loop () {if (radio.available ()) {radio.read (& gpsData, sizeof (gpsData)); Serial.print ("Location:"); Serial.print (gpsData.latitude, 6); Serial.print (","); Serial.print (gpsData.longitude, 6); Serial.print ("Dato:"); Serial.print (gpsData.date); Serial.print ("Tid:"); Serial.print (gpsData.time); Serial.println ();}}

(Tjek videoen til denne kode på

Trin 3: Lagring af data ved hjælp af et SD -kortmodul

Lagring af data ved hjælp af et SD -kortmodul
Lagring af data ved hjælp af et SD -kortmodul

Radiomodulet er ganske pålideligt, men nogle gange har du brug for en beredskabsplan, hvis der er et strømafbrydelse på modtagersiden, eller hvis radioen bevæger sig uden for rækkevidde. Vores beredskabsplan er et SD -kortmodul, som giver os mulighed for at gemme de data, vi indsamler. Mængden af data, der indsamles, er ikke så stor, så selv et lille SD -kort vil let kunne gemme en dags værdi af data.

#omfatte

#include #include #include TinyGPSPlus gps; SoftwareSerial ss (4, 3); struct dataStruct {dobbelt breddegrad; dobbelt længdegrad; usigneret lang dato; usigneret lang tid; } gpsData; ugyldig opsætning () {Serial.begin (115200); ss.begyndt (9600); hvis (! SD.begin (5)) {Serial.println ("Kort mislykkedes eller ikke til stede"); Vend tilbage; } Serial.println ("kort initialiseret."); Fil dataFile = SD.open ("gps_data.csv", FILE_WRITE); hvis (dataFile) {dataFile.println ("Latitude, Longitude, Date, Time"); dataFile.close (); } else {Serial.println ("nej, filen kan ikke åbnes"); }} void loop () {while (ss.available ()> 0) {if (gps.encode (ss.read ())) {getInfo (); printResults (); saveInfo (); }}} void getInfo () {if (gps.location.isValid ()) {gpsData.latitude = gps.location.lat (); gpsData.longitude = gps.location.lng (); } else {Serial.println ("Ugyldig placering"); } hvis (gps.date.isValid ()) {gpsData.date = gps.date.value (); } else {Serial.println ("Ugyldig dato"); } hvis (gps.time.isValid ()) {gpsData.time = gps.time.value (); } else {Serial.println ("Ugyldig tid"); }} void printResults () {Serial.print ("Location:"); Serial.print (gpsData.latitude, 6); Serial.print (","); Serial.print (gpsData.longitude, 6); Serial.print ("Dato:"); Serial.print (gpsData.date); Serial.print ("Tid:"); Serial.print (gpsData.time); Serial.println (); } void saveInfo () {File dataFile = SD.open ("gps_data.csv", FILE_WRITE); hvis (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 (); } else {Serial.println ("nej ingen datafil"); }}

(Vi taler igennem denne kode i videoen

Trin 4: Afsendelse og lagring af GPS -data

Afsendelse og lagring af GPS -data
Afsendelse og lagring af GPS -data
Afsendelse og lagring af GPS -data
Afsendelse og lagring af GPS -data

Trin 5: Tak

Tak!
Tak!

Tilmeld dig vores mailingliste!

Del 1: Måling af bølge og temperatur

Del 2: GPS NRF24 Radio og SD -kort

Del 3: Planlægning af magt til bøje

Del 4: Implementering af bøje

Anbefalede: