Sisukord:

IoT on lihtne: mitme anduri jälgimine: 7 sammu
IoT on lihtne: mitme anduri jälgimine: 7 sammu

Video: IoT on lihtne: mitme anduri jälgimine: 7 sammu

Video: IoT on lihtne: mitme anduri jälgimine: 7 sammu
Video: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, Juuli
Anonim
IoT on lihtne: mitme anduri jälgimine
IoT on lihtne: mitme anduri jälgimine
IoT on lihtne: mitme anduri jälgimine
IoT on lihtne: mitme anduri jälgimine

Mõni nädal tagasi avaldasin siin õpetuse temperatuuri jälgimise kohta, kasutades digitaalset andurit DS18B20, mis suhtleb 1-juhtmelise bussi kaudu, saates andmeid Interneti kaudu koos NodeMCU ja Blynkiga:

IoT on lihtne: temperatuuri jälgimine kõikjal

Kuid see, millest me uurimisel ilma jäime, oli seda tüüpi andurite üks suur eelis, mis on võimalus koguda mitut teavet ühelt traadiga siinile ühendatud mitmelt andurilt. Ja nüüd on aeg seda ka uurida.

Laiendame eelmises juhendis väljatöötatut, jälgides nüüd kahte DS18B20 andurit, millest üks on konfigureeritud Celsiuse järgi ja teine Fahrenheiti järgi. Andmed saadetakse rakendusse Blynk, nagu on näidatud ülaltoodud plokkskeemil.

Samm: materjali arve

  • SõlmMCU ESP 12-E (*)
  • 2 X DS18B20 temperatuuriandur
  • Takisti 4,7K oomi
  • BreadBoard
  • Juhtmestik

(*) Siin saab kasutada mis tahes tüüpi ESP -seadmeid. Kõige tavalisemad on NodeMCU V2 või V3. Mõlemad töötavad alati hästi.

2. samm: temperatuuriandur DS18B20

DS18B20 temperatuuriandur
DS18B20 temperatuuriandur

Selles õpetuses kasutame DS18B20 anduri veekindlat versiooni. See on väga kasulik kaugtemperatuuri korral märgades tingimustes, näiteks niiskel pinnasel. Andur on isoleeritud ja seda saab mõõta kuni 125 oC (Adafrut ei soovita seda kasutada üle 100 oC kaabli PVC ümbrise tõttu).

DS18B20 on digitaalne andur, mis teeb selle kasutamiseks hea isegi pikkade vahemaade tagant! Need 1-juhtmelised digitaalsed temperatuuriandurid on üsna täpsed (± 0,5 ° C suurel osal vahemikust) ja võivad pardal oleva digitaalse-analoogmuunduri abil anda kuni 12 bitti täpsust. Nad töötavad suurepäraselt koos NodeMCU-ga, kasutades ühte digitaalset tihvti, ja saate isegi ühendada mitu sama nööpnõelaga, igal neist on nende eristamiseks tehases põletatud unikaalne 64-bitine ID.

Andur töötab vahemikus 3,0 kuni 5,0 V, mis tähendab, et seda saab toita otse ühest 3,3 V NodeMCU kontaktist.

Anduril on 3 juhet:

  • Must: GND
  • Punane: VCC
  • Kollane: 1-juhtmelised andmed

Siit leiate täielikud andmed: DS18B20 andmeleht

3. samm: andurite ühendamine NodeMCU -ga

Andurite ühendamine NodeMCU -ga
Andurite ühendamine NodeMCU -ga
  1. Ühendage iga leivalaua iga anduri 3 juhtmest, nagu on näidatud ülaltoodud fotol. Anduri kaabli paremaks kinnitamiseks kasutasin spetsiaalseid pistikuid.
  2. Pange tähele, et mõlemad andurid on paralleelsed. Kui teil on rohkem kui 2 andurit, peaksite seda tegema.

    • Punane ==> 3.3V
    • Must ==> GND
    • Kollane ==> D4
  3. Kasutage VCC (3.3V) ja andmete (D4) vahel 4,7K oomi takistit

4. samm: eraldatud raamatukogude installimine

DS18B20 nõuetekohaseks kasutamiseks on vaja kahte raamatukogu:

  1. OneWire
  2. Dallas Temperatuur

Installige mõlemad teegid oma Arduino IDE raamatukogu hoidlasse.

Pange tähele, et OneWire'i teek PEAB olema eriline, muudetud kasutamiseks koos ESP8266 -ga, vastasel juhul saate kompileerimise ajal vea. Viimase versiooni leiate ülaltoodud lingilt.

Samm: andurite testimine

Andurite testimine
Andurite testimine

Andurite testimiseks laadige minu GitHubist alla järgmine fail:

SõlmMCU_DS18B20_Dual_Se nsor_test.ino

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

*Mitu temperatuuri saatja test**2 x OneWire andurit: DS18B20*Ühendatud NodeMCU D4 (või Arduino Pin 2)**Arendanud Marcelo Rovai - 25. august 2017 **************** ********************************************/ #sisalda # lisada #define ONE_WIRE_BUS 2 // DS18B20 NodeMCU pin D4 OneWire oneWire (ONE_WIRE_BUS); DallasTemperature DS18B20 (& oneWire); void setup () {Serial.begin (115200); DS18B20.algus (); Serial.println ("Kahe anduri andmete testimine"); } void loop () {float temp_0; float temp_1; DS18B20.requestTemperatures (); temp_0 = DS18B20.getTempCByIndex (0); // Andur 0 lööb temperatuuri Celsiuse järgi temp_1 = DS18B20.getTempFByIndex (1); // Andur 0 lööb Fahrenheiti seerias.print ("Temp_0:"); Serial.print (temp_0); Serial.print ("oC. Temp_1:"); Serial.print (temp_1); Serial.println ("oF"); viivitus (1000); }

Vaadates ülaltoodud koodi, peaksime märkama, et kõige olulisemad read on järgmised:

temp_0 = DS18B20.getTempCByIndex (0); // Andur 0 võtab temperatuuri Celsiuse järgi

temp_1 = DS18B20.getTempFByIndex (1); // Andur 0 võtab temperatuuri Fahrenheiti järgi

Esimene tagastab väärtuse andurilt [0] (vaadake "indeksit (0)") Celsiuse järgi (vaadake koodi osa: "getTempC". Teine rida on seotud anduriga [1] ja tagastab andmed Fahrenheiti kraadides. Siin võiks olla "n" andureid, kuna teil on igaühe jaoks erinev "indeks".

Laadige nüüd kood oma NodeMCU -sse üles ja jälgige jadamonitori abil temperatuuri.

Ülaltoodud foto näitab oodatud tulemust. Hoidke kõiki andureid käes, peaksite nägema temperatuuri tõusu.

6. samm: Blynk'i kasutamine

Blynki kasutamine
Blynki kasutamine
Blynki kasutamine
Blynki kasutamine

Kui hakkate temperatuuri andmeid jäädvustama, on aeg neid kõikjalt näha. Teeme seda Blynki abil. Niisiis, kõik salvestatud andmed kuvatakse teie mobiilseadmes reaalajas ja me ehitame selle jaoks ajaloolise hoidla.

Järgige alltoodud samme.

  1. Loo uus projekt.
  2. Andke sellele nimi (minu puhul "Dual Temperature Monitor")
  3. Valige "Minu seadmed" uus seade - ESP8266 (WiFi)
  4. Kopeerige koodis kasutatav AUTH TOKEN (saate selle oma e -posti aadressile saata).
  5. Sisaldab kahte mõõdiku vidinat, mis määratlevad:

    • Iga anduriga kasutatav virtuaalne tihvt: V10 (andur [0]) ja V11 (andur [1])
    • Temperatuuri vahemik: -5 kuni 100 oC anduri [0] jaoks
    • Temperatuuri vahemik: 25 kuni 212 oC anduri jaoks [1]
    • Andmete lugemise sagedus: 1 sekund
  6. Sisaldab vidinat "Ajaloo graafik", mis määratleb V10 ja V11 virtuaalsete nööpnõeltena
  7. Vajutage nuppu Esita (kolmnurk paremas ülanurgas)

Loomulikult ütleb Blynk App teile, et NodeMCU on võrguühenduseta. On aeg laadida üles täielik kood oma Arduino IDE -sse. Saate selle siit:

NodeMCU_Dual_Sensor_Blynk_Ext.ino

Muutke "näivandmeid" oma mandaadiga.

/ * Blynk volikirjad */

char auth = "SINU BLYNK AUTHI KOOD SIIN"; / * WiFi volikirjad */ char ssid = "SINU SSID"; char pass = "SINU PAROOL";

Ja see ongi kõik!

Allpool on täielik kood. Põhimõtteliselt on see eelmine kood, kuhu sisestasime Blynk parameetrite ja spetsiifiliste funktsioonidega. Pange tähele koodi kahte viimast rida. Need on siin kõige olulisemad. Kui teil on rohkem andureid, mis koguvad andmeid, peaks teil olema samad uued read kui neil (koos asjakohaste uute virtuaalsete tihvtidega).

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

* Ily mitme temperatuuri jälgija koos Blynkiga * Blynk raamatukogu on litsentsitud MIT litsentsi alusel **Mitu OneWire andurit: DS18B20*Arendanud Marcelo Rovai - 25. august 2017 ********************************* ****************************//*ESP & Blynk*/ #include #include #define BLYNK_PRINT Serial // Kommenteerige seda keela prindid ja säästa ruumi / * Blynk mandaat * / char auth = "YOUR BLYNK AUTH CODE SIIT"; / * WiFi volikirjad */ char ssid = "SINU SSID"; char pass = "SINU PAROOL"; / * TIMER */ #sisaldab SimpleTimer taimerit; / * DS18B20 temperatuuriandur */ #include #include #define ONE_WIRE_BUS 2 // DS18B20 arduino pin2 -l vastab D4 -le füüsilisel tahvlil 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.algus (); timer.setInterval (1000L, getSendData); Serial.println (""); Serial.println ("Kahe anduri andmete testimine"); } void loop () {timer.run (); // Algatab SimpleTimer Blynk.run (); } /*********************************************** ****Saada anduri andmed Blynkile ***************************************** *********/ void getSendData () {DS18B20.requestTemperatures (); temp_0 = DS18B20.getTempCByIndex (0); // Andur 0 lööb temperatuuri Celsiuse järgi temp_1 = DS18B20.getTempFByIndex (1); // Andur 0 lööb Fahrenheiti seerias.print ("Temp_0:"); Serial.print (temp_0); Serial.print ("oC. Temp_1:"); Serial.print (temp_1); Serial.println ("oF"); Blynk.virtualWrite (10, temp_0); // virtuaalne pin V10 Blynk.virtualWrite (11, temp_1); // virtuaalne tihvt V11}

Kui kood on üles laaditud ja käivitatud, kontrollige rakendust Blynk. See peaks nüüd töötama ka nii, nagu on näidatud minu iPhone'i ülaltoodud prindiekraanil.

Samm 7: Järeldus

Järeldus
Järeldus

Nagu alati, loodan, et see projekt aitab teistel leida tee elektroonika, robootika ja asjade põnevas maailmas!

Palun külastage minu GitHubi värskendatud failide jaoks: NodeMCU Dual Temp Monitor

Rohkemate projektide jaoks külastage palun minu ajaveebi: MJRoBot.org

Tervitused maailma lõunaosast!

Kohtumiseni minu järgmisel juhendamisel!

Aitäh, Marcelo

Soovitan: