İçindekiler:

IoT Basitleştirildi: Birden Fazla Sensörü İzleme: 7 Adım
IoT Basitleştirildi: Birden Fazla Sensörü İzleme: 7 Adım

Video: IoT Basitleştirildi: Birden Fazla Sensörü İzleme: 7 Adım

Video: IoT Basitleştirildi: Birden Fazla Sensörü İzleme: 7 Adım
Video: Keşke Daha Önce Öğrenseydik Dediğimiz Zaman Kazandıran 14 Bilgisayar Tüyosu 2024, Kasım
Anonim
IoT Basitleştirildi: Birden Fazla Sensörü İzleme
IoT Basitleştirildi: Birden Fazla Sensörü İzleme
IoT Basitleştirildi: Birden Fazla Sensörü İzleme
IoT Basitleştirildi: Birden Fazla Sensörü İzleme

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ü

DS18B20 Sıcaklık Sensörü
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

Sensörleri NodeMCU'ya Bağlama
Sensörleri NodeMCU'ya Bağlama
  1. 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.
  2. 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
  3. 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:

  1. Tek Tel
  2. 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 Etme
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

Blynk'i kullanma
Blynk'i kullanma
Blynk'i kullanma
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:

  1. Yeni Bir Proje Oluşturun.
  2. Bir isim verin (benim durumumda "Çift Sıcaklık Monitörü")
  3. Yeni Cihaz - ESP8266(WiFi) öğesini "Cihazlarım" olarak seçin
  4. Kodda kullanılacak AUTH TOKEN'i kopyalayın (e-postanıza gönderebilirsiniz).
  5. 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
  6. V10 ve V11'i sanal pinler olarak tanımlayan bir "Geçmiş Grafiği" Widget'ı içerir
  7. "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ç

Çözüm
Çözüm

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: