Բովանդակություն:
- Քայլ 1: Գնացեք գնումներ կատարելու
- Քայլ 2: Կարգավորում և նախապատմություն
- Քայլ 3. Arduino - ESP12 մաս
- Քայլ 4. ESP- ի փորձարկում որպես ցանցային ժամանակի արձանագրություն (NTP) հաճախորդ:
- Քայլ 5: DHT22 տվիչի փորձարկում
- Քայլ 6: Միավորել այն…
- Քայլ 7: Իրերի սերվերի կողմը:
Video: Տնային ցանցի ջերմաստիճանի տվիչ ՝ 7 քայլ
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:47
Ի՞նչ պետք է իմանաք այս նախագիծը պատրաստելու համար.
Դուք պետք է իմանաք.- Էլեկտրոնիկայի որոշ հմտություններ (զոդման)
- 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 մաս
Ես այս նախագիծը կատարեցի տարբեր քայլերով:
Կան մի քանի հղումներ, որոնք օգնում են ձեզ ներմուծել 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) հաճախորդ:
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)
Միացրեք 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- ը գրաֆեր ստեղծելու օրինակ սցենար է: (Ես ստեղծում եմ սցենարները որպես արմատ, գուցե չցանկանաք դա անել):
Օգտագործելով շատ պարզ վեբ էջ, դուք կարող եք դիտել գրաֆիկները ձեր տնային ցանցի ցանկացած դիտարկիչից:
Խորհուրդ ենք տալիս:
Տնային ավտոմատացում NodeMCU Touch Sensor LDR ջերմաստիճանի կառավարման ռելեով `16 քայլ
Տան ավտոմատացում NodeMCU Touch Sensor LDR ջերմաստիճանի կառավարման ռելեով. Նախորդ NodeMCU նախագծերում ես վերահսկել եմ երկու տնային տեխնիկա Blynk App- ից: Ես ստացել եմ բազմաթիվ մեկնաբանություններ և հաղորդագրություններ ՝ նախագիծը ձեռքով կարգավորելու և ավելի շատ հնարավորություններ ավելացնելու համար: Այսպիսով, ես նախագծել եմ այս Smart Home Extention Box- ը: Այս IoT- ում
Սկսելով տնային ավտոմատացում. Տնային օգնականի տեղադրում `3 քայլ
Սկսելով տնային ավտոմատացումից. Տնային օգնականի տեղադրում. Այժմ մենք պատրաստվում ենք սկսել տան ավտոմատացման շարքը, որտեղ մենք ստեղծում ենք խելացի տուն, որը թույլ կտա մեզ վերահսկել այնպիսի բաներ, ինչպիսիք են լույսերը, բարձրախոսները, տվիչները և այլն, օգտագործելով կենտրոնական հանգույցը, ինչպես նաև ձայնային օգնական: Այս գրառման մեջ մենք կսովորենք, թե ինչպես կատարել
Թվային ջերմաստիճանի վիջեթ / Տնային ջերմաչափ ՝ 7 քայլ
Թվային ջերմաստիճանի վիջեթ / Տնային ջերմաչափ. Փոքր և գեղեցիկ թվային ջերմաչափ ՝ օգտագործելով Dallas DS18B20 թվային տվիչը և Arduino Pro Micro- ը 3.3 վ -ով: Ամեն ինչ նախատեսված է ճշգրիտ տեղավորվելու և տեղում ամրացնելու համար, ոչ մի պտուտակ կամ սոսինձ կարիք չկա: Դրա համար այնքան էլ շատ չէ, բայց թույն տեսք ունի
Սխալներին հանդուրժող ջերմաստիճանի տվիչների ցանցի վերահսկիչ `8 քայլ
Սխալ հանդուրժող ջերմաստիճանի տվիչների ցանցի վերահսկիչ. Այս հրահանգը ցույց է տալիս, թե ինչպես փոխարկել Arduino Uno տախտակը մեկ նպատակի վերահսկիչի համար DS18B20 ջերմաստիճանի տվիչների մի շարք, որոնք ունակ են անսարք սենսորների ավտոմատ մեկուսացում: Arduino- ով կարգավորիչը կարող է կառավարել մինչև 8 տվիչ: Ունո (Ա
Հպման տվիչ և ձայնային տվիչ, որը վերահսկում է AC/DC լույսերը `5 քայլ
Touch Sensor & Sound Sensor AC/DC Lights. ՄԻԱՎԱ, եթե այն բաց թողնեք, Լույսը ԿԱՆFԻ, և նույնը