Përmbajtje:

Buvo Smart [GPS, Radio (NRF24) dhe një modul SD Card]: 5 hapa (me fotografi)
Buvo Smart [GPS, Radio (NRF24) dhe një modul SD Card]: 5 hapa (me fotografi)

Video: Buvo Smart [GPS, Radio (NRF24) dhe një modul SD Card]: 5 hapa (me fotografi)

Video: Buvo Smart [GPS, Radio (NRF24) dhe një modul SD Card]: 5 hapa (me fotografi)
Video: Моя работа наблюдать за лесом и здесь происходит что-то странное 2024, Nëntor
Anonim
Image
Image

Kjo seri Smart Buoy paraqet përpjekjen tonë (ambicioze) për të ndërtuar një lundrim shkencor që mund të marrë matje kuptimplote për detin duke përdorur produkte jashtë raftit. Ky është mësimi dy nga katër - sigurohuni që jeni të azhurnuar dhe nëse keni nevojë për një prezantim të shpejtë të projektit, shikoni përmbledhjen tonë.

Pjesa 1: Bërja e matjeve të valës dhe temperaturës

Në këtë tutorial, ne ju tregojmë se si të merrni të dhëna GPS, t'i ruani në një kartë SD dhe t'i dërgoni diku duke përdorur radio.

Ne e bëmë këtë në mënyrë që të mund të mbanim gjurmët e vendndodhjes së Varkës sonë të detit. Radio do të thotë që ne mund ta shikojmë atë nga distanca dhe karta SD do të thotë që në rast të rastit diçka prishet dhe shkon për një bredhje, ne mund të shkarkojmë të dhënat që ai mblodhi gjatë ekskursionit të tij të paplanifikuar - nëse ndonjëherë jemi në gjendje t'i marrim!

Furnizimet

Moduli GPS - Amazon

Moduli i kartës SD - Amazon

Kartë SD - Amazon

2 module Radio X (NRF24L01+) - Amazon

2 X Arduino - Amazon

Hapi 1: Marrja e të dhënave GPS

Dërgimi i të dhënave GPS përmes radios
Dërgimi i të dhënave GPS përmes radios

Përdoruesi i zgjuar bën matje të sensorit ndërsa ulet në det, duke përfshirë vendndodhjen GPS dhe kohën e datës. Hidhini një sy skemës që tregon se si e vendosim qarkun. Moduli GPS komunikon përmes lidhjes serike, kështu që ne po përdorim bibliotekën serike të softuerit Arduino, si dhe bibliotekën e vogël GPS për të komunikuar me të. Këto biblioteka e bëjnë gjithçka super të thjeshtë. Le t’ju përcjellim përmes kodit…

#përfshi

#include // Objekti TinyGPS ++ TinyGPSPlus gps; // Lidhja serike me pajisjen GPS SoftwareSerial ss (4, 3); struct dataStruct {gjerësi gjeografike e dyfishtë; gjatësi të dyfishtë; datë e gjatë e pa firmosur; kohë e pa firmosur; } gpsData; void setup () {Serial.begin (115200); ss.filloj (9600); } void loop () {while (ss.suplable ()> 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 ("Vendndodhje e pavlefshme"); } if (gps.date.isValid ()) {gpsData.date = gps.date.value (); } else {Serial.println ("Data e pavlefshme"); } if (gps.time.isValid ()) {gpsData.time = gps.time.value (); } else {Serial.println ("Koha e pavlefshme"); }} void printResults () {Serial.print ("Vendndodhja:"); Serial.print (gpsData.latitude, 6); Serial.print (","); Serial.print (gpsData.l gjatësia, 6); Serial.print ("Data:"); Serial.print (gpsData.date); Serial.print ("Koha:"); Serial.print (gpsData.time); Serial.println (); }

(Shikoni videon për këtë kod në

Hapi 2: Dërgimi i të dhënave GPS përmes radios

Dërgimi i të dhënave GPS përmes radios
Dërgimi i të dhënave GPS përmes radios

Supozoni se vozita është në det duke marrë matje, por ne duam t'i shohim të dhënat pa i lagur këmbët tona ose duke e nxjerrë lundrën në breg. Për të marrë matjet në distancë, ne po përdorim një modul radio të lidhur me një Arduino në të dy anët e komunikimit. Në të ardhmen, ne do të zëvendësojmë Arduino nga ana e marrësit me një pi mjedër. Radio punon në mënyrë të ngjashme me të dyja këto ndërfaqe, kështu që ndërrimi i tyre është mjaft i drejtpërdrejtë.

Moduli i radios komunikon duke përdorur SPI, i cili kërkon disa lidhje më shumë se I2C, por është akoma me të vërtetë i lehtë për t'u përdorur për shkak të bibliotekës NRF24. Duke përdorur modulin GPS për matjet e sensorit, ne transmetojmë të dhënat e tij nga një Arduino në tjetrin. Ne do të lidhim modulin GPS dhe radio me Arduino dhe në anën tjetër një Arduino me modulin e radios - hidhini një sy skemës.

Transmetues

#përfshi

#përfshi #përfshi #përfshi #përfshi GPS në TinyGPSPlus; SoftwareSerial ss (4, 3); Radio RF24 (8, 7); // CE, CSN struct dataStruct {gjerësi gjeografike e dyfishtë; gjatësi të dyfishtë; datë e gjatë e pa firmosur; kohë e pa firmosur; } gpsData; void setup () {Serial.begin (115200); ss.filloj (9600); Serial.println ("Konfigurimi i radios"); // Konfiguro transmetuesin radio radio.filloj (); radio.hapurShkrimiPub (0xF0F0F0F0E1LL); radio.setChannel (0x76); radio.setPALevel (RF24_PA_MAX); radio.setDataRate (RF24_250KBPS); radio.stopDëgjimi (); radio.enableDynamicPayloads (); radio.powerUp (); Serial.println ("Fillimi i dërgimit"); } void loop () {while (ss.suplable ()> 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; }}

PRITES

#përfshi

#përfshijë #përfshijë radion RF24 (8, 7); // CE, CSN struct dataStruct {gjerësi gjeografike e dyfishtë; gjatësi të dyfishtë; datë e gjatë e pa firmosur; kohë e pa firmosur; } gpsData; void setup () {Serial.begin (115200); // Konfiguro marrësin radio radio.filloj (); radio.hapurReadingPipe (1, 0xF0F0F0F0E1LL); radio.setChannel (0x76); radio.setPALevel (RF24_PA_MAX); radio.setDataRate (RF24_250KBPS); radio.filloDëgjimi (); radio.enableDynamicPayloads (); radio.powerUp (); } void loop () {if (radio.disponueshme ()) {radio.read (& gpsData, sizeof (gpsData)); Serial.print ("Vendndodhja:"); Serial.print (gpsData.latitude, 6); Serial.print (","); Serial.print (gpsData.l gjatësia, 6); Serial.print ("Data:"); Serial.print (gpsData.date); Serial.print ("Koha:"); Serial.print (gpsData.time); Serial.println ();}}

(Shikoni videon për këtë kod në

Hapi 3: Ruajtja e të dhënave duke përdorur një modul të kartës SD

Ruajtja e të dhënave duke përdorur një modul të kartës SD
Ruajtja e të dhënave duke përdorur një modul të kartës SD

Moduli i radios është mjaft i besueshëm, por ndonjëherë keni nevojë për një plan emergjence në rast se ka një ndërprerje të energjisë në anën e marrësit ose nëse radio lëviz jashtë rrezes. Plani ynë i paparashikuar është një modul i kartës SD i cili na lejon të ruajmë të dhënat që mbledhim. Sasia e të dhënave që mblidhen nuk është aq e madhe, kështu që edhe një kartë e vogël SD do të jetë në gjendje të ruajë me lehtësi të dhëna për një ditë.

#përfshi

#include #include #include TinyGPSPlus GPS; SoftwareSerial ss (4, 3); struct dataStruct {gjerësi gjeografike e dyfishtë; gjatësi të dyfishtë; datë e gjatë e pa firmosur; kohë e pa firmosur; } gpsData; void setup () {Serial.begin (115200); ss.filloj (9600); nëse (! SD.filloj (5)) {Serial.println ("Karta dështoi, ose nuk është e pranishme"); kthim; } Serial.println ("karta e inicializuar."); File dataFile = SD.open ("gps_data.csv", FILE_WRITE); if (dataFile) {dataFile.println ("Gjerësia gjeografike, gjatësia, data, ora"); dataFile.close (); } else {Serial.println ("jo nuk mund ta hap skedarin"); }} void loop () {while (ss.suplable ()> 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 ("Vendndodhje e pavlefshme"); } if (gps.date.isValid ()) {gpsData.date = gps.date.value (); } else {Serial.println ("Data e pavlefshme"); } if (gps.time.isValid ()) {gpsData.time = gps.time.value (); } else {Serial.println ("Koha e pavlefshme"); }} void printResults () {Serial.print ("Vendndodhja:"); Serial.print (gpsData.latitude, 6); Serial.print (","); Serial.print (gpsData.l gjatësia, 6); Serial.print ("Data:"); Serial.print (gpsData.date); Serial.print ("Koha:"); 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.l gjatësia); dataFile.print (","); dataFile.print (gpsData.date); dataFile.print (","); dataFile.println (gpsData.time); dataFile.close (); } else {Serial.println ("jo nuk ka të dhëna"); }}

(Ne flasim përmes këtij kodi në videon

Hapi 4: Dërgimi dhe Ruajtja e të Dhënave GPS

Dërgimi dhe ruajtja e të dhënave GPS
Dërgimi dhe ruajtja e të dhënave GPS
Dërgimi dhe ruajtja e të dhënave GPS
Dërgimi dhe ruajtja e të dhënave GPS

Hapi 5: Faleminderit

Faleminderit!
Faleminderit!

Regjistrohuni në Listën tonë të Postimeve!

Pjesa 1: Bërja e Matjes së Valës dhe Temperaturës

Pjesa 2: Radio NRF24 GPS dhe Kartë SD

Pjesa 3: Planifikimi i energjisë në anije

Pjesa 4: Vendosja e anijes

Recommended: