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

Լվացքի մեքենայի ծանուցման տվիչ `6 քայլ (նկարներով)
Լվացքի մեքենայի ծանուցման տվիչ `6 քայլ (նկարներով)

Video: Լվացքի մեքենայի ծանուցման տվիչ `6 քայլ (նկարներով)

Video: Լվացքի մեքենայի ծանուցման տվիչ `6 քայլ (նկարներով)
Video: Ինչպես հեշտ մաքրել լվացքի մեքենան՝աղերից և կեղտից։Как легко почистить стиральную машинку от НАКИПИ. 2024, Հուլիսի
Anonim
Image
Image
Նախատիպ
Նախատիպ

Լվացքի մեքենայի սենսորը նստում է իմ լվացքի մեքենայի վերևում և արագացուցիչ է օգտագործում մեքենայից թրթռումները հայտնաբերելու համար: Երբ նա զգում է, որ լվացքի ցիկլն ավարտված է, նա ինձ ծանուցում է ուղարկում իմ հեռախոսի մասին: Ես դա կառուցեցի, քանի որ մեքենան ինքնին այլևս չի ազդում, երբ այն ավարտվում է, և ես հոգնել էի մոռանալ լվացքը հանել:

Կոդը կարելի է գտնել այստեղ ՝

Մասերի ամբողջական ցուցակ.

  • WEMOS LOLIN32
  • Կիսա չափի տախտակ (նախատիպավորման համար)
  • ABS Project Box, Matrix Board 59x88x30 մմ տրամագծով
  • Sparkfun LIS3DH - Եռակի առանցքի արագացուցիչի բեկում
  • 1x ZVP3306A P-channel MOSFET, 160 mA, 60 V, 3-Pin E-Line
  • 1x BC549B TO92 30V NPN տրանզիստոր
  • 5 մմ LED կապույտ 68 մկդ
  • 1x 100k 0.125W CF դիմադրություն
  • 1x 330k 0.125W CF դիմադրություն
  • 2x 10k 0.250W CF դիմադրություն
  • 1x 100 0.250W CF դիմադրություն
  • 2-պտույտ իգական JST PH- ոճի մալուխ (14 սմ)
  • 4x M1219-8 նեոդիմի սկավառակ մագնիս 6x4 մմ

Քայլ 1: Նախատիպ

Նախատիպ
Նախատիպ

Սարքն օգտագործում է ESP32 միկրոկոնտրոլեր: Այս դեպքում ես օգտագործում եմ Wemos- ի Lolin32 զարգացման խորհուրդը, որը կարող եք գնել AliExpress- ից մոտ 7 դոլարով: Արագացուցիչը Sparkfun LIS3DH- ն է, կարևոր է արագացուցիչը թվային է, քան անալոգային, ինչպես կտեսնեք ավելի ուշ: Մարտկոցը, որը ես վերցրի bluetooth բարձրախոսների հին փաթեթից:

ESP32- ը արագացուցիչին միանում է I2C- ի միջոցով: Կոդի առաջին տարբերակը պարզապես հարցում է անցկացրել արագացման երեք առանցքների (x, y և z) չափված արագացման արժեքի համար յուրաքանչյուր 20ms- ում: Հացաթխման նախատիպը տեղադրելով լվացքի մեքենայի վրա և ես պատրաստեցի վերը նշված գրաֆիկը, որը ցույց է տալիս արագացման գագաթները լվացքի ցիկլի տարբեր փուլերում: Այն գագաթները, որտեղ բացարձակ արագացումը գերազանցում էր 125 մգ -ը (նորմալ ծանրության 125 հազարերորդը), պատկերված են նարնջագույնով: Մենք ցանկանում ենք հայտնաբերել այդ ժամանակաշրջանները և օգտագործել դրանք `որոշելու լվացքի մեքենայի կարգավիճակը:

Ինչպե՞ս որոշել, որ մեքենան միացված է, թե անջատված:

Այս սարքի ստեղծման նպատակներից մեկն այն էր, որ այն ամբողջովին պասիվ կլիներ: Այսինքն ոչ մի կոճակ պետք չէ սեղմել; դա պարզապես կաշխատեր: Այն նաև պետք է լինի շատ ցածր էներգիա, քանի որ իմ դեպքում իսկապես հնարավոր չէր հոսանքի մալուխներ երկարացնել լվացքի մեքենայի վրա:

Բարեբախտաբար, LIS3DH արագացուցիչը ունի մի գործառույթ, որտեղ այն կարող է ընդհատում առաջացնել, երբ արագացումը գերազանցում է տվյալ շեմը (նկատի ունեցեք, դա պահանջում է արագացուցիչի ներկառուցված բարձր անցման զտիչի օգտագործում. Մանրամասների համար տե՛ս Github- ի կոդը) և ESP32- ը կարող է արթնանալ: ընդհատման միջոցով խոր քնի ռեժիմից: Մենք կարող ենք օգտագործել հատկությունների այս համադրությունը `ստեղծելու շատ ցածր էներգիայի քնի ռեժիմ, որը շարժվում է շարժման միջոցով:

Կեղծ կոդն այսպիսի տեսք կունենա.

# Սարքն արթնանում է

notification_threshold = 240 counter = 10 accelerometer.set_threshold (96) # 96mg while counter> 0: if accelerometer.above_threshold (): counter ++ else: counter-- if counter> notification_threshold: # final spin ցիկլը հայտնաբերել է քուն (1 վայրկյան) accelerometer.set_threshold_inruptrupt () esp32.set_wakeup_trigger_on_interrupt () esp32.deep_sleep ()

Այստեղ դուք կարող եք տեսնել, որ մենք օգտագործում ենք հաշվիչ ՝ որոշելու համար, թե քանի վայրկյան արագացում ենք հայտնաբերել արթնության ընթացիկ շրջանում: Եթե հաշվիչը զրոյի իջնի, ապա մենք կարող ենք սարքը նորից քնել: Եթե հաշվիչը հասնում է 240 -ի (ծանուցման շեմին), ապա դա նշանակում է, որ մենք հայտնաբերել ենք 4 րոպե թրթռում: Մենք կարող ենք փոփոխել այս շեմերի արժեքները `համոզվելու համար, որ սարքը ճիշտ է հայտնաբերում պտտման վերջին ցիկլը: Երբ բավարար թրթռում է հայտնաբերվում, մենք կարող ենք պարզապես քնել ևս 5 րոպե (իմ դեպքում սա այն է, թե որքան ժամանակ է պահանջվում մինչև լվացքի իրական ավարտը) նախքան ծանուցում ուղարկելը:

Քայլ 2. ificationանուցում ուղարկելով Բլինկի միջոցով

Bանուցում ուղարկելով Բլինկի միջոցով
Bանուցում ուղարկելով Բլինկի միջոցով

Blynk- ը ծառայություն է, որը նախատեսված է թույլ տալու փոխազդել IoT սարքերի հետ ՝ ձեր հեռախոսի հավելվածով: Այս դեպքում ես օգտագործում եմ push ծանուցման API- ն, որը գործարկվում է պարզ HTTP POST- ի միջոցով Blynk API- ին:

Քայլ 3. Էլեկտրաէներգիայի սպառման չափում և մարտկոցի աշխատանքի գնահատում

Էլեկտրաէներգիայի սպառման չափում և մարտկոցի կյանքի գնահատում
Էլեկտրաէներգիայի սպառման չափում և մարտկոցի կյանքի գնահատում

ESP32 չիպը գովազդվում է որպես շատ ցածր էներգիայի սպառման, երբ խոր քնում է (5uA- ից ցածր): Unfortunatelyավոք, զարգացման տարբեր տախտակների միացումն ապահովում է էներգիայի սպառման շատ տարբեր բնութագրեր. Ոչ բոլոր ESP32 dev տախտակները ստեղծված են հավասար: Օրինակ, երբ ես առաջին անգամ սկսեցի այս նախագիծը, ես օգտագործեցի Sparkfun ESP32 Thing- ը, որը խոր քնի ռեժիմում կսպառեր մոտ 1 մԱ էներգիա (նույնիսկ հոսանքի LED- ն անջատելուց հետո): Այդ ժամանակից ի վեր ես օգտագործում եմ Lolin32- ը (ոչ Lite տարբերակը), որի վրա ես խոր քնի ռեժիմում չափել եմ 144.5uA հոսանք: Այս չափումը կատարելու համար ես պարզապես մի շարք բազմաչափ միացրել եմ մարտկոցի և սարքի հետ: Սա, անկասկած, ավելի հեշտ է անել, երբ նախատիպը պատրաստում են տախտակի վրա: Ես նաև չափեցի ընթացիկ օգտագործումը, երբ սարքը արթուն է.

  • Խորը քուն ՝ 144.5uA
  • Արթուն `45 մԱ
  • WiFi- ն միացված է ՝ 150 մԱ

Ենթադրելով, որ ես օգտագործում եմ մեքենան շաբաթը երկու անգամ, ես գնահատեցի սենսորի յուրաքանչյուր նահանգում անցկացրած ժամանակի հետևյալ ժամանակը.

  • Խորը քուն ՝ 604090 վայրկյան (~ 1 շաբաթ)
  • Արթուն ՝ 720 վայրկյան (12 րոպե)
  • WiFi- ն միացված է ՝ 10 վայրկյան

Այս թվերից մենք կարող ենք գնահատել, թե մարտկոցը որքան կշարունակվի: Ես օգտագործեցի այս հարմար հաշվիչը `0.2 մԱ միջին էներգիայի սպառման համար: Մարտկոցի մոտավոր ժամկետը 201 օր է կամ մոտ 6 ամիս: Իրականում ես գտա, որ սարքը կդադարի աշխատել մոտ 2 ամիս հետո, այնպես որ չափումների կամ մարտկոցի հզորության որոշ սխալներ կարող են լինել:

Քայլ 4: Մարտկոցի մակարդակի չափում

Մարտկոցի մակարդակի չափում
Մարտկոցի մակարդակի չափում
Մարտկոցի մակարդակի չափում
Մարտկոցի մակարդակի չափում

Մտածեցի, որ լավ կլիներ, եթե սարքը կարողանար ինձ ասել, երբ մարտկոցը սպառվում է, որպեսզի ես իմանամ, երբ լիցքավորեմ այն: Սա չափելու համար մենք պետք է չափենք մարտկոցի լարումը: Մարտկոցն ունի 4.3V - 2.2V լարման տիրույթ (ESP32- ի նվազագույն աշխատանքային լարումը): Unfortunatelyավոք, ESP32- ի ADC կապերի լարման տիրույթը 0-3.3 Վ է: Սա նշանակում է, որ մենք պետք է մարտկոցի լարվածությունը նվազեցնենք առավելագույն 4.3 -ից մինչև 3.3 -ի ՝ ADC- ի գերբեռնումից խուսափելու համար: Դա հնարավոր է անել լարման բաժանարարի միջոցով: Պարզապես մարտկոցից գետնին համապատասխան արժեքներով երկու ռեզիստոր միացրեք և չափեք լարումը մեջտեղում:

Unfortunatelyավոք, լարման բաժանարար պարզ միացումն էներգիան կթուլացնի մարտկոցից նույնիսկ այն ժամանակ, երբ լարումը չի չափվում: Դուք կարող եք դա մեղմել ՝ օգտագործելով բարձր արժեք ունեցող դիմադրիչներ, սակայն ներքևի կողմն այն է, որ ADC- ն կարող է չկարողանալ բավականաչափ հոսանք քաշել ճշգրիտ չափումներ կատարելու համար: Ես որոշեցի օգտագործել 100kΩ և 330kΩ արժեքներով ռեզիստորներ, որոնք 4.3V- ից կնվազեն մինչև 3.3V ըստ լարման բաժանարար բանաձևի: Հաշվի առնելով 430kΩ- ի ընդհանուր դիմադրությունը, մենք ակնկալում ենք 11.6uA- ի ընթացիկ վիճակահանություն (օգտագործելով Օմի օրենքը): Հաշվի առնելով մեր խոր քնի ընթացիկ օգտագործումը 144uA, դա ողջամտորեն զգալի աճ է:

Քանի որ մենք ուզում ենք միայն մեկ անգամ չափել մարտկոցի լարումը ծանուցում ուղարկելուց առաջ, իմաստ ունի անջատել լարման բաժանարար միացումը այն ժամանակ, երբ մենք ոչինչ չենք չափում: Բարեբախտաբար, մենք կարող ենք դա անել մի քանի տրանզիստորներով, որոնք միացված են GPIO կապումներից մեկին: Ես օգտագործեցի շղթայի փոխանակման այս պատասխանը: Դուք կարող եք տեսնել, որ ես միացում եմ փորձում Arduino- ով և տախտակով ՝ վերևի լուսանկարում (նշեք, որ սխեմայում սխալ կա, որն է պատճառը, որ ես չափում եմ սպասվածից բարձր լարման):

Վերոնշյալ սխեմայի առկայության դեպքում ես օգտագործում եմ հետևյալ կեղծ ծածկագիրը `մարտկոցի տոկոսային արժեքը ստանալու համար.

մարտկոցի_տոկոս ():

# միացնել մարտկոցի լարման միացում gpio_set_level (BATTERY_EN_PIN, HIGH) # Մարտկոցի մակարդակը վերադարձվում է որպես ամբողջ 0 և 4095 միջև բաժանարարը օգտագործում է 100k/330k ohm դիմադրիչներ # 4.3V -> 3.223, 2.4 -> 1.842 ակնկալվող_մաքս = 4.3*330/(100+330) ակնկալվող_ րոպե = 2.4*330/(100+330) մարտկոցի_ մակարդակ = (adc_voltage -expect_min)/(ակնկալվող_մաքս -ակնկալվող_ րոպե) վերադարձնել մարտկոցի մակարդակը * 100.0

Քայլ 5: Այն դարձնել ավելի գեղեցիկ

Դարձնելով այն ավելի գեղեցիկ
Դարձնելով այն ավելի գեղեցիկ
Դարձնելով այն ավելի գեղեցիկ
Դարձնելով այն ավելի գեղեցիկ
Դարձնելով այն ավելի գեղեցիկ
Դարձնելով այն ավելի գեղեցիկ

Մինչ հացահատիկի տարբերակը լավ է աշխատում, ես ուզում էի այն դնել ավելի կոկիկ և հուսալի փաթեթում (առանց լարերի, որոնք կարող են թուլանալ կամ կարճանալ): Ինձ հաջողվեց գտնել իմ կարիքների համար կատարյալ նախագծի տուփը, որը ճիշտ չափի էր, ներառված էր քորոցային տախտակ, ամրացման բռնակներ և պտուտակներ `բոլորը միասին հավաքելու համար: Բացի այդ, այն էժան էր 2 ֆունտից պակաս գնով: Տուփը ստանալուց հետո ինձ մնում էր միայն բաղադրիչները զոդել քորոցատախտակին:

Թերևս դրա ամենախելամիտ մասը մարտկոցի լարման միացման բոլոր բաղադրիչների տեղադրումն էր Lolin32- ի կողքին գտնվող փոքր տարածության վրա: Բարեբախտաբար, մի փոքր ցնցող խաղալիքով և զոդման միջոցով կատարված համապատասխան կապերով, միացումը կոկիկորեն տեղավորվում է: Բացի այդ, քանի որ Wemos Lolin32- ը չունի քորոց մարտկոցի դրական տերմինալը բացահայտելու համար, ես ստիպված էի լար լարել մարտկոցի միակցիչից դեպի քորոց:

Ես նաև ավելացրեցի LED, որը թարթում է, երբ սարքը նկատում է շարժում:

Քայլ 6: Ավարտելով հպումները

Image
Image
Վերջնական հպումներ
Վերջնական հպումներ
Վերջնական հպումներ
Վերջնական հպումներ

Ես տուփի հիմքին սուպեր սոսնձեցի 4 նեոդիմի 4 6 մմ x 4 մմ մագնիս, ինչը թույլ է տալիս այն ամուր կպչել լվացքի մեքենայի մետաղական գագաթին:

Նախագծի տուփն արդեն ունի փոքր անցք `մալուխների մուտքը ապահովելու համար: Բարեբախտաբար, ես կարողացա տեղադրել ESP32 տախտակը այս անցքի մոտ `միկրո USB միակցիչին մուտք գործելու համար: Արհեստական դանակով փոսը մեծացնելուց հետո մալուխը հիանալի տեղավորվեց, ինչը թույլ է տալիս հեշտությամբ լիցքավորել մարտկոցը:

Եթե ձեզ հետաքրքրում է այս նախագծի մանրամասներից որևէ մեկը, խնդրում ենք ազատ զգալ թողնել մեկնաբանություն: Եթե ցանկանում եք տեսնել ծածկագիրը, խնդրում ենք ստուգել այն Github- ում ՝

github.com/alexspurling/washingmachine

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