Мазмұны:
- 1 -қадам: Дүкенге барыңыз
- 2 -қадам: Орнату және фон
- 3 -қадам: Arduino - ESP12 бөлігі
- 4 -қадам: ESP желілік уақыт протоколы (NTP) клиенті ретінде тестілеу
- 5 -қадам: DHT22 датчигін тексеру
- 6 -қадам: оны біріктіру …
- 7 -қадам: Заттардың серверлік жағы
Бейне: Үй желісінің температура сенсоры: 7 қадам
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:24
Бұл жобаны жасау үшін нені білу керек:
Сіз білуіңіз керек:- электрониканың кейбір дағдылары (дәнекерлеу)
- 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 бөлігі
Мен бұл жобаны әр түрлі кезеңдерде жасадым.
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) клиенті ретінде тестілеу
Arduino IDE ішіндегі File, Examples, ESP8266WiFi астында NTPClient жүктеңіз.
Кішкене түзетулер оның жұмыс істеуі үшін қажет; SSID пен WiFi желісінің құпия сөзін енгізу қажет.
Енді GPIO0 -ды GND -ге қысқартатын секіргішті қойыңыз.
ESP қуатының айналуы және эскизді ESP -ке жүктеу.
Компиляциядан кейін ESP -ке жүктеуді бастау керек. ESP -тегі көк жарықдиодты код жүктелген кезде тез жыпылықтайды.
Мен жүктеу жұмыс істемей тұрып, IDE -ді қайта қосу, ESP -ті қайта қосу арқылы біраз ойнауға тура келетінін байқадым.
Эскизді құрастыруды/жүктеуді бастамас бұрын сериялық консольді (= сериялық монитор) жабуды ұмытпаңыз, себебі бұл жүктеуді орындауға кедергі келтіреді.
Жүктеу сәтті аяқталғаннан кейін, ESP интернеттен уақытты тиімді алатынын көру үшін сериялық мониторды қайта ашуға болады.
Керемет, сіз ESP -ті бағдарламаладыңыз, WiFi -ге қосылдыңыз және Интернеттен уақыт алдыңыз.
Келесі қадамда біз DHT22 тестілеуін жүргіземіз.
5 -қадам: 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 - бұл графиктерді құруға арналған үлгі скрипті. (Мен сценарийлерді түбір ретінде жасаймын, мүмкін сіз мұны қаламайсыз.)
Қарапайым веб -беттің көмегімен сіз үй желісіндегі кез келген шолғыштан графиктерді қарай аласыз.
Ұсынылған:
Телефонмен басқарылатын батпырауық желісінің парабирі: 11 қадам
Телефонмен басқарылатын батпырауық желісінің парабеарлы тамшысы: Кіріспе Бұл нұсқаулықта батпырауық желісінен үш парабирге дейін түсіретін құрылғыны құру әдісі сипатталған. Құрылғы телефонға немесе планшетке веб -бетті жеткізетін сымсыз кіру нүктесі қызметін атқарады. Бұл парабеардың түсуін басқаруға мүмкіндік береді
Android телефонының зарядтағышына арналған электр желісінің сүзгісін құру және құру: 5 қадам
Android телефонының зарядтағышына арналған электр желісінің сүзгісін құру және құру: Бұл нұсқаулықта мен стандартты USB -ді шағын USB сымына қалай алу керектігін көрсетемін, оны ортасынан ажыратып, шамадан тыс шуды төмендететін сүзгі тізбегін енгіземін. әдеттегі андроид қуат көзімен шығарылатын хэш. Менде портативті м бар
Телефон желісінің қарапайым декодерін DTMF қалай жасауға болады: 3 қадам
Қарапайым DTMF телефондық декодерін қалай жасауға болады: бұл DTMF сигналдарын кез келген телефон желісінде декодтауға мүмкіндік беретін қарапайым жоба. Бұл оқулықта біз MT8870D декодерін қолданамыз. Біз алдын ала орнатылған тон декодерін қолданамыз, себебі, сеніңіз, мұны
Arduino күн энергиясымен жұмыс істейтін температура мен ылғалдылық сенсоры 433 МГц Орегон сенсоры ретінде: 6 қадам
Arduino күн энергиясымен жұмыс істейтін температура мен ылғалдылық сенсоры 433 МГц Орегон сенсоры: Бұл күн сәулесінен жұмыс істейтін температура мен ылғалдылық сенсорының құрлысы. Сенсор 433 МГц жиілікті Орегон сенсорына ұқсайды және Telldus Net шлюзінде көрінеді. Күн энергиясының қозғалыс сенсоры " ebay -ден. 3.7 вольтты қамыр екеніне көз жеткізіңіз
ESP8266 NodeMCU кіру нүктесі (AP) DT11 температура сенсоры бар веб -сервер үшін және шолуда температура мен ылғалдылықты басып шығару: 5 қадам
Браузерде DT11 температура сенсоры мен баспа температурасы мен ылғалдылығы бар веб -серверге арналған ESP8266 NodeMCU кіру нүктесі (AP): Сәлеметсіздер ме, біз ESP8266 пайдаланатын жобалардың көпшілігінде және жобалардың көпшілігінде біз ESP8266 -ды веб -сервер ретінде қолданамыз, осылайша деректерге қол жеткізуге болады. ESP8266 орналастырған веб -серверге кіру арқылы Wi -Fi арқылы кез келген құрылғы, бірақ жалғыз мәселе - бізге жұмыс маршрутизаторы қажет