Tartalomjegyzék:
- Kellékek
- 1. lépés: GPS -adatok beszerzése
- 2. lépés: GPS -adatok küldése rádión keresztül
- 3. lépés: Adatok tárolása SD -kártya modul használatával
- 4. lépés: GPS -adatok küldése és tárolása
- 5. lépés: Köszönöm
Videó: Intelligens bója [GPS, rádió (NRF24) és SD -kártya modul]: 5 lépés (képekkel)
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:39
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
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
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
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
5. lépés: Köszönöm
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:
Intelligens bója [Összefoglaló]: 8 lépés (képekkel)
Intelligens bója [Összefoglaló]: Mindannyian szeretjük a tengerpartot. Kollektívaként nyaralunk oda, hogy élvezzük a vízi sportokat vagy a megélhetésünket. De a tengerpart dinamikus terület a hullámok kegyében. Az emelkedő tengerszint rágcsál a strandokon, és olyan extrém események, mint a hurri
Hogyan készítsünk intelligens otthont az Arduino vezérlőrelé modul használatával - Otthoni automatizálási ötletek: 15 lépés (képekkel)
Hogyan készítsünk intelligens otthont az Arduino vezérlőrelé modul használatával | Otthoni automatizálási ötletek: Ebben az otthonautomatizálási projektben egy intelligens otthoni relé modult tervezünk, amely 5 háztartási készüléket képes vezérelni. Ez a relé modul vezérelhető mobilról vagy okostelefonról, infravörös távirányítóról vagy TV távirányítóról, kézi kapcsolóval. Ez az intelligens relé érzékeli az
Hogyan barkácsoljunk intelligens redőnyöket SONOFF intelligens kapcsolókkal?: 14 lépés
Hogyan barkácsoljunk intelligens redőnyöket a SONOFF intelligens kapcsolókkal?: Használja a reteszelés módot a SONOFF intelligens kapcsolókban, hogy a szokásos redőnyöket/redőnyöket intelligensekké tegye és este lehúzni? Egyébként én
Intelligens ébresztőóra: Raspberry Pi -vel készült intelligens ébresztőóra: 10 lépés (képekkel)
Intelligens ébresztőóra: Raspberry Pi -vel készült intelligens ébresztőóra: Szeretett volna valaha okos órát? Ha igen, akkor ez a megoldás az Ön számára! Készítettem intelligens ébresztőórát, ez egy óra, amellyel megváltoztathatja az ébresztési időt a webhely szerint. Amikor a riasztó megszólal, hangjelzés (csipogó) és 2 lámpa hallatszik
NRF24 kétirányú rádió telemetriához: 9 lépés (képekkel)
NRF24 kétirányú rádió telemetriához: Sziasztok srácok, a nevem Pedro Castelani, és elhozom nektek az első tanulságosat: kétirányú rádió építése arduino-val, nos, mindenre, amire szüksége van. Ebben a projektben két külön áramkör, amelyek egyben vevőként és adóként is működnek