Obsah:

IoT zjednodušené: Monitorovanie viacerých senzorov: 7 krokov
IoT zjednodušené: Monitorovanie viacerých senzorov: 7 krokov

Video: IoT zjednodušené: Monitorovanie viacerých senzorov: 7 krokov

Video: IoT zjednodušené: Monitorovanie viacerých senzorov: 7 krokov
Video: 33. zasadnutie Mestského zastupiteľstva v Žiline | 20.6.2022 2024, Júl
Anonim
IoT zjednodušené: Monitorovanie viacerých senzorov
IoT zjednodušené: Monitorovanie viacerých senzorov
IoT zjednodušené: Monitorovanie viacerých senzorov
IoT zjednodušené: Monitorovanie viacerých senzorov

Pred niekoľkými týždňami som tu publikoval návod na monitorovanie teploty pomocou digitálneho snímača DS18B20, ktorý komunikuje prostredníctvom 1-Wire zbernice a odosiela údaje cez internet pomocou NodeMCU a Blynk:

IoT je jednoduchý: monitorovanie teploty kdekoľvek

Čo nám však pri skúmaní chýbalo, bola jedna z veľkých výhod tohto druhu senzora, ktorou je možnosť zhromažďovania viacerých údajov z viacerých senzorov pripojených k tej istej 1-vodičovej zbernici. A teraz je načase to tiež preskúmať.

Rozšírime to, čo bolo vyvinuté v minulom návode, teraz budeme monitorovať dva senzory DS18B20, nakonfigurovaný jeden v Celciuse a druhý vo Fahrenheite. Údaje budú odoslané do aplikácie Blynk, ako je znázornené na vyššie uvedenom blokovom diagrame.

Krok 1: Kusovník

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

(*) Tu je možné použiť akýkoľvek typ zariadenia ESP. Najbežnejšie sú NodeMCU V2 alebo V3. Oba budú vždy fungovať dobre.

Krok 2: Snímač teploty DS18B20

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

V tomto návode použijeme vodotesnú verziu senzora DS18B20. Je veľmi užitočný pri vzdialených teplotách vo vlhkých podmienkach, napríklad na vlhkej pôde. Senzor je izolovaný a môže vykonávať merania až do 125 ° C (Adafrut ho neodporúča používať pri teplote nad 100 ° C kvôli káblovému plášťu z PVC).

DS18B20 je digitálny snímač, vďaka ktorému je dobré používať ho aj na dlhé vzdialenosti! Tieto 1-vodičové digitálne snímače teploty sú pomerne presné (± 0,5 ° C vo veľkej časti rozsahu) a môžu vstavaným digitálnym analógovým prevodníkom poskytovať presnosť až 12 bitov. Fungujú skvele s NodeMCU pomocou jediného digitálneho pinu a dokonca môžete k jednému pinu pripojiť aj viac, pričom každý z nich má v továrni vypálené jedinečné 64-bitové ID, ktoré ich odlišuje.

Senzor pracuje od 3,0 do 5,0 V, čo znamená, že môže byť napájaný priamo z jedného z 3,3 V pinov NodeMCU.

Senzor má 3 vodiče:

  • Čierna: GND
  • Červená: VCC
  • Žltá: 1-vodičové údaje

Tu nájdete všetky údaje: DS18B20 Datasheet

Krok 3: Pripojenie senzorov k NodeMCU

Pripojenie senzorov k NodeMCU
Pripojenie senzorov k NodeMCU
  1. Pripojte 3 vodiče z každého senzora k mini Breadboardu, ako je to znázornené na vyššie uvedenej fotografii. Na lepšie upevnenie kábla snímača som použil špeciálne konektory.
  2. Všimnite si toho, že oba snímače sú paralelné. Ak máte viac ako 2 senzory, mali by ste urobiť to isté.

    • Červená ==> 3,3V
    • Čierna ==> GND
    • Žltá ==> D4
  3. Medzi VCC (3,3 V) a dátami (D4) použite odpor 4,7 K ohmov.

Krok 4: Inštalácia vhodných knižníc

Na správne používanie DS18B20 budú potrebné dve knižnice:

  1. OneWire
  2. Teplota v Dallase

Nainštalujte obe knižnice do svojho depozitára Arduino IDE Library.

Knižnica OneWire MUSÍ byť špeciálna, upravená tak, aby bola použitá s ESP8266, inak sa vám pri kompilácii zobrazí chyba. Poslednú verziu nájdete v uvedenom odkaze.

Krok 5: Testovanie senzorov

Testovanie senzorov
Testovanie senzorov

Na testovanie senzorov si stiahnite nasledujúci súbor z môjho GitHubu:

NodeMCU_DS18B20_Dual_Se nsor_test.ino

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

*Test odosielateľa viacerých teplôt**2 x OneWire senzor: DS18B20*Pripojený k NodeMCU D4 (alebo Arduino Pin 2)**Vyvinutý Marcelom Rovaiom - 25. augusta 2017 ***************** ********************************************************** zahrnúť #define ONE_WIRE_BUS 2 // DS18B20 na pine NodeMCU D4 OneWire oneWire (ONE_WIRE_BUS); DallasTemperature DS18B20 (& oneWire); void setup () {Serial.begin (115200); DS18B20.begin (); Serial.println („Testovanie údajov dvoch senzorov“); } void loop () {float temp_0; float temp_1; DS18B20.requestTemperatures (); temp_0 = DS18B20.getTempCByIndex (0); // Senzor 0 zachytí teplotu v Celcius temp_1 = DS18B20.getTempFByIndex (1); // Senzor 0 zachytí teplotu vo Fahrenheite Serial.print ("Temp_0:"); Serial.print (temp_0); Serial.print ("oC. Temp_1:"); Serial.print (temp_1); Serial.println ("oF"); oneskorenie (1000); }

Pri pohľade na vyššie uvedený kód by sme si mali všimnúť, že najdôležitejšie riadky sú:

temp_0 = DS18B20.getTempCByIndex (0); // Senzor 0 zachytí teplotu v Celciuse

temp_1 = DS18B20.getTempFByIndex (1); // Senzor 0 zachytí teplotu vo Fahrenheite

Prvý vráti hodnotu zo senzora [0] (pozrite sa na „index (0)“) v Celciuse (pozrite sa na časť kódu: „getTempC“. Druhý riadok súvisí so senzorom [1] a vráti údaje Vo Fahrenheite by ste tu mohli mať „n“senzory, pretože pre každý z nich máte iný „index“.

Teraz nahrajte kód do svojho NodeMCU a monitorujte teplotu pomocou sériového monitora.

Vyššie uvedená fotografia ukazuje očakávaný výsledok. Držte každý zo senzorov v ruke, mali by ste vidieť, ako teplota stúpa.

Krok 6: Použitie Blynku

Použitie Blynka
Použitie Blynka
Použitie Blynka
Použitie Blynka

Akonáhle začnete zaznamenávať údaje o teplote, je načase ich vidieť odkiaľkoľvek. Urobíme to pomocou Blynka. Všetky zachytené údaje sa teda budú zobrazovať v reálnom čase na vašom mobilnom zariadení a tiež na to vytvoríme historický depozitár.

Postupujte podľa nasledujúcich krokov:

  1. Vytvorte nový projekt.
  2. Pomenujte ho (v mojom prípade „Monitor duálnej teploty“)
  3. Vyberte položku Nové zariadenie - ESP8266 (WiFi) ako „Moje zariadenia“
  4. Skopírujte AUTH TOKEN, ktorý sa má použiť v kóde (môžete ho poslať na svoj e -mail).
  5. Obsahuje dva widgety „rozchod“, ktoré definujú:

    • Virtuálny pin, ktorý sa má použiť s každým senzorom: V10 (senzor [0]) a V11 (senzor [1])
    • Teplotný rozsah: -5 až 100 oC pre snímač [0]
    • Teplotný rozsah: 25 až 212 oC pre snímač [1]
    • Frekvencia čítania údajov: 1 sekunda
  6. Obsahuje miniaplikáciu „Graf histórie“, ktorá definuje V10 a V11 ako virtuálne piny
  7. Stlačte „Prehrať“(trojuholník v pravom hornom rohu)

Aplikácia Blynk vám samozrejme oznámi, že NodeMCU je offline. Je čas nahrať celý kód do vášho Arduino IDE. Môžete ho získať tu:

NodeMCU_Dual_Sensor_Blynk_Ext.ino

Zmeňte „fiktívne údaje“pomocou vlastných poverení.

/ * Blynk poverenia */

char auth = "VAŠE KÓDY AUTHY BLYNK TU"; / * Poverenia WiFi */ char ssid = "VAŠE SSID"; char pass = "VAŠE HESLO";

A je to!

Prezrite si celý kód. Je to v podstate predchádzajúci kód, kde sme vstupovali s parametrami Blynk a konkrétnymi funkciami. Všimnite si posledné 2 riadky kódu. Tie sú tu najdôležitejšie. Ak máte viac senzorov zhromažďujúcich údaje, mali by ste mať aj ekvivalentné nové riadky ako tieto (s definovanými príslušnými novými virtuálnymi kolíkmi).

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

* Viacnásobný monitor teploty IoT s Blynkom * Knižnica Blynk je chránená licenciou MIT * Tento príklad kódu je verejne dostupný. **Viacnásobný snímač OneWire: DS18B20*Vyvinutý Marcelom Rovaiom - 25. augusta 2017 *************************** ********************************************************************************** vypnite tlač a ušetrite miesto / * poverenia Blynka * / char auth = "VAŠE AUTORSKÉ KÓDY BLYNK TU"; / * Poverenia WiFi */ char ssid = "VAŠA SSID"; char pass = "VAŠE HESLO"; / * TIMER */ #include Časovač SimpleTimer; / * Teplotný snímač DS18B20 */ #include #include #define ONE_WIRE_BUS 2 // DS18B20 na arduino pine2 zodpovedá D4 na fyzickej doske OneWire oneWire (ONE_WIRE_BUS); DallasTemperature DS18B20 (& oneWire); int temp_0; int temp_1; void setup () {Serial.begin (115200); Blynk.begin (auth, ssid, pass); DS18B20.begin (); timer.setInterval (1000L, getSendData); Serial.println (""); Serial.println („Testovanie údajov dvoch senzorov“); } void loop () {timer.run (); // Spustí SimpleTimer Blynk.run (); } /******************************************************** ****Odoslať údaje senzora spoločnosti Blynk **************************************** *********/ void getSendData () {DS18B20.requestTemperatures (); temp_0 = DS18B20.getTempCByIndex (0); // Senzor 0 zachytí teplotu v Celcius temp_1 = DS18B20.getTempFByIndex (1); // Senzor 0 zachytí teplotu vo Fahrenheite 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álny pin V10 Blynk.virtualWrite (11, temp_1); // virtuálny pin V11}

Po nahraní a spustení kódu skontrolujte aplikáciu Blynk. Teraz by mal byť tiež spustený, ako je znázornené na vyššie uvedenej tlačovej obrazovke z môjho iPhone.

Krok 7: Záver

Záver
Záver

Ako vždy, dúfam, že tento projekt pomôže iným zorientovať sa vo vzrušujúcom svete elektroniky, robotiky a internetu vecí!

Aktualizované súbory nájdete na mojom GitHube: Dual Temp Monitor NodeMCU

Viac projektov nájdete na mojom blogu: MJRoBot.org

Saludos z juhu sveta!

Uvidíme sa pri mojom ďalšom pokyne!

Ďakujem, Marcelo

Odporúča: