Բովանդակություն:

Տնային ցանցի ջերմաստիճանի տվիչ ՝ 7 քայլ
Տնային ցանցի ջերմաստիճանի տվիչ ՝ 7 քայլ

Video: Տնային ցանցի ջերմաստիճանի տվիչ ՝ 7 քայլ

Video: Տնային ցանցի ջերմաստիճանի տվիչ ՝ 7 քայլ
Video: Aqara S1 ZNCJMB14LM - ինտերակտիվ սենսորային վահանակ և եռագիծ անջատիչ խելացի տան համար 2024, Նոյեմբեր
Anonim
Տնային ցանցի ջերմաստիճանի տվիչ
Տնային ցանցի ջերմաստիճանի տվիչ

Ի՞նչ պետք է իմանաք այս նախագիծը պատրաստելու համար.

Դուք պետք է իմանաք.- Էլեկտրոնիկայի որոշ հմտություններ (զոդման)

- Linux

- Arduino IDE

(Ձեզ անհրաժեշտ կլինի IDE- ի լրացուցիչ տախտակներ թարմացնել ՝

- արդիականացնել/ծրագրավորել ESP տախտակ Arduino IDE- ի միջոցով:

(համացանցում կան մի քանի գեղեցիկ ձեռնարկներ)

Դա կարելի է անել Arduino Uno- ի կամ FTDI- ի միջոցով (usb to serial adapter):

Ես օգտագործեցի իմ Uno- ն, քանի որ իմ համակարգչում ոչ մի սերիական պորտ չունեի, ոչ էլ ունեի FTDI

Քայլ 1: Գնացեք գնումներ կատարելու

Գնալ գնումների
Գնալ գնումների

Ի՞նչ կպահանջվի, որպեսզի դա տեղի ունենա:

Թվային ջերմաստիճանի և խոնավության տվիչի համար.

- Կա՛մ տախտակ, կա՛մ այլընտրանք, ինչպիսին է pcb- ի, զոդի, զոդման նախատիպը…

- Որոշ մետաղալարեր

- երկու ցատկող

- 10k Օմ դիմադրություն

- ESP12F (այլ մոդելներ նույնպես կարող են աշխատել …)

- DHT22 (մի փոքր ավելի թանկ, քան DHT11- ը, բայց ավելի ճշգրիտ)

- 3 AA լիցքավորվող մարտկոց և մարտկոցի պահոց

- մի փոքր պլաստիկ տուփ `ձեր նախագիծը տեղադրելու համար

- Հետագա փուլում ես նախատեսում եմ ավելացնել HT7333 երկու 10uF կոնդենսատոր մարտկոցի տուփի և ESP- ի միջև

կայունացնել մուտքային լարումը (VCC) առաջարկվող 3.3 Վ -ին, բայց նաև պաշտպանել ESP- ն գերլարումից:

Networkանցի մասի համար.

- Ձեր տան WiFi ցանցը

Սերվերի մասի համար.

- Linux- ի վրա հիմնված ցանկացած համակարգ (միշտ միացված է)

Ես օգտագործեցի Raspberry Pi (որը ես նաև օգտագործում եմ որպես սերվեր իմ արտաքին IP տեսախցիկների համար):

- gcc կոմպիլյատոր `ձեր սերվերի կոդը կազմելու համար

- rrdtool փաթեթ ՝ տվյալները պահելու և գրաֆիկներ գեներացնելու համար

- apache (կամ այլ վեբ սերվեր)

Ձեր նախընտրած համակարգիչը կամ նոութբուքը ՝ Arduino IDE- ով:

Քայլ 2: Կարգավորում և նախապատմություն

Կարգավորում և նախապատմություն
Կարգավորում և նախապատմություն

WiFi- ի այս տարբերակում, որը միացված է (չասեմ IOT), ջերմաստիճանի և խոնավության սենսորին, ես օգտագործեցի ESP12F, DHT22 և 3 AA մարտկոցի կրիչ `վերալիցքավորվող մարտկոցներով:

Ամեն 20 րոպեն մեկ ESP- ն չափում է DHT22- ից և այն ուղարկում է սերվեր (Raspberry Pi) UDP- ով ՝ իմ տան WiFi ցանցի միջոցով: Չափումները ուղարկվելուց հետո ESP- ն խոր քուն է մտնում: Սա նշանակում է, որ մոդուլի միայն Իրական ժամանակի ժամացույցը մնում է սնուցված, ինչը հանգեցնում է էներգիայի անհավանական խնայողության: Մոտ 5 վայրկյան մոդուլը պահանջում է մոտ 100 մԱ, այնուհետ 20 րոպե խորը քնի ընթացքում `ընդամենը 150 օԱ:

Ես չէի ուզում օգտվել ինտերնետից հիմնված որևէ ծառայությունից, քանի որ ես ունեմ իմ Raspberry Pi- ն, որը միևնույնն է, միևնույն ժամանակ, և այս կերպ հաճույք ստացա գրել նաև սերվերային մասը:

Սերվերի վրա (Raspbian- ով աշխատող Raspberry Pi) ես գրել եմ մի պարզ UDP ունկնդիր (սերվեր), որը արժեքները պահում է պարզ RRD- ի մեջ: (Կլոր Ռոբինի տվյալների շտեմարան ՝ օգտագործելով Tobias Oetiker- ի RRDtool- ը):

RRDtool- ի առավելությունն այն է, որ դուք մեկ անգամ ստեղծում եք ձեր տվյալների բազան, և չափը մնում է անփոփոխ: Այլապես, կարիք չկա ունենալ տվյալների բազայի սերվեր (ինչպես mySQLd), որը աշխատում է հետին պլանում: RRDtool- ը ձեզ տալիս է տվյալների բազա ստեղծելու և գրաֆիկները գեներացնելու գործիքներ:

Իմ սերվերը պարբերաբար ստեղծում է գրաֆիկները և ամեն ինչ ցուցադրում է շատ պարզ http էջում: Ես կարող եմ իմ ընթերցումներին ծանոթանալ պարզ դիտարկիչով ՝ միանալով Raspberry Pi- ի Apache2 վեբ սերվերին:

Վերջապես, ես չունեի FTDI (USB to Serial), այնպես որ ես օգտագործեցի իմ Arduino UNO- ն: Դուք պետք է միացնեք TX- ի և RX- ի և ESP- ի և UNO- ի GND- ը: (Գիտեմ, ձեր բնազդը կարող է ձեզ ասել, որ անցեք RX- ով և TX- ով … դա էլ փորձեց, չի աշխատում):

Ես մակարդակի փոխակերպում չեմ արել (UNO: High = 5V, բայց ESP- ը հիմնականում 3.3V սարք է … Շուկայում կան մի քանի գեղեցիկ FTDI, որտեղ նույնիսկ կարող եք ընտրել ձեր բարձր մակարդակը `5 կամ 3.3V:

Իմ միացումն աշխատում է 3 AA լիցքավորվող մարտկոցներով, այսինքն ՝ իրականում 3 X 1.2V: Հետագա փուլում ես մտադիր եմ HT7333- ը տեղադրել մարտկոցի տուփի և միացման միջև անվտանգության համար; նոր լիցքավորված մարտկոցները կարող են ունենալ ավելի քան 1.2 Վ, իսկ ESP- ը պետք է սնուցվի նվազագույնով: 3 Վ և առավելագույն 3.6 Վ Նաև, եթե որոշեմ - թուլության պահին - տեղադրել ալկալային մարտկոցներ (3 X 1.5V = 4.5V), իմ ESP- ը չի տապակվի:

Ես նաև մտածեցի 10 սմ x 10 սմ չափսերով արևային վահանակ օգտագործել, բայց դա պարզապես չարժե այս դժվարության համար: Hourամում 3 չափում կատարելով (հիմնականում 3x 5 վայրկյան @ 100 մԱ առավելագույն. Եվ մնացած ժամանակը ՝ @ 100uA), ես հույս ունեմ, որ միացումս կաշխատեցնեմ 1 տարի նույն լիցքավորվող մարտկոցներով:

Քայլ 3. Arduino - ESP12 մաս

The Arduino - ESP12 մաս
The Arduino - ESP12 մաս
The Arduino - ESP12 մաս
The Arduino - ESP12 մաս

Ես այս նախագիծը կատարեցի տարբեր քայլերով:

Կան մի քանի հղումներ, որոնք օգնում են ձեզ ներմուծել ESP12 (aka. ESP8266) Arduino IDE- ի մեջ: (Ես ստիպված էի օգտագործել 2.3.0 տարբերակը վերջինի փոխարեն `սխալի պատճառով, որը միգուցե լուծված էր …)

Ես սկսեցի ESP- ը միացնելով Arduino UNO- ով (միայն որպես կամուրջ իմ համակարգչի միջև USB- ի միջոցով դեպի Սերիա) դեպի ESP սերիական ինտերֆեյսը: Կան առանձին հրահանգներ, որոնք բացատրում են դա:

Ավարտված նախագծում ես թողեցի լարերը ՝ սերիալին միանալու համար, եթե ես երբևէ խնդիրներ լուծելու կարիք ունենամ: RX

Այնուհետև անհրաժեշտ է միացնել ձեր ESP12- ը հետևյալ կերպ.

ESP կապում…

GND UNO GND

RX UNO RX

TX UNO TX

EN VCC

GPIO15 GND

Սկզբում ես փորձեցի միացնել իմ ESP- ը 3.3V- ից UNO- ում, բայց ես արագ անցա իմ ESP- ին սնուցող նստարանով սնուցման աղբյուրով, բայց դուք նույնպես կարող եք օգտագործել ձեր մարտկոցի փաթեթը:

GPIO0 Ես այս մեկը jumper- ով միացրել եմ GND- ին `ESP- ի լուսարձակում (= ծրագրավորում) հնարավորություն տալու համար:

Առաջին փորձարկում. Թողեք թռիչքը բաց և սկսեք սերիական մոնիտոր Arduino IDE- ում (115200 baud!):

Էլեկտրաէներգիայի ցիկլ 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- ի կապույտ LED- ն արագ կթարթվի, երբ ծածկագիրը ներբեռնվում է:

Ես նկատեցի, որ ես պետք է մի փոքր մոտենամ IDE- ի վերագործարկմանը, ESP- ի վերագործարկմանը, նախքան բեռնման աշխատանքը:

Նախքան ուրվագծի կազմումը/վերբեռնումը սկսելը, համոզվեք, որ փակեք սերիական վահանակը (= սերիական մոնիտոր), քանի որ դա կխոչընդոտի ձեզ բեռնումը կատարելուն:

Երբ վերբեռնումը հաջողվի, կարող եք նորից բացել սերիական մոնիտորը ՝ ESP- ն արդյունավետորեն ինտերնետից ժամանակ ստանալու համար:

Հիանալի է, դուք ծրագրավորել եք ձեր ESP- ը, միացված եք ձեր WiFi- ին և ժամանակ եք ստացել ինտերնետից:

Հաջորդ քայլը մենք կփորձարկենք DHT22- ը:

Քայլ 5: DHT22 տվիչի փորձարկում

DHT22 տվիչի փորձարկում
DHT22 տվիչի փորձարկում

Այժմ լրացուցիչ լարեր են պահանջվում:

DHT կապում… Սենսորի 1 -ին (ձախ կողմում) միացրեք VCC- ին (3.3V)

Միացրեք PIN 2 ESP GPIO5 (DHTPIN ուրվագծում)

Սենսորի 4 -րդ կապը (աջ կողմում) միացրեք GROUND- ին

Միացրեք 10K դիմադրություն 2 -րդ կապից (տվյալներ) սենսորի 1 -ին (հզորություն):

NTP թեստի նման, գնացեք գտեք DHTtester էսքիզը և փոխեք այն հետևյալ կերպ.

#սահմանել DHTPIN 5 // մենք ընտրել ենք GPIO5 սենսորին միանալու համար#սահմանել DHTTYPE DHT22 // քանի որ մենք օգտագործում ենք DHT22, բայց այս ծածկագիրը/գրադարանը նույնպես պիտանի է DHT11- ի համար

Կրկին փակեք սերիական մոնիտորը, միացրեք ESP- ը և կազմեք և բռնկեք ESP- ը:

Եթե ամեն ինչ լավ ընթանա, ապա պետք է տեսնեք, որ չափումները հայտնվում են սերիական մոնիտորում:

Սենսորով կարող եք մի փոքր խաղալ: Եթե շնչեք դրա վրա, կտեսնեք, որ խոնավությունը բարձրանում է:

Եթե ունեք (ոչ LED) գրասեղանի լամպ, կարող եք փայլել սենսորի վրա ՝ այն մի փոքր տաքացնելու համար:

Հիանալի! Սենսորի երկու մեծ մասեր այժմ աշխատում են:

Հաջորդ քայլում ես կմեկնաբանեմ վերջնական կոդը:

Քայլ 6: Միավորել այն…

Միասին դնել…
Միասին դնել…

Կրկին մի քանի լրացուցիչ էլեկտրագծեր… սա խորը քունը հնարավոր դարձնելու համար է:

Հիշեք, DeepSleep- ը անհավանական գործառույթ է IoT սարքերի համար:

Այնուամենայնիվ, եթե ձեր սենսորը միացված է DeepSleep- ի համար, գուցե դժվար լինի ESP- ի ծրագրավորումը, այնպես որ մենք պատրաստվում ենք մեկ այլ թռիչքային կապ հաստատել

GPIO16-RST:

Այո, դա ՊԵՏՔ է լինի GPIO16, քանի որ դա այն GPIO- ն է, որն ունի սարքը արթնացնելու դժվարություն, երբ DeepSleep- ից հետո իրական ժամանակի ժամացույցը անջատվում է:

Փորձարկման ընթացքում կարող եք որոշել 15 վայրկյան տևողությամբ DeepSleep- ը:

Երբ ես կարգաբերում էի, ես jumper- ը տեղափոխում էի GPIO0, որպեսզի կարողանայի փայլեցնել իմ ծրագիրը:

Ներբեռնումն ավարտվելուց հետո ես jumper- ը կտեղափոխեի GPIO16, որպեսզի DeepSleep- ը աշխատեր:

ESP- ի ծածկագիրը կոչվում է TnHclient.c

Դուք պետք է փոխեք ձեր SSID- ը, գաղտնաբառը և ձեր սերվերի IP հասցեն:

Կան ծածկագրի լրացուցիչ տողեր, որոնք կարող եք օգտագործել ՝ ձեր կարգավորումները շտկելու կամ փորձարկելու համար:

Քայլ 7: Իրերի սերվերի կողմը:

Սերվերների կողմերի իրերը
Սերվերների կողմերի իրերը
Սերվերների կողմերի իրերը
Սերվերների կողմերի իրերը

Սովորական թյուրիմացություն է, որ UDP- ն անվստահելի է, իսկ TCP- ն ՝…

Դա նույնքան հիմար է, որքան մուրճ ասելն ավելի օգտակար է, քան պտուտակահան: Նրանք պարզապես տարբեր շատ օգտակար գործիքներ են, և երկուսն էլ ունեն իրենց կիրառումը:

Ի դեպ, առանց UDP- ի ինտերնետը չէր աշխատի … DNS- ը հիմնված է UDP- ի վրա:

Այսպիսով, ես ընտրեցի UDP- ն, քանի որ այն շատ թեթև է, հեշտ և արագ:

Ես հակված եմ կարծելու, որ իմ WiFi- ն շատ հուսալի է, ուստի հաճախորդը կուղարկի առավելագույնը 3 UDP փաթեթ, եթե «OK» է: չի ստացվում:

TnHserver- ի C- կոդը գտնվում է TnHServer.c ֆայլում:

Կան մի քանի մեկնաբանություններ, որոնք բացատրում են դա:

Սերվերի վրա մեզ անհրաժեշտ կլինեն լրացուցիչ գործիքներ ՝ rrdtool, apache և գուցե tcpdump:

Raspbian- ում rrdtool- ը տեղադրելու համար կարող եք պարզապես տեղադրել փաթեթն այսպես. Apt-get install rrdtool

Եթե Ձեզ անհրաժեշտ է կարգաբերել ցանցի տրաֆիկը, tcpdump- ը հարմար է apt-get տեղադրել tcpdump

Ինձ վեբ սերվեր էր պետք, որպեսզի կարողանայի դիտարկիչ օգտագործել ՝ գրաֆիկներին ծանոթանալու համար. Apt-get install apache2

Ես օգտագործեցի այս գործիքը ՝ https://rrdwizard.appspot.com/index.php ՝ Round Robin Database- ի ստեղծման հրաման ստանալու համար: Ձեզ անհրաժեշտ է միայն մեկ անգամ գործարկել (եթե առաջին անգամ ճիշտ եք ստանում):

rrdtool ստեղծել TnHdatabase.rrd-սկսել հիմա -10s

-քայլ '1200'

'DS: peratերմաստիճանը `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'

Վերջապես, ես օգտագործում եմ crontab գրառում ՝ ամեն օր կեսգիշերին վերագործարկելու համար իմ TnHserver- ը: Ես գործարկում եմ TnHserver- ը որպես սովորական օգտվող (այսինքն. ՉԻ արմատ) որպես անվտանգության նախազգուշական միջոց:

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

Դուք կարող եք ստուգել, որ TnHserver- ն աշխատում է ՝ կատարելով

$ ps -elf | grep TnHserver

և դուք կարող եք հաստատել, որ դա 7777 նավահանգստում փաթեթներ է լսում ՝ դա անելով

$ netstat -անու

Ակտիվ ինտերնետային կապեր (սերվերներ և հաստատված)

Proto Recv-Q Send-Q Տեղային հասցե Օտար հասցեի պետություն

udp 0 0 0.0.0.0:7777 0.0.0.0:*

Վերջապես CreateTnH_Graphs.sh.txt- ը գրաֆեր ստեղծելու օրինակ սցենար է: (Ես ստեղծում եմ սցենարները որպես արմատ, գուցե չցանկանաք դա անել):

Օգտագործելով շատ պարզ վեբ էջ, դուք կարող եք դիտել գրաֆիկները ձեր տնային ցանցի ցանկացած դիտարկիչից:

Խորհուրդ ենք տալիս: