Innholdsfortegnelse:

Smart bøye [GPS, radio (NRF24) og en SD -kortmodul]: 5 trinn (med bilder)
Smart bøye [GPS, radio (NRF24) og en SD -kortmodul]: 5 trinn (med bilder)

Video: Smart bøye [GPS, radio (NRF24) og en SD -kortmodul]: 5 trinn (med bilder)

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

Denne Smart Buoy-serien viser vårt (ambisiøse) forsøk på å bygge en vitenskapelig bøye som kan ta meningsfulle målinger av havet ved hjelp av hylleprodukter. Dette er opplæring to av fire - sørg for at du er oppdatert, og hvis du trenger en rask introduksjon til prosjektet, kan du se sammendraget vårt.

Del 1: Gjør bølge- og temperaturmålinger

I denne opplæringen viser vi deg hvordan du får GPS -data, lagrer dem på et SD -kort og sender dem et sted ved hjelp av radio.

Vi gjorde dette slik at vi kunne holde oversikt over plasseringen av vår sjøbøye. Radioen betyr at vi kan se det eksternt, og SD -kortet betyr at når noe går i stykker og det går på en vandring, kan vi laste ned dataene det samlet inn under den uplanlagte utflukten - hvis vi noen gang er i stand til å hente dem!

Rekvisita

GPS -modul - Amazon

SD -kortmodul - Amazon

SD -kort - Amazon

2 X radiomoduler (NRF24L01+) - Amazon

2 X Arduino - Amazon

Trinn 1: Få GPS -data

Sender GPS -data via radio
Sender GPS -data via radio

Den smarte bøyen gjør sensormålinger mens den sitter i sjøen, inkludert GPS -posisjon og datotid. Ta en titt på skjematikken som viser hvordan vi konfigurerer kretsen. GPS -modulen kommuniserer via seriell tilkobling, så vi bruker det serielle biblioteket til Arduino -programvaren samt det lille GPS -biblioteket for å kommunisere med det. Disse bibliotekene gjør alt superenkelt. La oss ta deg gjennom koden …

#inkludere

#include // TinyGPS ++ - objektet TinyGPSPlus gps; // Den serielle tilkoblingen til GPS -enheten SoftwareSerial ss (4, 3); struct dataStruct {dobbel breddegrad; dobbel lengdegrad; usignert lang dato; usignert lang tid; } gpsData; ugyldig oppsett () {Serial.begin (115200); ss.begin (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 (); } annet {Serial.println ("Ugyldig plassering"); } hvis (gps.date.isValid ()) {gpsData.date = gps.date.value (); } annet {Serial.println ("Ugyldig dato"); } hvis (gps.time.isValid ()) {gpsData.time = gps.time.value (); } annet {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 (); }

(Sjekk videoen for denne koden på

Trinn 2: Sende GPS -data via radio

Sender GPS -data via radio
Sender GPS -data via radio

Anta at bøyen er i sjøen og tar målinger, men vi vil se dataene uten å bli våte på føttene eller ta bøyen i land. For å få målingene eksternt bruker vi en radiomodul koblet til en Arduino på begge sider av kommunikasjonen. I fremtiden vil vi erstatte mottaker-siden Arduino med en bringebær pi. Radioen fungerer på samme måte med begge disse grensesnittene, så det er ganske enkelt å bytte dem over.

Radiomodulen kommuniserer med SPI, som krever noen flere tilkoblinger enn I2C, men som fremdeles er veldig enkel å bruke på grunn av NRF24 -biblioteket. Ved å bruke GPS -modulen for sensormålingene, overfører vi dataene fra den ene Arduino til den andre. Vi skal koble GPS- og radiomodulen til Arduino og på den andre siden en Arduino med radiomodulen - se på skjematikken.

Sender

#inkludere

#include #include #include #include TinyGPSPlus gps; SoftwareSerial ss (4, 3); RF24 radio (8, 7); // CE, CSN struct dataStruct {dobbel breddegrad; dobbel lengdegrad; usignert lang dato; usignert lang tid; } gpsData; ugyldig oppsett () {Serial.begin (115200); ss.begin (9600); Serial.println ("Sette opp radio"); // Oppsett sender radio 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 ("Begynner å 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 (); } annet {gpsData.longitude = 0.0; gpsData.latitude = 0,0; } hvis (gps.date.isValid ()) {gpsData.date = gps.date.value (); } annet {gpsData.date = 0; } hvis (gps.time.isValid ()) {gpsData.time = gps.time.value (); } annet {gpsData.time = 0; }}

MOTTAKER

#inkludere

#include #include RF24 radio (8, 7); // CE, CSN struct dataStruct {dobbel breddegrad; dobbel lengdegrad; usignert lang dato; usignert lang tid; } gpsData; ugyldig oppsett () {Serial.begin (115200); // Oppsett mottaker 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 ();}}

(Sjekk videoen for denne koden på

Trinn 3: Lagre data ved hjelp av en SD -kortmodul

Lagre data ved hjelp av en SD -kortmodul
Lagre data ved hjelp av en SD -kortmodul

Radiomodulen er ganske pålitelig, men noen ganger trenger du en beredskapsplan i tilfelle det er strømbrudd på mottakersiden eller hvis radioen beveger seg utenfor rekkevidde. Beredskapsplanen vår er en SD -kortmodul som lar oss lagre dataene vi samler inn. Mengden data som samles inn er ikke så stor, så selv et lite SD -kort vil enkelt kunne lagre data for en dag.

#inkludere

#include #include #include TinyGPSPlus gps; SoftwareSerial ss (4, 3); struct dataStruct {dobbel breddegrad; dobbel lengdegrad; usignert lang dato; usignert lang tid; } gpsData; ugyldig oppsett () {Serial.begin (115200); ss.begin (9600); hvis (! SD.begin (5)) {Serial.println ("Kort mislyktes, eller ikke til stede"); komme tilbake; } Serial.println ("kort initialisert."); File dataFile = SD.open ("gps_data.csv", FILE_WRITE); if (dataFile) {dataFile.println ("Latitude, Longitude, Date, Time"); dataFile.close (); } annet {Serial.println ("nei kan ikke åpne filen"); }} 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 (); } annet {Serial.println ("Ugyldig plassering"); } hvis (gps.date.isValid ()) {gpsData.date = gps.date.value (); } annet {Serial.println ("Ugyldig dato"); } hvis (gps.time.isValid ()) {gpsData.time = gps.time.value (); } annet {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 (); } annet {Serial.println ("nei, ingen datafil"); }}

(Vi snakker gjennom denne koden i videoen

Trinn 4: Sende og lagre GPS -data

Sende og lagre GPS -data
Sende og lagre GPS -data
Sende og lagre GPS -data
Sende og lagre GPS -data

Trinn 5: Takk

Takk!
Takk!

Registrer deg på vår adresseliste!

Del 1: Måling av bølger og temperaturer

Del 2: GPS NRF24 Radio og SD -kort

Del 3: Planlegge kraft til bøyen

Del 4: Distribusjon av bøyen

Anbefalt: