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

Մարտկոցով աշխատող ջրի կոլեկտորի մակարդակի տվիչ ՝ 7 քայլ (նկարներով)
Մարտկոցով աշխատող ջրի կոլեկտորի մակարդակի տվիչ ՝ 7 քայլ (նկարներով)

Video: Մարտկոցով աշխատող ջրի կոլեկտորի մակարդակի տվիչ ՝ 7 քայլ (նկարներով)

Video: Մարտկոցով աշխատող ջրի կոլեկտորի մակարդակի տվիչ ՝ 7 քայլ (նկարներով)
Video: Установка инсталляции. Монтаж водонагревателя. Ошибки. 2024, Նոյեմբեր
Anonim
Մարտկոցով աշխատող ջրի կոլեկտորի մակարդակի տվիչ
Մարտկոցով աշխատող ջրի կոլեկտորի մակարդակի տվիչ
Մարտկոցով աշխատող ջրի կոլեկտորի մակարդակի տվիչ
Մարտկոցով աշխատող ջրի կոլեկտորի մակարդակի տվիչ

Մեր տունն ունի ջրի տանկ, որը սնվում է տանիքին ընկնող անձրևից և օգտագործվում է զուգարանի, լվացքի մեքենայի և այգու ջրելու համար: Վերջին երեք տարիներին ամառները շատ չոր էին, ուստի մենք հետևում էինք տանկի ջրի մակարդակին: Մինչ այժմ մենք օգտագործում էինք փայտե փայտ, որը դրեցինք տանկի մեջ և նշեցինք մակարդակը: Բայց, անշուշտ, պետք է հնարավոր լինի բարելավել դա:

Ահա թե որտեղ է այս նախագիծը հայտնվում: Գաղափարը տանկի վերևում կցել ուլտրաձայնային հեռավորության տվիչ: Այս սենսորը գործում է որպես ձայնային ալիքներ արձակող սոնար, որոնք այնուհետև արտացոլվում են ջրի մակերևույթի կողմից: Ալիքների վերադարձի և ձայնի արագության տևողությունից կարող եք հաշվարկել ջրի մակերևույթի հեռավորությունը և որոշել, թե որքան է լցված տանկը:

Քանի որ ես տանկին մոտ ցանցի միացում չունեմ, կարևոր է, որ ամբողջ սարքը աշխատի մարտկոցների վրա: Սա նշանակում է, որ ես պետք է տեղյակ լինեի բոլոր մասերի էներգիայի սպառման մասին: Տվյալները հետ ուղարկելու համար ես որոշեցի օգտագործել ESP8266 միկրոչիպի ներկառուցված WiFi- ն: Թեև Wifi- ն բավականին էներգիայի կարիք ունի, այն առավելություն ունի մեկ այլ տեսակի ռադիոկապի նկատմամբ. Կարող եք ուղղակիորեն միանալ ձեր տան անլար երթուղիչին ՝ առանց այլ սարք ստեղծելու, որը հանդես է գալիս որպես ռելե:

Էլեկտրաէներգիան խնայելու համար ես ESP8266- ը շատ ժամանակ քնում եմ և ամեն ժամ չափումներ եմ կատարում: Purposeրի մակարդակին հետևելու նպատակով դա ավելի քան բավարար է: Տվյալները կուղարկվեն ThingSpeak և այնուհետև կարող են կարդալ սմարթֆոնով ՝ ծրագրի միջոցով:

Եվս մեկ մանրամասն! Ձայնի արագությունը, որը էական է հեռավորության չափման համար, կախված է ջերմաստիճանից և ավելի փոքր չափով `խոնավությունից: Սեզոնների ընթացքում արտաքին չափումներ կատարելու համար մենք կպչենք BME280 սենսորով, որը չափում է ջերմաստիճանը, խոնավությունը և ճնշումը: Որպես բոնուս, դա կազմում է մեր ջրի մակարդակի տվիչից նաև մինի եղանակային կայանը:

Մասեր:

  • 1x ESP8266 ESP-12F:
  • 1x ESP-12F ադապտերային ափսե:
  • 1x FT232RL FTDI ՝ USB սերիալային ադապտեր:
  • 1x HC-SR04-P: ուլտրաձայնային հեռավորության չափման մոդուլ: Նկատի ունեցեք, որ P- ն կարևոր է, քանի որ սա այն տարբերակն է, որն ունի 3 Վ ցածր նվազագույն աշխատանքային լարվածություն:
  • 1x BME280 3.3V տարբերակ ՝ ջերմաստիճանի, ճնշման և խոնավության ցուցիչ:
  • 1x IRL2203N: n-channel MOSFET տրանզիստոր:
  • 1x MCP1700-3302E 3.3V տարբերակ ՝ լարման կարգավորիչ:
  • 3x լիցքավորվող AA մարտկոց, օրինակ. 2600 mAh
  • 3 մարտկոցի համար 1x մարտկոցի պահոց:
  • 1x տախտակ:
  • Ռեզիստորներ ՝ 1x 470K, 1x 100K, 4x 10K:
  • Կոնդենսատորներ `2x կերամիկական 1uF:
  • 3x անջատիչ անջատիչ:
  • U- ձևի տախտակի լարեր:
  • Jumper լարերը:
  • Պլաստիկ ապուրի տարա 1 լ.
  • Կոնտեյների ամրացման օղակ:

Ես ծածկագիրը հասանելի դարձրի GitHub- ում:

Քայլ 1. Knowանոթանալ ուլտրաձայնային հեռավորության սենսորին

Ուլտրաձայնային հեռավորության սենսորին ծանոթանալը
Ուլտրաձայնային հեռավորության սենսորին ծանոթանալը
Ուլտրաձայնային հեռավորության սենսորին ծանոթանալը
Ուլտրաձայնային հեռավորության սենսորին ծանոթանալը

'Llրի մակերեսին հեռավորությունը մենք չափելու ենք ուլտրաձայնային տվիչով `HC-SR04-P: Batիշտ այնպես, ինչպես չղջիկը, այս սենսորը կիրառում է սոնար. Այն ուղարկում է մարդու ականջի համար չափազանց բարձր հաճախականությամբ զարկերակ, ուստի ուլտրաձայնային և սպասում, մինչև այն հարվածի առարկային, անդրադառնա և վերադառնա: Այնուհետև հեռավորությունը կարող է հաշվարկվել արձագանքն ու ձայնի արագությունը ստանալու ժամանակից:

Մասնավորապես, եթե Trig քորոցը բարձր է քաշվում առնվազն 10 μs- ով, սենսորը ուղարկում է 8 իմպուլսի պայթյուն ՝ 40 Հց հաճախականությամբ: Այնուհետև պատասխանը ստացվում է Echo քորոցի վրա ՝ զարկերակի տեսքով, որը հավասար է ուլտրաձայնային զարկերակի ուղարկման և ստացման միջև ընկած ժամանակին: Հետո մենք պետք է բաժանենք 2-ի, քանի որ ուլտրաձայնային զարկերակը հետ ու առաջ է ընթանում, և մեզ անհրաժեշտ է միակողմանի ճանապարհորդության ժամանակը, և բազմապատկել ձայնի արագությամբ, որը կազմում է մոտ 340 մ/վ:

Բայց մի րոպե! Փաստորեն, ձայնի արագությունը կախված է ջերմաստիճանից և ավելի փոքր չափով `խոնավությունից: Արդյո՞ք ես քերծվածք եմ հավաքում, թե սա արդիական է: Հաշվարկային գործիքի միջոցով մենք գտնում ենք, որ ձմռանը (վերցնելով -5 ° C) մենք կարող ենք ունենալ 328.5 մ/վրկ, իսկ ամռանը (25 ° C ջերմաստիճանի դեպքում) 347.1 մ/վ: Ենթադրենք, մենք գտնում ենք 3 ms միակողմանի ճանապարհորդության ժամանակ: Ձմռանը դա կնշանակի 98,55 սմ, իսկ ամռանը ՝ 104,13 սմ: Դա բավականին տարբերություն է: Այսպիսով, բավականաչափ ճշգրտություն ձեռք բերելու եղանակներին և նույնիսկ օր ու գիշեր, մենք պետք է ջերմաչափ ավելացնենք մեր տեղադրման մեջ: Ես որոշեցի ներառել BME280- ը, որը չափում է ջերմաստիճանը, խոնավությունը և ճնշումը: Կոդում, որն օգտագործել եմ speedOfSound ֆունկցիայի մեջ, մի բանաձև է, որը հաշվարկում է ձայնի արագությունը բոլոր երեք պարամետրերի առումով, չնայած որ ջերմաստիճանն իսկապես ամենակարևոր գործոնն է: Խոնավությունը դեռ ավելի փոքր ազդեցություն ունի, բայց ճնշման ազդեցությունն աննշան է: Մենք կարող էինք ավելի պարզ բանաձև օգտագործել ՝ հաշվի առնելով միայն այն ջերմաստիճանը, որը ես կիրառում էի speedOfSoundSimple- ում:

HC-SR04- ի վրա կա ևս մեկ կարևոր կետ. Առկա է երկու տարբերակ ՝ ստանդարտ տարբերակը գործում է 5 Վ լարման դեպքում, մինչդեռ HC-SR04-P- ն կարող է աշխատել 3 Վ-ից 5 Վ լարման տիրույթում: Քանի որ 3 վերալիցքավորվող AA մարտկոցներն ապահովում են 3x1.25V = 3.75V- ի սահմաններում, կարևոր է ձեռք բերել P- տարբերակը: Որոշ վաճառողներ կարող են սխալ ուղարկել: Այսպիսով, եթե գնում եք, նայեք նկարներին: Երկու տարբերակները տարբերվում են ինչպես հետևի, այնպես էլ առջևի կողմից, ինչպես նկարագրված է այս էջում: P- տարբերակի հետևի մասում բոլոր երեք չիպերը հորիզոնական են, իսկ ստանդարտ տարբերակում մեկը ՝ ուղղահայաց: Առջևում ստանդարտ տարբերակն ունի լրացուցիչ արծաթե բաղադրիչ:

Էլեկտրոնային սխեմայում մենք տրանզիստոր ենք օգտագործելու որպես անջատիչ ուլտրաձայնային տվիչի սնուցման անջատման համար, երբ մեր կարգավորումը խոր քուն է մղում մարտկոցի կյանքը խնայելու համար: Հակառակ դեպքում, այն դեռ կսպառի մոտ 2 մԱ: Մյուս կողմից, BME280- ը ոչ ակտիվ վիճակում սպառում է միայն մոտ 5 μ, ուստի անհրաժեշտ չէ այն անջատել տրանզիստորով:

Քայլ 2. ESP8266 խորհրդի ընտրություն

ESP8266 խորհրդի ընտրություն
ESP8266 խորհրդի ընտրություն

Սենսորը մարտկոցի վրա հնարավորինս երկար աշխատեցնելու համար մենք պետք է տնտեսենք էներգիայի սպառումը: Մինչ ESP8266- ի Wifi- ն ապահովում է մեր սենսորը ամպին միացնելու շատ հարմար միջոց, այն նաև բավականին էներգիայի կարիք ունի: Գործող ESP8266- ը սպառում է մոտ 80 մԱ: Այսպիսով, 2600 մԱ / ժ մարտկոցներով մենք կկարողանանք մեր սարքը գործարկել առավելագույնը 32 ժամ, մինչև դրանք դատարկվեն: Գործնականում դա ավելի քիչ կլինի, քանի որ մենք չենք կարողանա օգտագործել ամբողջ 2600 մԱ / ժ հզորությունը, մինչև լարումը շատ ցածր մակարդակի վրա ընկնի:

Բարեբախտաբար, ESP8266- ն ունի նաև խոր քնի ռեժիմ, որի դեպքում գրեթե ամեն ինչ անջատված է: Այսպիսով, ծրագիրն այն է, որ ESP8266- ը շատ ժամանակ քնի մեջ դնի և արթնանա այնքան հաճախ, որպեսզի չափումներ կատարեն և տվյալները Wifi- ով ուղարկեն ThingSpeak: Այս էջի համաձայն `խոր քնի առավելագույն ժամանակը մոտ 71 րոպե էր, բայց ESP8266 Arduino միջուկ 2.4.1-ից ի վեր այն ավելացել է մինչև մոտ 3.5 ժամ: Իմ ծածկագրում ես տեղավորվեցի մեկ ժամ:

Ես առաջին անգամ փորձեցի հարմար NodeMCU զարգացման տախտակը, բայց անհեթեթ, խոր քնի դեպքում այն դեռ սպառում էր մոտ 9 մԱ, ինչը մեզ տալիս է մաքուր խոր քնի առավելագույնը 12 օր ՝ նույնիսկ հաշվի չառնելով արթնանալու միջակայքերը: Կարևոր մեղավորը AMS1117 լարման կարգավորիչն է, որն օգտագործում է էներգիան, նույնիսկ եթե փորձում եք շրջանցել այն ՝ մարտկոցը միացնելով անմիջապես 3.3V պինին: Այս էջը բացատրում է, թե ինչպես հեռացնել լարման կարգավորիչը և USB UART- ը: Այնուամենայնիվ, ես երբեք չեմ հասցրել դա անել ՝ առանց իմ տախտակը քանդելու: Ավելին, USB UART- ը հեռացնելուց հետո այլևս չեք կարող միանալ ESP8266- ին `պարզելու, թե ինչն է սխալ:

ESP8266- ի զարգացման տախտակների մեծ մասը, կարծես, օգտագործում է վատնող AMS1117 լարման կարգավորիչը: Բացառություն է WEMOS D1 mini- ն (ձախ կողմում գտնվող նկարը), որը գալիս է ավելի տնտեսող ME6211- ով: Իրոք, ես պարզեցի, որ WEMOS D1 mini- ն խոր քնի մեջ օգտագործում է մոտ 150 μA, որն ավելի նման է դրան: Դրա մեծ մասը հավանաբար պայմանավորված է USB UART- ով: Այս տախտակի օգնությամբ դուք պետք է ինքներդ կպցրեք կապերի վերնագրերը:

Այնուամենայնիվ, մենք կարող ենք շատ ավելի լավ անել, օգտագործելով ESP-12F- ի նման մերկ ոսկորների տախտակը (նկարը աջ կողմում), որը չունի USB UART կամ լարման կարգավորիչ: 3.3 Վ կապոցը կերակրելով ՝ ես գտա խոր քնի սպառումը ՝ ընդամենը 22 μA:

Բայց որպեսզի ESP-12F- ն աշխատի, պատրաստվեք որոշ զոդման և մի փոքր ավելի բարդ ծրագրավորմանը: Բացի այդ, եթե մարտկոցներն ուղղակիորեն չեն մատակարարում ճիշտ լարումը, որը 3 Վ -ից մինչև 3.6 Վ է, մենք պետք է տրամադրենք մեր սեփական լարման կարգավորիչը: Գործնականում պարզվում է, որ դժվար է գտնել մարտկոցի համակարգ, որն ապահովում է այս միջակայքում լարվածություն լիցքաթափման ամբողջ ցիկլի ընթացքում: Հիշեք, որ մենք նաև պետք է սնուցենք HC-SR04-P տվիչը, որը տեսականորեն կարող է գործել 3V- ից ցածր լարման դեպքում, բայց ավելի ճշգրիտ է գործում, եթե լարումը ավելի բարձր է: Ավելին, իմ դիագրամում HC-SR04-P- ը միացված է տրանզիստորով, ինչը առաջացնում է փոքր լրացուցիչ լարման անկում: Մենք կօգտագործենք MCP1700-3302E լարման կարգավորիչը: Առավելագույն մուտքային լարումը 6 Վ է, այնպես որ մենք այն սնուցում ենք մինչև 4 AA մարտկոցով: Ես որոշեցի օգտագործել 3 AA մարտկոց:

Քայլ 3: Ստեղծեք ThingSpeak ալիք

Մեր տվյալները պահելու համար մենք կօգտագործենք ThingSpeak ՝ IoT ամպային ծառայություն: Գնացեք https://thingspeak.com/ և ստեղծեք հաշիվ: Մուտք գործելուց հետո կտտացրեք Նոր ալիք ՝ ալիք ստեղծելու համար: Ալիքի կարգավորումներում լրացրեք անունն ու նկարագրությունը, ինչպես ցանկանում եք: Հաջորդը մենք անվանում ենք ալիքի դաշտերը և դրանք ակտիվացնում ՝ աջից սեղմելով վանդակները: Եթե դուք օգտագործում եք իմ կոդը անփոփոխ, դաշտերը հետևյալն են.

  • Դաշտ 1 ՝ ջրի մակարդակ (սմ)
  • Դաշտ 2: մարտկոցի մակարդակը (V)
  • Դաշտ 3: ջերմաստիճան (° C)
  • Դաշտ 4: Խոնավություն (%)
  • Դաշտ 5. ճնշում (պա)

Հետագա տեղեկությունների համար գրի՛ր Ալիքի ID- ն, Read API- ի բանալին և Write API- ի բանալին, որոնք կարելի է գտնել ընտրացանկի API ստեղներում:

Կարող եք կարդալ ThingSpeak- ի տվյալները ձեր սմարթֆոնի վրա ՝ օգտագործելով ծրագիր: Իմ Android հեռախոսում ես օգտագործում եմ IoT ThingSpeak Monitor վիջեթը: Դուք պետք է կազմաձևեք այն Ալիքի ID- ով և Read API բանալիով:

Քայլ 4. Ինչպես ծրագրավորել ESP-12F- ը

Ինչպես ծրագրավորել ESP-12F- ը
Ինչպես ծրագրավորել ESP-12F- ը
Ինչպես ծրագրավորել ESP-12F- ը
Ինչպես ծրագրավորել ESP-12F- ը

Մեզ անհրաժեշտ է մերկ ոսկորներով տախտակ ՝ մարտկոցի կյանքը խնայելու համար, սակայն բացասական կողմն այն է, որ ծրագրավորելը մի փոքր ավելի դժվար է, քան ներկառուցված USB UART- ով զարգացման տախտակը:

Մենք կօգտագործենք Arduino IDE- ն: Կան այլ հրահանգներ, որոնք բացատրում են, թե ինչպես օգտագործել այն, այնպես որ ես այստեղ հակիրճ կլինեմ: ESP8266- ի համար այն պատրաստելու քայլերն են.

  • Ներբեռնեք Arduino IDE- ն:
  • Տեղադրեք աջակցություն ESP8266 տախտակին: Fileանկի Ֆայլ - Նախապատվություններ - Կարգավորումներ ավելացրեք URL https://arduino.esp8266.com/stable/package_esp8266com_index.json Լրացուցիչ խորհրդի ղեկավարի URL- ներին: Հաջորդը ընտրացանկում Գործիքներ - Տախտակ - Տախտակների կառավարիչ տեղադրեք esp8266 esp8266 համայնքի կողմից:
  • Ընտրել որպես տախտակ. Ընդհանուր ESP8266 մոդուլ:

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

Լուծումը, որի համար ես գնացի, U- ձևի լարերի օգտագործումն է և դրանք միացնելը, ինչպես աջ նկարում, նախքան ESP8266- ը ադապտերային ափսեի հետ հացաթղթի վրա դնելը: Այսպիսով, GND- ը և VCC- ն միացված են հացատախտակի ռելսերին, իսկ մնացած կապումներն ավելի մատչելի են դառնում տախտակի ներքևում: Անբարենպաստությունն այն է, որ ձեր տախտակը լիովին լարված կլինի լարերով, երբ ամբողջ շրջանն ավարտեք: Մեկ այլ լուծում է երկու տախտակ իրար տեղավորել, ինչպես ցույց է տրված այս տեսանյութում:

Հաջորդը ՝ ESP-12F- ը ձեր համակարգչի USB- պորտի միջոցով ծրագրավորելու համար մեզ անհրաժեշտ է USB- ից սերիական ադապտեր: Ես օգտագործել եմ FT232RL FTDI ծրագրավորողը: Merրագրավորողը ունի թռիչք `3.3 Վ կամ 5 Վ լարման միջև ընտրելու համար: ESP8266- ի համար այն պետք է դրվի 3.3 Վ լարման վրա: Մի մոռացեք, քանի որ 5V- ը կարող է տապակել ձեր չիպը: Վարորդների տեղադրումը պետք է լինի ավտոմատ, բայց եթե ծրագրավորումը չի աշխատում, կարող եք ձեռքով տեղադրել դրանք այս էջից:

ESP8266- ն ունի ծրագրակազմի ռեժիմ `նոր որոնվածը ֆլեշին վերբեռնելու համար, և ֆլեշ ռեժիմ` ֆլեշ հիշողությունից ընթացիկ որոնվածը գործարկելու համար: Այս ռեժիմների միջև ընտրելու համար որոշ կապում պետք է որոշակի արժեք վերցնել բեռնման ժամանակ.

  • Mingրագրավորում ՝ GPIO0 ՝ ցածր, CH-PD ՝ բարձր, GPIO2 ՝ բարձր, GPIO15 ՝ ցածր
  • Flash: GPIO0 ՝ բարձր, CH-PD ՝ բարձր, GPIO2 ՝ բարձր, GPIO15 ՝ ցածր

Ադապտերային ափսեը արդեն հոգ է տանում CH-PD- ն վեր քաշելու և GPIO15- ը 10K դիմադրիչներով ներքև քաշելու մասին:

Այսպիսով, մեր էլեկտրոնային շղթայում մենք դեռ պետք է քաշենք GPIO2- ը: Մենք նաև տրամադրում ենք ESP8266- ը ծրագրավորման կամ ֆլեշ ռեժիմի մեջ դնելու անջատիչ և այն վերակայելու անջատիչ, որը կատարվում է RST- ը գետնին միացնելու միջոցով: Հետագայում համոզվեք, որ FT232RL- ի TX կապը միացնում եք ESP8266- ի RXD կապին և հակառակը:

Րագրավորման հաջորդականությունը հետևյալն է.

  • Setրագրավորման անջատիչը փակելով, GPIO2- ը սահմանեք ցածր:
  • Վերագործարկեք ESP8266- ը ՝ փակելով և նորից բացելով վերակայման անջատիչը: ESP8266- ն այժմ բեռնվում է ծրագրավորման ռեժիմում:
  • Setրագրավորման անջատիչը բացելով ՝ GPIO2- ը նորից բարձր դարձրեք:
  • Վերբեռնեք նոր որոնվածը Arduino IDE- ից:
  • Կրկին վերագործարկեք ESP8266- ը `փակելով և նորից բացելով վերակայման անջատիչը: ESP8266- ն այժմ բեռնվում է ֆլեշ ռեժիմում և գործարկում է նոր որոնվածը:

Այժմ կարող եք ստուգել, թե արդյոք ծրագրավորումն աշխատում է ՝ վերբեռնելով հայտնի Blink էսքիզը:

Եթե այս ամենն աշխատում է, առնվազն GND, VCC, GPIO2, RST, TXD և RXD կապումներն են ճիշտ միացված և միացված: Ի Whatնչ թեթեւություն: Բայց նախքան գործի անցնելը խորհուրդ կտայի նաև ձեր մյուս մուլտիմետրով ստուգել մյուս քորոցները: Ես ինքս խնդիր ունեի քորոցներից մեկի հետ: Դուք կարող եք օգտագործել այս ուրվագիծը, որը բոլոր կապումները մեկ առ մեկ բարձր է դարձնում 5 վայրկյան, իսկ հետո ESP8266- ը 20 վայրկյան խոր քնի մեջ է դնում: ESP8266- ը խոր քնից հետո արթնանալու համար անհրաժեշտ է միացնել RST- ը GPIO16- ին, որը տալիս է արթնության ազդանշան:

Քայլ 5: Էսքիզների վերբեռնում

Ես ծածկագիրը հասանելի եմ դարձրել GitHub- ում, դա ընդամենը մեկ ֆայլ է ՝ Level-Sensor-Deepsleep.ino: Պարզապես ներբեռնեք այն և բացեք այն Arduino IDE- ում: Կամ կարող եք ընտրել Ֆայլ - Նոր և պարզապես պատճենել/տեղադրեք ծածկագիրը:

Որոշ տեղեկություններ կան, որոնք պետք է լրացնեք ֆայլի սկզբում. Օգտագործելու համար WLAN- ի անունը և գաղտնաբառը, ստատիկ IP մանրամասները և ThingSpeak ալիքի Channel ID- ի և Write API- ի բանալին:

Այս բլոգի հուշումից հետո DHCP- ի փոխարեն, որտեղ երթուղիչը դինամիկ կերպով IP է տալիս, մենք օգտագործում ենք ստատիկ IP, որտեղ ինքներս ենք սահմանում ESP8266- ի IP հասցեն: Սա պարզվում է, որ շատ ավելի արագ է, այնպես որ մենք խնայում ենք ակտիվ ժամանակը և դրանով իսկ մարտկոցի էներգիան: Այսպիսով, մենք պետք է տրամադրենք մատչելի ստատիկ IP հասցե, ինչպես նաև երթուղիչի (դարպաս) IP, ենթածանցի դիմակ և DNS սերվեր: Եթե վստահ չեք, թե ինչ լրացնել, կարդացեք ձեր երթուղղիչի ձեռնարկում ստատիկ IP կարգաբերելու մասին: Windows համակարգչի վրա, որը միացված է Wifi- ի ձեր երթուղիչին, գործարկեք պատյան (Windows կոճակ-r, cmd) և մուտքագրեք ipconfig /all: Ձեզ անհրաժեշտ տեղեկատվության մեծ մասը կգտնեք Wi-Fi բաժնում:

Ուսումնասիրելով ծածկագիրը ՝ տեսնում եք, որ ի տարբերություն այլ Arduino կոդի, գործողությունների մեծ մասը տեղի է ունենում setup գործառույթում ՝ loop գործառույթի փոխարեն: Դա պայմանավորված է նրանով, որ ESP8266- ը կարգաբերման գործառույթն ավարտելուց հետո խոր քուն է մտնում (եթե մենք չենք սկսել OTA ռեժիմում): Արթնանալուց հետո այն նման է նոր վերագործարկման և նորից աշխատում է:

Ահա ծածկագրի կարևոր առանձնահատկությունները.

  • Արթնանալուց հետո կոդը switchPin- ը (կանխադրված GPIO15) սահմանում է բարձր: Սա միացնում է տրանզիստորը, որն իր հերթին միացնում է HC-SR04-P սենսորը: Նախքան խոր քուն մտնելը այն ցածր է դարձնում քորոցը ՝ անջատելով տրանզիստորը և HC-SR04-P- ն ՝ համոզվելով, որ մարտկոցի ավելի թանկարժեք էներգիա չի սպառում:
  • Եթե ռեժիմի PIN- ը (կանխադրված GPIO14) ցածր է, կոդը չափման ռեժիմի փոխարեն անցնում է OTA ռեժիմում: OTA- ով (օդային թարմացում) մենք կարող ենք թարմացնել որոնվածը Wifi- ի միջոցով ՝ սերիական պորտի փոխարեն: Մեր դեպքում դա բավականին հարմար է, քանի որ հետագա թարմացումների համար մենք այլևս կարիք չունենք սերիալը միացնել USB ադապտերին: Պարզապես սահմանեք GPIO14- ը ցածր (էլեկտրոնային միացման OTA անջատիչով), վերակայեք ESP8266- ը (վերակայման անջատիչով) և այն հասանելի կդառնա Arduino IDE- ում `վերբեռնման համար:
  • Անալոգային PIN- ի (A0) վրա մենք չափում ենք մարտկոցի լարումը: Սա թույլ է տալիս մեզ անջատել մեր սարքը, որը հայտնի է որպես մշտական խոր քուն, եթե լարումը չափազանց ցածր է, նվազագույնից ցածր, մարտկոցները գերբեռնվածությունից պաշտպանելու համար: Անալոգային չափումը շատ ճշգրիտ չէ, մենք անում ենք numMeasuresBattery (կանխադրված 10) միջոցառումներ և միջինն ենք վերցնում ճշգրտությունը բարձրացնելու համար:
  • HC-SR04-P տվիչի հեռավորության չափումը կատարվում է ֆունկցիայի distanceMeasurement- ում: Accuracyշգրտությունը բարձրացնելու համար չափումը կրկնվում է numMeasuresDistance (կանխադրված 3) անգամ:
  • Կա ձայնի արագությունը հաշվարկելու գործառույթ BME280 սենսորով ջերմաստիճանից, խոնավությունից և ճնշումից: BME280- ի կանխադրված I2C հասցեն 0x76 է, բայց եթե այն չի աշխատում, գուցե անհրաժեշտ լինի այն փոխել 0x77- ի համար. Bool bme280Started = bme280.begin (0x77);
  • Մենք կօգտագործենք BME280- ը հարկադիր ռեժիմում, ինչը նշանակում է, որ այն տևում է մեկ չափում և նորից քնում է էներգիա խնայելու համար:
  • Եթե դուք սահմանում եք հզորություն (լ), լրիվ հեռավորություն (սմ) և տարածք (մ 2), ծածկագիրը հաշվարկում է հեռավորության չափումից ջրի բաքի մնացած ծավալը. և վերբեռնեք սա ThingSpeak- ում: Եթե դուք պահում եք կանխադրված արժեքները, այն ջրի մակերեսին հեռավորությունը վերբեռնում է սմ -ով:

Քայլ 6: Էլեկտրոնային շղթայի կառուցում

Էլեկտրոնային շղթայի կառուցում
Էլեկտրոնային շղթայի կառուցում

Վերևում էլեկտրոնային սխեմաների դիագրամն է: Այն բավականին մեծ է մեկ տախտակի համար, հատկապես չափազանց մեծ ադապտերային ափսեի և U- ձևավորված լարերի հնարքով: Ինչ -որ պահի ես անշուշտ կցանկանայի, որ ես օգտագործեի երկու տախտակ միացնելու այլընտրանքը, բայց ի վերջո դա ինձ հաջողվեց:

Ահա միացման կարևոր առանձնահատկությունները.

  • Գոյություն ունեն երկու լարման, որոնք դեր են խաղում ՝ մարտկոցից մուտքի լարումը (մոտ 3.75 Վ) և 3.3 Վ, որը սնուցում է ESP8266- ը և BME280- ը: 3.3V- ը դրեցի անջատիչի ձախ ռելսին, իսկ 3.75V- ը `աջ: Լարման կարգավորիչը 3.75V- ը վերածում է 3.3V- ի: Հետեւելով տվյալների թերթիկի հրահանգներին, ես կայունության բարձրացման համար ավելացրել եմ 1 μF կոնդենսատոր լարման կարգավորիչի մուտքի եւ ելքի մեջ:
  • ESP8266- ի GPIO15- ը միացված է տրանզիստորի դարպասին: Սա թույլ է տալիս ESP8266- ին միացնել տրանզիստորը և, հետևաբար, ուլտրաձայնային տվիչը `ակտիվ վիճակում, և անջատել այն խոր քնի ժամանակ:
  • GPIO14- ը միացված է անջատիչին, OTA անջատիչին: Անջատիչի փակումը ազդանշան է տալիս ESP8266- ին, որը մենք ցանկանում ենք սկսել OTA ռեժիմով, այսինքն `RESET անջատիչը սեղմելուց (փակել և բացելուց) և օդում նոր ուրվագիծ վերբեռնելուց հետո:
  • RST և GPIO2 կապումներն իրար միացված են, ինչպես ծրագրավորման դիագրամում: RST- ի քորոցն այժմ միացված է նաև GPIO16- ին, որպեսզի ESP8266- ը արթնանա խոր քունից:
  • Ուլտրաձայնային տվիչի TRIG և ECHO կապերը միացված են GPIO12 և GPIO13, իսկ BME280- ի SCL և SDA կապերը `GPIO5 և GPIO4:
  • Ի վերջո, անալոգային քորոց ADC- ն մուտքային լարման հետ միացված լարման բաժանարարի միջոցով է: Սա թույլ է տալիս չափել մուտքային լարումը `մարտկոցների լիցքը ստուգելու համար: ADC քորոցը կարող է չափել 0V- ից 1V լարման լարումները: Լարման բաժանարարի համար մենք ընտրեցինք 100K և 470K ռեզիստորներ: Սա նշանակում է, որ ADC կապում լարումը տրվում է ՝ V_ADC = 100K/(100K+470K) V_in:Հաշվի առնելով V_ADC = 1V դա նշանակում է, որ մենք կարող ենք չափել մուտքային լարումները մինչև V_in = 570/100 V_ADC = 5.7V: Ինչ վերաբերում է էներգիայի սպառմանը, ապա հոսանքի արտահոսք կա նաև լարման բաժանարարի միջով: Մարտկոցներից V_in = 3.75V- ով գտնում ենք I_leak = 3.75V/570K = 6.6 μA:

Նույնիսկ երբ միացումն աշխատում է մարտկոցներից, հնարավոր է USB- ը միացնել սերիական ադապտերին: Պարզապես համոզվեք, որ անջատեք VCC ադապտորը և միացրեք GND, RX և TX, ինչպես ծրագրավորման դիագրամում: Սա հնարավորություն է տալիս Arduino IDE- ում բացել Սերիայի մոնիտորը `կարդալու վրիպազերծման հաղորդագրությունները և համոզվելու, որ ամեն ինչ աշխատում է սպասվածի պես:

Ամբողջական սխեմայի համար ես չափեցի ընթացիկ սպառումը 50 μA խորը քնի մեջ, երբ աշխատում եմ մարտկոցներից: Սա ներառում է ESP8266- ը, BME280- ը, ուլտրաձայնային տվիչը (անջատված է տրանզիստորով) և արտահոսքը լարման բաժանարարի միջոցով և, հնարավոր է, այլ արտահոսքեր: Այնպես որ, դա այնքան էլ վատ չէ:

Ես պարզեցի, որ ընդհանուր ակտիվ ժամանակը մոտ 7 վայրկյան է, որից 4.25 վայրկյանը `Wifi- ին միանալու համար և 1.25 վայրկյանը` տվյալները ThingSpeak- ին ուղարկելու համար: Այսպիսով, 80 մԱ ակտիվ հոսանքով ես գտա ժամում 160 μAh ակտիվ ժամանակի համար: Խորը քնի վիճակի համար ժամում ավելացնելով 50 μAh ՝ ընդհանուր առմամբ ունենք ժամում 210 μAh: Սա նշանակում է, որ 2600 mAh մարտկոցները տեսականորեն տևում են 12400 ժամ = 515 օր: Սա բացարձակ առավելագույնն է, եթե մենք կարողանայինք օգտագործել մարտկոցների ամբողջ հզորությունը (ինչը այդպես չէ), և չկան արտահոսքեր, որոնք ես չէի գտել իմ ընթացիկ չափումներով: Այսպիսով, ես դեռ պետք է տեսնեմ, թե արդյոք սա իսկապես ավարտվում է:

Քայլ 7: Սենսորի ավարտը

Ավարտելով սենսորը
Ավարտելով սենսորը
Ավարտելով սենսորը
Ավարտելով սենսորը
Սենսորի ավարտում
Սենսորի ավարտում

Ես սենսորը դրեցի պլաստմասե 1 լիտրանոց տարայի մեջ, որը նախկինում ապուր էր պարունակում: Ներքեւի մասում ես երկու անցք արեցի, որպեսզի տեղավորվեն HC-SR04-P տվիչի «աչքերին»: Բացի անցքերից, տարան պետք է անջրանցիկ լինի: Այնուհետեւ այն ամրացվում է ջրի բաքի պատին շրջանաձեւ օղակով, որը սովորաբար օգտագործվում է անձրեւաջրերի արտահոսքի խողովակի համար:

Haveվարճացեք նախագծով:

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