Mundarija:

Uy tarmog'ining harorat sensori: 7 qadam
Uy tarmog'ining harorat sensori: 7 qadam

Video: Uy tarmog'ining harorat sensori: 7 qadam

Video: Uy tarmog'ining harorat sensori: 7 qadam
Video: ❄ Mini refrigerator Kemin KM-20L-A, 20L | из Китая 🏔 2024, Noyabr
Anonim
Uy tarmog'ining harorat sensori
Uy tarmog'ining harorat sensori

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

Xarid qilish
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

O'rnatish va fon
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

Arduino - ESP12 qismi
Arduino - ESP12 qismi
Arduino - ESP12 qismi
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

ESPni tarmoq vaqt protokoli (NTP) mijozi sifatida sinab ko'rish
ESPni tarmoq vaqt protokoli (NTP) mijozi sifatida sinab ko'rish
ESPni tarmoq vaqt protokoli (NTP) mijozi sifatida sinab ko'rish
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

DHT22 sensorini sinovdan o'tkazish
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 …

Uni birlashtirish…
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

Narsalarning server tomoni
Narsalarning server tomoni
Narsalarning server tomoni
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: