INHOUDSOPGAWE:

Slimboei [GPS, radio (NRF24) en 'n SD -kaartmodule]: 5 stappe (met foto's)
Slimboei [GPS, radio (NRF24) en 'n SD -kaartmodule]: 5 stappe (met foto's)

Video: Slimboei [GPS, radio (NRF24) en 'n SD -kaartmodule]: 5 stappe (met foto's)

Video: Slimboei [GPS, radio (NRF24) en 'n SD -kaartmodule]: 5 stappe (met foto's)
Video: When you switch your petrol scooter with an electric one 😂 2024, Julie
Anonim
Image
Image

Hierdie Smart Buoy-reeks gee 'n uiteensetting van ons (ambisieuse) poging om 'n wetenskaplike boei te bou wat betekenisvolle metings oor die see kan neem met behulp van produkte van die rak af. Dit is handleiding twee van vier - maak seker dat u op datum is, en kyk na ons opsomming as u 'n vinnige inleiding tot die projek nodig het.

Deel 1: Maak golf- en temperatuurmetings

In hierdie handleiding wys ons hoe u GPS -data kan kry, dit op 'n SD -kaart kan stoor en dit êrens heen kan stuur met behulp van radio.

Ons het dit gedoen sodat ons die ligging van ons boei op die see kon dophou. Die radio beteken dat ons dit op afstand kan kyk, en die SD -kaart beteken dat as ons iets afbreek en dit kan dwaal, ons die data kan aflaai wat tydens die onbeplande uitstappie ingesamel is - as ons dit ooit kan opspoor!

Voorrade

GPS -module - Amazon

SD -kaartmodule - Amazon

SD -kaart - Amazon

2 X radiomodules (NRF24L01+) - Amazon

2 X Arduino - Amazon

Stap 1: Kry GPS -data

Stuur GPS -data via radio
Stuur GPS -data via radio

Die slim boei maak sensormetings terwyl dit in die see sit, insluitend GPS -ligging en datietyd. Kyk na die skema wat wys hoe ons die stroombaan opgestel het. Die GPS -module kommunikeer via seriële verbinding, dus gebruik ons die seriële biblioteek van die Arduino -sagteware sowel as die klein GPS -biblioteek om daarmee te kommunikeer. Hierdie biblioteke maak alles super eenvoudig. Kom ons neem u deur die kode …

#insluit

#include // Die TinyGPS ++ - voorwerp TinyGPSPlus gps; // Die reeksverbinding met die GPS -toestel SoftwareSerial ss (4, 3); struct dataStruct {dubbele breedtegraad; dubbele lengte; ongetekende lang datum; ongetekende lang tyd; } gpsData; ongeldige opstelling () {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 (); } anders {Serial.println ("Ongeldige ligging"); } as (gps.date.isValid ()) {gpsData.date = gps.date.value (); } anders {Serial.println ("Ongeldige datum"); } as (gps.time.isValid ()) {gpsData.time = gps.time.value (); } anders {Serial.println ("Ongeldige tyd"); }} 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 ("Tyd:"); Serial.print (gpsData.time); Serial.println (); }

(Kyk na die video vir hierdie kode op

Stap 2: Stuur GPS -data via radio

Stuur GPS -data via radio
Stuur GPS -data via radio

Gestel die boei is in die see en neem afmetings, maar ons wil die data sien sonder om ons voete nat te maak of die boei aan wal te bring. Om die metings op afstand te kry, gebruik ons 'n radiomodule wat aan 'n Arduino aan beide kante van die kommunikasie gekoppel is. In die toekoms sal ons die Arduino aan die ontvangerkant vervang deur 'n framboospi. Die radio werk op dieselfde manier met albei hierdie koppelvlakke, so dit is redelik eenvoudig om oor te skakel.

Die radiomodule kommunikeer met behulp van SPI, wat 'n paar meer verbindings benodig as I2C, maar steeds baie maklik is om te gebruik as gevolg van die NRF24 -biblioteek. Deur die GPS -module vir die sensormetings te gebruik, stuur ons die data van die een Arduino na die ander. Ons gaan die GPS- en radiomodule aan die Arduino koppel en aan die ander kant 'n Arduino met die radiomodule - kyk na die skema.

Sender

#insluit

#include #include #include #include TinyGPSPlus gps; SoftwareSerial ss (4, 3); RF24 radio (8, 7); // CE, CSN struct dataStruct {double latitude; dubbele lengte; ongetekende lang datum; ongetekende lang tyd; } gpsData; ongeldige opstelling () {Serial.begin (115200); ss.begin (9600); Serial.println ("Radio opstel"); // Stel senderradioradio op. Begin (); radio.openWritingPipe (0xF0F0F0F0E1LL); radio.setChannel (0x76); radio.setPALevel (RF24_PA_MAX); radio.setDataRate (RF24_250KBPS); radio.stopListening (); radio.enableDynamicPayloads (); radio.powerUp (); Serial.println ("Begin stuur"); } 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 (); } anders {gpsData.longitude = 0.0; gpsData.latitude = 0.0; } as (gps.date.isValid ()) {gpsData.date = gps.date.value (); } anders {gpsData.date = 0; } as (gps.time.isValid ()) {gpsData.time = gps.time.value (); } anders {gpsData.time = 0; }}

ONTVANGER

#insluit

#include #include RF24 radio (8, 7); // CE, CSN struct dataStruct {double latitude; dubbele lengte; ongetekende lang datum; ongetekende lang tyd; } gpsData; ongeldige opstelling () {Serial.begin (115200); // Stel ontvangerradioradio op. Begin (); radio.openReadingPipe (1, 0xF0F0F0F0E1LL); radio.setChannel (0x76); radio.setPALevel (RF24_PA_MAX); radio.setDataRate (RF24_250KBPS); radio.startListening (); radio.enableDynamicPayloads (); radio.powerUp (); } void lus () {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 ("Datum:"); Serial.print (gpsData.date); Serial.print ("Tyd:"); Serial.print (gpsData.time); Serial.println ();}}

(Kyk na die video vir hierdie kode op

Stap 3: Stoor data met behulp van 'n SD -kaartmodule

Stoor data met behulp van 'n SD -kaartmodule
Stoor data met behulp van 'n SD -kaartmodule

Die radiomodule is redelik betroubaar, maar soms benodig u 'n gebeurlikheidsplan as daar 'n kragonderbreking aan die ontvangerkant is of as die radio buite bereik beweeg. Ons gebeurlikheidsplan is 'n SD -kaartmodule waarmee ons die data wat ons versamel, kan stoor. Die hoeveelheid data wat ingesamel word, is nie so groot nie, dus selfs 'n klein SD -kaart kan maklik 'n dag se data stoor.

#insluit

#include #include #include TinyGPSPlus gps; SoftwareSerial ss (4, 3); struct dataStruct {dubbele breedtegraad; dubbele lengte; ongetekende lang datum; ongetekende lang tyd; } gpsData; ongeldige opstelling () {Serial.begin (115200); ss.begin (9600); as (! SD.begin (5)) {Serial.println ("Kaart misluk, of nie voorkom nie"); terugkeer; } Serial.println ("kaart geïnisialiseer."); Lêer dataFile = SD.open ("gps_data.csv", FILE_WRITE); if (dataFile) {dataFile.println ("Latitude, Longitude, Date, Time"); dataFile.close (); } anders {Serial.println ("nope kan nie lêer oopmaak nie"); }} 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 (); } anders {Serial.println ("Ongeldige ligging"); } as (gps.date.isValid ()) {gpsData.date = gps.date.value (); } anders {Serial.println ("Ongeldige datum"); } as (gps.time.isValid ()) {gpsData.time = gps.time.value (); } anders {Serial.println ("Ongeldige tyd"); }} 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 ("Tyd:"); Serial.print (gpsData.time); Serial.println (); } void saveInfo () {File dataFile = SD.open ("gps_data.csv", FILE_WRITE); as (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 (); } anders {Serial.println ("nee, geen datafile"); }}

(Ons praat deur hierdie kode in die video

Stap 4: Stuur en stoor GPS -data

Stuur en stoor GPS -data
Stuur en stoor GPS -data
Stuur en stoor GPS -data
Stuur en stoor GPS -data

Stap 5: Dankie

Dankie!
Dankie!

Teken in op ons poslys!

Deel 1: Meting van golwe en temperatuur

Deel 2: GPS NRF24 -radio en SD -kaart

Deel 3: Skeduleringskrag na die boei

Deel 4: Die implementering van die boei

Aanbeveel: