Innehållsförteckning:
- Tillbehör
- Steg 1: Skaffa GPS -data
- Steg 2: Skicka GPS -data via radio
- Steg 3: Lagra data med en SD -kortmodul
- Steg 4: Skicka och lagra GPS -data
- Steg 5: Tack
Video: Smart boj [GPS, radio (NRF24) och en SD -kortmodul]: 5 steg (med bilder)
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:37
Denna Smart Buoy-serie visar vårt (ambitiösa) försök att bygga en vetenskaplig boj som kan ta meningsfulla mätningar om havet med hjälp av produkter från hyllan. Detta är handledning två av fyra - se till att du är uppdaterad, och om du behöver en snabb introduktion till projektet, kolla in vår sammanfattning.
Del 1: Gör våg- och temperaturmätningar
I denna handledning visar vi dig hur du får GPS -data, lagrar den på ett SD -kort och skickar den någonstans med radio.
Vi gjorde detta för att vi skulle kunna hålla reda på var vår havsboj ligger. Radion innebär att vi kan titta på det på distans och SD -kortet betyder att om något går sönder och det går en vandring kan vi ladda ner data som det samlat in under sin oplanerade utflykt - om vi någonsin kan hämta det!
Tillbehör
GPS -modul - Amazon
SD -kortmodul - Amazon
SD -kort - Amazon
2 X radiomoduler (NRF24L01+) - Amazon
2 X Arduino - Amazon
Steg 1: Skaffa GPS -data
Den smarta bojen gör sensormätningar när den sitter i havet, inklusive GPS -plats och datatid. Ta en titt på schemat som visar hur vi konfigurerar kretsen. GPS -modulen kommunicerar via seriell anslutning, så vi använder Arduino -programvarans seriella bibliotek samt det lilla GPS -biblioteket för att kommunicera med det. Dessa bibliotek gör allt superenkelt. Låt oss ta dig igenom koden …
#omfatta
#inkludera // TinyGPS ++ - objektet TinyGPSPlus gps; // Seriell anslutning till GPS -enheten SoftwareSerial ss (4, 3); struct dataStruct {dubbel latitud; dubbel longitud; osignerat långt datum; osignerad lång tid; } gpsData; void setup () {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 (); } annat {Serial.println ("Ogiltig plats"); } if (gps.date.isValid ()) {gpsData.date = gps.date.value (); } annat {Serial.println ("Ogiltigt datum"); } if (gps.time.isValid ()) {gpsData.time = gps.time.value (); } else {Serial.println ("Ogiltig tid"); }} void printResults () {Serial.print ("Location:"); Serial.print (gpsData.latitude, 6); Serial.print (","); Serial.print (gpsData.longitude, 6); Serial.print ("Datum:"); Serial.print (gpsData.date); Serial.print ("Tid:"); Serial.print (gpsData.time); Serial.println (); }
(Kolla in videon för den här koden på
Steg 2: Skicka GPS -data via radio
Antag att bojen är i havet och tar mätningar, men vi vill se data utan att bli fötterna våta eller ta med bojen i land. För att få mätningarna på distans använder vi en radiomodul ansluten till en Arduino på båda sidor av kommunikationen. I framtiden kommer vi att ersätta mottagarsidan Arduino med en hallon pi. Radion fungerar på samma sätt med båda dessa gränssnitt så det är ganska enkelt att byta dem.
Radiomodulen kommunicerar med SPI, vilket kräver några fler anslutningar än I2C men är fortfarande väldigt lätt att använda på grund av NRF24 -biblioteket. Med hjälp av GPS -modulen för sensormätningarna överför vi dess data från en Arduino till den andra. Vi ska ansluta GPS- och radiomodulen till Arduino och på andra sidan en Arduino med radiomodulen - ta en titt på schemat.
Sändare
#omfatta
#include #include #include #include TinyGPSPlus gps; SoftwareSerial ss (4, 3); RF24 -radio (8, 7); // CE, CSN struct dataStruct {dubbel latitud; dubbel longitud; osignerat långt datum; osignerad lång tid; } gpsData; void setup () {Serial.begin (115200); ss.begin (9600); Serial.println ("Ställa in radio"); // Inställning av sändare radioradio.begin (); radio.openWritingPipe (0xF0F0F0F0E1LL); radio.setChannel (0x76); radio.setPALevel (RF24_PA_MAX); radio.setDataRate (RF24_250KBPS); radio.stopListening (); radio.enableDynamicPayloads (); radio.powerUp (); Serial.println ("Börjar skicka"); } 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 (); } annat {gpsData.longitude = 0.0; gpsData.latitude = 0,0; } if (gps.date.isValid ()) {gpsData.date = gps.date.value (); } annat {gpsData.date = 0; } if (gps.time.isValid ()) {gpsData.time = gps.time.value (); } annat {gpsData.time = 0; }}
MOTTAGARE
#omfatta
#include #include RF24 radio (8, 7); // CE, CSN struct dataStruct {dubbel latitud; dubbel longitud; osignerat långt datum; osignerad lång tid; } gpsData; void setup () {Serial.begin (115200); // Installera mottagare 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 ("Plats:"); Serial.print (gpsData.latitude, 6); Serial.print (","); Serial.print (gpsData.longitude, 6); Serial.print ("Datum:"); Serial.print (gpsData.date); Serial.print ("Tid:"); Serial.print (gpsData.time); Serial.println ();}}
(Kolla in videon för den här koden på
Steg 3: Lagra data med en SD -kortmodul
Radiomodulen är ganska tillförlitlig, men ibland behöver du en beredskapsplan om det blir strömavbrott på mottagarsidan eller om radion rör sig utanför räckvidden. Vår beredskapsplan är en SD -kortmodul som gör att vi kan lagra data vi samlar in. Mängden data som samlas in är inte så stor, så även ett litet SD -kort kommer enkelt att kunna lagra en dags värde av data.
#omfatta
#include #include #include TinyGPSPlus gps; SoftwareSerial ss (4, 3); struct dataStruct {dubbel latitud; dubbel longitud; osignerat långt datum; osignerad lång tid; } gpsData; void setup () {Serial.begin (115200); ss.begin (9600); om (! SD.begin (5)) {Serial.println ("Kortet misslyckades eller finns inte"); lämna tillbaka; } Serial.println ("kort initialiserat."); File dataFile = SD.open ("gps_data.csv", FILE_WRITE); if (dataFile) {dataFile.println ("Latitud, Longitud, Datum, Tid"); dataFile.close (); } annat {Serial.println ("nej kan inte öppna 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 (); } annat {Serial.println ("Ogiltig plats"); } if (gps.date.isValid ()) {gpsData.date = gps.date.value (); } annat {Serial.println ("Ogiltigt datum"); } if (gps.time.isValid ()) {gpsData.time = gps.time.value (); } else {Serial.println ("Ogiltig tid"); }} void printResults () {Serial.print ("Location:"); Serial.print (gpsData.latitude, 6); Serial.print (","); Serial.print (gpsData.longitude, 6); Serial.print ("Datum:"); Serial.print (gpsData.date); Serial.print ("Tid:"); Serial.print (gpsData.time); Serial.println (); } void saveInfo () {File 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 (); } annat {Serial.println ("nej ingen datafil"); }}
(Vi pratar igenom den här koden i videon
Steg 4: Skicka och lagra GPS -data
Steg 5: Tack
Anmäl dig till vår e -postlista!
Del 1: Gör våg- och temperaturmätning
Del 2: GPS NRF24 Radio och SD -kort
Del 3: Schemaläggningskraft till bojen
Del 4: Distribuera bojen
Rekommenderad:
Smart Boj [Sammanfattning]: 8 steg (med bilder)
Smart Boj [Sammanfattning]: Vi älskar alla havet. Som kollektiv flockar vi till det för semester, för att njuta av vattensporter eller för att försörja oss. Men kusten är ett dynamiskt område till priset av vågor. Stigande havsnivåer nappar på stränder och kraftfulla extrema händelser som hurri
8 Reläkontroll med NodeMCU och IR -mottagare med WiFi och IR -fjärrkontroll och Android -app: 5 steg (med bilder)
8 Reläkontroll med NodeMCU och IR -mottagare med WiFi och IR -fjärrkontroll och Android -app: Styrning av 8 reläväxlar med nodemcu och IR -mottagare via wifi och IR -fjärrkontroll och Android -app. Fjärrkontrollen fungerar oberoende av wifi -anslutning. HÄR ÄR EN UPPDATERAD VERSIONKLICK HÄR
Temperatur och fuktighet Display och datainsamling med Arduino och bearbetning: 13 steg (med bilder)
Temperatur- och luftfuktighetsvisning och datainsamling med Arduino och bearbetning: Intro: Detta är ett projekt som använder ett Arduino -kort, en sensor (DHT11), en Windows -dator och ett bearbetningsprogram (ett gratis nedladdningsbart) för att visa temperatur, luftfuktighetsdata i digital och stapeldiagramform, visa tid och datum och kör en räkningstid
Hur man bygger en Quadcoptor. (NTM 28-30S 800kV 300W och Arducopter APM 2.6 & 6H GPS 3DR Radio och FlySky TH9X): 25 steg (med bilder)
Hur man bygger en Quadcoptor. (NTM 28-30S 800kV 300W och Arducopter APM 2.6 & 6H GPS 3DR Radio och FlySky TH9X): Detta är en handledning om hur man bygger en Quadcopter med NTM 28-30S 800kV 300W motorer och Arducopter APM 2.6 & 6H GPS & 3DR -radio. Jag har försökt förklara varje steg med ett antal bilder. Om du har några frågor eller kommentarer vänligen svara
Enkla sätt att kretsa Böj en leksak: 7 steg (med bilder)
Enkla sätt att kretsa Böj en leksak: Jag vill visa några av de modifieringar du kan göra på vilken leksak som helst för att vända den från det som helt enkelt kan vara ett irritationsmoment till ett verktyg för glitchiga, bullriga fantastiska. Teknikerna här är ganska enkla-även om du inte har mycket erfarenhet av elektronik.