Kazalo:

IoT Made Simple: Nadzor več senzorjev: 7 korakov
IoT Made Simple: Nadzor več senzorjev: 7 korakov

Video: IoT Made Simple: Nadzor več senzorjev: 7 korakov

Video: IoT Made Simple: Nadzor več senzorjev: 7 korakov
Video: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, November
Anonim
IoT Made Simple: spremljanje več senzorjev
IoT Made Simple: spremljanje več senzorjev
IoT Made Simple: spremljanje več senzorjev
IoT Made Simple: spremljanje več senzorjev

Pred nekaj tedni sem tukaj objavil vadnico o spremljanju temperature z digitalnim senzorjem DS18B20, ki komunicira prek 1-žičnega vodila in pošilja podatke po internetu z NodeMCU in Blynk:

IoT Made Simple: Spremljanje temperature kjer koli

Toda tisto, kar smo pri raziskovanju pogrešali, je bila ena od velikih prednosti tovrstnega senzorja, to je možnost zbiranja več podatkov iz več senzorjev, povezanih na isto 1-žično vodilo. In zdaj je čas, da ga tudi raziščemo.

Razširili bomo tisto, kar je bilo razvito na zadnji vadnici, zdaj bomo spremljali dva senzorja DS18B20, enega v Celziju, drugega pa v Fahrenheitu. Podatki bodo poslani v aplikacijo Blynk, kot je prikazano v zgornjem blokovnem diagramu.

1. korak: Predmet materiala

  • NodeMCU ESP 12-E (*)
  • 2 X temperaturni senzor DS18B20
  • Upor 4,7K ohmov
  • BreadBoard
  • Ožičenje

(*) Tu lahko uporabite katero koli vrsto naprave ESP. Najpogostejša sta NodeMCU V2 ali V3. Oboje bo vedno delovalo dobro.

2. korak: Temperaturni senzor DS18B20

Temperaturni senzor DS18B20
Temperaturni senzor DS18B20

V tem vodiču bomo uporabili vodotesno različico senzorja DS18B20. Je zelo uporaben za daljinsko temperaturo v mokrih razmerah, na primer na vlažnih tleh. Senzor je izoliran in lahko izvaja meritve do 125 ° C (Adafrut zaradi kabelskega PVC plašča ne priporoča uporabe nad 100 ° C).

DS18B20 je digitalni senzor, zaradi česar je primeren za uporabo tudi na dolge razdalje! Ti 1-žični digitalni temperaturni senzorji so dokaj natančni (± 0,5 ° C v večjem delu območja) in lahko dajo do 12 bitov natančnosti iz vgrajenega digitalno-analognega pretvornika. Odlično delujejo z NodeMCU z enim samim digitalnim zatičem in na isti pin lahko celo povežete več, vsak ima tovarniško vžgan edinstven 64-bitni ID, ki jih razlikuje.

Senzor deluje od 3,0 do 5,0 V, kar pomeni, da ga je mogoče napajati neposredno z enega od 3,3 -palčnih nožic NodeMCU.

Senzor ima 3 žice:

  • Črna: GND
  • Rdeča: VCC
  • Rumena: 1-žilni podatki

Tu lahko najdete celotne podatke: Tehnični list DS18B20

3. korak: Priključitev senzorjev na NodeMCU

Priključitev senzorjev na NodeMCU
Priključitev senzorjev na NodeMCU
  1. Priključite 3 žice iz vsakega senzorja na mini ploščici, kot je prikazano na zgornji fotografiji. Za boljšo pritrditev kabla senzorja sem uporabil posebne priključke.
  2. Upoštevajte, da sta oba senzorja vzporedna. Če imate več kot 2 senzorja, storite enako.

    • Rdeča ==> 3,3 V.
    • Črna ==> GND
    • Rumena ==> D4
  3. Uporabite 4,7K ohmski upor med VCC (3,3 V) in podatki (D4)

4. korak: Namestitev ustreznih knjižnic

Za pravilno uporabo DS18B20 bosta potrebni dve knjižnici:

  1. OneWire
  2. DallasTemperatura

Obe knjižnici namestite v skladišče knjižnic Arduino IDE.

Upoštevajte, da mora biti knjižnica OneWire posebna, spremenjena za uporabo z ESP8266, sicer boste med sestavljanjem dobili napako. Zadnjo različico najdete na zgornji povezavi.

5. korak: Preizkusite senzorje

Testiranje senzorjev
Testiranje senzorjev

Za testiranje senzorjev prenesite spodnjo datoteko z mojega GitHub -a:

NodeMCU_DS18B20_Dual_Se nsor_test.ino

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

*Večkratni preskus temperaturnega pošiljatelja**2 x senzor OneWire: DS18B20*povezan z NodeMCU D4 (ali Arduino Pin 2)**Razvil Marcelo Rovai - 25. avgust 2017 **************** **********************************************/ #include # vključ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 podatkov dvojnega senzorja"); } void loop () {float temp_0; plavajoča temp_1; DS18B20.requestTemperatures (); temp_0 = DS18B20.getTempCByIndex (0); // Senzor 0 bo zajel Temp v Celcius temp_1 = DS18B20.getTempFByIndex (1); // Senzor 0 bo zajel Temp v Fahrenheitovem Serial.print ("Temp_0:"); Serial.print (temp_0); Serial.print ("oC. Temp_1:"); Serial.print (temp_1); Serial.println ("oF"); zamuda (1000); }

Če pogledamo zgornjo kodo, moramo opaziti, da so najpomembnejše vrstice:

temp_0 = DS18B20.getTempCByIndex (0); // Senzor 0 bo zajel temperaturo v Celzijah

temp_1 = DS18B20.getTempFByIndex (1); // Senzor 0 bo zajel temperaturo v Fahrenheitu

Prva bo vrnila vrednost iz senzorja [0] (poglejte "indeks (0)") v Celciusu (poglejte del kode: "getTempC". Druga vrstica je povezana s senzorjem [1] in bo vrnila podatke v Fahrenheitu. Tu bi lahko imeli "n" senzorje, saj imate za vsakega od njih drugačen "indeks".

Naložite kodo v svoj NodeMCU in spremljajte temperaturo s serijskim monitorjem.

Zgornja fotografija prikazuje pričakovani rezultat. Vsak od senzorjev držite v roki, videli boste, kako se temperatura dviga.

6. korak: Uporaba programa Blynk

Uporaba Blynka
Uporaba Blynka
Uporaba Blynka
Uporaba Blynka

Ko začnete zajemati podatke o temperaturi, je čas, da si jih ogledate od koder koli. To bomo storili z uporabo Blynka. Tako bodo vsi zajeti podatki v realnem času prikazani na vaši mobilni napravi, za to pa bomo zgradili tudi zgodovinsko deponijo.

Sledite spodnjim korakom:

  1. Ustvarite nov projekt.
  2. Daj mu ime (v mojem primeru "Dvojni monitor temperature")
  3. Izberite »Nova naprava - ESP8266 (WiFi)« kot »Moje naprave«
  4. Kopirajte žeton AUTH, ki ga želite uporabiti v kodi (lahko ga pošljete na svoj e -poštni naslov).
  5. Vključuje dva pripomočka "Gauge", ki opredeljujeta:

    • Navidezni pin, ki se uporablja z vsakim senzorjem: V10 (senzor [0]) in V11 (senzor [1])
    • Temperaturno območje: -5 do 100 oC za senzor [0]
    • Temperaturno območje: 25 do 212 oC za senzor [1]
    • Pogostost branja podatkov: 1 sekunda
  6. Vključuje pripomoček "Graf zgodovine", ki definira V10 in V11 kot virtualne zatiče
  7. Pritisnite "Predvajaj" (trikotnik v desnem zgornjem kotu)

Seveda vam bo aplikacija Blynk sporočila, da je NodeMCU izklopljen. Čas je, da v svoj Arduino IDE naložite celotno kodo. Lahko ga dobite tukaj:

NodeMCU_Dual_Sensor_Blynk_Ext.ino

Spremenite "lažne podatke" z lastnimi poverilnicami.

/ * Blynk poverilnice */

char auth = "VAŠA BLYNK AUTH KODA TUKAJ"; / * Poverilnice WiFi */ char ssid = "VAŠ SSID"; char pass = "VAŠA GESLA";

In to je to!

Spodaj vnesite celotno kodo. To je v bistvu prejšnja koda, kamor smo vnesli s parametri Blynk in posebnimi funkcijami. Upoštevajte zadnji dve vrstici kode. Tu so najpomembnejši. Če imate več senzorjev, ki zbirajo podatke, bi morali imeti tudi enakovredne nove vrstice kot tiste (z definiranimi ustreznimi novimi navideznimi zatiči).

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

* IoT Multiple Temperature Monitor with Blynk * Knjižnica Blynk je licencirana pod licenco MIT * Ta primer kode je v javni domeni. **Več senzorja OneWire: DS18B20*Razvil Marcelo Rovai - 25. avgust 2017 ******************************** **************************//*ESP & Blynk*/ #include #include #define BLYNK_PRINT Serial // Komentirajte to onemogočite tiskanje in prihranite prostor / * Blynk poverilnice * / char auth = "VAŠA BLYNK AUTH KODA TUKAJ"; / * Poverilnice WiFi */ char ssid = "VAŠ SSID"; char pass = "VAŠA GESLA"; / * TIMER */ #vključuje časovnik SimpleTimer; / * Temperaturni senzor DS18B20 */ #include #include #define ONE_WIRE_BUS 2 // DS18B20 na arduino pin2 ustreza D4 na fizični plošči OneWire oneWire (ONE_WIRE_BUS); Temperatura Dallas 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 podatkov dvojnega senzorja"); } void loop () {timer.run (); // Zažene SimpleTimer Blynk.run (); } /********************************************** ****Pošlji podatke senzorja Blynku *************************************** *********/ void getSendData () {DS18B20.requestTemperatures (); temp_0 = DS18B20.getTempCByIndex (0); // Senzor 0 bo zajel Temp v Celcius temp_1 = DS18B20.getTempFByIndex (1); // Senzor 0 bo zajel Temp v Fahrenheitovem 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); // navidezni pin V10 Blynk.virtualWrite (11, temp_1); // navidezni pin V11}

Ko je koda naložena in zagnana, preverite aplikacijo Blynk. Zdaj bi moral delovati, kot je prikazano na zgornjem zaslonu za tiskanje iz mojega iPhone -a.

7. korak: Zaključek

Zaključek
Zaključek

Kot vedno upam, da lahko ta projekt pomaga drugim najti pot v razburljivem svetu elektronike, robotike in interneta stvari!

Za posodobljene datoteke obiščite moj GitHub: NodeMCU Dual Temp Monitor

Za več projektov obiščite moj blog: MJRoBot.org

Saludos z juga sveta!

Se vidimo na mojem naslednjem pouku!

Hvala vam, Marcelo

Priporočena: