İçindekiler:
- Gereçler
- Adım 1: GPS Verilerini Alma
- 2. Adım: GPS Verilerini Radyo Üzerinden Gönderme
- 3. Adım: Bir SD Kart Modülü Kullanarak Verilerin Saklanması
- Adım 4: GPS Verilerini Gönderme ve Saklama
- Adım 5: Teşekkürler
Video: Akıllı Şamandıra [GPS, Radyo (NRF24) ve SD Kart Modülü]: 5 Adım (Resimlerle)
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:17
Bu Akıllı Şamandıra serisi, kullanıma hazır ürünler kullanarak deniz hakkında anlamlı ölçümler yapabilen bilimsel bir şamandıra inşa etme (iddialı) girişimimizi gösteriyor. Bu, dörtte iki öğreticidir - güncel olduğunuzdan emin olun ve projeye hızlı bir girişe ihtiyacınız varsa, özetimize göz atın.
Bölüm 1: Dalga ve sıcaklık ölçümlerinin yapılması
Bu eğitimde size GPS verilerini nasıl alacağınızı, bir SD kartta nasıl saklayacağınızı ve radyo kullanarak bir yere nasıl göndereceğinizi gösteriyoruz.
Bunu, denizdeki Şamandıramızın yerini takip edebilmek için yaptık. Radyo, uzaktan izleyebileceğimiz anlamına gelir ve SD kart, bir ihtimal bir şey bozulursa ve bir gezintiye çıkarsa, planlanmamış gezisi sırasında topladığı verileri indirebileceğimiz anlamına gelir - eğer geri alabilirsek!
Gereçler
GPS modülü - Amazon
SD kart modülü - Amazon
SD kart - Amazon
2 X Radyo modülü (NRF24L01+) - Amazon
2 X Arduino - Amazon
Adım 1: GPS Verilerini Alma
Akıllı şamandıra, denizde otururken GPS konumu ve tarih saati de dahil olmak üzere sensör ölçümleri yapar. Devreyi nasıl kurduğumuzu gösteren şemaya bir göz atın. GPS modülü seri bağlantı yoluyla iletişim kurar, bu nedenle onunla iletişim kurmak için Arduino yazılım seri kitaplığının yanı sıra küçük GPS kitaplığını da kullanıyoruz. Bu kütüphaneler her şeyi süper basit hale getirir. Sizi kodun üzerinden geçirelim…
#Dahil etmek
#include // TinyGPS++ nesnesi TinyGPSPlus gps; // GPS cihazına seri bağlantı SoftwareSerial ss(4, 3); struct dataStruct{ çift enlem; çift boylam; imzasız uzun tarih; imzasız uzun süre; }gpsData; geçersiz kurulum(){ Serial.begin(115200); ss.başla(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("Geçersiz konum"); } if (gps.date.isValid()){ gpsData.date = gps.date.value(); } else{ Serial.println("Geçersiz tarih"); } if (gps.time.isValid()){ gpsData.time = gps.time.value(); } else{ Serial.println("Geçersiz zaman"); } } void printResults(){ Serial.print("Yer: "); Serial.print(gpsData.latitude, 6); Seri.print(", "); Serial.print(gpsData.boylam, 6); Serial.print(" Tarih: "); Serial.print(gpsData.date); Serial.print(" Zaman: "); Serial.print(gpsData.time); Seri.println(); }
(Bu kod için https://www.youtube.com/embed/xz1ix76U28E adresindeki videoyu izleyin)
2. Adım: GPS Verilerini Radyo Üzerinden Gönderme
Diyelim ki şamandıra denizde ölçüm yapıyor ama biz ayaklarımızı ıslatmadan veya şamandırayı karaya çıkarmadan verileri görmek istiyoruz. Ölçümleri uzaktan almak için, iletişimin her iki tarafında bir Arduino'ya bağlı bir radyo modülü kullanıyoruz. Gelecekte, alıcı tarafı Arduino'yu bir ahududu pi ile değiştireceğiz. Telsiz, bu iki arabirimle de benzer şekilde çalışır, dolayısıyla bunları değiştirmek oldukça basittir.
Telsiz modülü, I2C'den birkaç bağlantı daha gerektiren ancak NRF24 kitaplığı nedeniyle kullanımı gerçekten çok kolay olan SPI kullanarak iletişim kurar. Sensör ölçümleri için GPS modülünü kullanarak verilerini bir Arduino'dan diğerine aktarıyoruz. GPS ve radyo modülünü Arduino'ya ve diğer tarafta radyo modülü ile bir Arduino'ya bağlayacağız - şemaya bir göz atın.
verici
#Dahil etmek
#include #include #include #include TinyGPSPlus gps; YazılımSeri ss(4, 3); RF24 telsiz(8, 7); // CE, CSN struct dataStruct{ double latitude; çift boylam; imzasız uzun tarih; imzasız uzun süre; }gpsData; geçersiz kurulum() { Serial.begin(115200); ss.başla(9600); Serial.println("Radyo kurulumu"); // verici radyo radyosunu kurun.begin(); radio.openWritingPipe(0xF0F0F0F0E1LL); radio.setChannel(0x76); radio.setPALevel(RF24_PA_MAX); radio.setDataRate(RF24_250KBPS); radyo.stopListening(); radio.enableDynamicPayloads(); radyo.powerUp(); Serial.println("Gönderilmeye Başlanıyor"); } 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(); } başka{ gpsData.longitude = 0.0; gpsData.latitude = 0.0; } if (gps.date.isValid()){ gpsData.date = gps.date.value(); } başka{ gpsData.date = 0; } if (gps.time.isValid()){ gpsData.time = gps.time.value(); } başka{ gpsData.time = 0; } }
ALICI
#Dahil etmek
#include #include RF24 radyo (8, 7); // CE, CSN struct dataStruct{ double latitude; çift boylam; imzasız uzun tarih; imzasız uzun süre; }gpsData; geçersiz kurulum() { Serial.begin(115200); // Alıcı radyo radyosunu kurun.begin(); radio.openReadingPipe(1, 0xF0F0F0F0E1LL); radio.setChannel(0x76); radio.setPALevel(RF24_PA_MAX); radio.setDataRate(RF24_250KBPS); radio.startListening(); radio.enableDynamicPayloads(); radyo.powerUp(); } void loop() { if (radio.available()) { radio.read(&gpsData, sizeof(gpsData)); Serial.print("Yer: "); Serial.print(gpsData.latitude, 6); Seri.print(", "); Serial.print(gpsData.boylam, 6); Serial.print(" Tarih: "); Serial.print(gpsData.date); Serial.print(" Zaman: "); Serial.print(gpsData.time); Seri.println();} }
(Bu kod için https://www.youtube.com/embed/xz1ix76U28E adresindeki videoyu izleyin)
3. Adım: Bir SD Kart Modülü Kullanarak Verilerin Saklanması
Telsiz modülü oldukça güvenilirdir, ancak bazen alıcı tarafında bir elektrik kesintisi olması veya telsizin menzil dışına çıkması durumunda bir acil durum planına ihtiyaç duyarsınız. Acil durum planımız, topladığımız verileri saklamamızı sağlayan bir SD kart modülüdür. Toplanan veri miktarı o kadar büyük değil, bu nedenle küçük bir SD kart bile bir günlük veriyi kolayca depolayabilir.
#Dahil etmek
#include #include #include TinyGPSPlus gps; YazılımSeri ss(4, 3); struct dataStruct{ çift enlem; çift boylam; imzasız uzun tarih; imzasız uzun süre; }gpsData; geçersiz kurulum() { Serial.begin(115200); ss.başla(9600); if (!SD.begin(5)) { Serial.println("Kart başarısız veya mevcut değil"); dönüş; } Serial.println("kart başlatıldı."); Dosya dataFile = SD.open("gps_data.csv", FILE_WRITE); if (dataFile) { dataFile.println("Enlem, Boylam, Tarih, Saat"); dataFile.close(); } else{ Serial.println("hayır dosyayı açamıyor"); } } 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("Geçersiz konum"); } if (gps.date.isValid()){ gpsData.date = gps.date.value(); } else{ Serial.println("Geçersiz tarih"); } if (gps.time.isValid()){ gpsData.time = gps.time.value(); } else{ Serial.println("Geçersiz zaman"); } } void printResults(){ Serial.print("Yer: "); Serial.print(gpsData.latitude, 6); Seri.print(", "); Serial.print(gpsData.boylam, 6); Serial.print(" Tarih: "); Serial.print(gpsData.date); Serial.print(" Zaman: "); Serial.print(gpsData.time); Seri.println(); } void saveInfo(){ Dosya dataFile = SD.open("gps_data.csv", FILE_WRITE); if (dataFile) { dataFile.print(gpsData.latitude); dataFile.print(", "); dataFile.print(gpsData.boylam); dataFile.print(", "); dataFile.print(gpsData.date); dataFile.print(", "); dataFile.println(gpsData.time); dataFile.close(); } else{ Serial.println("nope no datafile"); } }
(https://www.youtube.com/embed/xz1ix76U28E videoda bu kodu konuşuyoruz)
Adım 4: GPS Verilerini Gönderme ve Saklama
Adım 5: Teşekkürler
Mail Listemize Kaydolun!
Bölüm 1: Dalga ve Sıcaklık Ölçümü Yapmak
Bölüm 2: GPS NRF24 Radyo ve SD Kartı
Bölüm 3: Şamandıra Gücünün Programlanması
Bölüm 4: Şamandırayı Yerleştirme
Önerilen:
Akıllı Masa LED Işık - Arduino ile Akıllı Aydınlatma - Neopiksel Çalışma Alanı: 10 Adım (Resimlerle)
Akıllı Masa LED Işık | Arduino ile Akıllı Aydınlatma | Neopixels Çalışma Alanı: Artık evde çok fazla zaman geçirdiğimiz, sanal olarak çalıştığımız ve çalıştığımız bir gün, öyleyse neden çalışma alanımızı özel ve akıllı bir aydınlatma sistemi Arduino ve Ws2812b LED'leri ile büyütmeyelim. Burada size Smart'ınızı nasıl oluşturacağınızı gösteriyorum. Masa LED Işık o
Kullanılmayan Akıllı Telefonu Akıllı Ekrana Dönüştürün: 6 Adım (Resimlerle)
Kullanılmayan bir Akıllı Telefonu Akıllı Ekrana Dönüştürün: Deze öğreticisi, Hollanda'da çok iyi. Kullanılmayan (eski) bir akıllı telefonunuz var mı? Bu kolay adım adım öğreticiyi izleyerek Google E-Tablolar ve biraz kağıt kalem kullanarak akıllı bir ekrana dönüştürün. Bitirdiğinizde
Akıllı Şamandıra [Özet]: 8 Adım (Resimlerle)
Akıllı Şamandıra [Özet]: Hepimiz deniz kıyısını severiz. Toplu olarak tatil yapmak, su sporları yapmak ya da geçimimizi sağlamak için akın ediyoruz. Ancak sahil, dalgaların insafına kalmış dinamik bir alandır. Yükselen deniz seviyeleri kumsalları kemiriyor ve kasırga gibi güçlü ekstrem olaylar
RDS (Radyo Metni), BT Kontrol ve Şarj Tabanlı FM Radyo: 5 Adım
RDS (Radyo Metni), BT Kontrol ve Şarj Tabanlı FM Radyo: Bonjour, Bu benim ikinci "Eğitilebilir Öğelerim". Çok kullanışlı olmayan şeyler yapmayı sevdiğim için, işte son projem: Bluetooth ve Android APP aracılığıyla izlenebilen bir şarj tabanıBu nedenle ben
Akıllı Telefonla ESP8266 Tabanlı Sonoff Temel Akıllı Anahtar Nasıl Kontrol Edilir: 4 Adım (Resimlerle)
Akıllı Telefonla ESP8266 Tabanlı Sonoff Temel Akıllı Anahtar Nasıl Kontrol Edilir: Sonoff, ITEAD tarafından geliştirilen Akıllı Ev için bir cihaz hattıdır. Bu hattaki en esnek ve ucuz cihazlardan biri Sonoff Basic. Harika bir çip olan ESP8266'yı temel alan Wi-Fi özellikli bir anahtardır. Bu makale, Cl'nin nasıl kurulacağını açıklar