Mundarija:
- 1 -qadam: Xarid qilish
- 2 -qadam: O'rnatish va fon
- 3 -qadam: Arduino - ESP12 qismi
- 4 -qadam: ESPni tarmoq vaqt protokoli (NTP) mijozi sifatida sinab ko'rish
- 5 -qadam: DHT22 sensorini sinovdan o'tkazish
- 6 -qadam: uni birlashtirish …
- 7 -qadam: narsalarning server tomoni
Video: Uy tarmog'ining harorat sensori: 7 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:24
Loyihani amalga oshirish uchun nimani bilishingiz kerak:
Siz bilishingiz kerak:- Elektronika sohasidagi ba'zi ko'nikmalar (lehimlash)
- Linux
- Arduino IDE
(siz IDEda qo'shimcha taxtalarni yangilashingiz kerak bo'ladi:
- Arduino IDE orqali ESP kartasini yangilash/dasturlash.
(Internetda yaxshi darsliklar mavjud)
Buni Arduino Uno yoki FTDI (usb to serial adapter) yordamida amalga oshirish mumkin.
Men Uno -dan foydalandim, chunki mening shaxsiy kompyuterimda ketma -ket port yo'q edi va menda FTDI yo'q edi
1 -qadam: Xarid qilish
Buni amalga oshirish uchun sizga nima kerak bo'ladi?
Raqamli harorat va namlik sensori uchun:
- Yoki non taxtasi yoki pcb prototipi, lehim, lehim temir kabi muqobil …
- Bir oz sim
- ikkita sakrash
- 10k Ohm qarshilik
- ESP12F (boshqa modellar ham ishlashi mumkin …)
- DHT22 (DHT11 ga qaraganda biroz qimmatroq, lekin aniqroq)
- 3 ta AA qayta zaryadlanuvchi batareya va batareya ushlagichi
- loyihangizni joylashtirish uchun kichik plastik quti
Keyingi bosqichda men batareya to'plami va ESP o'rtasida ikkita 10 uF kondansatörlü HT7333 qo'shishni rejalashtirmoqdaman.
kirish voltajini (VCC) tavsiya etilgan 3.3V ga barqarorlashtirish, balki ESPni haddan tashqari kuchlanishdan himoya qilish.
Tarmoq qismi uchun:
- Sizning uyingizdagi Wi -Fi tarmog'i
Server qismi uchun:
- Linuxga asoslangan har qanday tizim (har doim yoniq!)
Men Raspberry Pi -dan foydalanardim (uni tashqi IP -kameralarim uchun server sifatida ham ishlataman.)
- server kodini kompilyatsiya qilish uchun gcc kompilyatori
- ma'lumotlarni saqlash va grafikalar yaratish uchun rrdtool to'plami
- apache (yoki boshqa veb -server)
Sizning sevimli kompyuteringiz yoki noutbukingiz Arduino IDE bilan.
2 -qadam: O'rnatish va fon
Wi -Fi ulangan bu versiyada - IOT demaslik - harorat va namlik sensori, men qayta zaryadlanuvchi batareyali ESP12F, DHT22 va 3 AA batareya ushlagichidan foydalanardim.
Har 20 daqiqada ESP DHT22 dan o'lchov oladi va uni uydagi WiFi tarmog'idagi UDP orqali serverga (Raspberry Pi) yuboradi. O'lchovlar yuborilgandan so'ng, ESP chuqur uyquga ketadi. Bu shuni anglatadiki, modulning faqat real vaqt soati quvvat bilan qoladi, natijada elektr energiyasi juda tejab qoladi. Taxminan 5 soniya davomida modulga taxminan 100mA kerak bo'ladi, keyin 20 daqiqa chuqur uyquda atigi 150uA.
Men Internetga asoslangan xizmatlardan foydalanishni xohlamadim, chunki menda Raspberry Pi bor, u har doim yonida bo'ladi va shu tarzda men server qismini yozishdan zavqlanardim.
Serverda (Raspbian ishlaydigan Raspberry Pi) men qiymatlarni oddiy RRD -da saqlaydigan oddiy UDP tinglovchisini (serverini) yozdim. (Tobias Oetiker tomonidan RRDtool yordamida Dumaloq Robin ma'lumotlar bazasi.)
RRDtool -ning afzalligi shundaki, siz ma'lumotlar bazasini bir marta yaratasiz va hajmi o'zgarmaydi. Bundan tashqari, fonda ishlaydigan ma'lumotlar bazasi serveriga (mySQLd kabi) ega bo'lishingiz shart emas. RRDtool sizga ma'lumotlar bazasini yaratish va grafiklarni yaratish vositalarini beradi.
Mening serverim grafiklarni vaqti -vaqti bilan yaratadi va hamma narsani juda oddiy http sahifasida ko'rsatadi. Men Raspberry Pi -dagi Apache2 veb -serveriga ulanish orqali o'z o'qishlarimni oddiy brauzer bilan maslahatlasha olaman!
Nihoyat, menda FTDI (USB -dan ketma -ket) yo'q edi, shuning uchun men Arduino UNO -dan foydalandim, siz EX va UNO -ning TX, RX va GND -ni ulashingiz kerak. (Bilaman, sizning instinktingiz sizga RX va TX -ni kesib o'tishingizni aytishi mumkin … buni ham sinab ko'rdingiz, ishlamayapti.)
Men darajali konvertatsiya qilmadim (UNO: High = 5V, lekin ESP asosan 3.3V qurilmasi … Bozorda yaxshi FTDI -lar mavjud, u erda siz o'zingizning yuqori darajangizni 5 yoki 3.3V ga tanlashingiz mumkin.
Mening sxemam 3 ta AA qayta zaryadlanuvchi batareyalar bilan ishlaydi - shuning uchun aslida 3 X 1,2V. Keyingi bosqichda men xavfsizlik uchun batareya to'plami va kontaktlarning zanglashiga HT7333 qo'ymoqchiman; yangi zaryadlangan batareyalar 1,2 V dan yuqori bo'lishi mumkin va ESP min. 3V va maksimal. 3.6V. Agar men bir lahzada ishqoriy batareyalarga (3 X 1,5V = 4,5V) qo'yishga qaror qilsam, mening ESPim qovurilmaydi!
Men ham 10x10x10 sm o'lchamdagi quyosh panelini ishlatishni o'ylardim, lekin bu qiyinchiliklarga arzimaydi. Soatiga 3 o'lchovni bajarib (asosan 3x5 soniyada @ 100mA va qolgan vaqtda @ 100uA), men o'z zanjirimni 1 yil zaryadlanuvchi batareyalarda quvvatlantirishga umid qilaman.
3 -qadam: Arduino - ESP12 qismi
Men bu loyihani turli bosqichlarda qildim.
ESP12 (aka. ESP8266) ni Arduino IDE -ga import qilishga yordam beradigan bir nechta havolalar mavjud. (Bu orada hal qilinishi mumkin bo'lgan xato tufayli men oxirgi versiyaning o'rniga 2.3.0 versiyasini ishlatishim kerak edi …)
Men ESPni Arduino UNO (faqat kompyuter orqali USB orqali ketma -ket ketma -ket uzatiladigan) orqali ESP seriyali interfeysiga ulashdan boshladim. Buni tushuntiradigan alohida ko'rsatmalar mavjud.
Men tugatgan loyihamda, agar muammoni hal qilishim kerak bo'lsa, simlarni ketma -ket ulanish uchun qoldirdim
Keyin ESP12 -ni quyidagicha ulashingiz kerak:
ESP pinlari …
GND UNO GND
RX UNO RX
TX UNO TX
EN VCC
GPIO15 GND
Dastlab men ESP -ni UNO -dagi 3.3V -dan quvvatlantirishga harakat qildim, lekin tezda ESP -ni dastgohli quvvat manbai bilan quvvatlantirishga o'tdim, lekin siz ham batareyalar to'plamidan foydalanishingiz mumkin.
GPIO0 Men ESPni miltillashini (= dasturlash) yoqish uchun uni GND ga o'tish moslamasi bilan uladim.
Birinchi sinov: jumperni ochiq qoldiring va Arduino IDE -da ketma -ket monitorni ishga tushiring (115200 bod!).
ESP -ni yoqish paytida siz axlat belgilarini ko'rishingiz kerak, so'ngra quyidagi xabarni ko'rishingiz kerak:
Ai-Thinker Technology Co., Ltd tayyor
Bu rejimda ESP biroz eskirgan modemga o'xshaydi. AT buyruqlaridan foydalanish kerak.
Quyidagi buyruqlarni sinab ko'ring:
AT+RST
va quyidagi ikkita buyruq
AT+CWMODE = 3
OK
AT+CWLAP
Bu sizga mintaqadagi barcha WiFi tarmoqlarining ro'yxatini berishi kerak.
Agar bu ishlayotgan bo'lsa, siz keyingi bosqichga tayyormiz.
4 -qadam: ESPni tarmoq vaqt protokoli (NTP) mijozi sifatida sinab ko'rish
Arduino IDE -da, Fayl, Misollar, ESP8266WiFi ostida NTPClient -ni yuklang.
Uning ishlashi uchun kichik tuzatishlar kerak; SSID va Wi -Fi tarmog'ining parolini kiritish kerak.
Endi GPIO0 -ni GND -ga qisqartiradigan jumperni joylashtiring.
ESP quvvatini aylantiring va eskizni ESPga yuklang.
Kompilyatsiya qilinganidan so'ng, ESP -ga yuklashni boshlash kerak. Kod yuklab olinayotganda, ESP -dagi ko'k LED tez yonadi.
Men yuklash ishlamasdan oldin IDEni qayta ishga tushirish, ESPni qayta ishga tushirish bilan biroz o'ynashim kerakligini payqadim.
Eskizni kompilyatsiya qilishni/yuklashni boshlashdan oldin, ketma -ket konsolni (= ketma -ket monitor) yopganingizga ishonch hosil qiling, chunki bu yuklashni amalga oshirishingizga to'sqinlik qiladi.
Yuklash muvaffaqiyatli bo'lgandan so'ng, ESP Internetdan vaqtni samarali qabul qilishini ko'rish uchun ketma-ket monitorni qayta ochishingiz mumkin.
Ajoyib, siz ESP -ni dasturladingiz, Wi -Fi tarmog'ingizga ulandingiz va Internetdan vaqt oldingiz.
Keyingi qadamda biz DHT22 ni sinab ko'ramiz.
5 -qadam: DHT22 sensorini sinovdan o'tkazish
Endi qo'shimcha simlar kerak bo'ladi.
DHT pinlari … Sensorning 1 -pinini (chapda) VCC (3.3V) ga ulang.
2 -pinli ESP GPIO5 pinini ulang (eskizda DHTPIN)
Sensorning 4 -pinini (o'ngda) GROUND ga ulang
Sensorning 2 -pinidan (ma'lumotlar) 10 -sonli rezistorni 1 -pin (quvvat) ga ulang.
NTP testiga o'xshab, DHTtester eskizini toping va uni quyidagicha o'zgartiring:
#deftine DHTPIN 5 // biz sensorga ulanish uchun GPIO5 ni tanladik#DHTTYPE DHT22 ni aniqlaymiz // chunki biz DHT22 dan foydalanmoqdamiz, lekin bu kod/kutubxona DHT11 uchun ham mos keladi
Shunga qaramay, ketma -ket monitorni yoping, ESP quvvatini aylantiring va ESPni kompilyatsiya qiling.
Agar hamma narsa yaxshi bo'lsa, o'lchovlar ketma -ket monitorda paydo bo'lishi kerak.
Sensor yordamida siz biroz o'ynashingiz mumkin. Agar siz u bilan nafas olsangiz, namlik ko'tarilishini ko'rasiz.
Agar sizda (LED bo'lmagan) stol chiroqchasi bo'lsa, uni biroz qizdirish uchun sensor ustida porlashingiz mumkin.
Ajoyib! Sensorning ikkita katta qismi ishlamoqda.
Keyingi bosqichda men oxirgi kodni sharhlayman.
6 -qadam: uni birlashtirish …
Yana bir nechta qo'shimcha simlar … bu DeepSleep -ni amalga oshirish uchun.
Esda tutingki, DeepSleep - bu IoT qurilmalari uchun ajoyib funksiya.
Ammo, agar sizning sensoringiz DeepSleep -ga ulangan bo'lsa, ESP -ni qayta dasturlash qiyin bo'lishi mumkin, shuning uchun biz boshqa ulagichni ulaymiz.
GPIO16-RST.
Ha, bu GPIO16 bo'lishi kerak, chunki bu DeepSleepdan keyin Real Time Clock o'chganda, qurilmani uyg'otish uchun qattiq simli GPIO!
Sinov paytida siz 15 soniya DeepSleep -ni tanlashingiz mumkin.
Nosozliklarni tuzatayotganda, men dasturni o'chirish uchun jumperni GPIO0 -ga o'tkazardim.
Yuklab olish tugagach, men jumperni GPIO16 ga o'tkazardim, shunda DeepSleep ishlaydi.
ESP kodi TnHclient.c deb nomlanadi
Siz SSID, parol va serveringizning IP -manzilini o'zgartirishingiz kerak.
Nosozliklarni tuzatish yoki sozlashni tekshirish uchun foydalanishingiz mumkin bo'lgan qo'shimcha kod satrlari mavjud.
7 -qadam: narsalarning server tomoni
UDP ishonchsiz va TCP - bu noto'g'ri tushuncha.
Bu bolg'a tornavidadan ko'ra foydaliroq degani kabi ahmoqona. Ular juda boshqacha foydali vositalar va ikkalasi ham o'z maqsadlariga ega.
Aytgancha, UDP bo'lmasa, Internet ishlamaydi … DNS UDP ga asoslangan.
Shunday qilib, men UDP ni tanladim, chunki u juda engil, oson va tez.
Menimcha, mening Wi -Fi tarmog'im juda ishonchli, shuning uchun agar mijoz "OK!" qabul qilinmaydi.
TnHserver uchun C-kod TnHServer.c faylida.
Kodda buni tushuntiruvchi bir nechta izohlar bor.
Bizga serverda qo'shimcha vositalar kerak bo'ladi: rrdtool, apache va ehtimol tcpdump.
Rrdtool-ni Raspbian-ga o'rnatish uchun siz paketni shunday o'rnatishingiz mumkin: apt-get install rrdtool
Agar siz tarmoq trafigini tuzatishingiz kerak bo'lsa, tcpdump apt-get install tcpdump-ga mos keladi.
Menga grafikalar bilan tanishish uchun brauzerdan foydalanish uchun veb-server kerak edi: apt-get install apache2
Men ushbu vositadan foydalandim: https://rrdwizard.appspot.com/index.php Round Robin ma'lumotlar bazasini yaratish buyrug'ini olish uchun. Siz buni faqat bir marta ishlatishingiz kerak (agar siz buni birinchi marta to'g'ri qabul qilsangiz).
rrdtool TnHdatabase.rrd yaratish-hozir-10s boshlang
-"1200" qadam
'DS: Harorat: GUGA: 1200: -20.5: 45.5'
'DS: Namlik: GUGA: 1200: 0: 100.0'
'RRA: O'rtacha: 0,5: 1: 720'
'RRA: O'rtacha: 0,5: 3: 960'
O'rtacha: 0,5: 18: 1600
Nihoyat, men har kuni yarim tunda TnHserver -ni qayta ishga tushirish uchun crontab yozuvidan foydalanaman. Men xavfsizlik chorasi sifatida TnHserverni oddiy foydalanuvchi sifatida ishlataman (ya'ni ildiz emas).
0 0 * * */usr/bin/pkill TnHserver; /home/user/bin/TnHserver>/dev/null 2> & 1
Siz TnHserver ishlayotganligini tekshirishingiz mumkin
$ ps -elf | grep TnHserver
va siz buni 7777 portidagi paketlarni tinglayotganini tekshirishingiz mumkin
$ netstat -anu
Faol Internet ulanishlari (serverlar va o'rnatilgan)
Proto Recv-Q Send-Q Mahalliy Manzil Tashqi Manzil
udp 0 0 0.0.0.0:7777 0.0.0.0:*
Nihoyat CreateTnH_Graphs.sh.txt - bu grafiklarni yaratish uchun namunali skript. (Men skriptlarni ildiz sifatida yarataman, siz buni xohlamasligingiz mumkin.)
Juda oddiy veb -sahifadan foydalanib, siz uy tarmog'ingizdagi istalgan brauzerdan grafiklarni ko'rishingiz mumkin.
Tavsiya:
Zigbee yotog'ining borligini aniqlovchi: 8 qadam
Zigbi to'shagining borligi detektori: Men bir muncha vaqtdan beri yotoqda ekanligimizni aniqlash usulini qidirardim. Bu ma'lumotni Homeassistant -da ishlatish uchun. Ushbu ma'lumot bilan men kechasi chiroqlarni o'chirish uchun avtomatlashtirishni amalga oshirishim mumkin yoki masalan, uyimda signalizatsiya tizimini ishga tushirishim mumkin edi
Ko'z qorachig'ining retsepti: BME60B loyihasi: 9 qadam
Ko'zni ko'r qilish retsepti: BME60B loyihasi: Muallif: Xanna Silos, Sang Xi Kim, Tomas Vaskes, Patrik VisteMagnifikatsiya - ko'zoynak o'qish uchun mavjud bo'lgan asosiy xususiyatlardan biri bo'lib, ular diopterlar retseptiga ko'ra tasniflanadi. Michigan Texnologiya Universitetining ma'lumotlariga ko'ra, diopter
Sensorli harorat va harorat sensori: 4 qadam
Sensorli haroratni qanday o'lchash mumkin ?: Kirish: "O'qitish" darsligi, shuningdek, Arduino -dagi temperatura sensori. Xo'sh, biz hech qachon materiallarni o'rnatmasligimiz kerak
Harorat sensori tarmog'i: 6 qadam
Harorat sensori tarmog'i: Harorat va namlik sizning laboratoriyangizda, oshxonangizda, ishlab chiqarish tarmog'ingizda, ofisda, qotil robotlarda va hatto uyingizda muhim ma'lumotlardir. Agar siz bir nechta joylarni yoki xonalarni yoki bo'sh joylarni kuzatib borishingiz kerak bo'lsa, sizga ishonchli, ixcham, aniq va ishonchli narsa kerak bo'ladi
Arduino WiFi tarmog'i (sensorlar va aktuatorlar) - rang sensori: 4 qadam
Arduino WiFi tarmog'i (Sensorlar va aktuatorlar) - Rang sensori: Sizdan necha marta uzoqroqda sizda sensor yoki aktuator mavjud? Wi-Fi tarmog'i orqali ulangan turli xil qul qurilmalarni boshqarish uchun kompyuteringiz yonidagi bitta asosiy qurilmadan foydalanish qanchalik qulay bo'lishi mumkin?