Sadržaj:

IoT Made Simple: Nadgledanje više senzora: 7 koraka
IoT Made Simple: Nadgledanje više senzora: 7 koraka

Video: IoT Made Simple: Nadgledanje više senzora: 7 koraka

Video: IoT Made Simple: Nadgledanje više senzora: 7 koraka
Video: Красивая история о настоящей любви! Мелодрама НЕЛЮБОВЬ (Домашний). 2024, Novembar
Anonim
IoT Made Simple: Nadgledanje više senzora
IoT Made Simple: Nadgledanje više senzora
IoT Made Simple: Nadgledanje više senzora
IoT Made Simple: Nadgledanje više senzora

Prije nekoliko tjedana ovdje sam objavio vodič o praćenju temperature pomoću DS18B20, digitalnog senzora koji komunicira preko 1-žične sabirnice, šaljući podatke putem interneta s NodeMCU-om i Blynkom:

IoT Made Simple: praćenje temperature bilo gdje

Ali ono što smo propustili u istraživanju bila je jedna od velikih prednosti ove vrste senzora, a to je mogućnost prikupljanja više podataka, s više senzora spojenih na istu 1-žičnu sabirnicu. A sada je vrijeme da to i istražite.

Proširićemo ono što je razvijeno na poslednjem vodiču, nadgledajući sada dva senzora DS18B20, konfigurisana jedan u Celzijusima, a drugi u Fahrenheitu. Podaci će biti poslani u aplikaciju Blynk, kao što je prikazano na gornjoj blok shemi.

Korak 1: Opis materijala

  • NodeMCU ESP 12-E (*)
  • 2 X DS18B20 Senzor temperature
  • Otpornik 4.7K ohma
  • BreadBoard
  • Ožičenje

(*) Ovdje se može koristiti bilo koja vrsta ESP uređaja. Najčešći su NodeMCU V2 ili V3. Oboje će uvijek dobro funkcionirati.

Korak 2: Temperaturni senzor DS18B20

DS18B20 Senzor temperature
DS18B20 Senzor temperature

U ovom ćemo vodiču koristiti vodonepropusnu verziju senzora DS18B20. Vrlo je korisno za daljinsku temperaturu u vlažnim uvjetima, na primjer na vlažnom tlu. Senzor je izoliran i može mjeriti do 125oC (Adafrut ne preporučuje upotrebu preko 100oC zbog kabla od PVC omotača).

DS18B20 je digitalni senzor što ga čini dobrim za upotrebu čak i na velikim udaljenostima! Ovi 1-žični digitalni temperaturni senzori su prilično precizni (± 0,5 ° C u velikom dijelu raspona) i mogu dati do 12 bita preciznosti sa ugrađenog digitalno-analognog pretvarača. Odlično rade s NodeMCU-om koristeći jedan digitalni pin, a možete čak i povezati više njih na isti pin, svaki ima jedinstveni 64-bitni ID koji je tvornički ugrađen da ih razlikuje.

Senzor radi od 3.0 do 5.0V, što znači da se može napajati direktno s jednog od 3.3V NodeMCU pinova.

Senzor ima 3 žice:

  • Crna: GND
  • Crvena: VCC
  • Žuta: 1-žični podaci

Ovdje možete pronaći potpune podatke: Tehnički list DS18B20

Korak 3: Spajanje senzora na NodeMCU

Spajanje senzora na NodeMCU
Spajanje senzora na NodeMCU
  1. Spojite 3 žice sa svakog senzora na mini pločici kao što je prikazano na gornjoj fotografiji. Koristio sam posebne konektore za bolje pričvršćivanje kabla senzora na njega.
  2. Imajte na umu da su oba senzora paralelna. Ako imate više od 2 senzora, trebali biste učiniti isto.

    • Crveno ==> 3.3V
    • Crna ==> GND
    • Žuta ==> D4
  3. Koristite otpornik od 4,7K ohma između VCC (3,3 V) i podataka (D4)

Korak 4: Instaliranje odgovarajućih biblioteka

Za ispravnu upotrebu DS18B20 bit će potrebne dvije biblioteke:

  1. OneWire
  2. DallasTemperature

Instalirajte obje biblioteke u svoje spremište Arduino IDE biblioteke.

Imajte na umu da biblioteka OneWire MORA biti posebna, modificirana za upotrebu s ESP8266, u protivnom ćete dobiti grešku tokom kompajliranja. Posljednju verziju ćete pronaći na gornjoj poveznici.

Korak 5: Testiranje senzora

Testiranje senzora
Testiranje senzora

Za testiranje senzora, preuzmite datoteku ispod sa mog GitHub -a:

NodeMCU_DS18B20_Dual_Se nsor_test.ino

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

*Test više temperaturnih šaljivača**2 x OneWire senzor: DS18B20*Spojen na NodeMCU D4 (ili Arduino pin 2)**Razvio Marcelo Rovai - 25. kolovoza 2017. **************** **********************************************/ #include # uključi #define ONE_WIRE_BUS 2 // DS18B20 na NodeMCU pin D4 OneWire oneWire (ONE_WIRE_BUS); DallasTemperature DS18B20 (& oneWire); void setup () {Serial.begin (115200); DS18B20.begin (); Serial.println ("Testiranje podataka dvostrukog senzora"); } void loop () {float temp_0; float temp_1; DS18B20.requestTemperatures (); temp_0 = DS18B20.getTempCByIndex (0); // Senzor 0 će zabilježiti Temp u Celzijevim temp_1 = DS18B20.getTempFByIndex (1); // Senzor 0 će snimiti Temp u Fahrenheit Serial.print ("Temp_0:"); Serial.print (temp_0); Serial.print ("oC. Temp_1:"); Serial.print (temp_1); Serial.println ("oF"); kašnjenje (1000); }

Gledajući gornji kod, trebali bismo primijetiti da su najvažnije linije:

temp_0 = DS18B20.getTempCByIndex (0); // Senzor 0 će snimiti Temp u Celzijusima

temp_1 = DS18B20.getTempFByIndex (1); // Senzor 0 će snimiti Temp u Fahrenheitu

Prvi će vratiti vrijednost iz senzora [0] (pogledajte "indeks (0)") u Celzijusu (pogledajte dio koda: "getTempC". Drugi red je povezan sa senzorom [1] i vratit će podatke u Fahrenheitu. Ovdje možete imati "n" senzore jer za svaki od njih imate drugačiji "indeks".

Prenesite sada kôd u svoj NodeMCU i pratite temperaturu pomoću serijskog monitora.

Gornja fotografija prikazuje očekivani rezultat. Držite svaki od senzora u ruci, trebali biste vidjeti kako temperatura raste.

Korak 6: Upotreba Blynka

Koristeći Blynk
Koristeći Blynk
Koristeći Blynk
Koristeći Blynk

Kad počnete snimati podatke o temperaturi, vrijeme je da ih vidite s bilo kojeg mjesta. To ćemo učiniti koristeći Blynk. Dakle, svi snimljeni podaci bit će prikazani u stvarnom vremenu na vašem mobilnom uređaju, a za to ćemo izgraditi i povijesni depozit.

Slijedite korake u nastavku:

  1. Kreirajte novi projekat.
  2. Dajte mu ime (u mom slučaju "Dvostruki monitor temperature")
  3. Odaberite Novi uređaj - ESP8266 (WiFi) kao "Moji uređaji"
  4. Kopirajte AUTH TOKEN koji ćete koristiti u kodu (možete ga poslati na svoju e -poštu).
  5. Uključuje dva widgeta "Gauge" koji definiraju:

    • Virtualni pin koji će se koristiti sa svakim senzorom: V10 (senzor [0]) i V11 (senzor [1])
    • Raspon temperature: -5 do 100 oC za senzor [0]
    • Raspon temperature: 25 do 212 oC za senzor [1]
    • Učestalost čitanja podataka: 1 sekunda
  6. Uključuje widget "History Graph" koji definira V10 i V11 kao virtualne pinove
  7. Pritisnite "Play" (trokut u desnom gornjem kutu)

Naravno, aplikacija Blynk će vas obavijestiti da je NodeMCU isključen. Vrijeme je za postavljanje cijelog koda na vaš Arduino IDE. Možete ga nabaviti ovdje:

NodeMCU_Dual_Sensor_Blynk_Ext.ino

Promijenite "lažne podatke" vlastitim vjerodajnicama.

/ * Blynk akreditivi */

char auth = "VAŠ BLYNK AUTH KOD OVDJE"; / * WiFi vjerodajnice */ char ssid = "VAŠ SSID"; char pass = "VAŠA LOZINKA";

I to je to!

Ispod punog koda. To je u osnovi prethodni kod u koji smo unijeli Blynkove parametre i određene funkcije. Obratite pažnju na posljednja 2 reda koda. Oni su ovde najvažniji. Ako imate više senzora koji prikupljaju podatke, trebali biste imati i ekvivalentne nove linije kao one (s definiranim odgovarajućim novim virtualnim pinovima).

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

* IoT Multiple Temperature Monitor with Blynk * Blynk biblioteka je licencirana pod MIT licencom * Ovaj primjer koda je u javnoj domeni. **Više senzora za jednu žicu: DS18B20*Razvio Marcelo Rovai - 25. kolovoza 2017. ******************************** ****************************//*ESP & Blynk*/ #include #include #define BLYNK_PRINT Serial // Komentirajte ovo na onemogućite ispise i uštedite prostor / * Blynk vjerodajnice * / char auth = "VAŠ BLYNK AUTH KOD OVDJE"; / * WiFi vjerodajnice */ char ssid = "VAŠ SSID"; char pass = "VAŠA LOZINKA"; / * TIMER */ #include SimpleTimer timer; / * DS18B20 Senzor temperature */ #include #include #define ONE_WIRE_BUS 2 // DS18B20 na arduino pin2 odgovara D4 na fizičkoj ploči 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 ("Testiranje podataka dvostrukog senzora"); } void loop () {timer.run (); // Pokreće SimpleTimer Blynk.run (); } /********************************************** ****Pošaljite podatke senzora Blynku *************************************** *********/ void getSendData () {DS18B20.requestTemperatures (); temp_0 = DS18B20.getTempCByIndex (0); // Senzor 0 će zabilježiti Temp u Celzijevim temp_1 = DS18B20.getTempFByIndex (1); // Senzor 0 će snimiti Temp u 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); // virtualni pin V10 Blynk.virtualWrite (11, temp_1); // virtualni pin V11}

Nakon što se kôd učita i pokrene, provjerite aplikaciju Blynk. Sada bi trebao raditi i kako je prikazano na gornjem ekranu za štampanje sa mog iPhone -a.

Korak 7: Zaključak

Zaključak
Zaključak

Kao i uvijek, nadam se da će ovaj projekt pomoći drugima da se snađu u uzbudljivom svijetu elektronike, robotike i IoT -a!

Posjetite moj GitHub za ažurirane datoteke: NodeMCU Dual Temp Monitor

Za više projekata posjetite moj blog: MJRoBot.org

Saludos sa juga svijeta!

Vidimo se na mom sljedećem uputstvu!

Hvala ti, Marcelo

Preporučuje se: