Kazalo:

Senzor za obvestila pralnega stroja: 6 korakov (s slikami)
Senzor za obvestila pralnega stroja: 6 korakov (s slikami)

Video: Senzor za obvestila pralnega stroja: 6 korakov (s slikami)

Video: Senzor za obvestila pralnega stroja: 6 korakov (s slikami)
Video: Стиральная машина не блокирует люк (ошибка dE) 2024, Julij
Anonim
Image
Image
Prototip
Prototip

Ta senzor pralnega stroja stoji na vrhu mojega pralnega stroja in uporablja merilnik pospeška za zaznavanje vibracij iz stroja. Ko zazna, da je cikel pranja končan, mi pošlje obvestilo na telefon. To sem naredil, ker stroj sam po končanem pisku ne piska in naveličal sem se pozabiti vzeti perilo.

Kodo najdete tukaj:

Celoten seznam delov:

  • WEMOS LOLIN32
  • Polkrožna plošča (za izdelavo prototipov)
  • ABS projektna škatla z matrično ploščo 59x88x30 mm
  • Sparkfun LIS3DH - trojni osni merilnik pospeška
  • 1x ZVP3306A P-kanalni MOSFET, 160 mA, 60 V, 3-polna E-linija
  • 1x BC549B TO92 30V NPN tranzistor
  • 5 mm LED modra 68 mcd
  • 1x 100 k 0,125 W CF upor
  • 1x 330k 0,125 W CF upor
  • 2x 10 k 0,250 W CF upor
  • 1x 100 0,250 W CF upor
  • 2-pinski ženski kabel JST PH-Style (14 cm)
  • 4x M1219-8 Neodimijski disk magnet 6x4mm

1. korak: Prototip

Prototip
Prototip

Naprava uporablja mikrokrmilnik ESP32. V tem primeru uporabljam razvojno ploščo Lolin32 podjetja Wemos, ki jo lahko kupite na AliExpress za približno 7 USD. Merilnik pospeška je Sparkfun LIS3DH - pomembno je, da je merilnik pospeška digitalni in ne analogni, kot boste videli kasneje. Baterijo sem vzel iz starega kompleta bluetooth zvočnikov.

ESP32 se poveže z merilnikom pospeška prek I2C. Prva različica kode je preprosto izmerila tri osi pospeška (x, y in z) za izmerjeno vrednost pospeška vsakih 20 ms. Z namestitvijo prototipa plošče na pralni stroj sem naredil zgornji graf, ki prikazuje vršne vrednosti pospeška med različnimi fazami pralnega cikla. Vrhovi, pri katerih je bil absolutni pospešek večji od 125 mg (125 tisočakov normalne teže), so prikazani v oranžni barvi. Ta obdobja želimo zaznati in z njimi določiti stanje pralnega stroja.

Kako ugotoviti, ali je stroj vklopljen ali izklopljen?

Eden od ciljev izdelave te naprave je bil, da bo popolnoma pasivna. Tj. ni treba pritisniti nobenih gumbov; bi samo delovalo. Prav tako bi morala biti zelo nizka moč, saj v mojem primeru napajalnih kablov v pralnem stroju ni bilo mogoče podaljšati.

Na srečo ima merilnik pospeška LIS3DH funkcijo, pri kateri lahko sproži prekinitev, ko pospešek preseže dani prag (upoštevajte, to zahteva uporabo vgrajenega visokoprehodnega filtra merilnika pospeška-za podrobnosti glejte kodo na Githubu) in ESP32 lahko prebudite iz načina globokega spanja prek prekinitve. To kombinacijo funkcij lahko uporabimo za ustvarjanje načina spanja z zelo nizko porabo energije, ki ga sproži gibanje.

Psevdo koda bi izgledala nekako tako:

# Naprava se zbudi

notification_threshold = 240 števec = 10 merilnik pospeška.set_threshold (96) # 96mg medtem ko števec> 0: če je merilnik pospeška.above_threshold (): števec ++ else: števec- če je števec> obvestilo_threshold: # končni cikel centrifuge zazna spanje (1 sekunda) merilnik pospeška.set_threshold_interrupt () esp32.set_wakeup_trigger_on_interrupt () esp32.deep_sleep ()

Tukaj lahko vidite, da s števcem zaznamo, koliko sekund pospeška smo zaznali v trenutnem obdobju prebujanja. Če števec pade na nič, lahko napravo ponovno spnemo. Če števec doseže 240 (prag obvestila), to pomeni, da smo zaznali 4 minute vibracij. Vrednosti teh pragov lahko prilagodimo, da zagotovimo, da naprava pravilno zazna končni cikel centrifugiranja. Ko zaznamo zadostne vibracije, lahko preprosto počivamo še 5 minut (v mojem primeru je to toliko časa, dokler se pranje dejansko ne konča), preden pošljemo obvestilo.

Korak: Pošiljanje obvestila prek Blynka

Pošiljanje obvestila prek podjetja Blynk
Pošiljanje obvestila prek podjetja Blynk

Blynk je storitev, zasnovana tako, da omogoča interakcijo z napravami IoT z aplikacijo v telefonu. V tem primeru uporabljam API za potisna obvestila, ki ga sproži preprost HTTP POST za API Blynk.

3. korak: Merjenje porabe energije in ocenjevanje življenjske dobe baterije

Merjenje porabe energije in ocenjevanje življenjske dobe baterije
Merjenje porabe energije in ocenjevanje življenjske dobe baterije

Oglašuje se, da ima čip ESP32 zelo nizko porabo energije v globokem spancu (tako nizko kot 5uA). Na žalost vezja na številnih različnih razvojnih ploščah zagotavljajo zelo različne značilnosti porabe energije - niso vse plošče za razvijalce ESP32 enake. Na primer, ko sem prvič začel s tem projektom, sem uporabil Sparkfun ESP32 Thing, ki bi v načinu globokega spanja porabil približno 1 mA energije (tudi po onemogočitvi LED za vklop). Od takrat uporabljam Lolin32 (ne različico Lite), na katerem sem med globokim spanjem meril tok 144,5uA. Za to meritev sem preprosto povezal multimeter zaporedno z baterijo in napravo. To je zagotovo lažje narediti pri izdelavi prototipov s ploščico. Izmeril sem tudi trenutno uporabo, ko je naprava budna:

  • Globok spanec: 144,5uA
  • Prebujanje: 45mA
  • Omogočen Wi -Fi: 150 mA

Ob predpostavki, da stroj uporabljam dvakrat na teden, sem ocenil naslednje čase časa, ki ga senzor preživi v vsakem stanju:

  • Globok spanec: 604090 sekund (~ 1 teden)
  • Prebujanje: 720 sekund (12 minut)
  • Omogočen Wi -Fi: 10 sekund

Iz teh številk lahko ocenimo, kako dolgo bo baterija zdržala. S tem priročnim kalkulatorjem sem dosegel povprečno porabo energije 0,2 mA. Predvidena življenjska doba baterije je 201 dni ali približno 6 mesecev! V resnici sem ugotovil, da bo naprava po približno 2 mesecih prenehala delovati, zato bi lahko prišlo do napak pri meritvah ali kapaciteti baterije.

4. korak: Merjenje ravni baterije

Merjenje ravni baterije
Merjenje ravni baterije
Merjenje ravni baterije
Merjenje ravni baterije

Mislil sem, da bi bilo lepo, če bi mi naprava povedala, kdaj je baterija skoraj prazna, da vem, kdaj jo moram napolniti. Za merjenje tega moramo izmeriti napetost akumulatorja. Baterija ima napetostno območje 4,3 V - 2,2 V (minimalna delovna napetost ESP32). Na žalost je območje napetosti ADC nožic ESP32 0-3,3 V. To pomeni, da moramo zmanjšati napetost akumulatorja z najvišjih 4,3 na 3,3, da se izognemo preobremenitvi ADC -ja. To je mogoče storiti z delilnikom napetosti. Preprosto povežite dva upora z ustreznimi vrednostmi od baterije do tal in izmerite napetost na sredini.

Na žalost preprosto vezje delilnika napetosti izprazni energijo iz baterije, tudi če napetosti ne merimo. To lahko ublažite z upori visoke vrednosti, a slaba stran je, da ADC morda ne bo mogel potegniti dovolj toka za natančno meritev. Odločil sem se za upore z vrednostmi 100 kΩ in 330 kΩ, ki bodo po tej formuli razdelilnika napetosti padli na 4,3 V na 3,3 V. Glede na skupni upor 430 kΩ bi pričakovali trenutno napetost 11,6 uA (z uporabo Ohmovega zakona). Glede na to, da je trenutna poraba pri globokem spanju 144uA, je to razmeroma pomembno povečanje.

Ker želimo napetost akumulatorja izmeriti samo enkrat tik pred pošiljanjem obvestila, je smiselno izklopiti vezje delilnika napetosti v času, ko ne merimo ničesar. Na srečo lahko to naredimo z nekaj tranzistorji, priključenimi na enega od zatičev GPIO. Uporabil sem vezje v tem odgovoru na izmenjavo skladov. Vidite me, kako testiram vezje z Arduinom in ploščo na zgornji fotografiji (upoštevajte, da je v vezju napaka, zaradi česar merim višjo napetost od pričakovane).

Ko je zgornje vezje na mestu, uporabljam naslednjo psevdo kodo, da dobim odstotno vrednost baterije:

odstotek_baterije ():

# omogoči napetostni tokokrog akumulatorja gpio_set_level (BATTERY_EN_PIN, HIGH) # Raven baterije se vrne kot celo število med 0 in 4095 delilnik uporablja upore 100k/330k ohmov # 4.3V -> 3.223, 2.4 -> 1.842 pričakovana_max = 4.3*330/(100+330) pričakovana_min = 2.4*330/(100+330) raven_ baterije = (adc_voltage -pričakovana_min)/(pričakovana_max -expected_min) povratna raven akumulatorja * 100.0

5. korak: Polepšajte

Naj bo lepše
Naj bo lepše
Naj bo lepše
Naj bo lepše
Naj bo lepše
Naj bo lepše

Čeprav različica matične plošče deluje brezhibno, sem jo želel dati v paket, ki bi bil bolj čeden in zanesljiv (brez žic, ki bi se lahko ohlapile ali kratke). Uspelo mi je najti popolno projektno škatlo za moje potrebe, ki je bila prave velikosti, vključevala je ploščo za pin, pritrdilne držale in vijake, da sem vse skupaj sestavila. Prav tako je bil mrtev poceni pri manj kot 2 £. Po prejemu škatle sem moral le spajkati komponente na ploščo pin.

Morda je najtežji del tega namestitev vseh komponent napetostnega tokokroga akumulatorja na majhen prostor poleg Lolina32. Na srečo se z rahlim vtikanjem in ustreznimi povezavami s spajkanjem vezje lepo prilega. Ker tudi Wemos Lolin32 nima zatiča, ki bi izpostavljal pozitivni pol akumulatorja, sem moral spajati žico od priključka za baterijo do plošče za pin.

Dodal sem tudi LED, ki utripa, ko naprava zazna gibanje.

Korak 6: Zaključni dotiki

Image
Image
Zaključni dotiki
Zaključni dotiki
Zaključni dotiki
Zaključni dotiki

Na dno škatle sem super prilepil 4 neodimske magnete 6 mm x 4 mm, ki omogočajo varen oprijem na kovinski vrh pralnega stroja.

V projektni škatli je že majhna luknja za dostop do kablov. Na srečo sem lahko ploščo ESP32 postavil blizu te luknje in omogočil dostop do priključka mikro USB. Po povečanju luknje z obrtnim nožem se kabel popolnoma prilega, kar omogoča enostavno polnjenje baterije.

Če vas zanimajo nekatere podrobnosti tega projekta, vas prosimo, da pustite komentar. Če si želite ogledati kodo, jo preverite na Githubu:

github.com/alexspurling/washingmachine

Priporočena: