Мазмуну:
- 1 -кадам: Дүкөнгө барыңыз
- 2 -кадам: Орнотуу жана Фон
- 3 -кадам: Arduino - ESP12 бөлүгү
- 4 -кадам: ESPти Network Time Protocol (NTP) Кардары катары тестирлөө
- 5 -кадам: DHT22 сенсорун текшерүү
- 6 -кадам: Аны бириктирүү…
- 7 -кадам: нерселердин Server жагы
Video: Үй тармагынын температурасы сенсору: 7 кадам
2024 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2024-01-30 10:39
Бул долбоорду ишке ашыруу үчүн эмнени билишиңиз керек:
Сиз билишиңиз керек:- Электрониканын кээ бир жөндөмдөрү (ширетүү)
- Linux
- Arduino IDE
(сиз IDEдеги кошумча такталарды жаңыртууңуз керек болот:
- Arduino IDE аркылуу ESP тактасын жаңыртуу/программалоо.
(Интернетте жакшы окуу куралдары бар)
Бул Arduino Uno же FTDI (usb to serial adapter) аркылуу жасалышы мүмкүн.
Мен Uno колдондум, анткени менин компьютеримде сериялык порт же FTDI жок болчу
1 -кадам: Дүкөнгө барыңыз
Муну ишке ашыруу үчүн сизге эмне керек болот?
Санарип температура жана нымдуулук сенсору үчүн:
- Же нан тактасы же pcb прототипи, альтернатива, ширетүүчү темир сыяктуу …
- Кээ бир зым
- эки секирүүчү
- 10k Ohm каршылыгы
- ESP12F (башка моделдер да иштеши мүмкүн …)
- DHT22 (DHT11ден бир аз кымбатыраак, бирок так)
- 3 АА кайра заряддалуучу батарея жана батарея кармагыч
- Долбооруңузду коюу үчүн кичинекей пластикалык кутуча
- Кийинки этапта мен батарейка менен ESPтин ортосунда эки 10uF конденсатору бар HT7333 кошууну пландап жатам.
киргизүү чыңалуусун (VCC) сунушталган 3.3Vга турукташтыруу үчүн, бирок ESPти ашыкча чыңалуудан коргоо үчүн.
Network бөлүгү үчүн:
- Сиздин үй WiFi тармагы
Server бөлүгү үчүн:
- 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 колдонулган Round Robin маалымат базасы.)
RRDtoolдун артыкчылыгы - сиз маалымат базаңызды бир жолу түзөсүз жана өлчөмү өзгөрүүсүз калат. Болбосо, фондо иштеген маалымат базасынын серверине (mySQLd сыяктуу) ээ болуунун кажети жок. RRDtool сизге маалымат базасын түзүүгө жана графиктерди түзүүгө инструменттерди берет.
Менин серверим графиктерди мезгил -мезгили менен түзөт жана бардыгын абдан жөнөкөй http баракчасында көрсөтөт. Мен Raspberry Piдеги Apache2 веб -серверине туташып, жөнөкөй браузер менен окуумду суранам!
Акыр -аягы, менде FTDI (USBден Серияга) жок болчу, ошондуктан мен Arduino UNOну колдондум. Сиз TX жана RXти жана ESPтин ГНДсын жана БУУну туташтырууңуз керек. (Билем, сиздин инстинктиңиз RX менен TXти кесип өтүшүңүздү талап кылышы мүмкүн … аны да сынап көрүңүз, иштебейт.)
Мен деңгээлди конверсия кылган жокмун (UNO: High = 5V, бирок ESP негизинен 3.3V түзмөк … Базарда кээ бир жакшы FTDIлер бар, аларда сиз өзүңүздүн 5 же 3.3V болушуңуз керек.
Менин схемам 3 АА кайра заряддалуучу батареялар менен иштейт - андыктан 3 X 1.2V. Кийинки баскычта мен коопсуздук үчүн батарейка менен чынжырдын ортосуна HT7333 коюуга ниеттенип жатам; жаңы заряддалган батарейкалар 1.2Вдан ашык болушу мүмкүн жана ESP мин. 3V жана максимум. 3.6V. Ошондой эле, эгер мен чечим кабыл алсам - алсыз заматта - щелочтуу батареяларды (3 X 1.5V = 4.5V) коюуга менин ESP куурулбайт!
Мен ошондой эле 10см х 10см күн панелин колдонууну ойлондум, бирок бул жөн эле түйшүктүн кереги жок болчу. Саатына 3 өлчөө жасоо менен (негизинен 3x5 секунд @ 100mA максимум. Ал эми калган убакыт @ 100uA), мен өзүмдүн схемамды ошол эле заряддалуучу батареяларда 1 жыл кубаттайм деп үмүттөнөм.
3 -кадам: Arduino - ESP12 бөлүгү
Мен бул долбоорду ар кандай этаптарда жасадым.
ESP12 (aka. ESP8266) Arduino IDEге импорттоого жардам берген бир нече шилтемелер бар. (Ошол эле учурда чечилип калган катадан улам акыркы версиянын ордуна 2.3.0 версиясын колдонууга туура келди …)
Мен ESPти Arduino UNO аркылуу (USB аркылуу сериялык USB аркылуу компьютеримдин ортосундагы көпүрө катары) ESP сериялык интерфейсине туташтыруудан баштадым. Муну түшүндүргөн өзүнчө Инструкциялар бар.
Даяр болгон долбоорумда, мен көйгөйлөрдү чечүү керек болгондо Серияга туташуу үчүн зымдарды таштап койгом
Андан кийин сиз ESP12ди төмөнкүдөй зым менен жабышыңыз керек:
ESP казыктары…
GND UNO GND
RX UNO RX
TX UNO TX
EN VCC
GPIO15 GND
Башында мен ESPти БУУдагы 3.3Vдан кубаттоого аракет кылдым, бирок мен тез эле 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ти Network Time Protocol (NTP) Кардары катары тестирлөө
Arduino IDEде, File, Examples, ESP8266WiFi астында, NTPClientти жүктөңүз.
Иштетүү үчүн кичине оңдоолор керек; сиз SSID менен WiFi тармагыңыздын сырсөзүн киргизишиңиз керек.
Эми GPIO0ду GNDге кыска кылып, секиргичти коюңуз.
ESPти кубаттоо жана эскизди ESPке жүктөө.
Түзүлгөндөн кийин ESPке жүктөө башталууга тийиш. ESPтеги көк LED код жүктөлүп жатканда тез эле өчүп калат.
Мен жүктөө иштей электе, IDEди кайра жүктөө, ESPти кайра баштоо менен бир аз ойношум керек экенин байкадым.
Эскизди компиляциялоону/жүктөөнү баштоодон мурун, сериялык консолун (= сериялык монитор) жабууну унутпаңыз, анткени бул сиздин жүктөөңүзгө тоскоол болот.
Жүктөө ийгиликтүү болгондон кийин, ESPтин Интернеттен эффективдүү убакыт алып жатканын көрүү үчүн сериялык мониторду кайра ача аласыз.
Абдан жакшы, сиз ESPти программалап, WiFiңызга туташып, интернеттен убакыт алдыңыз.
Кийинки кадамда биз DHT22ди сынайбыз.
5 -кадам: DHT22 сенсорун текшерүү
Азыр кээ бир кошумча зымдар талап кылынат.
DHT казыктары … Сенсордун 1 -пинин (сол жакта) VCCге туташтырыңыз (3.3V)
2 pin ESP GPIO5 туташуу (эскизде DHTPIN)
Сенсордун 4 -пинин (оң жакта) GROUNDга туташтырыңыз
Сенсордун 2 -пининен (маалымат) 10K каршылыгын 1 -пинге (кубатына) туташтырыңыз.
NTP тестине окшош, DHTtester эскизин таап, аны төмөнкү жол менен тууралаңыз:
#Define DHTPIN 5 // биз сенсорго туташуу үчүн GPIO5ти тандап алдык#DHTTYPE DHT22 аныктоо // анткени биз DHT22 колдонуп жатабыз, бирок бул код/китепкана DHT11 үчүн да ылайыктуу
Дагы, сериялык мониторду жабыңыз, ESPтин кубаттуулугун жана ESPти түзүп, жаркылдатыңыз.
Эгер баары ойдогудай болсо, анда өлчөөлөр сериялык монитордо көрүнүшү керек.
Сенсор менен бир аз ойной аласыз. Эгер дем алсаңыз, нымдуулуктун жогорулаганын көрөсүз.
Эгерде сизде (LED эмес) стол чырагы бар болсо, аны бир аз жылытуу үчүн сенсорго жарык чачсаңыз болот.
Абдан жакшы! Сенсордун эки чоң бөлүгү азыр иштеп жатат.
Кийинки кадамда мен акыркы код боюнча комментарий берем.
6 -кадам: Аны бириктирүү…
Дагы бир кошумча зымдар … бул DeepSleepти мүмкүн кылуу.
Унутпаңыз, DeepSleep IoT түзмөктөрү үчүн укмуштуудай функция.
Бирок, эгерде сиздин сенсор DeepSleep үчүн зымдуу болсо, ESPти кайра программалоо кыйын болушу мүмкүн, андыктан биз дагы бир секирүүчү байланышты түзөбүз.
GPIO16-RST.
Ооба, бул GPIO16 болушу керек, анткени бул DeepSleepтен кийин Real Time Clock өчүп калганда, аппаратты ойготуу үчүн жабдылган GPIO!
Сыноо учурунда, 15 секунда DeepSleep кылууну чечсеңиз болот.
Мен мүчүлүштүктөрдү оңдоп жатканда, программамды жаркылдатуу үчүн секиргичти GPIO0го жылдырмакмын.
Жүктөө аяктагандан кийин, мен DeepSleep иштеши үчүн секиргичти GPIO16га жылдырмакмын.
ESP коду TnHclient.c деп аталат
Сиз SSID, Сырсөздү жана сервердин IP дарегин өзгөртүүгө туура келет.
Орнотууңузду оңдоо же сыноо үчүн колдоно турган кошумча коддор бар.
7 -кадам: нерселердин Server жагы
UDP ишенимсиз жана TCP бул жалпы түшүнбөстүк …
Бул балка отверткага караганда пайдалуу экенин айткандай эле акылсыздык. Алар жөн гана башка пайдалуу куралдар жана экөөнүн тең колдонулушу бар.
Баса, UDP болбосо Интернет иштебейт… DNS UDPге негизделген.
Ошентип, мен UDPти тандадым, анткени ал абдан жеңил, оңой жана тез.
Мен ойлойм, менин WiFi абдан ишенимдүү, ошондуктан кардар "OK!" Деген ырастоо болсо, эң көп дегенде 3 UDP пакетин жөнөтөт. алынбайт.
TnHserver үчүн C-код TnHServer.c файлында.
Аны түшүндүргөн кодексте бир нече комментарийлер бар.
Бизге серверде кошумча куралдар керек болот: rrdtool, apache жана мүмкүн tcpdump.
Rrdtoolду Raspbianге орнотуу үчүн сиз жөн гана пакетти төмөнкүдөй орното аласыз: apt-get install rrdtool
Эгерде сизге тармактык трафикти оңдоо керек болсо, tcpdump ыңгайлуу келет apt-get 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: ORTA: 0.5: 1: 720'
'RRA: ORTA: 0.5: 3: 960'
'RRA: ORTA: 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 - бул графиктерди түзүү үчүн скрипт үлгүсү. (Мен сценарийлерди root катары түзөм, сиз муну каалабашыңыз мүмкүн.)
Өтө жөнөкөй веб -баракчаны колдонуу менен сиз үй тармагыңыздагы каалаган браузерден графиктерди көрө аласыз.
Сунушталууда:
DHT21 Санарип температурасы жана нымдуулук сенсору Arduino менен: 6 кадам
DHT21 Санарип температурасы жана нымдуулук сенсору Arduino менен: Бул окуу куралында биз DHT21 нымдуулук жана температура сенсорун Arduino менен кантип колдонууну жана OLED дисплейде баалуулуктарды көрсөтүүнү үйрөнөбүз
Барбекю температурасы жана эт сенсору ESP8266 дисплейи менен: 5 кадам (сүрөттөр менен)
Барбекюдагы температура жана эт сенсору ESP8266 дисплейи менен: Бул нускамада мен сизге барбекюңуздун учурдагы температурасын өлчөгөн жана керек болсо күйгүзүү үчүн желдеткичти күйгүзүүчү барбекю куралынын өз версиясын кантип жасоону көрсөтөм. Мындан тышкары, эттин негизги температурасы сенсору бар
Классикалык унаалар үчүн зымсыз зонд менен кыймылдаткычтын температурасы сенсору/өлчөгүч: 7 кадам
Классикалык унаалар үчүн зымсыз зонд менен мотордун температурасы сенсору/өлчөгүч: Мен бул иликтөөнү сүйкүмдүү Чипитак үчүн жасадым. Чипитактын арткы капотунун астындагы 2 цилиндрлүү аба муздаган кыймылдаткычы бар fiat 126 машинасы, кыймылдаткычтын канчалык ысык экенин көрсөтүүчү температурасы жок, мен сенсордун жардам берерине ишенчүмүн
ESP8266 NodeMCU кирүү чекити (AP) DT11 температура сенсору жана браузердеги басма температурасы жана нымдуулугу менен: 5 кадам
ESP8266 NodeMCU кирүү чекити (AP) DT11 температура сенсору жана браузердеги басуу температурасы жана нымдуулугу бар веб -сервер үчүн: Салам достор, биз ESP8266 колдонгон долбоорлордун көбүндө жана долбоорлордун көбүндө биз ESP8266ды веб -сервер катары колдонобуз, андыктан маалыматтарга жетүү үчүн wifi аркылуу каалаган түзмөк, ESP8266 тарабынан жайгаштырылган Webserverге кирүү менен, бирок бир гана көйгөй, биз үчүн жумушчу роутер керек
Тышкы күч менен алмаштырылганда генерацияланган була тармагынын күч өзгөрүүлөрүн өлчөө: 8 кадам
Тышкы күч менен алмаштырылганда генерацияланган була тармагынын күч өзгөрүүлөрүн өлчөө: Клеткалар айланадагы клеткадан тышкаркы матрица (ECM) менен өз ара аракеттене алышат жана экөө тең ECM тарабынан колдонулган күчтөргө жооп бере алышат. Биздин долбоор үчүн, биз ECM катары иштей турган өз ара байланышкан булалардын тармагын окшоштурабыз жана анын кантип иштээрин көрөбүз