Innholdsfortegnelse:
- Rekvisita
- Trinn 1: Få GPS -data
- Trinn 2: Sende GPS -data via radio
- Trinn 3: Lagre data ved hjelp av en SD -kortmodul
- Trinn 4: Sende og lagre GPS -data
- Trinn 5: Takk
Video: Smart bøye [GPS, radio (NRF24) og en SD -kortmodul]: 5 trinn (med bilder)
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:21
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
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
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
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
Trinn 5: 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:
Engelsk publys ved å bøye fiberoptikk, tent med en LED: 4 trinn
Engelsk publys ved å bøye fiberoptikk, tent med en LED: La oss si at du ønsker å få en fiber til å passe til husets form for å sette julelys på den. Eller kanskje du vil komme opp en yttervegg og ha en rett vinkelbøyning til fiberen. Vel, du kan gjøre dette veldig enkelt
Smart bøye [Sammendrag]: 8 trinn (med bilder)
Smart bøye [Sammendrag]: Vi alle elsker sjøen. Som kollektiv strømmer vi til det for ferier, for å nyte vannsport eller for å leve av oss. Men kysten er et dynamisk område som er prisgitt bølger. Stigende havnivå nipper på strender og kraftige ekstreme hendelser som hurri
Smart vekkerklokke: en smart vekkerklokke laget med bringebær Pi: 10 trinn (med bilder)
Smart vekkerklokke: en smart vekkerklokke laget med bringebær Pi: Har du noen gang ønsket deg en smart klokke? I så fall er dette løsningen for deg! Jeg lagde Smart Alarm Clock, dette er en klokke som du kan endre alarmtiden i henhold til nettstedet. Når alarmen går, kommer det en lyd (summer) og 2 lys vil
NRF24 toveis radio for telemetri: 9 trinn (med bilder)
NRF24 toveis radio for telemetri: Hei folkens, jeg heter Pedro Castelani, og jeg tar med meg min første instruks: bygge en toveis radio med arduino for, vel, uansett hva du trenger den til. I dette prosjektet vil vi lage to separate kretser som vil fungere både som mottaker og overføring
Hvordan bygge en Quadcoptor. (NTM 28-30S 800kV 300W og Arducopter APM 2.6 & 6H GPS 3DR Radio og FlySky TH9X): 25 trinn (med bilder)
Hvordan bygge en Quadcoptor. (NTM 28-30S 800kV 300W og Arducopter APM 2.6 & 6H GPS 3DR Radio og FlySky TH9X): Dette er en opplæring om hvordan du bygger et Quadcopter ved hjelp av NTM 28-30S 800kV 300W motorer og Arducopter APM 2.6 & 6H GPS & 3DR -radio. Jeg har prøvd å forklare hvert trinn med en rekke bilder. Hvis du har spørsmål eller kommentarer, vennligst svar