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, Srpanj
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 putem 1-Wire sabirnice, šaljući podatke putem interneta s NodeMCU-om i Blynkom:

IoT Made Simple: praćenje temperature bilo gdje

No 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širit ćemo ono što je razvijeno u zadnjem vodiču, nadgledajući sada dva senzora DS18B20, konfigurirana jedan u Celzijusu, a drugi u Fahrenheitu. Podaci će biti poslani u aplikaciju Blynk, kao što je prikazano na gornjem blok dijagramu.

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 osjetnik DS18B20

Senzor temperature DS18B20
Senzor temperature DS18B20

U ovom ćemo vodiču koristiti vodonepropusnu verziju senzora DS18B20. Vrlo je korisno za udaljenu temperaturu u vlažnim uvjetima, na primjer na vlažnom tlu. Senzor je izoliran i može mjeriti do 125 ° C (Adafrut ne preporučuje uporabu na više od 100 ° C zbog PVC omotača od kabela).

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

Senzor radi od 3,0 do 5,0 V, što znači da se može napajati izravno s jednog od 3,3 V NodeMCU pina.

Senzor ima 3 žice:

  • Crna: GND
  • Crveno: 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 Breadboard kao što je prikazano na gornjoj fotografiji. Koristio sam posebne konektore za bolje pričvršćivanje kabela 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 knjižnica

Za ispravnu uporabu DS18B20 bit će potrebne dvije knjižnice:

  1. OneWire
  2. DallasTemperature

Instalirajte obje knjižnice u svoje spremište Arduino IDE knjižnice.

Imajte na umu da knjižnica OneWire MORA biti posebna, izmijenjena za upotrebu s ESP8266, inače ćete dobiti pogrešku tijekom kompilacije. Posljednju verziju pronaći ćete na gornjoj poveznici.

Korak 5: Testiranje senzora

Testiranje senzora
Testiranje senzora

Za testiranje senzora, preuzmite donju datoteku s mog GitHub -a:

ČvorMCU_DS18B20_Dual_Se nsor_test.ino

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

*Test više temperaturnih pošiljatelja**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; plovak 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 Fahrenheitovom 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žniji redovi:

temp_0 = DS18B20.getTempCByIndex (0); // Senzor 0 će zabilježiti temperaturu u Celzijusima

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

Prvi će vratiti vrijednost senzora [0] (pogledajte "indeks (0)") u Celzijusu (pogledajte dio koda: "getTempC". Drugi redak je povezan sa senzorom [1] i vratit će podatke u Fahrenheitu. Ovdje možete imati "n" senzore budući da 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

Korištenje Blynka
Korištenje Blynka
Korištenje Blynka
Korištenje Blynka

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 i izgraditi povijesni depozit.

Slijedite korake u nastavku:

  1. Izradite novi projekt.
  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 prijenos cijelog koda na vaš Arduino IDE. Možete ga nabaviti ovdje:

NodeMCU_Dual_Sensor_Blynk_Ext.ino

Promijenite "lažne podatke" vlastitim vjerodajnicama.

/ * Blynk vjerodajnice */

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. Zabilježite 2 posljednja retka koda. Ovdje su oni 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 višestruki monitor temperature s Blynkom * Blynk knjižnica licencirana je 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 osjetnik 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 snimit će Temp u Fahrenheitovom 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 biti pokrenut kako je prikazano na gornjem ekranu za ispis s mog iPhonea.

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 s juga svijeta!

Vidimo se na sljedećoj instrukciji!

Hvala vam, Marcelo

Preporučeni: