Mundarija:
- 1 -qadam: Materiallar hisobi
- 2 -qadam: DS18B20 harorat sensori
- 3 -qadam: Sensorlarni NodeMCU -ga ulash
- 4 -qadam: Kerakli kutubxonalarni o'rnatish
- 5 -qadam: Sensorlarni sinab ko'rish
- 6 -qadam: Blynk -dan foydalanish
- 7 -qadam: Xulosa
Video: IoT oddiy: bir nechta sensorlarni kuzatish: 7 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:26
Bir necha hafta oldin, men bu erda DS18B20, 1-simli avtobus orqali aloqa o'rnatadigan, Internet orqali ma'lumotlarni NodeMCU va Blynk bilan yuboradigan DS18B20 yordamida haroratni kuzatish bo'yicha ko'rsatma nashr qildim:
IoT oddiy: har qanday joyda haroratni kuzatish
Ammo biz kashfiyotda o'tkazib yuborgan narsamiz, bunday sensorning katta afzalliklaridan biri edi, bu bitta simli avtobusga ulangan bir nechta sensorlardan bir nechta ma'lumotlarni yig'ish imkoniyati. Va endi uni o'rganish vaqti keldi.
Biz oxirgi qo'llanmada ishlab chiqilganlarni kengaytiramiz, endi ikkita DS18B20 sensorini kuzatamiz, biri Celciusda, ikkinchisi Farengeytda. Ma'lumotlar yuqoridagi blok -sxemada ko'rsatilgandek Blynk ilovasiga yuboriladi.
1 -qadam: Materiallar hisobi
- NodeMCU ESP 12-E (*)
- 2 ta DS18B20 harorat sensori
- Rezistor 4.7K Ohm
- Non taxtasi
- Ulanish
(*) Bu erda har qanday ESP qurilmasidan foydalanish mumkin. Eng keng tarqalgan NodeMCU V2 yoki V3. Har ikkisi ham doim yaxshi ishlaydi.
2 -qadam: DS18B20 harorat sensori
Biz bu qo'llanmada DS18B20 sensorining suv o'tkazmaydigan versiyasidan foydalanamiz. Bu nam sharoitda, masalan nam tuproqda uzoqdan harorat uchun juda foydali. Sensor izolyatsiya qilingan va 125 ° C gacha o'lchashni amalga oshirishi mumkin (Adafrut uni PVX kabelli simi ko'ylagi tufayli 100 ° C dan yuqori ishlatishni tavsiya etmaydi).
DS18B20 - bu raqamli sensor, bu hatto uzoq masofalarda ham foydalanishni yaxshi qiladi! Bu 1-simli raqamli harorat sensori juda aniq (diapazonning ko'p qismida ± 0,5 ° C) va bortli raqamli-analogli konvertordan 12 bitgacha aniqlik berishi mumkin. Ular bitta raqamli pin yordamida NodeMCU bilan juda yaxshi ishlaydi va siz hatto bir nechta pinni bitta pinga ulashingiz mumkin, ularning har birida farqlash uchun zavodda yoqilgan 64-bitli identifikator mavjud.
Sensor 3,0 dan 5,0 V gacha ishlaydi, bu shuni anglatadiki, uni to'g'ridan -to'g'ri 3.3 V NodeMCU pinlaridan quvvatlantirish mumkin.
Sensor 3 ta simdan iborat:
- Qora: GND
- Qizil: VCC
- Sariq: 1 simli ma'lumotlar
Bu erda siz to'liq ma'lumotni topishingiz mumkin: DS18B20 ma'lumotlar jadvali
3 -qadam: Sensorlarni NodeMCU -ga ulash
- Yuqoridagi rasmda ko'rsatilgandek, mini Breadboard -dagi har bir sensordan 3 ta simni ulang. Sensor kabelini yaxshiroq tuzatish uchun men maxsus ulagichlardan foydalandim.
-
E'tibor bering, ikkala sensor ham parallel. Agar sizda 2 dan ortiq datchik bo'lsa, siz ham shunday qilishingiz kerak.
- Qizil ==> 3.3V
- Qora ==> GND
- Sariq ==> D4
- VCC (3.3V) va Data (D4) o'rtasida 4.7K ohmli rezistordan foydalaning.
4 -qadam: Kerakli kutubxonalarni o'rnatish
DS18B20 -dan to'g'ri foydalanish uchun ikkita kutubxona kerak bo'ladi:
- OneWire
- Dallas harorati
Ikkala kutubxonani ham Arduino IDE Library omboriga o'rnating.
E'tibor bering, OneWire kutubxonasi ESP8266 bilan ishlatish uchun o'zgartirilgan maxsus bo'lishi kerak, aks holda kompilyatsiya paytida xato bo'ladi. Siz oxirgi havolani yuqoridagi havola orqali topasiz.
5 -qadam: Sensorlarni sinab ko'rish
Sensorlarni sinab ko'rish uchun GitHub -dan quyidagi faylni yuklab oling:
NodeMCU_DS18B20_Dual_Se nsor_test.ino
/**************************************************************
*Bir nechta harorat sensori sinovi**2 x OneWire sensori: DS18B20*NodeMCU D4 (yoki Arduino Pin 2) ga ulangan**Marselo Rovai tomonidan ishlab chiqilgan - 2017 yil 25 -avgust **************** *********************************************/ # #qo'shish # o'z ichiga #define ONE_WIRE_BUS 2 // DS18B20 NodeMCU pin D4 OneWire oneWire (ONE_WIRE_BUS); DallasTemperature DS18B20 (& oneWire); void setup () {Serial.begin (115200); DS18B20.begin (); Serial.println ("Ikki sensorli ma'lumotlarni tekshirish"); } void loop () {float temp_0; float temp_1; DS18B20.requestTemperatures (); temp_0 = DS18B20.getTempCByIndex (0); // Sensor 0 Tempni Celcius temp_1 = DS18B20.getTempFByIndex (1) da oladi; // Sensor 0 Farenxaytdagi Serial.print ("Temp_0:") da Tempni oladi; Serial.print (temp_0); Serial.print ("oC. Temp_1:"); Serial.print (temp_1); Serial.println ("oF"); kechikish (1000); }
Yuqoridagi kodga nazar tashlasak, eng muhim satrlar quyidagilardir:
temp_0 = DS18B20.getTempCByIndex (0); // Sensor 0 Celciusda Tempni oladi
temp_1 = DS18B20.getTempFByIndex (1); // Sensor 0 Farengeytda Tempni oladi
Birinchisi Celcius dagi Sensor [0] ("indeks (0)" ga qarang) qiymatini qaytaradi (kodning "getTempC" qismini ko'ring. Ikkinchi qator Sensor [1] bilan bog'liq va ma'lumotlarni qaytaradi. Farenxaytda bu erda "n" datchiklari bo'lishi mumkin, chunki ularning har biri uchun alohida "indeks" mavjud.
Endi kodni NodeMCU -ga yuklang va ketma -ket monitor yordamida haroratni kuzatib boring.
Yuqoridagi rasm kutilgan natijani ko'rsatadi. Sensorlarning har birini qo'lingizda ushlab turing, shunda harorat ko'tariladi.
6 -qadam: Blynk -dan foydalanish
Harorat ma'lumotlarini yozishni boshlaganingizdan so'ng, uni istalgan joydan ko'rish vaqti keldi. Biz buni Blynk yordamida qilamiz. Shunday qilib, olingan barcha ma'lumotlar sizning mobil qurilmangizda real vaqtda ko'rsatiladi va biz buning uchun tarixiy depozitariyni quramiz.
Quyidagi amallarni bajaring:
- Yangi loyiha yaratish.
- Unga nom bering (mening holimda "Ikki haroratli monitor")
- "Mening qurilmalarim" sifatida yangi qurilma - ESP8266 (WiFi) -ni tanlang.
- Kodda ishlatilishi uchun AUTH TOKEN -dan nusxa oling (uni elektron pochtangizga yuborishingiz mumkin).
-
Belgilaydigan ikkita "o'lchagich" vidjetini o'z ichiga oladi.
- Har bir sensor bilan ishlatiladigan virtual pin: V10 (Sensor [0]) va V11 (Sensor [1])
- Harorat diapazoni: Sensor [0] uchun -5 dan 100 oC gacha
- Harorat diapazoni: Sensor uchun 25 dan 212 oC gacha [1]
- Ma'lumotni o'qish chastotasi: 1 soniya
- V10 va V11ni virtual pin sifatida belgilaydigan "Tarix grafikasi" vidjetini o'z ichiga oladi
- "O'ynash" tugmasini bosing (o'ng burchakdagi uchburchak)
Albatta, Blynk ilovasi sizga NodeMCU tarmoqdan tashqarida ekanligini ma'lum qiladi. To'liq kodni Arduino IDE -ga yuklash vaqti keldi. Siz bu yerdan olishingiz mumkin:
NodeMCU_Dual_Sensor_Blynk_Ext.ino
O'zingizning shaxsiy ma'lumotlaringiz bilan "qo'pol ma'lumotlar" ni o'zgartiring.
/ * Blynk hisob ma'lumotlari */
char auth = "SIZNING BLYNK AVTO KODINGIZ BU YERDA"; / * WiFi hisob ma'lumotlari */ char ssid = "SIZNING SSID"; char pass = "Sizning parolingiz";
Va bu hammasi!
To'liq kodni ko'rsating. Bu asosan Blynk parametrlari va o'ziga xos funktsiyalari bilan kiritilgan oldingi kod. Kodning oxirgi 2 satriga e'tibor bering. Bular bu erda eng muhimlari. Agar sizda ko'proq ma'lumot to'playdigan datchiklar bo'lsa, sizda ham shunga o'xshash yangi satrlar bo'lishi kerak (tegishli yangi virtual pinlar aniqlangan).
/**************************************************************
* Blynk bilan IoT ko'p haroratli monitor * Blynk kutubxonasi MIT litsenziyasi ostida litsenziyalangan * Bu misol kodi jamoat mulki hisoblanadi. **Bir nechta OneWire sensori: DS18B20*Marselo Rovai tomonidan ishlab chiqilgan - 2017 yil 25 -avgust ******************************** ******************************//*ESP & Blynk*/ #include #include #deinefine BLYNK_PRINT Serial // Buni izohlang bosib chiqarishni o'chiring va joyni tejang / * Blynk hisob ma'lumotlari * / char auth = "SIZNING BLYNK AUTH KODINGIZ BU YERDA"; / * WiFi hisob ma'lumotlari */ char ssid = "SIZNING SSID"; char pass = "Sizning parolingiz"; / * TIMER */ #include SimpleTimer taymer; / * DS18B20 harorat sensori */ #include #include #deinine ONE_WIRE_BUS 2 // DS18B20 arduino pin2 da OneWire oneWire jismoniy bortidagi D4 ga mos keladi (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 ("Ikki sensorli ma'lumotlarni tekshirish"); } void loop () {timer.run (); // SimpleTimer Blynk.run () ni ishga tushiradi; } /********************************************** ****Sensor ma'lumotlarini Blynk -ga yuboring *************************************** *********/ void getSendData () {DS18B20.requestTemperatures (); temp_0 = DS18B20.getTempCByIndex (0); // Sensor 0 Tempni Celcius temp_1 = DS18B20.getTempFByIndex (1) da oladi; // Sensor 0 Farenheit Serial.print ("Temp_0:") da Tempni oladi; Serial.print (temp_0); Serial.print ("oC. Temp_1:"); Serial.print (temp_1); Serial.println ("oF"); Blynk.virtualWrite (10, temp_0); // virtual pin V10 Blynk.virtualWrite (11, temp_1); // virtual pin V11}
Kod yuklangan va ishga tushirilgandan so'ng, Blynk ilovasini tekshiring. Endi u iPhone -ning yuqori bosma ekranida ko'rsatilgandek ishlaydi.
7 -qadam: Xulosa
Har doimgidek, men umid qilamanki, bu loyiha boshqalarga elektronika, robototexnika va IoTning hayajonli dunyosida o'z yo'lini topishga yordam beradi!
Iltimos, yangilangan fayllar uchun mening GitHub -ga tashrif buyuring: NodeMCU Dual Temp Monitor
Boshqa loyihalar uchun mening blogimga tashrif buyuring: MJRoBot.org
Dunyoning janubidan salomlar!
Keyingi ko'rsatuvimda ko'rishguncha!
Rahmat, Marselo
Tavsiya:
Photoshop 2020 yordamida bir nechta rasmlarning fonini olib tashlang: 5 qadam
Photoshop 2020 yordamida bir nechta rasmlarning fonini olib tashlang: rasmning fonini olib tashlash hozir juda oson! Oddiy skript yordamida bir nechta (ommaviy) tasvirlar fonini olib tashlash uchun Adobe Photoshop 2020 -dan qanday foydalanish kerak
Arduino Connect bir nechta I2C qurilmalari: 6 qadam
Arduino Connect bir nechta I2C qurilmalari: Ushbu qo'llanmada biz bir nechta modullarni arduino -ga I2C ulanishi bilan ulashni o'rganamiz. Videoni tomosha qiling! Bizning misolimizda 4 ta OLED -displeydan foydalanamiz, lekin siz boshqa I2C modullaridan foydalanishingiz mumkin/ Agar xohlasangiz, sensorlar. Eslatma: 4 ta OLED displeyi
Bir nechta oddiy komponentlar, DIY elektron klaviatura: 6 qadam
Bir nechta oddiy komponentlar, DIY va elektron klaviatura: 555 taymer 1 Tugma × 81 100nF kondansatör batareya
Elektron sensorlarni tushunish: 8 qadam
Elektron sensorlarni tushunish: Umumiy sanoat va maishiy datchiklarning ishlashini tushuntirishga mo'ljallangan, bu " Ko'rsatma " amaliy mashg'ulotlar va tajribalar yordamida real dunyoda sotuvda mavjud bo'lgan sensorlardan qanday foydalanishni o'rgatadi
Bir nechta mikrokontroldan bir nechta LEDni qanday chiqarish mumkin: 6 qadam (rasmlar bilan)
Bir nechta mikroto'lqinli pinlardan qanday qilib ko'p LEDlarni haydash mumkin: Ko'pgina mikrokontrolderlarning uch holatida (+V, GND yoki "yuqori impedansli") mavjudligidan foydalanib, siz N pinli N*(N-1) LEDlarni boshqarishingiz mumkin. Shunday qilib, PIC12Fxxx yoki ATtiny11 kabi 8pinli mikrokontroller beshta mavjud 20 ta LEDni boshqarishi mumkin