Obsah:

Jednoduché IoT: Monitorování více senzorů: 7 kroků
Jednoduché IoT: Monitorování více senzorů: 7 kroků

Video: Jednoduché IoT: Monitorování více senzorů: 7 kroků

Video: Jednoduché IoT: Monitorování více senzorů: 7 kroků
Video: ANDROID MÁ JEDNO SKRYTÉ NASTAVENÍ 🤖 2024, Červenec
Anonim
Jednoduché IoT: Monitorování více senzorů
Jednoduché IoT: Monitorování více senzorů
Jednoduché IoT: Monitorování více senzorů
Jednoduché IoT: Monitorování více senzorů

Před několika týdny jsem zde zveřejnil návod k monitorování teploty pomocí DS18B20, digitálního senzoru, který komunikuje po sběrnici 1-Wire a odesílá data přes internet pomocí NodeMCU a Blynk:

Jednoduché IoT: Monitorování teploty kdekoli

Co jsme ale při průzkumu postrádali, byla jedna z velkých výhod tohoto druhu senzoru, kterou je možnost shromažďování více dat z více senzorů připojených ke stejné 1vodičové sběrnici. A teď je na čase to také prozkoumat.

Rozšíříme to, co bylo vyvinuto v minulém tutoriálu, nyní monitorujeme dva senzory DS18B20, nakonfigurovaný jeden v Celciusu a druhý ve Fahrenheitu. Data budou odeslána do aplikace Blynk, jak ukazuje výše uvedený blokový diagram.

Krok 1: Kusovník

  • NodeMCU ESP 12-E (*)
  • 2 x snímač teploty DS18B20
  • Rezistor 4,7K Ohmů
  • BreadBoard
  • Elektrické vedení

(*) Zde lze použít jakýkoli typ zařízení ESP. Nejběžnější jsou NodeMCU V2 nebo V3. Obojí bude vždy fungovat dobře.

Krok 2: Snímač teploty DS18B20

Snímač teploty DS18B20
Snímač teploty DS18B20

V tomto tutoriálu použijeme vodotěsnou verzi senzoru DS18B20. Je velmi užitečný pro vzdálenou teplotu ve vlhkých podmínkách, například na vlhké půdě. Senzor je izolovaný a může provádět měření až do 125 ° C (Adafrut nedoporučuje používat jej přes 100 ° C kvůli kabelovému plášti z PVC).

DS18B20 je digitální senzor, díky kterému je dobré jej používat i na velké vzdálenosti! Tyto 1vodičové digitální snímače teploty jsou poměrně přesné (± 0,5 ° C ve velké části rozsahu) a z integrovaného převodníku digitálního signálu na analogový mohou poskytnout přesnost až 12 bitů. Fungují skvěle s NodeMCU pomocí jediného digitálního pinu a dokonce můžete připojit více ke stejnému pinu, každý z nich má v továrně vypálené jedinečné 64bitové ID, které je odlišuje.

Senzor pracuje od 3,0 do 5,0 V, což znamená, že může být napájen přímo z jednoho z 3,3 V pinů NodeMCU.

Senzor má 3 vodiče:

  • Černá: GND
  • Červená: VCC
  • Žlutá: 1vodičová data

Zde najdete úplná data: DS18B20 Datasheet

Krok 3: Připojení senzorů k NodeMCU

Připojení senzorů k NodeMCU
Připojení senzorů k NodeMCU
  1. Připojte 3 vodiče z každého senzoru na mini Breadboard, jak je znázorněno na výše uvedené fotografii. Pomocí speciálních konektorů jsem na něj lépe upevnil kabel senzoru.
  2. Všimněte si, že oba senzory jsou paralelně. Pokud máte více než 2 senzory, měli byste udělat to samé.

    • Červená ==> 3,3V
    • Černá ==> GND
    • Žlutá ==> D4
  3. Mezi VCC (3,3 V) a Data (D4) použijte odpor 4,7 K ohmů

Krok 4: Instalace přivlastněných knihoven

Aby bylo možné DS18B20 používat správně, budou nutné dvě knihovny:

  1. OneWire
  2. Teplota v Dallasu

Nainstalujte obě knihovny do svého depozitáře knihovny Arduino IDE.

Všimněte si, že knihovna OneWire MUSÍ být speciální, upravená pro použití s ESP8266, jinak během kompilace dojde k chybě. Poslední verzi najdete na výše uvedeném odkazu.

Krok 5: Testování senzorů

Testování senzorů
Testování senzorů

Pro testování senzorů si stáhněte níže uvedený soubor z mého GitHubu:

NodeMCU_DS18B20_Dual_Se nsor_test.ino

/**************************************************************

*Test snímače teploty pro více teplot**2 x senzor OneWire: DS18B20*Připojeno k NodeMCU D4 (nebo Arduino Pin 2)**Vyvinuto Marcelo Rovai - 25. srpna 2017 ***************** **********************************************/ #zahrnout # zahrnout #define ONE_WIRE_BUS 2 // DS18B20 na pinu NodeMCU D4 OneWire oneWire (ONE_WIRE_BUS); DallasTemperature DS18B20 (& oneWire); neplatné nastavení () {Serial.begin (115200); DS18B20.begin (); Serial.println („Testování dat duálních senzorů“); } void loop () {float temp_0; float temp_1; DS18B20.requestTemperatures (); temp_0 = DS18B20.getTempCByIndex (0); // Senzor 0 zachytí Temp v Celcius temp_1 = DS18B20.getTempFByIndex (1); // Senzor 0 zachytí Temp ve Fahrenheit Serial.print ("Temp_0:"); Serial.print (temp_0); Serial.print ("oC. Temp_1:"); Serial.print (temp_1); Serial.println ("oF"); zpoždění (1000); }

Při pohledu na výše uvedený kód bychom si měli všimnout, že nejdůležitější řádky jsou:

temp_0 = DS18B20.getTempCByIndex (0); // Senzor 0 zachytí Temp v Celcius

temp_1 = DS18B20.getTempFByIndex (1); // Senzor 0 zachytí teplotu ve stupních Fahrenheita

První vrátí hodnotu ze senzoru [0] (podívejte se na "index (0)") v Celciusu (podívejte se na část kódu: "getTempC". Druhý řádek souvisí se senzorem [1] a vrátí data Zde můžete mít „n“senzory, protože pro každý z nich máte jiný „index“.

Nyní nahrajte kód do svého NodeMCU a sledujte teplotu pomocí sériového monitoru.

Výše uvedená fotografie ukazuje očekávaný výsledek. Držte každý ze senzorů v ruce, měli byste vidět, jak teplota stoupá.

Krok 6: Použití Blynku

Pomocí Blynka
Pomocí Blynka
Pomocí Blynka
Pomocí Blynka

Jakmile začnete zaznamenávat údaje o teplotě, je čas je vidět odkudkoli. Uděláme to pomocí Blynka. Všechna zachycená data se tedy budou zobrazovat v reálném čase na vašem mobilním zařízení a také pro to postavíme historický depozitář.

Postupujte podle následujících kroků:

  1. Vytvořit nový projekt.
  2. Pojmenujte jej (v mém případě „Monitor duální teploty“)
  3. Vyberte „Nové zařízení - ESP8266 (WiFi) jako„ Moje zařízení “
  4. Zkopírujte AUTH TOKEN, který bude použit v kódu (můžete jej poslat na váš e -mail).
  5. Obsahuje dva widgety „Gauge“, které definují:

    • Virtuální pin, který bude použit s každým senzorem: V10 (senzor [0]) a V11 (senzor [1])
    • Teplotní rozsah: -5 až 100 oC pro senzor [0]
    • Teplotní rozsah: 25 až 212 oC pro senzor [1]
    • Frekvence čtení dat: 1 sekunda
  6. Obsahuje widget „Graf historie“, definující V10 a V11 jako virtuální piny
  7. Stiskněte „Play“(trojúhelník v pravém horním rohu)

Aplikace Blynk vám samozřejmě oznámí, že NodeMCU je offline. Je čas nahrát celý kód do vašeho Arduino IDE. Můžete ho získat zde:

NodeMCU_Dual_Sensor_Blynk_Ext.ino

Změňte „fiktivní data“pomocí vlastních přihlašovacích údajů.

/ * Blynk pověření */

char auth = "VAŠE KÓD AUTHY BLYNK ZDE"; / * Pověření WiFi */ char ssid = "VAŠE SSID"; char pass = "VAŠE HESLO";

A to je vše!

Mějte plný kód. Je to v podstatě předchozí kód, kam jsme vstupovali s parametry Blynk a konkrétními funkcemi. Všimněte si 2 posledních řádků kódu. Ty jsou zde nejdůležitější. Pokud máte více senzorů shromažďujících data, měli byste mít také ekvivalentní nové řádky jako ty (s definovanými příslušnými novými virtuálními piny).

/**************************************************************

* IoT Multiple Temperature Monitor with Blynk * Knihovna Blynk je licencována pod licencí MIT * Tento příklad kódu je public domain. **Více senzorů OneWire: DS18B20*Vyvinuto Marcelo Rovai - 25. srpna 2017 ************************** ******************************//*ESP & Blynk*/ #include #include #define BLYNK_PRINT Sériové // Komentovat zakázat výtisky a ušetřit místo / * pověření Blynk * / char auth = "VAŠE KÓD AUTHY BLYNK ZDE"; / * Pověření WiFi */ char ssid = "VAŠE SSID"; char pass = "VAŠE HESLO"; / * TIMER */ #include Časovač SimpleTimer; / * Teplotní senzor DS18B20 */ #include #include #define ONE_WIRE_BUS 2 // DS18B20 na arduino pin2 odpovídá D4 na fyzické desce OneWire oneWire (ONE_WIRE_BUS); DallasTemperature DS18B20 (& oneWire); int temp_0; int temp_1; neplatné nastavení () {Serial.begin (115200); Blynk.begin (auth, ssid, pass); DS18B20.begin (); timer.setInterval (1000L, getSendData); Serial.println (""); Serial.println ("Testování dat duálních senzorů"); } void loop () {timer.run (); // Zahájí SimpleTimer Blynk.run (); } /************************************************** ****Odeslat údaje ze senzoru Blynku **************************************** *********/ void getSendData () {DS18B20.requestTemperatures (); temp_0 = DS18B20.getTempCByIndex (0); // Senzor 0 zachytí Temp v Celcius temp_1 = DS18B20.getTempFByIndex (1); // Senzor 0 zachytí Temp ve Fahrenheit Serial.print ("Temp_0:"); Serial.print (temp_0); Serial.print ("oC. Temp_1:"); Serial.print (temp_1); Serial.println ("oF"); Blynk.virtualWrite (10, temp_0); // virtuální pin V10 Blynk.virtualWrite (11, temp_1); // virtuální pin V11}

Jakmile je kód nahrán a spuštěn, zkontrolujte aplikaci Blynk. Nyní by měl být také spuštěn, jak je znázorněno na výše uvedené obrazovce tisku z mého iPhone.

Krok 7: Závěr

Závěr
Závěr

Jako vždy doufám, že tento projekt pomůže ostatním zorientovat se ve vzrušujícím světě elektroniky, robotiky a IoT!

Aktualizované soubory najdete na mém GitHubu: NodeMCU Dual Temp Monitor

Pro více projektů navštivte můj blog: MJRoBot.org

Saludos z jihu světa!

Uvidíme se na mém dalším pokynu!

Děkuji, Marcelo

Doporučuje: