Turinys:

Išmanusis plūduras [GPS, radijas (NRF24) ir SD kortelės modulis]: 5 žingsniai (su nuotraukomis)
Išmanusis plūduras [GPS, radijas (NRF24) ir SD kortelės modulis]: 5 žingsniai (su nuotraukomis)

Video: Išmanusis plūduras [GPS, radijas (NRF24) ir SD kortelės modulis]: 5 žingsniai (su nuotraukomis)

Video: Išmanusis plūduras [GPS, radijas (NRF24) ir SD kortelės modulis]: 5 žingsniai (su nuotraukomis)
Video: ИДЕАЛЬНЫЙ ГАДЖЕТ 🔥 УМНЫЕ ЧАСЫ HUAWEI WATCH GT 3 PRO GPS ЗВОНКИ СМАРТ ЧАСЫ ПРЕМИУМ КЛАССА 2024, Liepa
Anonim
Image
Image

Šioje „Smart Buoy“serijoje aprašomi mūsų (ambicingi) bandymai sukurti mokslinį plūdurą, galintį atlikti reikšmingus matavimus apie jūrą naudojant gaminius iš lentynos. Tai yra pamoka du iš keturių - įsitikinkite, kad esate atnaujintas, o jei jums reikia greito projekto įvado, peržiūrėkite mūsų santrauką.

1 dalis. Bangų ir temperatūros matavimai

Šioje pamokoje parodysime, kaip gauti GPS duomenis, išsaugoti juos SD kortelėje ir išsiųsti kur nors naudojant radiją.

Mes tai padarėme, kad galėtume sekti savo jūrinio plūduro vietą. Radijas reiškia, kad mes galime jį žiūrėti nuotoliniu būdu, o SD kortelė reiškia, kad atsitiktinai atsitikus, kad kažkas sulūžta ir jis ima klajoti, mes galime atsisiųsti jo neplanuotos ekskursijos metu surinktus duomenis - jei kada nors pavyks juos atkurti!

Prekės

GPS modulis - „Amazon“

SD kortelės modulis - „Amazon“

SD kortelė - „Amazon“

2 X radijo moduliai (NRF24L01+) - „Amazon“

2 X „Arduino“- „Amazon“

1 veiksmas: gaukite GPS duomenis

GPS duomenų siuntimas per radiją
GPS duomenų siuntimas per radiją

Išmanusis plūduras matuoja jutiklį jūroje, įskaitant GPS vietą ir datos laiką. Pažvelkite į schemą, kurioje parodyta, kaip mes nustatome grandinę. GPS modulis palaiko ryšį per nuoseklųjį ryšį, todėl mes naudojame „Arduino“programinės įrangos serijinę biblioteką ir mažą GPS biblioteką. Šios bibliotekos daro viską labai paprasta. Pažvelkime į kodą …

#įtraukti

#include // TinyGPS ++ objektas TinyGPSPlus gps; // Serijinis ryšys su GPS įrenginiu SoftwareSerial ss (4, 3); structure dataStruct {dviguba platuma; dviguba ilguma; nepasirašyta ilga data; ilgai nepasirašytas; } 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 (); } else {Serial.println ("Netinkama vieta"); } if (gps.date.isValid ()) {gpsData.date = gps.date.value (); } else {Serial.println ("Netinkama data"); } if (gps.time.isValid ()) {gpsData.time = gps.time.value (); } else {Serial.println ("Netinkamas laikas"); }} void printResults () {Serial.print ("Vieta:"); Serijinis atspaudas (gpsData.latitude, 6); Serial.print (","); Serijinis atspaudas (gpsData.longitude, 6); Serial.print ("Data:"); Serial.print (gpsData.date); Serial.print („Laikas:“); Serial.print (gpsData.time); Serial.println (); }

(Peržiūrėkite šio kodo vaizdo įrašą

2 veiksmas: GPS duomenų siuntimas per radiją

GPS duomenų siuntimas per radiją
GPS duomenų siuntimas per radiją

Tarkime, plūduras matuoja jūrą, bet mes norime matyti duomenis nesušlapę kojų ir neišplėtę plūduro į krantą. Norėdami gauti matavimus nuotoliniu būdu, mes naudojame radijo modulį, prijungtą prie „Arduino“abiejose ryšio pusėse. Ateityje imtuvo pusę „Arduino“pakeisime aviečių pi. Radijas veikia panašiai su abiem šiomis sąsajomis, todėl jų keitimas yra gana paprastas.

Radijo modulis bendrauja naudodamas SPI, kuriam reikia kelių jungčių daugiau nei „I2C“, tačiau vis tiek juo naudotis yra labai paprasta dėl „NRF24“bibliotekos. Naudodami GPS modulį jutiklių matavimams, mes perduodame jo duomenis iš vieno „Arduino“į kitą. Mes prijungsime GPS ir radijo modulį prie „Arduino“, o kitoje - „Arduino“su radijo moduliu - pažiūrėkite į schemą.

Siųstuvas

#įtraukti

#include #include #include #include TinyGPSPlus gps; SoftwareSerial ss (4, 3); Radijas RF24 (8, 7); // CE, CSN struktūros duomenysStruktūra {dviguba platuma; dviguba ilguma; nepasirašyta ilga data; ilgai nepasirašytas; } gpsData; void setup () {Serial.begin (115200); ss.begin (9600); Serial.println („Radijo nustatymas“); // Sąrankos siųstuvo radijo radijas.begin (); radio.openWritingPipe (0xF0F0F0F0E1LL); radio.setChannel (0x76); radio.setPALevel (RF24_PA_MAX); radio.setDataRate (RF24_250KBPS); radio.stopListening (); radio.enableDynamicPayloads (); radio.powerUp (); Serial.println („Pradedama siųsti“); } 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 (); } else {gpsData.longitude = 0.0; gpsData.latitude = 0.0; } if (gps.date.isValid ()) {gpsData.date = gps.date.value (); } else {gpsData.date = 0; } if (gps.time.isValid ()) {gpsData.time = gps.time.value (); } else {gpsData.time = 0; }}

GAVIMAS

#įtraukti

#įtraukti #įtraukti RF24 radiją (8, 7); // CE, CSN struktūros duomenysStruktūra {dviguba platuma; dviguba ilguma; nepasirašyta ilga data; ilgai nepasirašytas; } gpsData; void setup () {Serial.begin (115200); // Sąrankos imtuvo radijo radijas.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 ("Vieta:"); Serijinis atspaudas (gpsData.latitude, 6); Serial.print (","); Serijinis atspaudas (gpsData.longitude, 6); Serial.print ("Data:"); Serial.print (gpsData.date); Serial.print („Laikas:“); Serial.print (gpsData.time); Serial.println ();}}

(Peržiūrėkite šio kodo vaizdo įrašą

3 veiksmas: duomenų saugojimas naudojant SD kortelės modulį

Duomenų saugojimas naudojant SD kortelės modulį
Duomenų saugojimas naudojant SD kortelės modulį

Radijo modulis yra gana patikimas, tačiau kartais jums reikia parengti nenumatytų atvejų planą, jei imtuvo pusėje nutrūktų elektros tiekimas arba jei radijas išsikeltų už diapazono ribų. Mūsų nenumatytų atvejų planas yra SD kortelės modulis, leidžiantis saugoti surinktus duomenis. Surinktų duomenų kiekis nėra toks didelis, todėl net maža SD kortelė lengvai galės saugoti dienos duomenis.

#įtraukti

#include #include #include TinyGPSPlus gps; SoftwareSerial ss (4, 3); structure dataStruct {dviguba platuma; dviguba ilguma; nepasirašyta ilga data; ilgai nepasirašytas; } gpsData; void setup () {Serial.begin (115200); ss.begin (9600); if (! SD.begin (5)) {Serial.println ("Kortelė nepavyko arba jos nėra"); grįžti; } Serial.println ("inicijuota kortelė"); Failo duomenysFailas = SD.open ("gps_data.csv", FILE_WRITE); if (dataFile) {dataFile.println ("Platuma, ilguma, data, laikas"); dataFile.close (); } else {Serial.println ("ne negaliu atidaryti failo"); }} 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 (); } else {Serial.println ("Netinkama vieta"); } if (gps.date.isValid ()) {gpsData.date = gps.date.value (); } else {Serial.println ("Netinkama data"); } if (gps.time.isValid ()) {gpsData.time = gps.time.value (); } else {Serial.println ("Netinkamas laikas"); }} void printResults () {Serial.print ("Vieta:"); Serijinis atspaudas (gpsData.latitude, 6); Serial.print (","); Serijinis atspaudas (gpsData.longitude, 6); Serial.print ("Data:"); Serial.print (gpsData.date); Serial.print („Laikas:“); Serial.print (gpsData.time); Serial.println (); } void saveInfo () {Failo duomenysFailas = 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 (); } else {Serial.println ("ne, nėra duomenų failo"); }}

(Mes kalbame šiuo kodu vaizdo įraše

4 žingsnis: GPS duomenų siuntimas ir saugojimas

GPS duomenų siuntimas ir saugojimas
GPS duomenų siuntimas ir saugojimas
GPS duomenų siuntimas ir saugojimas
GPS duomenų siuntimas ir saugojimas

5 žingsnis: ačiū

Dėkoju!
Dėkoju!

Užsiregistruokite mūsų pašto adresų sąraše!

1 dalis. Bangų ir temperatūros matavimas

2 dalis. GPS NRF24 radijas ir SD kortelė

3 dalis. Galvos planavimas plūdurui

4 dalis. Plūduro išskleidimas

Rekomenduojamas: