Mündəricat:
- Təchizat
- Addım 1: GPS məlumatlarını əldə edin
- Addım 2: Radio ilə GPS Məlumatlarının Göndərilməsi
- Addım 3: SD Kart Modulundan istifadə edərək məlumatların saxlanması
- Addım 4: GPS məlumatlarının göndərilməsi və saxlanması
- Addım 5: Təşəkkürlər
Video: Ağıllı Şamandıra [GPS, Radio (NRF24) və SD Kart Modulu]: 5 addım (şəkillərlə)
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:43
Bu Smart Buoy seriyası, hazır məhsullardan istifadə edərək dəniz haqqında mənalı ölçülər götürə biləcək elmi bir şamandıra qurmaq cəhdlərimizi göstərir. Bu, dörddən ikisidir - yeniləndiyinizə əmin olun və layihənin sürətli bir təqdimatına ehtiyacınız varsa, xülasəmizə baxın.
1 -ci hissə: Dalğa və temperatur ölçmələrinin aparılması
Bu təlimatda, GPS məlumatlarını necə əldə etməyi, SD kartda saxlamağı və radio istifadə edərək bir yerə göndərməyi sizə göstərəcəyik.
Dənizdə üzən Şamandıramızın yerini izləmək üçün bunu etdik. Radio, uzaqdan izləyə biləcəyimiz deməkdir və SD kart, təsadüfən bir şeyin pozulduğunu və dolaşmağa getdiyini, planlaşdırılmamış ekskursiyası zamanı topladığı məlumatları yükləyə biləcəyimizi bildirir - əgər əldə edə bilsək!
Təchizat
GPS modulu - Amazon
SD kart modulu - Amazon
SD kart - Amazon
2 X Radio modulu (NRF24L01+) - Amazon
2 X Arduino - Amazon
Addım 1: GPS məlumatlarını əldə edin
Ağıllı şamandıra, GPS -in yeri və datetime daxil olmaqla dənizdə oturarkən sensor ölçüləri aparır. Dövrəni necə qurduğumuzu göstərən sxemə nəzər salın. GPS modulu ardıcıl əlaqə vasitəsi ilə əlaqə qurur, buna görə də onunla əlaqə qurmaq üçün Arduino proqram seriya kitabxanasından və kiçik GPS kitabxanasından istifadə edirik. Bu kitabxanalar hər şeyi çox sadə edir. Koddan keçək …
#daxil edin
#include // TinyGPS ++ obyekti TinyGPSPlus gps; // SoftwareSerial ss (4, 3) GPS cihazına serial əlaqə; struct dataStruct {ikili enlik; ikiqat uzunluq; imzasız uzun tarix; uzun müddət imzasız; } gpsData; void setup () {Serial.begin (115200); ss.begin (9600); } void loop () {while (ss.available ()> 0) {if (gps.encode (ss.read ())) {getInfo (); printResults (); }}} etibarsız getInfo () {if (gps.location.isValid ()) {gpsData.latitude = gps.location.lat (); gpsData.longitude = gps.location.lng (); } başqa {Serial.println ("Yanlış yer"); } əgər (gps.date.isValid ()) {gpsData.date = gps.date.value (); } başqa {Serial.println ("Yanlış tarix"); } əgər (gps.time.isValid ()) {gpsData.time = gps.time.value (); } başqa {Serial.println ("Yanlış vaxt"); }} void printResults () {Serial.print ("Yer:"); Serial.print (gpsData.latitude, 6); Serial.print (","); Serial. çap (gpsData.longitude, 6); Serial.print ("Tarix:"); Serial.print (gpsData.date); Serial.print ("Zaman:"); Serial.print (gpsData.time); Serial.println (); }
(Bu kod üçün videoya https://www.youtube.com/embed/xz1ix76U28E ünvanından baxın)
Addım 2: Radio ilə GPS Məlumatlarının Göndərilməsi
Şamandıranın ölçmə apardığını dənizdə olduğunu düşünək, ancaq ayaqlarımızı islatmadan və ya şamandıranı sahilə gətirmədən məlumatları görmək istəyirik. Ölçmələri uzaqdan əldə etmək üçün ünsiyyətin hər iki tərəfində bir Arduino ilə əlaqəli bir radio modulu istifadə edirik. Gələcəkdə alıcı tərəfi olan Arduino-nu moruq pi ilə əvəz edəcəyik. Radio hər iki interfeyslə eyni şəkildə işləyir, buna görə onları dəyişdirmək olduqca sadədir.
Radio modulu, I2C -dən bir neçə daha çox əlaqə tələb edən SPI istifadə edərək ünsiyyət qurur, lakin NRF24 kitabxanası səbəbindən istifadə etmək hələ də çox asandır. Sensor ölçmələri üçün GPS modulundan istifadə edərək məlumatlarını bir Arduinodan digərinə ötürürük. GPS və radio modulunu Arduino -ya, digər tərəfdən isə radio modulu olan bir Arduino -ya bağlayacağıq - sxemə baxın.
Verici
#daxil edin
#daxil edin #daxil edin #daxil edin #daxil edin TinyGPSPlus gps; SoftwareSerial ss (4, 3); RF24 radiosu (8, 7); // CE, CSN struktur dataStruct {ikili enlik; ikiqat uzunluq; imzasız uzun tarix; uzun müddət imzasız; } gpsData; void setup () {Serial.begin (115200); ss.begin (9600); Serial.println ("Radio qurmaq"); // Verici radio radio.begin () qurun; radio.openWritingPipe (0xF0F0F0F0E1LL); radio.setChannel (0x76); radio.setPALevel (RF24_PA_MAX); radio.setDataRate (RF24_250KBPS); radio.stopListening (); radio.enableDynamicPayloads (); radio.powerUp (); Serial.println ("Göndərməyə başlayırıq"); } void loop () {while (ss.available ()> 0) {if (gps.encode (ss.read ())) {getInfo (); radio.write (& gpsData, sizeof (gpsData)); }}} etibarsız getInfo () {if (gps.location.isValid ()) {gpsData.longitude = gps.location.lng (); gpsData.latitude = gps.location.lat (); } başqa {gpsData.longitude = 0.0; gpsData.latitude = 0.0; } əgər (gps.date.isValid ()) {gpsData.date = gps.date.value (); } başqa {gpsData.date = 0; } əgər (gps.time.isValid ()) {gpsData.time = gps.time.value (); } başqa {gpsData.time = 0; }}
Qəbul edən
#daxil edin
#include #include RF24 radiosu (8, 7); // CE, CSN struktur dataStruct {ikili enlik; ikiqat uzunluq; imzasız uzun tarix; uzun müddət imzasız; } gpsData; void setup () {Serial.begin (115200); // qəbuledici radio radio.begin () qurun; 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 ("Yer:"); Serial.print (gpsData.latitude, 6); Serial.print (","); Serial. çap (gpsData.longitude, 6); Serial.print ("Tarix:"); Serial.print (gpsData.date); Serial.print ("Zaman:"); Serial.print (gpsData.time); Serial.println ();}}
(Bu kod üçün videoya https://www.youtube.com/embed/xz1ix76U28E ünvanından baxın)
Addım 3: SD Kart Modulundan istifadə edərək məlumatların saxlanması
Radio modulu olduqca etibarlıdır, lakin bəzən alıcı tərəfində elektrik kəsilməsi və ya radio məsafədən kənara çıxması halında fövqəladə vəziyyət planına ehtiyacınız var. Ehtiyat planımız, topladığımız məlumatları saxlamağa imkan verən bir SD kart moduludur. Toplanan məlumatların miqdarı o qədər də böyük deyil, buna görə kiçik bir SD kart belə bir günlük məlumatı asanlıqla saxlaya biləcək.
#daxil edin
#include #include #include TinyGPSPlus gps; SoftwareSerial ss (4, 3); struct dataStruct {ikili enlik; ikiqat uzunluq; imzasız uzun tarix; uzun müddət imzasız; } gpsData; void setup () {Serial.begin (115200); ss.begin (9600); əgər (! SD.begin (5)) {Serial.println ("Kart uğursuz oldu, yoxsa yoxdur"); qayıtmaq; } Serial.println ("kart işə salındı."); Fayl dataFile = SD.open ("gps_data.csv", FILE_WRITE); if (dataFile) {dataFile.println ("Enlem, Boylam, Tarix, Saat"); dataFile.close (); } başqa {Serial.println ("yox, fayl açıla bilməz"); }} void loop () {while (ss.available ()> 0) {if (gps.encode (ss.read ())) {getInfo (); printResults (); saveInfo (); }}} etibarsız getInfo () {if (gps.location.isValid ()) {gpsData.latitude = gps.location.lat (); gpsData.longitude = gps.location.lng (); } başqa {Serial.println ("Yanlış yer"); } əgər (gps.date.isValid ()) {gpsData.date = gps.date.value (); } başqa {Serial.println ("Yanlış tarix"); } əgər (gps.time.isValid ()) {gpsData.time = gps.time.value (); } başqa {Serial.println ("Yanlış vaxt"); }} void printResults () {Serial.print ("Yer:"); Serial.print (gpsData.latitude, 6); Serial.print (","); Serial. çap (gpsData.longitude, 6); Serial.print ("Tarix:"); Serial.print (gpsData.date); Serial.print ("Zaman:"); 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 (); } başqa {Serial.println ("yox datafile"); }}
(Bu kodu https://www.youtube.com/embed/xz1ix76U28E videoda danışırıq)
Addım 4: GPS məlumatlarının göndərilməsi və saxlanması
Addım 5: Təşəkkürlər
Poçt siyahımıza daxil olun!
1 -ci hissə: Dalğa və İstilik Ölçməsinin aparılması
2 -ci hissə: GPS NRF24 Radio və SD Kart
3 -cü hissə: Şamandıra Güc Planlaması
4 -cü hissə: Şamandıranın yerləşdirilməsi
Tövsiyə:
Ağıllı Masa LED İşığı - Ağıllı İşıqlandırma W/ Arduino - Neopixels İş Sahəsi: 10 Adım (Şəkillərlə birlikdə)
Ağıllı Masa LED İşığı | Ağıllı İşıqlandırma W/ Arduino | Neopixels Çalışma Alanı: İndi günlərimiz evdə çox vaxt keçirir, virtual olaraq oxuyuruq və işləyirik, buna görə də xüsusi və ağıllı işıqlandırma sistemi olan Arduino və Ws2812b LEDləri ilə iş sahəmizi daha da genişləndirməyək. Masa üstü LED işığı
Ağıllı Şamandıra [Xülasə]: 8 addım (şəkillərlə)
Ağıllı Şamandıra [Xülasə]: Hamımız dəniz sahilini sevirik. Bir kollektiv olaraq, tətil üçün, su idmanından zövq almaq və ya dolanışığımızı təmin etmək üçün bura axın edirik. Ancaq sahil dalğaların mərhəmətində olan dinamik bir sahədir. Yüksələn dəniz səviyyələri çimərliklərdə və qasırğa kimi güclü ekstremal hadisələrdə çırpınır
SONOFF Ağıllı Açarları ilə Ağıllı Pərdələri necə DIY etmək olar ?: 14 addım
SONOFF Smart Açarları ilə Ağıllı Panjurları Necə DIY etmək olar?: SONOFF ağıllı açarlarda kilidləmə rejimindən istifadə edərək adi pərdələrinizi/pərdələrinizi ağıllı hala gətirin Çoxlarınız bunun səhərlər pərdələri/pərdələri çəkdiyiniz bir iş olduğunu qəbul edəcəksinizmi? və axşam aşağı çəkin? Hər halda, mən
Ağıllı Zəngli Saat: Raspberry Pi ilə Ağıllı Zəngli Saat: 10 addım (şəkillərlə)
Ağıllı Zəngli Saat: Raspberry Pi ilə Ağıllı Zəngli Saat: Heç ağıllı bir saat istəmisinizmi? Əgər belədirsə, bu sizin üçün bir həlldir! Ağıllı Zəngli Saat hazırladım, bu veb saytına görə zəngli saatını dəyişə biləcəyiniz bir saatdır. Siqnal çalınanda bir səs (zil) olacaq və 2 işıq yanacaq
NRF24 Telemetriya üçün İki Yollu Radio: 9 Addım (Şəkillərlə)
NRF24 Telemetriya üçün İki Yollu Radio: Salam uşaqlar, mənim adım Pedro Castelani və mən sizə ilk təlimatımı gətirirəm: arduino ilə ehtiyacınız olan hər şey üçün iki tərəfli bir radio qurmaq. Bu layihədə biz edəcəyik. həm alıcı, həm də ötürücü rolunu oynayacaq iki ayrı dövrə