Tartalomjegyzék:

Intelligens bója [GPS, rádió (NRF24) és SD -kártya modul]: 5 lépés (képekkel)
Intelligens bója [GPS, rádió (NRF24) és SD -kártya modul]: 5 lépés (képekkel)

Videó: Intelligens bója [GPS, rádió (NRF24) és SD -kártya modul]: 5 lépés (képekkel)

Videó: Intelligens bója [GPS, rádió (NRF24) és SD -kártya modul]: 5 lépés (képekkel)
Videó: Marshmello ft. Bastille - Happier (Official Music Video) 2024, Július
Anonim
Image
Image

Ez az intelligens bója sorozat bemutatja (ambiciózus) kísérletünket egy tudományos bója felépítésére, amely értelmes méréseket végezhet a tengerről a késztermékek felhasználásával. Ez a bemutató a négyből kettő - győződjön meg arról, hogy naprakész, és ha gyors bevezetésre van szüksége a projekthez, nézze meg összefoglalónkat.

1. rész: Hullám- és hőmérsékletmérés

Ebben az oktatóanyagban megmutatjuk, hogyan szerezheti be a GPS -adatokat, tárolhatja azokat SD -kártyán, és küldheti el valahová a rádió segítségével.

Ezt azért tettük, hogy nyomon követhessük a tengeri bóját. A rádió azt jelenti, hogy távolról nézhetjük, az SD -kártya pedig azt jelenti, hogy ha véletlenül valami elromlik, és vándorlásba kezd, letölthetjük a nem tervezett kirándulása során gyűjtött adatokat - ha valaha sikerül lekérnünk!

Kellékek

GPS modul - Amazon

SD kártya modul - Amazon

SD kártya - Amazon

2 X rádiómodul (NRF24L01+) - Amazon

2 X Arduino - Amazon

1. lépés: GPS -adatok beszerzése

GPS adatok küldése rádión keresztül
GPS adatok küldése rádión keresztül

Az intelligens bója méréseket végez a tengerben ülve, beleértve a GPS helyét és a dátumot. Nézze meg a vázlatot, amely bemutatja az áramkör beállítását. A GPS modul soros kapcsolaton keresztül kommunikál, ezért az Arduino szoftver soros könyvtárát és az apró GPS könyvtárat használjuk a kommunikációhoz. Ezek a könyvtárak mindent szuper egyszerűvé tesznek. Vegyük végig a kódot…

#befoglalni

#include // A TinyGPS ++ objektum TinyGPSPlus gps; // A soros kapcsolat a GPS -eszközzel SoftwareSerial ss (4, 3); structure dataStruct {kettős szélesség; kettős hosszúság; aláíratlan hosszú dátum; aláírás nélküli hosszú ideig; } 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 ("Érvénytelen hely"); } if (gps.date.isValid ()) {gpsData.date = gps.date.value (); } else {Serial.println ("Érvénytelen dátum"); } if (gps.time.isValid ()) {gpsData.time = gps.time.value (); } else {Serial.println ("Érvénytelen idő"); }} void printResults () {Serial.print ("Location:"); Soros.nyomtatás (gpsData.latitude, 6); Serial.print (","); Soros.nyomtatás (gpsData.longitude, 6); Serial.print ("Dátum:"); Serial.print (gpsData.date); Serial.print ("Idő:"); Serial.print (gpsData.time); Sorozat.println (); }

(Nézze meg a kódhoz tartozó videót a https://www.youtube.com/embed/xz1ix76U28E oldalon)

2. lépés: GPS -adatok küldése rádión keresztül

GPS adatok küldése rádión keresztül
GPS adatok küldése rádión keresztül

Tegyük fel, hogy a bója a tengeren méréseket végez, de látni akarjuk az adatokat anélkül, hogy a lábunkat nedvesítenénk vagy a bóját partra vinnénk. A mérések távoli eléréséhez a kommunikáció mindkét oldalán egy Arduino -hoz csatlakoztatott rádiómodult használunk. A jövőben a vevőoldali Arduino-t málna pi-re cseréljük. A rádió mindkét interfésszel hasonlóan működik, így azok cseréje meglehetősen egyszerű.

A rádiómodul SPI használatával kommunikál, ami néhány kapcsolatot igényel, mint az I2C, de az NRF24 könyvtár miatt még mindig nagyon könnyen használható. A GPS -modult használva az érzékelők mérésére az adatokat egyik Arduino -ról a másikra továbbítjuk. Csatlakoztatni fogjuk a GPS -t és a rádiómodult az Arduino -hoz, a másik oldalon pedig egy Arduino -t a rádiómodullal - nézzük meg a vázlatot.

Adó

#befoglalni

#include #include #include #include TinyGPSPlus gps; SoftwareSerial ss (4, 3); RF24 rádió (8, 7); // CE, CSN szerkezet dataStruct {kettős szélesség; kettős hosszúság; aláíratlan hosszú dátum; aláírás nélküli hosszú ideig; } gpsData; void setup () {Serial.begin (115200); ss.begin (9600); Serial.println ("Rádió beállítása"); // Adó rádió beállítása rádió.begin (); radio.openWritingPipe (0xF0F0F0F0E1LL); radio.setChannel (0x76); radio.setPALevel (RF24_PA_MAX); radio.setDataRate (RF24_250KBPS); radio.stopListening (); radio.enableDynamicPayloads (); radio.powerUp (); Serial.println ("Küldés megkezdése"); } 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; }}

VEVŐ

#befoglalni

#magában foglalja #magában foglalja az RF24 rádiót (8, 7); // CE, CSN szerkezet dataStruct {kettős szélesség; kettős hosszúság; aláíratlan hosszú dátum; hosszú ideig előjel nélküli; } gpsData; void setup () {Serial.begin (115200); // A vevőkészülék rádiójának beállítása.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 ("Hely:"); Soros.nyomtatás (gpsData.latitude, 6); Serial.print (","); Soros.nyomtatás (gpsData.longitude, 6); Serial.print ("Dátum:"); Serial.print (gpsData.date); Serial.print ("Idő:"); Serial.print (gpsData.time); Serial.println ();}}

(Nézze meg a kódhoz tartozó videót a https://www.youtube.com/embed/xz1ix76U28E oldalon)

3. lépés: Adatok tárolása SD -kártya modul használatával

Adatok tárolása SD kártya modul használatával
Adatok tárolása SD kártya modul használatával

A rádiómodul meglehetősen megbízható, de néha szükség van egy készenléti tervre arra az esetre, ha áramkimaradás történik a vevő oldalán, vagy ha a rádió hatótávolságon kívülre kerül. A készenléti tervünk egy SD kártya modul, amely lehetővé teszi számunkra, hogy tároljuk az összegyűjtött adatokat. Az összegyűjtött adatok mennyisége nem túl nagy, így még egy kicsi SD -kártya is könnyedén képes tárolni egy napi adatot.

#befoglalni

#include #include #include TinyGPSPlus gps; SoftwareSerial ss (4, 3); structure dataStruct {kettős szélesség; kettős hosszúság; aláíratlan hosszú dátum; hosszú ideig előjel nélküli; } gpsData; void setup () {Serial.begin (115200); ss.begin (9600); if (! SD.begin (5)) {Serial.println ("A kártya sikertelen, vagy nincs jelen"); Visszatérés; } Serial.println ("kártya inicializálva."); File dataFile = SD.open ("gps_data.csv", FILE_WRITE); if (dataFile) {dataFile.println ("Szélesség, hosszúság, dátum, idő"); dataFile.close (); } else {Serial.println ("no nem tudja megnyitni a fájlt"); }} 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 ("Érvénytelen hely"); } if (gps.date.isValid ()) {gpsData.date = gps.date.value (); } else {Serial.println ("Érvénytelen dátum"); } if (gps.time.isValid ()) {gpsData.time = gps.time.value (); } else {Serial.println ("Érvénytelen idő"); }} void printResults () {Serial.print ("Location:"); Soros.nyomtatás (gpsData.latitude, 6); Serial.print (","); Soros.nyomtatás (gpsData.longitude, 6); Serial.print ("Dátum:"); Serial.print (gpsData.date); Serial.print ("Idő:"); Serial.print (gpsData.time); Sorozat.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 no datafile"); }}

(A kódon keresztül beszélünk a https://www.youtube.com/embed/xz1ix76U28E videóban)

4. lépés: GPS -adatok küldése és tárolása

GPS -adatok küldése és tárolása
GPS -adatok küldése és tárolása
GPS -adatok küldése és tárolása
GPS -adatok küldése és tárolása

5. lépés: Köszönöm

Kösz!
Kösz!

Iratkozzon fel levelezőlistánkra!

1. rész: Hullám- és hőmérsékletmérés

2. rész: GPS NRF24 rádió és SD kártya

3. rész: Hatalom ütemezése a bójához

4. rész: A bója kihelyezése

Ajánlott: