Мазмуну:

Үй тармагынын температурасы сенсору: 7 кадам
Үй тармагынын температурасы сенсору: 7 кадам

Video: Үй тармагынын температурасы сенсору: 7 кадам

Video: Үй тармагынын температурасы сенсору: 7 кадам
Video: Новини сантехніки #34 [листопад 2023] 2024, Ноябрь
Anonim
Үй тармагынын температура сенсору
Үй тармагынын температура сенсору

Бул долбоорду ишке ашыруу үчүн эмнени билишиңиз керек:

Сиз билишиңиз керек:- Электрониканын кээ бир жөндөмдөрү (ширетүү)

- 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 бөлүгү

Arduino - ESP12 бөлүгү
Arduino - ESP12 бөлүгү
Arduino - ESP12 бөлүгү
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) Кардары катары тестирлөө

ESPти Network Time Protocol (NTP) Кардары катары тестирлөө
ESPти Network Time Protocol (NTP) Кардары катары тестирлөө
ESPти Network Time Protocol (NTP) Кардары катары тестирлөө
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 сенсорун текшерүү

DHT22 сенсорун сыноо
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 жагы

Нерселердин Server жагы
Нерселердин Server жагы
Нерселердин Server жагы
Нерселердин 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 катары түзөм, сиз муну каалабашыңыз мүмкүн.)

Өтө жөнөкөй веб -баракчаны колдонуу менен сиз үй тармагыңыздагы каалаган браузерден графиктерди көрө аласыз.

Сунушталууда: