![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)](https://i.howwhatproduce.com/images/001/image-901-4-j.webp)
Turinys:
2025 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2025-01-23 14:53


Š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

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ą

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į

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


5 žingsnis: ačiū

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:
Išmanusis plūduras [Santrauka]: 8 žingsniai (su paveikslėliais)
![Išmanusis plūduras [Santrauka]: 8 žingsniai (su paveikslėliais) Išmanusis plūduras [Santrauka]: 8 žingsniai (su paveikslėliais)](https://i.howwhatproduce.com/images/001/image-657-4-j.webp)
Išmanusis plūduras [Santrauka]: Mes visi mėgstame pajūrį. Būdami kolektyvu, mes traukiame į jį atostogauti, mėgautis vandens sportu ar užsidirbti pragyvenimui. Tačiau pakrantė yra dinamiška bangų gailestingumo sritis. Pakilęs jūros lygis gurkšnoja paplūdimiuose ir galingi ekstremalūs įvykiai, tokie kaip skubos
„Arduino“šviesos blokavimo jutiklis (nuotraukų pertraukiklio modulis) - saugokite korteles (prototipas): 4 žingsniai

„Arduino“šviesos blokavimo jutiklis (nuotraukų pertraukiklio modulis) - saugokite savo korteles (prototipas): šis projektas yra prototipas ir šiame projekte aptarsiu, kaip galima laikyti jūsų korteles, pvz., Kredito korteles, debeto korteles, dovanų korteles saugus. Pažvelkite į aukščiau esančias nuotraukas, kad pamatytumėte, kaip šis projektas veikia. Leiskite man žvilgtelėti į
NRF24 dvipusis radijas telemetrijai: 9 žingsniai (su nuotraukomis)

NRF24 dvipusis radijas telemetrijai: Sveiki, vaikinai, mano vardas yra Pedro Castelani, ir aš jums duosiu pirmą pamokomą dalyką: sukurti dvipusį radiją su arduino, kad ir ką jums reikia. Šiame projekte mes padarysime dvi atskiros grandinės, kurios veiks ir kaip imtuvas, ir kaip perdavimas
Interneto radijas/ interneto radijas su „Raspberry Pi 3“(be galvos): 8 žingsniai

Interneto radijas/ žiniatinklio radijas su „Raspberry Pi 3“(be galvos): HI Ar norite turėti savo radijo prieglobą internete, tada esate tinkamoje vietoje. Pasistengsiu kuo išsamiau paaiškinti. Išbandžiau kelis būdus, kad daugumai jų reikėjo garso plokštės, kurios nenorėjau pirkti. bet pavyko surasti
Geek - kreditinės kortelės/vizitinės kortelės laikiklis iš seno nešiojamojo kompiuterio kietojo disko: 7 žingsniai

Geek - kreditinės kortelės / vizitinės kortelės turėtojas iš seno nešiojamojo kompiuterio kietojo disko. Geek -ed verslo / kredito kortelės turėtojas. Šią beprotišką idėją sugalvojau, kai mano nešiojamojo kompiuterio kietasis diskas mirė ir iš esmės tapo nenaudingas. Čia pridėjau užpildytus vaizdus