Sisukord:
- Tarvikud
- Samm: GPS -andmete hankimine
- 2. samm: GPS -andmete saatmine raadio kaudu
- 3. samm: andmete salvestamine SD -kaardi mooduli abil
- Samm: GPS -andmete saatmine ja salvestamine
- Samm: aitäh
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:46
See nutikate poide sari kirjeldab meie (ambitsioonikat) katset ehitada teaduslikku poi, mis saab riiulil olevate toodete abil merel sisukaid mõõtmisi teha. See on õpetus kaks neljast - veenduge, et olete ajakohane, ja kui vajate projekti kiiret tutvustust, vaadake meie kokkuvõtet.
Osa 1: Laine- ja temperatuurimõõtmiste tegemine
Selles õpetuses näitame teile, kuidas GPS -andmeid hankida, SD -kaardile salvestada ja raadio abil kuhugi saata.
Tegime seda, et saaksime jälgida oma merepoi poi asukohta. Raadio tähendab, et me saame seda eemalt vaadata ja SD -kaart tähendab, et juhuslikult, kui midagi katki läheb ja see läheb ekslema, saame alla laadida andmed, mille see oli planeerimata ekskursiooni ajal kogunud - kui suudame need kunagi kätte saada!
Tarvikud
GPS -moodul - Amazon
SD -kaardi moodul - Amazon
SD -kaart - Amazon
2 X raadiomoodulit (NRF24L01+) - Amazon
2 X Arduino - Amazon
Samm: GPS -andmete hankimine
Nutikas poi teeb merel istudes sensori mõõtmisi, sealhulgas GPS -i asukohta ja kuupäeva. Vaadake skeemi, mis näitab, kuidas me vooluringi seadistame. GPS -moodul suhtleb jadaühenduse kaudu, nii et me kasutame sellega suhtlemiseks nii Arduino tarkvara jadakogu kui ka pisikest GPS -raamatukogu. Need raamatukogud muudavad kõik ülilihtsaks. Tutvustame teile koodi …
#kaasake
#include // TinyGPS ++ objekt TinyGPSPlus gps; // Jadaühendus GPS -seadmega SoftwareSerial ss (4, 3); structure dataStruct {kahekordne laiuskraad; kahekordne pikkuskraad; allkirjastamata pikk kuupäev; allkirjastamata pikka aega; } gpsData; void setup () {Serial.begin (115200); ss.algus (9600); } void loop () {while (ss.available ()> 0) {if (gps.encode (ss.read ())) {getInfo (); printResults (); }}} tühine getInfo () {if (gps.location.isValid ()) {gpsData.latitude = gps.location.lat (); gpsData.longitude = gps.location.lng (); } else {Serial.println ("Vale asukoht"); } if (gps.date.isValid ()) {gpsData.date = gps.date.value (); } else {Serial.println ("Kehtetu kuupäev"); } if (gps.time.isValid ()) {gpsData.time = gps.time.value (); } else {Serial.println ("Kehtetu aeg"); }} void printResults () {Serial.print ("Location:"); Seeriatrükk (gpsData.latitude, 6); Serial.print (","); Seeriaprint (gpsData.longitude, 6); Serial.print ("Kuupäev:"); Serial.print (gpsData.date); Serial.print ("Aeg:"); Serial.print (gpsData.time); Serial.println (); }
(Vaadake selle koodi videot aadressil
2. samm: GPS -andmete saatmine raadio kaudu
Oletame, et poi teeb mõõtmisi meres, kuid me tahame andmeid näha ilma jalgu märjaks tegemata või poi kaldale toomata. Mõõtmiste kaugjuurdepääsuks kasutame mõlemal pool sidepidamist Arduinoga ühendatud raadiomoodulit. Tulevikus asendame vastuvõtjapoolse Arduino vaarika pi-ga. Raadio töötab sarnaselt mõlema liidesega, nii et nende vahetamine on üsna lihtne.
Raadiomoodul suhtleb kasutades SPI -d, mis nõuab I2C -st mõnevõrra rohkem ühendusi, kuid on NRF24 raamatukogu tõttu siiski väga lihtne kasutada. Kasutades andurite mõõtmiseks GPS -moodulit, edastame selle andmed ühelt Arduino -lt teisele. Me ühendame GPS -i ja raadiomooduli Arduinoga ja teisel pool Arduino koos raadiomooduliga - vaadake skeemi.
Saatja
#kaasake
#kaasama #kaasama #sisalda #sisalda TinyGPSPlus gps; SoftwareSerial ss (4, 3); Raadio RF24 (8, 7); // CE, CSN struktuuri andmedStruct {topeltlaius; kahekordne pikkuskraad; allkirjastamata pikk kuupäev; allkirjastamata pikka aega; } gpsData; void setup () {Serial.begin (115200); ss.algus (9600); Serial.println ("Raadio seadistamine"); // Seadista saatja raadio raadio.begin (); radio.openWritingPipe (0xF0F0F0F0E1LL); radio.setChannel (0x76); radio.setPALevel (RF24_PA_MAX); radio.setDataRate (RF24_250KBPS); radio.stopListening (); radio.enableDynamicPayloads (); radio.powerUp (); Serial.println ("Hakkab saatma"); } void loop () {while (ss.available ()> 0) {if (gps.encode (ss.read ())) {getInfo (); radio.write (& gpsData, sizeof (gpsData)); }}} tühine 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; }}
VASTUVÕTJA
#kaasake
#kaasa arvatud #kaasama RF24 raadio (8, 7); // CE, CSN struktuuri andmedStruct {topeltlaius; kahekordne pikkuskraad; allkirjastamata pikk kuupäev; allkirjastamata pikka aega; } gpsData; void setup () {Serial.begin (115200); // Seadista vastuvõtja raadio raadio.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 ("Asukoht:"); Seeriatrükk (gpsData.latitude, 6); Serial.print (","); Seeriaprint (gpsData.longitude, 6); Serial.print ("Kuupäev:"); Serial.print (gpsData.date); Serial.print ("Aeg:"); Serial.print (gpsData.time); Serial.println ();}}
(Vaadake selle koodi videot aadressil
3. samm: andmete salvestamine SD -kaardi mooduli abil
Raadiomoodul on üsna usaldusväärne, kuid mõnikord vajate varuplaani juhuks, kui vastuvõtja poolel on voolukatkestus või kui raadio liigub levialast välja. Meie varuplaan on SD -kaardi moodul, mis võimaldab meil kogutud andmeid salvestada. Kogutavate andmete hulk ei ole nii suur, nii et isegi väike SD -kaart suudab hõlpsalt päeva andmeid salvestada.
#kaasake
#kaasama #sisalda #sisalda TinyGPSPlus gps; SoftwareSerial ss (4, 3); structure dataStruct {kahekordne laiuskraad; kahekordne pikkuskraad; allkirjastamata pikk kuupäev; allkirjastamata pikka aega; } gpsData; void setup () {Serial.begin (115200); ss.algus (9600); if (! SD.begin (5)) {Serial.println ("Kaart ebaõnnestus või puudub"); tagasipöördumine; } Serial.println ("kaart lähtestatud"); Faili andmedFail = SD.open ("gps_data.csv", FILE_WRITE); if (dataFile) {dataFile.println ("Laius, Pikkuskraad, Kuupäev, Kellaaeg"); dataFile.close (); } else {Serial.println ("ei saa faili avada"); }} void loop () {while (ss.available ()> 0) {if (gps.encode (ss.read ())) {getInfo (); printResults (); saveInfo (); }}} tühine getInfo () {if (gps.location.isValid ()) {gpsData.latitude = gps.location.lat (); gpsData.longitude = gps.location.lng (); } else {Serial.println ("Vale asukoht"); } if (gps.date.isValid ()) {gpsData.date = gps.date.value (); } else {Serial.println ("Kehtetu kuupäev"); } if (gps.time.isValid ()) {gpsData.time = gps.time.value (); } else {Serial.println ("Kehtetu aeg"); }} void printResults () {Serial.print ("Location:"); Seeriatrükk (gpsData.latitude, 6); Serial.print (","); Seeriaprint (gpsData.longitude, 6); Serial.print ("Kuupäev:"); Serial.print (gpsData.date); Serial.print ("Aeg:"); 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 (); } else {Serial.println ("no no datafile"); }}
(Me räägime sellest koodist videos
Samm: GPS -andmete saatmine ja salvestamine
Samm: aitäh
Registreeruge meie postitusloendisse!
Osa 1: Laine- ja temperatuuri mõõtmine
Osa 2: GPS NRF24 raadio ja SD -kaart
Osa 3: Poi võimsuse planeerimine
Osa 4: Poi kasutuselevõtt
Soovitan:
Nutikas poi [kokkuvõte]: 8 sammu (piltidega)
Nutikas poi [Kokkuvõte]: Me kõik armastame mereäärt. Kollektiivina koguneme sinna puhkama, veesporti nautima või elatist teenima. Kuid rannik on dünaamiline piirkond, mis on lainete meelevallas. Tõusv merepind näksib randades ja võimsad ekstreemsündmused nagu hurri
CCTV kaamera koos sõlmega MCU + vana sülearvuti kaamera moodul (koos ja ilma Blynk'i kasutamiseta): 5 sammu
CCTV kaamera koos NodeMCU + vana sülearvuti kaamera mooduliga (koos ja ilma Blynk'i kasutamiseta): Tere poisid! Selles juhendis näitan teile, kuidas kasutasin vana sülearvuti kaamera moodulit ja sõlme MCU, et teha midagi sarnast CCTV -ga
Nutikas äratuskell: nutikas äratuskell, mis on valmistatud Raspberry Pi -ga: 10 sammu (koos piltidega)
Nutikas äratuskell: nutikas äratuskell, mis on valmistatud Raspberry Pi -ga: kas olete kunagi tahtnud nutikat kella? Kui jah, siis see on teie jaoks lahendus! Ma tegin nutika äratuskella, see on kell, mille abil saate äratusaega vastavalt veebisaidile muuta. Kui äratus hakkab tööle, kostab heli (sumin) ja 2 tuld
NRF24 kahesuunaline raadio telemeetria jaoks: 9 sammu (piltidega)
NRF24 kahesuunaline raadio telemeetria jaoks: Tere poisid, minu nimi on Pedro Castelani ja ma toon teile oma esimese juhendatava: kahepoolse raadio ehitamine arduinoga, mida iganes vajate. Selles projektis teeme kaks eraldi vooluahelat, mis toimivad nii vastuvõtjana kui ka edastusena
Kuidas ehitada quadcoptor. (NTM 28-30S 800kV 300W ja Arducopter APM 2.6 & 6H GPS 3DR raadio ja FlySky TH9X): 25 sammu (koos piltidega)
Kuidas ehitada quadcoptor. (NTM 28-30S 800kV 300W ja Arducopter APM 2.6 & 6H GPS 3DR raadio ja FlySky TH9X): see on õpetus, kuidas ehitada Quadcopter, kasutades NTM 28-30S 800kV 300W mootoreid ja Arducopter APM 2.6 & 6H GPS & 3DR raadio. Olen püüdnud iga sammu selgitada paljude piltidega. Kui teil on küsimusi või kommentaare, palun vastake