Мазмұны:

Үй желісінің температура сенсоры: 7 қадам
Үй желісінің температура сенсоры: 7 қадам

Бейне: Үй желісінің температура сенсоры: 7 қадам

Бейне: Үй желісінің температура сенсоры: 7 қадам
Бейне: Телефон кодын ашу😱😙 2024, Қараша
Anonim
Үй желісінің температура сенсоры
Үй желісінің температура сенсоры

Бұл жобаны жасау үшін нені білу керек:

Сіз білуіңіз керек:- электрониканың кейбір дағдылары (дәнекерлеу)

- Linux

- Arduino IDE

(IDE -де қосымша тақталарды жаңарту қажет болады:

- Arduino IDE арқылы ESP тақтасын жаңарту/бағдарламалау.

(Интернетте жақсы оқулықтар бар)

Мұны Arduino Uno немесе FTDI (usb to serial adapter) көмегімен жасауға болады.

Мен Uno -ды қолдандым, себебі менің компьютерімде сериялық порт жоқ, менде FTDI жоқ

1 -қадам: Дүкенге барыңыз

Шопингке барыңыз
Шопингке барыңыз

Мұны істеу үшін сізге не қажет?

Сандық температура мен ылғалдылық сенсоры үшін:

- Нан тақтасы немесе балама, мысалы, pcb прототипі, дәнекер, дәнекерлеу темірі …

- Біраз сым

- екі секіруші

- 10 кОм резистор

- ESP12F (басқа модельдер де жұмыс істеуі мүмкін …)

- DHT22 (DHT11 -ге қарағанда сәл қымбат, бірақ дәлірек)

- 3 АА қайта зарядталатын батарея және батарея ұстағыш

- сіздің жобаңызды салуға арналған кішкене пластикалық қорап

- Кейінгі кезеңде мен батарея жиынтығы мен ESP арасында екі 10uF конденсаторы бар HT7333 қосуды жоспарлап отырмын.

кіріс кернеуін (VCC) ұсынылған 3.3V -ге тұрақтандыру үшін, сонымен қатар ESP -ны шамадан тыс кернеуден қорғау үшін.

Желі бөлігі үшін:

- Сіздің үйдегі WiFi желісі

Сервер бөлігі үшін:

- Linux негізіндегі кез келген жүйе (әрқашан қосулы!)

Мен Raspberry Pi қолдандым (мен оны сыртқы IP камералар үшін сервер ретінде де қолданамын.)

- сервер кодын құрастыру үшін gcc компиляторы

- деректерді сақтауға және графиктерді құруға арналған rrdtool пакеті

- apache (немесе басқа веб -сервер)

Сіздің сүйікті компьютеріңіз немесе ноутбукіңізде Arduino IDE бар.

2 -қадам: Орнату және фон

Орнату және фон
Орнату және фон

Бұл Wi -Fi қосылымының нұсқасында - IOT деп айтуға болмайды - мен температура мен ылғалдылық сенсоры ESP12F, DHT22 және зарядталатын батареялары бар 3 АА батарея ұстағышын қолдандым.

Әр 20 минут сайын ESP DHT22 -ден өлшеу алып, оны үйдегі WiFi желісіндегі UDP арқылы серверге (Raspberry Pi) жібереді. Өлшеулер жіберілгеннен кейін ESP терең ұйқыға кетеді. Бұл дегеніміз, модульдің тек нақты уақыт сағаты ғана жұмыс істейді, бұл керемет энергия үнемдеуге әкеледі. Шамамен 5 секунд ішінде модуль шамамен 100 мА қажет, содан кейін 20 минут терең ұйқы кезінде тек 150uA қажет.

Мен Интернетке негізделген кез келген қызметті пайдаланғым келмеді, себебі менде әрқашан Raspberry Pi бар, осылайша мен сервер бөлігін жазуға қуаныштымын.

Серверде (Raspbian жұмыс істейтін Raspberry Pi) мен мәндерді қарапайым RRD -ге сақтайтын қарапайым UDP тыңдаушысын (серверін) жаздым. (Tobias Oetiker RRDtool көмегімен Робин деректер базасы.)

RRDtool -дің артықшылығы мынада, сіз мәліметтер қорын бір рет жасайсыз және өлшемі өзгеріссіз қалады. Сонымен қатар, фонда жұмыс істейтін дерекқор сервері (мысалы, mySQLd) қажет емес. RRDtool сізге мәліметтер қорын құруға және графиктерді құруға арналған құралдарды ұсынады.

Менің серверім графиктерді мезгіл -мезгіл жасайды және бәрін қарапайым http бетінде көрсетеді. Мен Raspberry Pi -дегі Apache2 веб -серверіне қосылу арқылы қарапайым браузермен оқуларымды біле аламын!

Ақырында, менде FTDI (USB -ден сериялы) жоқ, сондықтан мен Arduino UNO -ды қолдандым, сізге EX пен UNO -ның TX, RX және GND байланыстыру қажет. (Білемін, сіздің бейнеқосылғыңыз сізге RX пен TX -тен өтуді айтуы мүмкін … оны да сынап көріңіз, ол жұмыс істемейді.)

Мен деңгейлік конверсия жасамадым (UNO: High = 5V, бірақ ESP - бұл негізінен 3.3В құралы … Нарықта FTDI -дің жақсы нұсқалары бар, оларда сіз өзіңіздің жоғары деңгейіңізді 5 немесе 3.3V деп таңдай аласыз.

Менің тізбегім 3 АА қайта зарядталатын батареялармен жұмыс істейді, сондықтан шын мәнінде 3 X 1.2V. Кейінгі кезеңде мен қауіпсіздік үшін батареялар мен тізбектердің арасына HT7333 қондырғым келеді; жаңа зарядталған батареялардың қуаты 1,2 В -тан жоғары болуы мүмкін, ал ESP мин. 3В және максималды. 3.6В. Сондай -ақ, егер мен әлсіз сәтте - сілтілі батареяларды (3 X 1.5V = 4.5V) салуды шешсем, менің ESP қуырылмайды!

Мен сондай -ақ 10см х 10см күн панелін қолдануды қарастырдым, бірақ бұл қиындық тудырмады. Сағатына 3 өлшеу жүргізу арқылы (ең көбі 3x 5 секундта @ 100mA, ал қалған уақытта @ 100uA), мен сол зарядталатын батареяларда өз схемамды 1 жылға қуаттаймын деп үміттенемін.

3 -қадам: Arduino - ESP12 бөлігі

Arduino - ESP12 бөлігі
Arduino - ESP12 бөлігі
Arduino - ESP12 бөлігі
Arduino - ESP12 бөлігі

Мен бұл жобаны әр түрлі кезеңдерде жасадым.

ESP12 (aka. ESP8266) Arduino IDE -ге импорттауға көмектесетін бірнеше сілтемелер бар. (Мен шешуге болатын қатеге байланысты соңғы нұсқаның орнына 2.3.0 нұсқасын қолдануға тура келді …)

Мен ESP -ті Arduino UNO арқылы (тек компьютер арқылы USB арқылы серияға қосылатын көпір ретінде) ESP сериялық интерфейсіне қосудан бастадым. Мұны түсіндіретін бөлек нұсқаулықтар бар.

Аяқталған жобада мен ақаулықтарды жою қажет болған жағдайда серияға қосылу үшін сымдарды қалдырдым

Содан кейін сізге ESP12 сымын келесідей қосу керек:

ESP түйреуіштері…

GND UNO GND

RX UNO RX

TX UNO TX

EN VCC

GPIO15 GND

Бастапқыда мен ESP -ті БҰҰ -дағы 3.3В -тан қуаттандыруға тырыстым, бірақ мен тез арада ESP -ті электрмен жабдықтауға ауыстырдым, бірақ сіз батареяны да пайдалана аласыз.

GPIO0 Мен ESP -ті жыпылықтауды (= бағдарламалауды) қосу үшін GND -ге секіргішпен қостым.

Бірінші тест: секіргішті ашық қалдырыңыз және Arduino IDE сериялық мониторын іске қосыңыз (115200 bod!).

ESP қуатының айналуы кезінде сіз қоқыс таңбаларын, содан кейін хабарды көресіз:

Ai-Thinker Technology Co. Ltd. дайын

Бұл режимде ESP ескі модемге ұқсайды. AT командаларын қолдану қажет.

Келесі пәрмендерді қолданып көріңіз:

AT+RST

және келесі екі команда

AT+CWMODE = 3

ЖАРАЙДЫ МА

AT+CWLAP

Бұл сізге аймақтағы барлық WiFi желілерінің тізімін беруі керек.

Егер бұл жұмыс істесе, сіз келесі қадамға дайынсыз.

4 -қадам: ESP желілік уақыт протоколы (NTP) клиенті ретінде тестілеу

ESP желілік уақыт протоколы (NTP) клиенті ретінде тестілеу
ESP желілік уақыт протоколы (NTP) клиенті ретінде тестілеу
ESP желілік уақыт протоколы (NTP) клиенті ретінде тестілеу
ESP желілік уақыт протоколы (NTP) клиенті ретінде тестілеу

Arduino IDE ішіндегі File, Examples, ESP8266WiFi астында NTPClient жүктеңіз.

Кішкене түзетулер оның жұмыс істеуі үшін қажет; SSID пен WiFi желісінің құпия сөзін енгізу қажет.

Енді GPIO0 -ды GND -ге қысқартатын секіргішті қойыңыз.

ESP қуатының айналуы және эскизді ESP -ке жүктеу.

Компиляциядан кейін ESP -ке жүктеуді бастау керек. ESP -тегі көк жарықдиодты код жүктелген кезде тез жыпылықтайды.

Мен жүктеу жұмыс істемей тұрып, IDE -ді қайта қосу, ESP -ті қайта қосу арқылы біраз ойнауға тура келетінін байқадым.

Эскизді құрастыруды/жүктеуді бастамас бұрын сериялық консольді (= сериялық монитор) жабуды ұмытпаңыз, себебі бұл жүктеуді орындауға кедергі келтіреді.

Жүктеу сәтті аяқталғаннан кейін, ESP интернеттен уақытты тиімді алатынын көру үшін сериялық мониторды қайта ашуға болады.

Керемет, сіз ESP -ті бағдарламаладыңыз, WiFi -ге қосылдыңыз және Интернеттен уақыт алдыңыз.

Келесі қадамда біз DHT22 тестілеуін жүргіземіз.

5 -қадам: DHT22 датчигін тексеру

DHT22 датчигін тексеру
DHT22 датчигін тексеру

Енді қосымша сымдар қажет.

DHT түйреуіштері … Сенсордың 1 -ші түйреуішін (сол жақта) VCC -ке (3.3В) қосыңыз

2 -түйреуішті қосыңыз ESP GPIO5 (эскизде DHTPIN)

Сенсордың 4 -ші түйреуішін (оң жақта) GROUND -ге қосыңыз

2 -ші істікшеден (деректер) 10K резисторды сенсордың 1 -ші түйреуішіне қосыңыз.

NTP тестіне ұқсас, DHTtester эскизін табыңыз және оны келесі жолмен реттеңіз:

#DHTPIN 5 анықтаңыз // сенсорға қосылу үшін GPIO5 таңдадық#DHTTYPE DHT22 анықтаңыз // біз DHT22 қолданамыз, бірақ бұл код/кітапхана DHT11 үшін де жарамды

Тағы да, сериялық мониторды жабыңыз, ESP қуат беру циклін және ESP құрастырыңыз және жыпылықтаңыз.

Егер бәрі ойдағыдай болса, өлшеу сериялық мониторда пайда болатынын көру керек.

Сенсормен аздап ойнауға болады. Егер сіз тыныс алсаңыз, ылғалдылық жоғарылағанын көресіз.

Егер сізде (светодиодты емес) үстел шамы болса, оны сәл қыздыру үшін сенсорды жағуға болады.

Тамаша! Сенсордың екі үлкен бөлігі жұмыс істеп тұр.

Келесі қадамда мен соңғы код туралы түсініктеме беремін.

6 -қадам: оны біріктіру …

Оны біріктіру…
Оны біріктіру…

Тағы да қосымша сымдар … бұл DeepSleep мүмкіндігін жасау үшін.

Есіңізде болсын, DeepSleep - бұл IoT құрылғылары үшін керемет функция.

Алайда, егер сіздің сенсорыңыз DeepSleep үшін сымсыз қосылса, ESP -ті қайта бағдарламалау қиын болуы мүмкін, сондықтан біз олардың арасында тағы бір қосқыш қосамыз.

GPIO16-RST.

Иә, бұл GPIO16 болуы керек, себебі бұл DeepSleep -тен кейін нақты уақыт сөнген кезде құрылғыны оятуға арналған GPIO!

Сіз тестілеу кезінде 15 секундтық DeepSleep режимін таңдауға болады.

Мен ақауды шешкен кезде, мен бағдарламаны жарқырата алу үшін секіргішті GPIO0 -ге ауыстыратын едім.

Жүктеу аяқталғаннан кейін мен DeepSleep жұмыс істеуі үшін секіргішті GPIO16 -ға ауыстырар едім.

ESP коды TnHclient.c деп аталады

Сіз SSID, құпия сөзді және сервердің IP мекенжайын өзгертуіңіз керек.

Ақаулықтарды жою немесе орнатуды тексеру үшін қолдануға болатын қосымша код жолдары бар.

7 -қадам: Заттардың серверлік жағы

Заттардың серверлік жағы
Заттардың серверлік жағы
Заттардың серверлік жағы
Заттардың серверлік жағы

UDP сенімді емес және TCP - бұл жалпы түсініспеушілік …

Балға бұрағыштан гөрі пайдалы деп айтудың өзі ақымақтық. Олар өте пайдалы әр түрлі құралдар және олардың екеуінде де қолданылады.

Айтпақшы, UDP болмаса, Интернет жұмыс істемейді … DNS UDP -ге негізделген.

Сондықтан мен UDP таңдадым, себебі ол өте жеңіл, жеңіл және жылдам.

Менің ойымша, менің WiFi өте сенімді деп ойлаймын, сондықтан клиент «OK!» Растауы болған жағдайда UDP пакеттерінің көпшілігін жібереді. алынбайды.

TnHserver C-коды TnHServer.c файлында.

Кодта оны түсіндіретін бірнеше түсініктемелер бар.

Бізге серверде қосымша құралдар қажет болады: rrdtool, apache және мүмкін tcpdump.

Rasptool-да rrdtool орнату үшін буманы келесідей орнатуға болады: apt-get install rrdtool

Егер сізге желілік трафикті түзету қажет болса, tcpdump ыңғайлы apt-get install tcpdump келеді.

Маған графиктерді қарау үшін браузерді пайдалану үшін веб-сервер қажет болды: apt-get install apache2

Мен бұл құралды қолдандым: https://rrdwizard.appspot.com/index.php Round Robin мәліметтер базасын құру пәрменін алу үшін. Сіз мұны тек бір рет іске қосуыңыз керек (егер сіз оны бірінші рет дұрыс тапсаңыз).

rrdtool TnHdatabase.rrd жасау-қазірден бастаңыз-10s

-'1200' қадамы

'DS: Температура: GAUGE: 1200: -20.5: 45.5'

'DS: Ылғалдылық: GAUGE: 1200: 0: 100.0'

'RRA: ОрТАШЫ: 0,5: 1: 720'

'RRA: ОрТАШЫ: 0,5: 3: 960'

'RRA: Орташа: 0,5: 18: 1600'

Ақырында, мен TnHserver -ді күн сайын түн ортасында қайта қосу үшін crontab жазбасын қолданамын. Мен қауіпсіздік шарасы ретінде TnHserver -ді қалыпты қолданушы ретінде (яғни. ЕМЕС түбір) іске қосамын.

0 0 * * */usr/bin/pkill TnHserver; /home/user/bin/TnHserver>/dev/null 2> & 1

TnHserver іске қосылғанын тексеру арқылы тексеруге болады

$ ps -elf | grep TnHserver

және сіз мұны 7777 портындағы пакеттерді тыңдайтынын тексере аласыз

$ netstat -anu

Белсенді Интернет байланыстары (серверлер мен орнатылған)

Proto Recv-Q Send-Q жергілікті мекенжайы Шетелдік мекен-жай

udp 0 0 0.0.0.0:7777 0.0.0.0:*

Соңында CreateTnH_Graphs.sh.txt - бұл графиктерді құруға арналған үлгі скрипті. (Мен сценарийлерді түбір ретінде жасаймын, мүмкін сіз мұны қаламайсыз.)

Қарапайым веб -беттің көмегімен сіз үй желісіндегі кез келген шолғыштан графиктерді қарай аласыз.

Ұсынылған: