Turinys:
- 1 žingsnis: Sąrašas medžiagos
- 2 žingsnis: DS18B20 temperatūros jutiklis
- 3 veiksmas: jutiklių prijungimas prie „NodeMCU“
- 4 veiksmas: paskirstytų bibliotekų diegimas
- 5 žingsnis: jutiklių bandymas
- 6 žingsnis: „Blynk“naudojimas
- 7 žingsnis: Išvada
Video: „IoT Made Simple“: kelių jutiklių stebėjimas: 7 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:48
Prieš kelias savaites čia paskelbiau pamoką apie temperatūros stebėjimą naudojant DS18B20-skaitmeninį jutiklį, kuris bendrauja per 1 laido magistralę, siunčia duomenis internetu su „NodeMCU“ir „Blynk“:
„IoT Made Simple“: temperatūros stebėjimas bet kur
Tačiau tai, ko mes praleidome tyrinėdami, buvo vienas iš didžiausių tokio tipo jutiklių privalumų, tai yra galimybė surinkti kelis duomenis iš kelių jutiklių, prijungtų prie tos pačios 1 laidų magistralės. Ir dabar atėjo laikas tai ištirti.
Mes išplėsime tai, kas buvo sukurta paskutinėje pamokoje, dabar stebime du DS18B20 jutiklius, sukonfigūruotus vieną pagal Celsijų ir kitą pagal Farenheitą. Duomenys bus siunčiami į „Blynk“programą, kaip parodyta aukščiau esančioje blokinėje diagramoje.
1 žingsnis: Sąrašas medžiagos
- „NodeMCU ESP 12-E“(*)
- 2 X DS18B20 temperatūros jutiklis
- Rezistorius 4,7K omai
- Bandomoji Lenta
- Laidai
(*) Čia galima naudoti bet kokio tipo ESP įrenginius. Dažniausiai yra „NodeMCU V2“arba „V3“. Abu visada veiks gerai.
2 žingsnis: DS18B20 temperatūros jutiklis
Šioje pamokoje naudosime neperšlampamą DS18B20 jutiklio versiją. Tai labai naudinga esant nuotolinei temperatūrai drėgnomis sąlygomis, pavyzdžiui, drėgnoje dirvoje. Jutiklis yra izoliuotas ir gali atlikti matavimus iki 125oC („Adafrut“nerekomenduoja jo naudoti aukštesnėje nei 100oC temperatūroje dėl kabelio PVC apvalkalo).
„DS18B20“yra skaitmeninis jutiklis, todėl jį patogu naudoti net ir dideliais atstumais! Šie 1 laidų skaitmeniniai temperatūros jutikliai yra gana tikslūs (± 0,5 ° C didelėje diapazono dalyje) ir gali suteikti iki 12 bitų tikslumo iš įmontuoto skaitmeninio-analoginio keitiklio. Jie puikiai veikia su „NodeMCU“, naudojant vieną skaitmeninį kaištį, ir jūs netgi galite prijungti kelis prie to paties kaiščio, kiekvienas turi unikalų 64 bitų ID, įrašytą gamykloje, kad juos atskirtų.
Jutiklis veikia nuo 3,0 iki 5,0 V, o tai reiškia, kad jis gali būti maitinamas tiesiogiai iš vieno iš 3,3 V „NodeMCU“kaiščių.
Jutiklis turi 3 laidus:
- Juoda: GND
- Raudona: VCC
- Geltona: 1 laido duomenys
Čia galite rasti visus duomenis: DS18B20 duomenų lapas
3 veiksmas: jutiklių prijungimas prie „NodeMCU“
- Prijunkite 3 laidus iš kiekvieno jutiklio prie mini duonos lentos, kaip parodyta aukščiau esančioje nuotraukoje. Norėdami geriau pritvirtinti jutiklio kabelį, naudoju specialias jungtis.
-
Atminkite, kad abu jutikliai yra lygiagrečiai. Jei turite daugiau nei 2 jutiklius, turėtumėte daryti tą patį.
- Raudona ==> 3.3V
- Juoda ==> GND
- Geltona ==> D4
- Naudokite 4,7 K omų rezistorių tarp VCC (3,3 V) ir duomenų (D4)
4 veiksmas: paskirstytų bibliotekų diegimas
Norint tinkamai naudoti DS18B20, reikės dviejų bibliotekų:
- „OneWire“
- Dalaso temperatūra
Įdiekite abi bibliotekas į „Arduino IDE“bibliotekos saugyklą.
Atminkite, kad „OneWire“biblioteka TURI būti speciali, pakeista naudoti su ESP8266, kitaip kompiliavimo metu gausite klaidą. Paskutinę versiją rasite aukščiau esančioje nuorodoje.
5 žingsnis: jutiklių bandymas
Norėdami išbandyti jutiklius, atsisiųskite žemiau esantį failą iš „GitHub“:
NodeMCU_DS18B20_Dual_Se nsor_test.ino
/**************************************************************
*Kelių temperatūrų siuntėjo testas**2 x „OneWire“jutiklis: DS18B20*Prijungtas prie „NodeMCU D4“(arba „Arduino Pin 2“)**Sukūrė Marcelo Rovai - 2017 m. Rugpjūčio 25 d. **************** ************************************************ įtraukti #define ONE_WIRE_BUS 2 // DS18B20 ant „NodeMCU“kaiščio D4 „OneWire oneWire“(ONE_WIRE_BUS); „DallasTemperature DS18B20“(„& oneWire“); void setup () {Serial.begin (115200); DS18B20.begin (); Serial.println („Dviejų jutiklių duomenų tikrinimas“); } void loop () {float temp_0; plūdės temp_1; DS18B20.requestTemperatures (); temp_0 = DS18B20.getTempCByIndex (0); // Jutiklis 0 fiksuos temperatūrą Celsijaus temp_1 = DS18B20.getTempFByIndex (1); // Jutiklis 0 užfiksuos temperatūrą Farenheito serijos.print ("Temp_0:"); Serial.print (temp_0); Serial.print ("oC. Temp_1:"); Serial.print (temp_1); Serial.println ("oF"); vėlavimas (1000); }
Žvelgdami į aukščiau pateiktą kodą, turėtume pastebėti, kad svarbiausios eilutės yra šios:
temp_0 = DS18B20.getTempCByIndex (0); // Jutiklis 0 fiksuos temperatūrą Celsijaus laipsniais
temp_1 = DS18B20.getTempFByIndex (1); // Jutiklis 0 fiksuos temperatūrą Farenheitu
Pirmasis grąžins reikšmę iš jutiklio [0] (ieškokite „indekso (0)“) Celsijaus (žiūrėkite kodo dalį: „getTempC“. Antroji eilutė yra susijusi su jutikliu [1] ir grąžins duomenis Fahrenheit. Čia galite turėti „n“jutiklių, nes kiekvienam iš jų yra skirtingas „indeksas“.
Dabar įkelkite kodą į „NodeMCU“ir stebėkite temperatūrą naudodami serijinį monitorių.
Aukščiau pateikta nuotrauka rodo laukiamą rezultatą. Laikykite rankoje kiekvieną jutiklį, matysite kylančią temperatūrą.
6 žingsnis: „Blynk“naudojimas
Kai pradėsite fiksuoti temperatūros duomenis, laikas juos pamatyti iš bet kurios vietos. Mes tai padarysime naudodami „Blynk“. Taigi visi užfiksuoti duomenys bus rodomi realiuoju laiku jūsų mobiliajame įrenginyje, o mes taip pat sukursime istorinį saugyklą.
Atlikite toliau nurodytus veiksmus.
- Sukurkite naują projektą.
- Suteikite jam pavadinimą (mano atveju „Dvigubas temperatūros monitorius“)
- Pasirinkite „Naujas įrenginys - ESP8266 (WiFi)“kaip „Mano įrenginiai“
- Nukopijuokite AUTH TOKEN, kuris bus naudojamas kode (galite nusiųsti jį į savo el. Paštą).
-
Apima du „Gauge“valdiklius, kurie apibrėžia:
- Virtualus kaištis, naudojamas su kiekvienu jutikliu: V10 (jutiklis [0]) ir V11 (jutiklis [1])
- Temperatūros diapazonas: nuo -5 iki 100 oC jutikliui [0]
- Temperatūros diapazonas: nuo 25 iki 212 oC jutikliui [1]
- Duomenų skaitymo dažnis: 1 sekundė
- Apima valdiklį „Istorijos diagrama“, apibrėžiantį V10 ir V11 kaip virtualius kaiščius
- Paspauskite „Play“(trikampis dešiniajame kampe)
Žinoma, „Blynk“programa jums pasakys, kad „NodeMCU“yra išjungtas. Atėjo laikas įkelti visą kodą į „Arduino IDE“. Jį galite gauti čia:
„NodeMCU_Dual_Sensor_Blynk_Ext.ino“
Pakeiskite „fiktyvius duomenis“naudodami savo kredencialus.
/ * „Blynk“įgaliojimai */
char auth = "JŪSŲ BLYNK AUTO KODAS ČIA"; / * „WiFi“prisijungimo duomenys */ char ssid = "JŪSŲ SSID"; char pass = "JŪSŲ Slaptažodis";
Štai ir viskas!
Žemiau rasite visą kodą. Iš esmės tai yra ankstesnis kodas, į kurį įvedėme naudodami „Blynk“parametrus ir specifines funkcijas. Atkreipkite dėmesį į 2 paskutines kodo eilutes. Čia jie yra svarbiausi. Jei turite daugiau jutiklių, renkančių duomenis, taip pat turėtumėte turėti lygiavertes naujas eilutes kaip ir tos (su atitinkamais naujais virtualiais kaiščiais).
/**************************************************************
* „IoT Multiple Temperature Monitor“su „Blynk“* „Blynk“biblioteka yra licencijuota pagal MIT licenciją * Šis pavyzdinis kodas yra viešai prieinamas. **Keli „OneWire“jutikliai: DS18B20*Sukūrė Marcelo Rovai - 2017 m. Rugpjūčio 25 d. ********************************* ****************************//*ESP & Blynk*/ #include #include #define BLYNK_PRINT Serial // Komentuok tai išjungti spaudinius ir sutaupyti vietos / * „Blynk“kredencialai * / char auth = "JŪSŲ BLYNK AUTO KODAS ČIA"; / * „WiFi“prisijungimo duomenys */ char ssid = "JŪSŲ SSID"; char pass = "JŪSŲ Slaptažodis"; / * TIMER */ #įtraukti „SimpleTimer“laikmatį; / * DS18B20 temperatūros jutiklis */ #include #include #define ONE_WIRE_BUS 2 // DS18B20 ant arduino pin2 atitinka D4 fizinėje plokštėje 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 („Dviejų jutiklių duomenų tikrinimas“); } void loop () {timer.run (); // Inicijuoja „SimpleTimer“Blynk.run (); } /*********************************************** ****Siųsti jutiklio duomenis į Blynk ***************************************** *********/ void getSendData () {DS18B20.requestTemperatures (); temp_0 = DS18B20.getTempCByIndex (0); // Jutiklis 0 fiksuos temperatūrą Celsijaus temp_1 = DS18B20.getTempFByIndex (1); // Jutiklis 0 užfiksuos temperatūrą Farenheito serijos.print ("Temp_0:"); Serial.print (temp_0); Serial.print ("oC. Temp_1:"); Serial.print (temp_1); Serial.println ("oF"); Blynk.virtualWrite (10, temp_0); // virtualus kaištis V10 Blynk.virtualWrite (11, temp_1); // virtualus kaištis V11}
Kai kodas bus įkeltas ir paleistas, patikrinkite „Blynk“programą. Dabar jis taip pat turėtų veikti, kaip parodyta aukščiau esančiame „iPhone“spausdinimo ekrane.
7 žingsnis: Išvada
Kaip visada, tikiuosi, kad šis projektas gali padėti kitiems rasti kelią įdomiame elektronikos, robotikos ir daiktų interneto pasaulyje!
Apsilankykite mano „GitHub“, kad gautumėte atnaujintų failų: „NodeMCU Dual Temp Monitor“
Norėdami gauti daugiau projektų, apsilankykite mano tinklaraštyje: MJRoBot.org
Saludos iš pasaulio pietų!
Iki pasimatymo mano kitoje pamokoje!
Ačiū, Marcelo
Rekomenduojamas:
„Wi -Fi“valdomas kelių jutiklių robotas: 6 žingsniai
„Wi-Fi“valdomas kelių jutiklių robotas: šioje pamokoje aš jums parodysiu, kaip sukurti „Wi-Fi“valdomą išmanųjį roverį naudojant „nodemcu“. Naudodami šį roverį galite realiai stebėti robotų aplinkos parametrus (šviesą, temperatūrą, drėgmę). laikas su savo išmaniuoju telefonu. pirmasis žiūrėjimas
„Cyberpunk“kelių jutiklių saugumas: 8 žingsniai
„Cyberpunk Multi-Sensor for Security“: nusprendžiau sukurti daugialypį saugumo jutiklį po to, kai mus apvogė gyvendami Ekvadoro džiunglėse. Dabar gyvename kitame mieste, bet norėjau gauti pranešimą apie bet kokią veiklą mūsų namuose. Mačiau daug prijungtų jutiklių, kurie nebuvo
„Arduino“sąsaja su ultragarso jutikliu ir bekontakčiu temperatūros jutikliu: 8 žingsniai
„Arduino“sąsaja su ultragarso jutikliu ir bekontakčiu temperatūros jutikliu: Šiuo metu kūrėjai ir kūrėjai teikia pirmenybę „Arduino“, norėdami greitai plėtoti projektų prototipus. „Arduino“yra atviro kodo elektronikos platforma, pagrįsta lengvai naudojama aparatine ir programine įranga. „Arduino“turi labai gerą vartotojų bendruomenę. Šiame projekte
KELIŲ JUTIKLIŲ PRIJUNGIMAS SU VIENU ARDUINO UNO SERIAL PORT: 4 žingsniai
KELIŲ JUTIKLIŲ PRIJUNGIMAS SU VIENU ARDUINO UNO SERIAL PORT: Šioje pamokoje mes išplėsime vieną „Arduino UNO UART“(Rx/Tx) nuoseklųjį prievadą, kad būtų galima prijungti kelis „Atlas“jutiklius. Plėtimas atliekamas naudojant 8: 1 nuosekliojo prievado plėtiklio plokštę. „Arduino“prievadas yra prijungtas prie plėtiklio po to, kai
KELIŲ JUTIKLIŲ PRIJUNGIMAS SU RASPBERRY PI: 6 žingsniai (su paveikslėliais)
KELIŲ JUTIKLIŲ JUNGIMAS su AVYNĖS PI: Šiame projekte mes prijungsime tris „Atlas Scientific“EZO jutiklius (pH, ištirpusį deguonį ir temperatūrą) prie „Raspberry Pi 3B+“. Užuot prijungę grandines prie „Raspberry Pi“, mes naudosime „Whitebox Labs Tentacle T3“skydą. T