INHOUDSOPGAWE:
- Voorrade
- Stap 1: Kry GPS -data
- Stap 2: Stuur GPS -data via radio
- Stap 3: Stoor data met behulp van 'n SD -kaartmodule
- Stap 4: Stuur en stoor GPS -data
- Stap 5: Dankie
Video: Slimboei [GPS, radio (NRF24) en 'n SD -kaartmodule]: 5 stappe (met foto's)
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:23
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
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
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
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
Stap 5: 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:
Aan die gang met Ham Radio: 5 stappe (met foto's)
Aan die gang met hamradio: as 'n lisensiehouer wat onlangs gemunt is, wil ek die proses wat ek geneem het om by hamradio te werk, deurgee. Ek het my verlei deur die selfstandige aspek van die stokperdjie, sodat mense kon kommunikeer as ander metodes ontwrig word. Maar dit is ook lonend om
Draadlose afstandsbediening met 2,4 GHz NRF24L01 -module met Arduino - Nrf24l01 4 -kanaals / 6 -kanaals sender -ontvanger voor quadcopter - Rc Helikopter - Rc -vliegtuig met Arduino: 5 stappe (met foto's)
Draadlose afstandsbediening met 2,4 GHz NRF24L01 -module met Arduino | Nrf24l01 4 -kanaals / 6 -kanaals sender -ontvanger voor quadcopter | Rc Helikopter | Rc -vliegtuig met Arduino: om 'n Rc -motor te bestuur | Quadcopter | Drone | RC -vliegtuig | RC -boot, ons het altyd 'n ontvanger en sender nodig, veronderstel dat ons vir RC QUADCOPTER 'n 6 -kanaals sender en ontvanger nodig het en dat die tipe TX en RX te duur is, so ons maak een op ons
NRF24 tweerigtingradio vir telemetrie: 9 stappe (met foto's)
NRF24 Tweerigtingradio vir telemetrie: Hallo ouens, my naam is Pedro Castelani en ek bring vir julle my eerste instruksies: die bou van 'n tweerigtingradio met arduino, vir wat julle ook al nodig het.In hierdie projek sal ons maak twee aparte kringe wat beide ontvangers en transmissies sal dien
Hoe om 'n rekenaar met maklike stappe en foto's uitmekaar te haal: 13 stappe (met foto's)
Hoe om 'n rekenaar uitmekaar te haal met eenvoudige stappe en foto's: dit is 'n instruksie oor hoe om 'n rekenaar uitmekaar te haal. Die meeste basiese komponente is modulêr en kan maklik verwyder word. Dit is egter belangrik dat u daaroor georganiseerd is. Dit sal u verhinder om onderdele te verloor, en ook om die montering weer
Hoe om 'n Quadcoptor te bou. (NTM 28-30S 800kV 300W en Arducopter APM 2.6 & 6H GPS 3DR Radio en FlySky TH9X): 25 stappe (met foto's)
Hoe om 'n Quadcoptor te bou. (NTM 28-30S 800kV 300W en Arducopter APM 2.6 & 6H GPS 3DR Radio en FlySky TH9X): Dit is 'n handleiding oor hoe om 'n Quadcopter te bou met behulp van NTM 28-30S 800kV 300W motors en Arducopter APM 2.6 & 6H GPS & 3DR Radio. Ek het probeer om elke stap met 'n aantal beelde te verduidelik. As u enige vrae of kommentaar het, antwoord asseblief