Mündəricat:

Ağıllı Şamandıra [GPS, Radio (NRF24) və SD Kart Modulu]: 5 addım (şəkillərlə)
Ağıllı Şamandıra [GPS, Radio (NRF24) və SD Kart Modulu]: 5 addım (şəkillərlə)

Video: Ağıllı Şamandıra [GPS, Radio (NRF24) və SD Kart Modulu]: 5 addım (şəkillərlə)

Video: Ağıllı Şamandıra [GPS, Radio (NRF24) və SD Kart Modulu]: 5 addım (şəkillərlə)
Video: CS50 2015 – неделя 1, продолжение 2024, Iyul
Anonim
Image
Image

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

Radio ilə GPS Məlumatlarının Göndərilməsi
Radio ilə GPS Məlumatlarının Göndərilməsi

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

Radio ilə GPS Məlumatlarının Göndərilməsi
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ı

SD Kart Modulu ilə Məlumatların Saxlanması
SD Kart Modulu ilə 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ı

GPS məlumatlarının göndərilməsi və saxlanması
GPS məlumatlarının göndərilməsi və saxlanması
GPS məlumatlarının göndərilməsi və saxlanması
GPS məlumatlarının göndərilməsi və saxlanması

Addım 5: Təşəkkürlər

Təşəkkürlər!
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ə: