Kazalo:
- 1. korak: Predmet materiala
- 2. korak: Temperaturni senzor DS18B20
- 3. korak: Priključitev senzorjev na NodeMCU
- 4. korak: Namestitev ustreznih knjižnic
- 5. korak: Preizkusite senzorje
- 6. korak: Uporaba programa Blynk
- 7. korak: Zaključek
Video: IoT Made Simple: Nadzor več senzorjev: 7 korakov
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:06
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
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č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.
-
Upoštevajte, da sta oba senzorja vzporedna. Če imate več kot 2 senzorja, storite enako.
- Rdeča ==> 3,3 V.
- Črna ==> GND
- Rumena ==> D4
- 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:
- OneWire
- 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
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
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:
- Ustvarite nov projekt.
- Daj mu ime (v mojem primeru "Dvojni monitor temperature")
- Izberite »Nova naprava - ESP8266 (WiFi)« kot »Moje naprave«
- Kopirajte žeton AUTH, ki ga želite uporabiti v kodi (lahko ga pošljete na svoj e -poštni naslov).
-
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
- Vključuje pripomoček "Graf zgodovine", ki definira V10 in V11 kot virtualne zatiče
- 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
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:
Več senzorjev BMP280 v Arduino Uno prek SPI: 6 korakov
Več senzorjev BMP280 v Arduino Uno prek SPI: V tej vadnici bomo povezali tri BMP280 na Arduino Uno prek SPI, vendar lahko povežete do osem BMP280 na Uno z uporabo digitalnih vrat D3 do D10 kot nSS (Slave Select) za vsak senzor. vzorcev atmosferskega tlaka, merjenih z B
Arduino krmiljenje več senzorjev P.I.R na isti povezavi: 3 koraki
Arduino krmiljenje več senzorjev PIR na istem priključku: Danes vam bom povedal, kako povezati več senzorjev PIR z enim samim Arduinom Bord > tukaj sem za nekatere dodatne funkcije uporabil tudi 4 -kanalni relejni modul. (ALI Uporabite lahko toliko arduinov, da jih pripnete
Več IR temperaturnih senzorjev - MLX90614: 4 koraki
Več temperaturnih senzorjev IR - MLX90614: To je kratek vodnik o tem, kako nastaviti več brezkontaktnih temperaturnih senzorjev MLX90614B prek vodila I2C z Arduino uno in prikazati odčitke na serijskem monitorju Arduino IDE. Uporabljam vnaprej izdelane plošče, če pa kupite senzor b
POVEZAVA VEČ SENZORJEV NA ENO SERIJSKO PRENOS ARDUINO UNO: 4 koraki
POVEZAVA VEČ KOMPLETNIH SENZORJEV NA ENE SERIJSKE PORTE ARDUINO UNO: V tej vadnici bomo razširili posamezna serijska vrata Arduino UNO UART (Rx/Tx), tako da je mogoče povezati več senzorjev Atlas. Razširitev se izvede s ploščo za razširitev serijskih vrat 8: 1. Pristanišče Arduino je povezano z ekspanderjem po
POVEZAVA VEČ SENZORJEV NA MALINO PI: 6 korakov (s slikami)
POVEZAVA VEČ SENZORJEV Z MALINO PI: V tem projektu bomo povezali tri senzorje EZO Atlas Scientific (pH, raztopljeni kisik in temperaturo) na Raspberry Pi 3B+. Namesto ožičenja vezij na Raspberry Pi bomo uporabili ščitnik Tentacle T3 Whitebox Labs. T