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

WiFi ջերմաստիճանի գրանցիչ (ESP8266- ով) ՝ 11 քայլ (նկարներով)
WiFi ջերմաստիճանի գրանցիչ (ESP8266- ով) ՝ 11 քայլ (նկարներով)

Video: WiFi ջերմաստիճանի գրանցիչ (ESP8266- ով) ՝ 11 քայլ (նկարներով)

Video: WiFi ջերմաստիճանի գրանցիչ (ESP8266- ով) ՝ 11 քայլ (նկարներով)
Video: Умный беспроводной датчик температуры и влажности дистанционное управление от Tuya для умного дома 2024, Հուլիսի
Anonim
Image
Image
Նյութեր
Նյութեր

Ողջույն, ուրախ եմ ձեզ տեսնել այստեղ: Հուսով եմ, որ այս ուսանելի դասում դուք կգտնեք որոշ օգտակար տեղեկություններ: Ազատորեն ուղարկեք ինձ առաջարկություններ, հարցեր,… Ահա որոշ հիմնական տվյալներ և նախագծի արագ ակնարկ: Բջջային օգտագործողների համար. Տեսանյութ: Տեղեկացրեք ինձ, թե ինչ կարծիքի եք նախագծի մասին մեկնաբանությունների բաժնում, շնորհակալություն: Ես վերջերս գնել եմ NodeMcu (esp8266 հիմնված) տախտակ, որպեսզի փորձեմ, որպեսզի սա իսկապես առաջադեմ նախագիծ չէ: Բայց այն աշխատում է, և դա այն է, ինչ ինձ պետք է, այնպես որ նորմալ է: Այս տվյալների գրանցման հիմնական գործառույթը ջերմաստիճանը հավաքելն ու այն սերվերում պահելն է: Սա թույլ է տալիս օգտվողներին ստուգել տվյալները և գծապատկերներն առցանց նույնիսկ այն դեպքում, երբ նրանք չեն գտնվում անտառահատողի նույն տեղում (օրինակ ՝ եղանակային կայանի համար): Մեկ այլ օգտակար հատկություն է ծածկագրում ներառված OTA թարմացումը, որը թույլ է տալիս օգտվողին հեշտությամբ թարմացնել և հարմարեցնել ծրագրակազմը: Ես կվերլուծեմ երկու սենսոր և դրանց ձեռքբերման համապատասխան մեթոդը `բոլոր կողմերի և թերությունների հավասարակշռությունը կազմելու համար:

Spoiler: Մի փոքր փորձարկումներից հետո ես պարզեցի, որ DS18B20- ի նման թվային տվիչը լավագույն լուծումն է, քանի որ այն առաջարկում է կայունություն և ավելի բարձր ճշգրտություն: Այն արդեն անջրանցիկ է և մալուխով:

Քայլ 1: Նյութեր

Նյութեր
Նյութեր
Նյութեր
Նյութեր
Նյութեր
Նյութեր

Սա նվազագույն արտաքին բաղադրիչ ունեցող նվազագույն ծրագիր է, որի համար BOM ցուցակը իսկապես կարճ կլինի: Այնուամենայնիվ, եկեք տեսնենք, թե ինչ նյութ է պահանջվում.

  • NodeMcu V3 (կամ ցանկացած համատեղելի ESP8266 μ պրոցեսոր);
  • RGB led (ընդհանուր անոդ);
  • LED- ի դիմադրողներ (1x10Ω, 1x22Ω, 1x100Ω, 1x10kΩ)
  • DS18B20 (Maxim ինտեգրված ջերմաչափ);
  • LM35 (Տեխասի գործիքի ջերմաչափ);
  • Արտաքին մարտկոց (ըստ ցանկության);
  • Մալուխ;
  • Միակցիչ (այն ավելի «առաջադեմ» դարձնելու համար);
  • Տուփ (ըստ ցանկության, կրկին այն ավելի «առաջադեմ» դարձնելու համար);
  • Led կրող (ըստ ցանկության);

Նշում. Ինչպես ասացի, դուք պետք է ընտրեք երկու մեթոդներից մեկը: Եթե ընտրեք LM35 ջերմաչափ, ձեզ հարկավոր կլինի մի քանի այլ բաղադրիչ.

  • Attiny45/85;
  • AVR ծրագրավորող (կամ Arduino որպես մատակարար);
  • Ռեզիստոր (1x1kΩ, 1x2kΩ, 1x10kΩ, 1x18kΩ)
  • 2.54 մմ ժապավենի միակցիչ (ըստ ցանկության)
  • Դիոդ (2x1N914)
  • Perfboard կամ PCB;

Քայլ 2: Սենսորի ընտրություն

Ընտրելով սենսորը
Ընտրելով սենսորը

Սենսորի ընտրությունը կարող է լինել դժվար քայլ.

  • Տվյալների գրանցամատյանը հեշտությամբ կարող է փոխվել ջերմաստիճանից այլ քանակի (լարման, հոսանքի,…);
  • Կարող է մի փոքր ավելի էժան լինել;
  • Հեշտ է օգտագործել, քանի որ այն չի պահանջում հատուկ գրադարան;

Դեմ.

  • Պահանջել ADC (որը կարող է ազդել չափման ճշգրտության վրա) և այլ արտաքին բաղադրիչներ: Քանի որ esp8266- ն ունի միայն մեկ ADC (և իրականում ոչ ճշգրիտ), ես կառաջարկեի օգտագործել արտաքին:
  • Անհրաժեշտ է հատուկ մալուխ `աղմուկի մերժմամբ, քանի որ ցանկացած ինդուկցիոն լարվածություն կարող է փոխել արդյունքը:

Մի փոքր մտածելուց հետո որոշեցի օգտագործել LM35 ՝ գծային սենսոր ՝ +10 մՎ/° C սանդղակի գործոնով ՝ 0,5 ° C ճշգրտությամբ և շատ ցածր հոսանքով (մոտ 60uA) ՝ 4V- ից մինչև 30V լարման: Մանրամասների համար առաջարկում եմ տեսնել տվյալների թերթիկը ՝ LM35:

Թվային տվիչներ (բարձր խորհուրդ է տրվում) Կողմ.

Գրեթե ցանկացած արտաքին բաղադրիչ;

Ինտեգրված ADC

Դեմ.

Պահանջել գրադարան կամ ծրագրակազմ ՝ վերծանել թվային ազդանշանը (I2C, SPI, Serial, One Wire,…);

Ավելի թանկ;

Ես ընտրել եմ DS18B20- ը, քանի որ Amazon- ում գտել եմ 5 անջրանցիկ սենսորների հավաքածու, և քանի որ այն լայնորեն փաստագրված է ինտերնետում: Հիմնական առանձնահատկությունն է 9-12 բիթ չափումը, 1-մետաղալար ավտոբուսը, 3.0-ից 5.5 լարման լարումը, 0.5 ° C ճշգրտությունը: Կրկին, ավելի մանրամասն ՝ ահա տվյալների թերթիկը ՝ DS18B20:

Քայլ 3: LM35

LM35
LM35
LM35
LM35
LM35
LM35

Եկեք վերլուծենք, թե ինչպես եմ իրականացրել արտաքին ADC և այլ գործառույթ LM35 ջերմաչափի համար: Ես գտա մալուխ ՝ երեք լարերով, մեկը ՝ պաշտպանիչ, իսկ երկուսը ՝ առանց: Ես որոշեցի ավելացնել անջատման կոնդենսատոր `սենսորի մոտ մատակարարման լարումը կայունացնելու համար: Անալոգային ջերմաստիճանը թվայինի փոխարկելու համար ես օգտագործել եմ Attiny85 միկրոպրոցեսորը` dip8 փաթեթում (կրկին լրացուցիչ տեղեկությունների համար տե՛ս տվյալների թերթիկը `attiny85): Մեզ համար ամենակարևորը 10 բիթանոց ADC- ն է (իրականում ոչ լավագույնը, բայց ինձ համար բավական ճշգրիտ): Esp8266- ի հետ հաղորդակցվելու համար ես որոշեցի օգտագործել սերիական հաղորդակցությունը `նկատի ունենալով, որ esp8266- ը աշխատում է 3.3 Վ լարման և attiny85 5V- ով (քանի որ այն պետք է սնուցի սենսորը): Դրան հասնելու համար ես օգտագործեցի պարզ լարման բաժանարար (տես սխեմատիկ): Բացասական ջերմաստիճանը կարդալու համար մենք պետք է ավելացնենք որոշ արտաքին բաղադրիչներ (2x1N914 և 1x18k դիմադրություն), քանի որ ես չեմ ուզում օգտագործել բացասական էներգիայի աղբյուր: Ահա կոդը ՝ TinyADC պահեստարան: Նշում. Այս ծածկագիրը կազմելու համար ձեզ հարկավոր է տեղադրել attiny to ide (տեղադրեք սա տարբերակում ՝ https://drazzy.com/package_drazzy.com_index.json), եթե չգիտեք, թե ինչպես դա անել, պարզապես որոնեք Google- ում: Կամ ուղղակիորեն վերբեռնեք.hex ֆայլը:

Քայլ 4: DS18B20

DS18B20
DS18B20
DS18B20
DS18B20
DS18B20
DS18B20
DS18B20
DS18B20

Ես այդ սենսորները գնել եմ Amazon- ից (5 -ն արժե մոտ 10 €): Այն ժամանել է չժանգոտվող պողպատից և 1 մ երկարությամբ մալուխով: Այս սենսորը կարող է վերադարձնել ջերմաստիճանի 9 -ից 12 բիթանոց տվյալներ: Շատ սենսորներ կարող են միացվել նույն քորոցին, քանի որ բոլորն ունեն յուրահատուկ ID: DS18B20- ը esp8266- ին միացնելու համար կարող եք պարզապես հետևել սխեմատիկին (երկրորդ լուսանկարը): Քանի որ ես որոշել եմ, որ իմ անտառահատը երեք զոնդ կունենա, ես պետք է տարբերեի, թե որն է: Այսպիսով, ես մտածեցի նրանց տալ գույն, որը կապված է ծրագրային ապահովման միջոցով իրենց հասցեին: Ես օգտագործել եմ ջերմակայուն խողովակ (երրորդ լուսանկար):

Քայլ 5. ESP8266 ծածկագիր

ESP8266 Կոդ
ESP8266 Կոդ
ESP8266 Կոդ
ESP8266 Կոդ

Քանի որ ես նոր եմ այս աշխարհում, որոշեցի օգտագործել բազմաթիվ գրադարաններ: Ինչպես նշվեց ներածության մեջ, հիմնական հատկանիշներն են.

  • OTA- ի թարմացում. Անհրաժեշտ չէ esp8266- ը միացնել համակարգչին ամեն անգամ, երբ անհրաժեշտ է ծածկագիրը վերբեռնել (դա պետք է անել միայն առաջին անգամ);
  • Անլար կառավարիչ, եթե անլար ցանցը փոխվի, ուրեմն ուրվագիծը վերբեռնելու կարիք չկա: Դուք պարզապես կարող եք նորից կարգավորել esp8266 մուտքի կետին միացվող ցանցի պարամետրերը.
  • Thingspeak տվյալների փոխանցում;
  • Երկու LM35 և DS18B20 աջակցում են;
  • Պարզ ինտերֆեյս (RGB led- ը ցույց է տալիս որոշ օգտակար տեղեկություններ);

Խնդրում եմ ներողություն խնդրել ինձանից, քանի որ իմ ծրագրակազմը լավագույնը չէ և իսկապես լավ պատվիրված չէ: Նախքան սարքում վերբեռնելը, դուք պետք է փոխեք որոշ պարամետրեր ՝ ձեր տեղադրման ծածկագիրը տեղավորելու համար: Այստեղ կարող եք ներբեռնել ծրագրակազմը: Ընդհանուր LM35 և DS18B20 կազմաձևում Դուք պետք է փոխեք PIN- ի սահմանումը, նշանը, ալիքի համարը, օգտվողին և գաղտնաբառը OTA- ի թարմացման համար: Տող 15 -ից 23 -ը:

#սահմանեք կարմիր YOURPINHERE #սահմանեք կանաչ YOURPINHERE

#սահմանել կապույտ YOURPINHERE const char* host = "ընտրել հյուրընկալողի հասցեն"; // իրականում անհրաժեշտ չէ, կարող եք թողնել esp8266-webupdate const char* update_path = "/որոնվածը"; // թարմացնելու հասցեն փոխելու համար ՝ ex: 192.168.1.5/firmware const char* update_username = "YOURUSERHERE"; const char * update_password = "YOURPASSWORDHERE; unsigned long myChannelNumber = CHANNELNUMBERHERE; const char * myWriteAPIKey =" GRITEAPIHERE ";

Քայլ 6 ՝ ESP8266 Կոդ ՝ LM35 Օգտվող

Հաղորդման տախտակը պետք է միացնեք esp8266- ին, ADC միավորը միացնելու համար օգտագործեք VU կապը և G կապը: Դուք պետք է ընտրեք, թե որ քորոցն եք ցանկանում օգտագործել սերիական հաղորդակցության համար (ապարատային սերիան անվճար պահել վրիպազերծման նպատակով): Tx քորոցը պետք է ընտրվի, բայց իրականում չի օգտագործվում: (Տող 27): oftրագրային ապահովումՍերիալ mySerial (RXPIN, TXPIN); Վերևում անհրաժեշտ է ավելացնել ՝ #define LM35USER

Քայլ 7: ESP8266 Կոդ. DS18B20 Օգտվող

Որպես առաջին գործողություն, դուք պետք է որոշեք սարքի հասցեն յուրաքանչյուր սենսորի համար: Կազմեք և ծրագրավորեք այս ծածկագիրը esp- ում և արդյունքների համար փնտրեք սերիա: Կոդ կարելի է գտնել այստեղ (որոնեք այս վերնագիրը էջում ՝ «Կարդացեք առանձին DS18B20 ներքին հասցեներ»): Հասցեն ստանալու համար միացրեք միայն մեկ սենսոր, արդյունքները պետք է լինեն այսպիսին (պատահական համարը այստեղ, ինչպես օրինակ) ՝ 0x11, 0x22, 0x33, 0xD9, 0xB1, 0x17, 0x45, 0x12 Այնուհետև անհրաժեշտ է փոխել իմ կոդը բաժնում »: Կազմաձևում DS18B20 "(տող 31 -ից 36)":

#սահմանել ONE_WIRE_BUS ONEWIREPINHERE #սահմանել TEMPERATURE_PRECISION TEMPBITPRECISION // (9 -ից 12 -ը) #define delayDallas READINTERVAL // (Միլիս վայրկյաններում նվազագույնը 15s կամ 15000mS) 0x9x, 0x1x, 0x1x, 0x1x, 0x1x, 0x1x, 0x1x, 0x1x, 0x1x, 0x1x, 0x1x, 0x1x, 0x1x, 0x1x, 0x1x, 0x1x, 0x1x, 0x1x, 0x1x, 0x1x, 0x9x, 0x 0x12}; // ՓՈՓՈԽԵԼ ՔՈ ՀԱՍRԵՈՎ DeviceAddress redSensor = {0x11, 0x22, 0x33, 0xD9, 0xB1, 0x17, 0x45, 0x12}; // ՓՈՓՈԽԵԼ ՔՈ ՀԱՍRԵՈՎ DeviceAddress greenSensor = {0x11, 0x22, 0x33, 0xD9, 0xB1, 0x17, 0x45, 0x12}; // ՓՈՓՈԽՈԹՅՈՆ ՔՈ ՀԱՍRԵԻ ՀԵՏ Վերին մասում անհրաժեշտ է ավելացնել ՝ #define DSUSER

Քայլ 8. ESP8266 Փոքրիկ հնարք

ESP8266 Փոքրիկ հնարք
ESP8266 Փոքրիկ հնարք

Մի փոքր փորձարկումներից հետո ես պարզեցի, որ եթե դուք միացնում եք esp8266- ը առանց ծրագրավորման, այն չի գործի ծածկագիրը, մինչև որ մեկ անգամ չսեղմեք reset- ը: Այս հարցը լուծելու համար, մի փոքր հետազոտությունից հետո, ես պարզեցի, որ 3.3V- ից D3- ին պետք է ավելացնել ձգվող դիմադրություն: Սա պրոցեսորին կասի, որ ծածկագիրը տեղադրի ֆլեշ հիշողությունից: Այս մեթոդով D3- ը կարող է ուղղակիորեն օգտագործվել DS18B20 տվիչների տվյալների մուտքագրման համար:

Քայլ 9: Առաջին անգամ գործողություն

Առաջին անգամ գործողություն
Առաջին անգամ գործողություն
Առաջին անգամ գործողություն
Առաջին անգամ գործողություն

Եթե ծածկագիրը ճիշտ եք վերբեռնել, բայց երբեք չեք օգտագործել Wifi մենեջերի գրադարանը, ժամանակն է կարգավորել ձեր wifi կապը: Սպասեք, մինչև RGB լուսարձակը տեսնեք ավելի արագ, քան նախկինում, ապա բջջայինով կամ համակարգչով որոնեք «AutoConnectAp» կոչվող wifi ցանցը և միացեք: Միացումից հետո բացեք վեբ դիտարկիչ և մուտքագրեք 192.168.4.1, կգտնեք wifi մենեջերի GUI ինտերֆեյսը (տես լուսանկարները) և կտտացրեք «Կարգավորել Wifi» - ին: Սպասեք esp8266- ին ՝ wifi ցանցերը որոնելու համար և ընտրեք ցանկալիը: Տեղադրեք գաղտնաբառը և կտտացրեք «պահպանել»: Esp8266- ը կվերագործարկվի (թքած, RGB- ն այս անգամ առաջնորդեց, քանի որ որոշ պատահական տեղեկատվություն կհրապարակի) և միանա ցանցին:

Քայլ 10: Եզրակացություն

Եզրակացություն
Եզրակացություն
Եզրակացություն
Եզրակացություն
Եզրակացություն
Եզրակացություն
Եզրակացություն
Եզրակացություն

Ի վերջո, ահա մի գրաֆիկ, որը վերցված է տվյալների գրանցիչից ՝ գործողության ընթացքում, երբ գրանցում եմ իմ սառցարանի ջերմաստիճանը: Նարնջագույնով DS18B20- ն է, իսկ կապույտով ՝ LM35- ը և դրա միացումը: Դուք կարող եք տեսնել ճշգրտության ամենամեծ տարբերությունը թվայինից մինչև անալոգային սենսոր (իմ աղքատ «ADC սխեմայով»), որը տալիս է որոշ ոչ ֆիզիկական տվյալներ: Ամփոփելով, եթե ուզում եք կառուցել այս անտառահատը, ես առաջարկում եմ օգտագործել DS18B20 թվային ջերմաստիճանի տվիչ, քանի որ այն ավելի հեշտ է կարդալ և գրեթե «միացնել և խաղալ», այն ավելի կայուն և ճշգրիտ է, այն աշխատում է 3.3 Վ լարման դեպքում և պահանջում է ընդամենը մեկ կապում բազմաթիվ սենսորների համար: Շնորհակալություն ուշադրության համար, հուսով եմ, որ այս նախագիծը լավ է ձեզ համար, և դուք գտել են որոշ օգտակար տեղեկություններ: Եվ ով ցանկանում է դա գիտակցել, ես կցանկանայի, որ ես տայի անհրաժեշտ տեղեկատվությունը: Եթե ազատ չլինեք ամեն ինչ հարցնելու, ես ուրախ կլինեմ պատասխանել բոլոր հարցերին: Քանի որ ես անգլերեն խոսող չեմ, եթե ինչ -որ բան սխալ է կամ անհասկանալի, խնդրում եմ ինձ տեղյակ պահեք: Եթե ձեզ դուր եկավ այս նախագիծը, խնդրում ենք քվեարկեք մրցույթների համար և/կամ թողեք մեկնաբանություն: Դա ինձ կխրախուսի շարունակել թարմացնել և հրապարակել նոր բովանդակություն: Շնորհակալություն.

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