İçindekiler:
- Adım 1: Malzeme Listesi
- Adım 2: DS18B20 Sıcaklık Sensörü
- Adım 3: Sensörleri NodeMCU'ya Bağlama
- Adım 4: Uygun Kitaplıkları Yükleme
- Adım 5: Sensörleri Test Etme
- 6. Adım: Blynk'i Kullanma
- 7. Adım: Sonuç
Video: IoT Basitleştirildi: Birden Fazla Sensörü İzleme: 7 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:20
Birkaç hafta önce burada, 1 Kablolu bir veri yolu üzerinden iletişim kuran ve NodeMCU ve Blynk ile internet üzerinden veri gönderen bir dijital sensör olan DS18B20 kullanarak sıcaklığın izlenmesi hakkında bir eğitim yayınladım:
IoT Basitleştirildi: Her Yerde Sıcaklığı İzleme
Ancak keşifte gözden kaçırdığımız şey, aynı 1 kablolu veri yoluna bağlı birden fazla sensörden birden fazla veri toplama olasılığı olan bu tür bir sensörün en büyük avantajlarından biriydi. Ve şimdi onu da keşfetme zamanı.
Biri Celcius'ta, diğeri Fahrenheit'te yapılandırılmış iki DS18B20 sensörünü izleyerek, son eğitimde geliştirilenleri genişleteceğiz. Veriler, yukarıdaki blok şemada gösterildiği gibi bir Blynk Uygulamasına gönderilecektir.
Adım 1: Malzeme Listesi
- NodeMCU ESP 12-E (*)
- 2 X DS18B20 Sıcaklık Sensörü
- Direnç 4.7K Ohm
- ekmek tahtası
- kablolama
(*) Burada her türlü ESP cihazı kullanılabilir. En yaygın olanları NodeMCU V2 veya V3'tür. Her ikisi de her zaman iyi çalışacaktır.
Adım 2: DS18B20 Sıcaklık Sensörü
Bu eğitimde DS18B20 sensörünün su geçirmez bir versiyonunu kullanacağız. Islak koşullarda, örneğin nemli bir toprakta, uzaktan sıcaklık için çok kullanışlıdır. Sensör izolelidir ve 125oC'ye kadar ölçüm yapabilir (Adafrut, kablo PVC kılıfından dolayı 100oC'nin üzerinde kullanılmasını önermez).
DS18B20, uzun mesafelerde bile kullanmayı iyi yapan bir dijital sensördür! Bu 1 kablolu dijital sıcaklık sensörleri oldukça hassastır (aralığın çoğunda ±0,5°C) ve yerleşik dijital-analog dönüştürücüden 12 bite kadar hassasiyet verebilir. Tek bir dijital pin kullanarak NodeMCU ile harika çalışırlar ve hatta birden çok pini aynı pine bağlayabilirsiniz, her birinin ayırt etmek için fabrikada yakılan benzersiz bir 64-bit kimliği vardır.
Sensör 3.0 ila 5.0V arasında çalışır, bu da doğrudan 3.3V NodeMCU pinlerinden birinden güç alabileceği anlamına gelir.
Sensörün 3 kablosu vardır:
- Siyah: GND
- Kırmızı: VCC
- Sarı: 1-Kablolu Veri
Burada tüm verileri bulabilirsiniz: DS18B20 Datasheet
Adım 3: Sensörleri NodeMCU'ya Bağlama
- Yukarıdaki fotoğrafta gösterildiği gibi mini Breadboard'daki her sensörden gelen 3 kabloyu bağlayın. Sensörün kablosunu daha iyi sabitlemek için özel konektörler kullandım.
-
Her iki sensörün de paralel olduğunu unutmayın. 2'den fazla sensörünüz varsa, aynısını yapmalısınız.
- Kırmızı ==> 3.3V
- Siyah ==> GND
- Sarı ==> D4
- VCC (3.3V) ve Data (D4) arasında 4,7K ohm'luk bir direnç kullanın
Adım 4: Uygun Kitaplıkları Yükleme
DS18B20'yi düzgün kullanmak için iki kitaplık gerekli olacaktır:
- Tek Tel
- DallasSıcaklık
Her iki kitaplığı da Arduino IDE Kitaplığı deponuza kurun.
OneWire kitaplığının ESP8266 ile kullanılmak üzere değiştirilmiş özel kitap olması ZORUNLUDUR, aksi takdirde derleme sırasında bir hata alırsınız. Son sürümü yukarıdaki bağlantıda bulacaksınız.
Adım 5: Sensörleri Test Etme
Sensörleri test etmek için GitHub'ımdan aşağıdaki dosyayı indirin:
NodeMCU_DS18B20_Dual_Se nsor_test.ino
/**************************************************************
* Çoklu Sıcaklık Gönderici Testi * * 2 x OneWire Sensör: DS18B20 * NodeMCU D4'e (veya Arduino Pin 2) bağlı * * Marcelo Rovai tarafından geliştirildi - 25 Ağustos 2017 **************** **********************************************/ #Dahil etmek # dahil #define ONE_WIRE_BUS 2 // NodeMCU pin D4 üzerinde DS18B20 OneWire oneWire(ONE_WIRE_BUS); DallasSıcaklık DS18B20(&oneWire); geçersiz kurulum() { Serial.begin(115200); DS18B20.begin(); Serial.println("İkili Sensör verilerinin test edilmesi"); } geçersiz döngü() { kayan nokta temp_0; kayan sıcaklık_1; DS18B20.requestSıcaklıklar(); temp_0 = DS18B20.getTempCByIndex(0); // Sensör 0, Celcius temp_1 = DS18B20.getTempFByIndex(1); // Sensör 0, Fahrenheit Serial.print("Temp_0: "); Seri.print(temp_0); Serial.print(" oC. Temp_1: "); Serial.print(temp_1); Serial.println("oF"); gecikme(1000); }
Yukarıdaki koda baktığımızda, en önemli satırların şunlar olduğunu fark etmeliyiz:
temp_0 = DS18B20.getTempCByIndex(0); // Sensör 0, Celcius'ta Temp'i yakalayacak
temp_1 = DS18B20.getTempFByIndex(1); // Sensör 0, Sıcaklığı Fahrenhayt cinsinden yakalayacak
Birincisi, Celcius'taki Sensör [0]'dan bir değer döndürür ("index(0)" e bakın) (kodun kısmına bakın: "getTempC". İkinci satır Sensör[1] ile ilgilidir ve veri döndürür) Fahrenheit'te Her biri için farklı bir "endeks"e sahip olduğunuz için burada "n" sensöre sahip olabilirsiniz.
NodeMCU'nuzdaki kodu şimdi yükleyin ve Seri Monitörü kullanarak sıcaklığı izleyin.
Yukarıdaki fotoğraf beklenen sonucu göstermektedir. Sensörlerin her birini elinizde tutun, sıcaklığın arttığını görmelisiniz.
6. Adım: Blynk'i Kullanma
Sıcaklık verilerini yakalamaya başladığınızda, bunları her yerden görmenin zamanı geldi. Bunu Blynk kullanarak yapacağız. Böylece, yakalanan tüm veriler mobil cihazınızda gerçek zamanlı olarak gösterilecek ve ayrıca bunun için bir geçmiş depo oluşturacağız.
Aşağıdaki adımları izleyin:
- Yeni Bir Proje Oluşturun.
- Bir isim verin (benim durumumda "Çift Sıcaklık Monitörü")
- Yeni Cihaz - ESP8266(WiFi) öğesini "Cihazlarım" olarak seçin
- Kodda kullanılacak AUTH TOKEN'i kopyalayın (e-postanıza gönderebilirsiniz).
-
Aşağıdakileri tanımlayan iki "Gösterge" Widget'ı içerir:
- Her sensörle kullanılacak sanal pin: V10 (Sensör[0]) ve V11 (Sensör[1])
- Sıcaklık aralığı: Sensör [0] için -5 ila 100 oC
- Sıcaklık aralığı: Sensör [1] için 25 ila 212 oC
- Veri okuma sıklığı: 1 saniye
- V10 ve V11'i sanal pinler olarak tanımlayan bir "Geçmiş Grafiği" Widget'ı içerir
- "Oynat" a basın (sağ üst köşedeki üçgen)
Elbette, Blynk Uygulaması size NodeMCU'nun çevrimdışı olduğunu söyleyecektir. Kodun tamamını Arduino IDE'nize yükleme zamanı. Buradan alabilirsiniz:
NodeMCU_Dual_Sensor_Blynk_Ext.ino
"Sahte verileri" kendi kimlik bilgilerinizle değiştirin.
/* Blynk kimlik bilgileri */
char auth = "BLYNK YETKİ KODUNUZ BURADA"; /* WiFi kimlik bilgileri */ char ssid = "SSID'İNİZ"; char pass = "ŞİFRENİZ";
Ve bu kadar!
Tam kodun altında. Temel olarak, Blynk parametreleri ve belirli işlevlerle girdiğimiz önceki koddur. Kodun son 2 satırını not edin. Buradakiler en önemlileri. Veri toplayan daha fazla sensörünüz varsa, bunlara eşdeğer yeni hatlara da sahip olmalısınız (ilgili yeni sanal pinler tanımlı).
/**************************************************************
* Blynk ile IoT Çoklu Sıcaklık Monitörü * Blynk kitaplığı MIT lisansı ile lisanslanmıştır * Bu örnek kod kamu malıdır. * * Çoklu OneWire Sensör: DS18B20 * Marcelo Rovai tarafından geliştirildi - 25 Ağustos 2017 *************************************** ******************************/ /* ESP & Blynk */ #include #include #define BLYNK_PRINT Seri // Bunu şuraya yorumlayın baskıları devre dışı bırakın ve yerden tasarruf edin /* Blynk kimlik bilgileri */ char auth = "BLYNK YETKİ KODUNUZ BURADA"; /* WiFi kimlik bilgileri */ char ssid = "SSID'İNİZ"; char pass = "ŞİFRENİZ"; /* ZAMANLAYICI */ #include SimpleTimer zamanlayıcı; /* DS18B20 Sıcaklık Sensörü */ #include #include #define ONE_WIRE_BUS 2 // arduino pin2 üzerindeki DS18B20, fiziksel kart üzerindeki D4'e karşılık gelir OneWire oneWire(ONE_WIRE_BUS); DallasSıcaklık DS18B20(&oneWire); int temp_0; int temp_1; geçersiz kurulum() { Serial.begin(115200); Blynk.begin(auth, ssid, pass); DS18B20.begin(); timer.setInterval(1000L, getSendData); Seri.println(" "); Serial.println("İkili Sensör verilerinin test edilmesi"); } geçersiz döngü() { timer.run(); // SimpleTimer Blynk.run()'u başlatır; } /******************************************************* *** * Sensör verilerini Blynk'e gönder ********************************************** *********/ geçersiz getSendData() { DS18B20.requestTemperatures(); temp_0 = DS18B20.getTempCByIndex(0); // Sensör 0, Celcius temp_1 = DS18B20.getTempFByIndex(1); // Sensör 0, Fahrenheit Serial.print("Temp_0: "); Seri.print(temp_0); Serial.print(" oC. Temp_1: "); Seri.print(temp_1); Serial.println("oF"); Blynk.virtualWrite(10, temp_0); //sanal pin V10 Blynk.virtualWrite(11, temp_1); //sanal pin V11 }
Kod yüklenip çalıştırıldıktan sonra Blynk uygulamasını kontrol edin. Şimdi, iPhone'umdan yukarıdaki yazdırma ekranında gösterildiği gibi çalışıyor olmalıdır.
7. Adım: Sonuç
Her zaman olduğu gibi, umarım bu proje diğerlerinin heyecan verici elektronik, robotik ve IoT dünyasında yollarını bulmalarına yardımcı olabilir!
Güncellenmiş dosyalar için lütfen GitHub'ımı ziyaret edin: NodeMCU Dual Temp Monitor
Daha fazla proje için lütfen blogumu ziyaret edin: MJRoBot.org
Dünyanın güneyinden selamlar!
Bir sonraki talimatımda görüşürüz!
Teşekkürler, Marcelo
Önerilen:
Arduino Birden Fazla Servo Motor Nasıl Bağlanır - PCA9685 Eğitimi: 6 Adım
Arduino Çoklu Servo Motorlar Nasıl Bağlanır - PCA9685 Eğitimi: Bu dersimizde PCA9685 modülünü ve arduino kullanarak birkaç servo motorun nasıl bağlanacağını öğreneceğiz. Birkaç motor bağlamanız gerektiğinde PCA9685 modülü çok iyidir, bununla ilgili daha fazla bilgiyi buradan okuyabilirsiniz https ://www.adafruit.com/product/815Videoyu İzle
Birden Fazla LED'i Python ve Raspberry Pi'nizin GPIO Pinleriyle Kontrol Etme: 4 Adım (Resimlerle)
Python ve Raspberry Pi'nizin GPIO Pinleriyle Birden Fazla LED'i Kontrol Etme: Bu Talimat, 4 LED'e güç sağlamak için RaspberryPi'nizdeki birden fazla GPIO pinini nasıl kontrol edeceğinizi gösterir. Ayrıca, size Python'daki parametreleri ve koşullu ifadeleri tanıtacaktır. Raspberry Pi'nizin GPIO Pinlerini Bağlamak İçin Kullanan Önceki Talimatımız
4'ten Fazla Motor Kullanma - Birden Fazla Motor Kalkanını İstifleme: 3 Adım
4'ten Fazla Motor Kullanma - Birden Fazla Motor Kalkanını İstifleme: Eğitilebilir Vibrotactile Duyusal Yer Değiştirme ve Artırma Cihazı (https://www.instructables.com/id/Vibrotactile-Sens…) titreşimli uyaranlara giriş. Bu titreşimli uyaranlar p
BİRDEN FAZLA SENSÖRÜ BİR ARDUINO UNO SERİ PORTUNA BAĞLAMA: 4 Adım
BİRDEN FAZLA SENSÖRÜ BİR ARDUINO UNO SERİ PORTUNA BAĞLAMA: Bu eğitimde, birden fazla Atlas sensörünün bağlanabilmesi için tek bir Arduino UNO UART (Rx/Tx) seri portunu genişleteceğiz. Genişletme, 8:1 Seri Bağlantı Noktası Genişletici kartı kullanılarak yapılır. Arduino'nun bağlantı noktası, aşağıdakilerden sonra genişleticiye bağlanır
BİRDEN FAZLA SENSÖRÜ RASPBERRY PI'YE BAĞLAMA: 6 Adım (Resimlerle)
BİRDEN FAZLA SENSÖRÜ RASPBERRY PI'YE BAĞLAMA: Bu projede, Atlas Scientific'in üç EZO sensörünü (pH, çözünmüş oksijen ve sıcaklık) bir Raspberry Pi 3B+'ya bağlayacağız. Devreleri Raspberry Pi'ye bağlamak yerine Whitebox Labs Tentacle T3 kalkanını kullanacağız. T