Innehållsförteckning:

Smart boj [GPS, radio (NRF24) och en SD -kortmodul]: 5 steg (med bilder)
Smart boj [GPS, radio (NRF24) och en SD -kortmodul]: 5 steg (med bilder)

Video: Smart boj [GPS, radio (NRF24) och en SD -kortmodul]: 5 steg (med bilder)

Video: Smart boj [GPS, radio (NRF24) och en SD -kortmodul]: 5 steg (med bilder)
Video: КАК ТРАНСЫ РАЗМИНАЮТ ПАССАТИЖЫ ))) ПАТТАЙЯ ! LADYBOY ! 2024, November
Anonim
Image
Image

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

Skickar GPS -data via radio
Skickar GPS -data via radio

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

Skickar GPS -data via radio
Skickar 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

Lagra data med en SD -kortmodul
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

Skicka och lagra GPS -data
Skicka och lagra GPS -data
Skicka och lagra GPS -data
Skicka och lagra GPS -data

Steg 5: Tack

Tack!
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: