Sadržaj:

Senzor obavještenja mašine za pranje rublja: 6 koraka (sa slikama)
Senzor obavještenja mašine za pranje rublja: 6 koraka (sa slikama)

Video: Senzor obavještenja mašine za pranje rublja: 6 koraka (sa slikama)

Video: Senzor obavještenja mašine za pranje rublja: 6 koraka (sa slikama)
Video: Kako Otvoriti Zatvorena Vrata Mašine za Pranje Veša 2024, Juli
Anonim
Image
Image
Prototip
Prototip

Ovaj senzor mašine za pranje veša nalazi se na vrhu moje mašine za pranje veša i koristi akcelerometar za otkrivanje vibracija iz mašine. Kad osjeti da je ciklus pranja završen, šalje mi obavještenje na telefon. Napravio sam ovo jer mašina sama po sebi više ne pišti kad je gotova i bilo mi je dosadilo zaboraviti izvaditi rublje.

Kôd se može pronaći ovdje:

Kompletna lista delova:

  • WEMOS LOLIN32
  • Oglasna ploča polovine veličine (za izradu prototipa)
  • ABS projektna kutija sa matričnom pločom 59x88x30mm
  • Sparkfun LIS3DH - troosni akcelerometar
  • 1x ZVP3306A P-kanalni MOSFET, 160 mA, 60 V, 3-polna E-linija
  • 1x BC549B TO92 30V NPN tranzistor
  • 5 mm LED plava 68 mcd
  • 1x 100k 0.1kW CF otpornik
  • 1x 330k 0,125W CF otpornik
  • 2x 10k CF otpornik 0.250W
  • 1x 100 0.250W CF otpornik
  • 2-pinski ženski JST kabel u stilu PH (14 cm)
  • 4x M1219-8 Magnet od neodimijumskog diska 6x4mm

Korak 1: Prototip

Prototip
Prototip

Uređaj koristi mikrokontroler ESP32. U ovom slučaju koristim razvojnu ploču Lolin32 kompanije Wemos koju možete kupiti na AliExpressu za oko 7 USD. Akcelerometar je Sparkfun LIS3DH - važno je da je akcelerometar digitalni, a ne analogni, kao što ćete vidjeti kasnije. Bateriju sam uzeo iz starog seta bluetooth zvučnika.

ESP32 se povezuje sa mjeračem ubrzanja putem I2C. Prva verzija koda jednostavno je ispitala tri osi ubrzanja (x, y i z) za izmjerenu vrijednost ubrzanja svakih 20 ms. Postavljanjem prototipa matične ploče na mašinu za pranje rublja i napravio sam gornji grafikon koji prikazuje vrhove ubrzanja tokom različitih faza ciklusa pranja. Vrhovi gdje je apsolutno ubrzanje bilo veće od 125 mg (125 tisućinki normalne gravitacije) prikazani su narandžastom bojom. Želimo otkriti ove periode i upotrijebiti ih za utvrđivanje statusa perilice rublja.

Kako utvrditi da li je mašina uključena ili isključena?

Jedan od ciljeva izgradnje ovog uređaja bio je da bude potpuno pasivan. Tj. ne treba pritisnuti nijedno dugme; to bi samo uspjelo. Također bi trebao biti vrlo male snage jer u mom slučaju nije bilo moguće produžiti kablove za napajanje do mašine za pranje rublja.

Srećom, LIS3DH akcelerometar ima značajku u kojoj može pokrenuti prekid kada ubrzanje premaši zadani prag (imajte na umu da to zahtijeva upotrebu ugrađenog visokopropusnog filtera akcelerometra-detalje pogledajte u kodu na Githubu), a ESP32 se može probuditi iz režima dubokog sna preko prekida. Ovu kombinaciju funkcija možemo upotrijebiti za kreiranje načina mirovanja vrlo male snage koji se pokreće kretanjem.

Pseudo kod bi izgledao otprilike ovako:

# Uređaj se budi

notification_threshold = 240 counter = 10 accelerometer.set_threshold (96) # 96mg while counter> 0: if accelerometer.above_threshold (): counter ++ else: counter-- if counter> notice_threshold: # završni ciklus centrifuge otkriven san (1 sekunda) accelerometer.set_threshold_interrupt () esp32.set_wakeup_trigger_on_interrupt () esp32.deep_sleep ()

Ovdje možete vidjeti da koristimo brojač za otkrivanje koliko smo sekundi ubrzanja otkrili tokom trenutnog perioda buđenja. Ako brojač padne na nulu, možemo vratiti uređaj u stanje mirovanja. Ako brojač dosegne 240 (prag obavijesti), to znači da smo otkrili 4 minute vibracije. Možemo prilagoditi vrijednosti ovih pragova kako bismo bili sigurni da uređaj ispravno detektira završni ciklus centrifugiranja. Nakon što se otkrije dovoljna vibracija, možemo jednostavno spavati još 5 minuta (u mom slučaju to je koliko treba vremena da se pranje zaista završi) prije slanja obavijesti.

Korak 2: Slanje obavijesti putem Blynka

Slanje obavještenja putem Blynka
Slanje obavještenja putem Blynka

Blynk je usluga osmišljena da omogući interakciju s IoT uređajima s aplikacijom na vašem telefonu. U ovom slučaju koristim API za push notifikacije koji se pokreće jednostavnim HTTP POST -om za Blynk API.

Korak 3: Mjerenje potrošnje energije i procjena vijeka trajanja baterije

Mjerenje potrošnje energije i procjena vijeka trajanja baterije
Mjerenje potrošnje energije i procjena vijeka trajanja baterije

Čip ESP32 se reklamira kao vrlo niska potrošnja energije u dubokom snu (čak 5uA). Nažalost, kola na mnogim različitim razvojnim pločama pružaju vrlo različite karakteristike potrošnje energije - nisu sve ESP32 ploče za razvoj jednake. Na primjer, kada sam tek započeo ovaj projekt, koristio sam Sparkfun ESP32 Thing koji bi potrošio oko 1mA energije u načinu dubokog sna (čak i nakon onemogućavanja LED za napajanje). Od tada koristim Lolin32 (ne Lite verziju) na kojem sam mjerio struju od 144,5uA dok sam bio u načinu dubokog sna. Da bih napravio ovo mjerenje, jednostavno sam spojio multimetar u seriju s baterijom i uređajem. Ovo je zasigurno lakše učiniti dok izrađujete prototipove s opcijom. Također sam izmjerio trenutnu potrošnju dok je uređaj u budnom stanju:

  • Duboki san: 144,5uA
  • Buđenje: 45mA
  • Omogućen Wi -Fi: 150mA

Pod pretpostavkom da uređaj koristim dva puta sedmično, procijenio sam sljedeće vrijeme za vrijeme koje senzor provodi u svakom stanju:

  • Duboki san: 604090 sekundi (~ 1 sedmica)
  • Buđenje: 720 sekundi (12 minuta)
  • Omogućen Wi -Fi: 10 sekundi

Iz ovih brojki možemo procijeniti koliko će baterija trajati. Koristio sam ovaj zgodan kalkulator za prosječnu potrošnju energije od 0,2 mA. Predviđeno trajanje baterije je 201 dan ili oko 6 mjeseci! U stvarnosti sam otkrio da će uređaj prestati raditi nakon otprilike 2 mjeseca pa bi moglo doći do grešaka u mjerenjima ili kapacitetu baterije.

Korak 4: Mjerenje nivoa baterije

Merenje nivoa baterije
Merenje nivoa baterije
Merenje nivoa baterije
Merenje nivoa baterije

Mislio sam da bi bilo lijepo kada bi mi uređaj mogao reći kada je baterija pri kraju, tako da znam kada ga napuniti. Da bismo to izmjerili, moramo izmjeriti napon baterije. Baterija ima raspon napona od 4,3 V - 2,2 V (minimalni radni napon ESP32). Nažalost, raspon napona ADC pinova ESP32 je 0-3,3V. To znači da moramo smanjiti napon baterije s maksimalnih 4,3 na 3,3 kako bismo izbjegli preopterećenje ADC -a. To je moguće učiniti pomoću razdjelnika napona. Jednostavno povežite dva otpornika s odgovarajućim vrijednostima od baterije do mase i izmjerite napon u sredini.

Nažalost, jednostavan krug razdjelnika napona će isprazniti bateriju čak i kad se napon ne mjeri. To možete ublažiti upotrebom otpornika velike vrijednosti, ali loša strana je to što ADC možda neće moći izvući dovoljno struje za precizno mjerenje. Odlučio sam koristiti otpornike vrijednosti 100kΩ i 330kΩ koji će pasti 4,3 V na 3,3 V prema ovoj formuli razdjelnika napona. S obzirom na ukupni otpor od 430 kΩ, mogli bismo očekivati trenutnu potrošnju od 11,6uA (koristeći Ohmov zakon). S obzirom na to da je naša trenutna potrošnja u dubokom snu 144uA, to je razumno značajno povećanje.

Kako samo jednom želimo izmjeriti napon baterije neposredno prije slanja obavijesti, ima smisla isključiti krug razdjelnika napona u vrijeme kada ništa ne mjerimo. Srećom, to možemo učiniti s nekoliko tranzistora spojenih na jedan od GPIO pinova. Koristio sam kolo dato u ovom odgovoru na razmjenu stackex -a. Možete vidjeti kako testiram krug s Arduinom i ploču na gornjoj fotografiji (imajte na umu grešku u krugu zbog čega mjerim veći napon od očekivanog).

S gornjim krugom na mjestu, koristim sljedeći pseudo kôd da dobijem vrijednost postotka baterije:

postotak_baterije ():

# omogući krug napona akumulatora gpio_set_level (BATTERY_EN_PIN, HIGH) # Nivo baterije se vraća kao cijeli broj između 0 i 4095 razdjelnik koristi otpornike 100k/330k ohma # 4.3V -> 3.223, 2.4 -> 1.842 očekivani_max = 4.3*330/(100+330) očekivani_min = 2.4*330/(100+330) nivo_baterije = (adc_voltage -očekivani_min)/(očekivani_max -očekivani_min) povrati_razina baterije * 100.0

Korak 5: Učinite to ljepšim

Učiniti to ljepšim
Učiniti to ljepšim
Učiniti to ljepšim
Učiniti to ljepšim
Učiniti to ljepšim
Učiniti to ljepšim

Iako verzija ploče radi dobro, htio sam je staviti u paket koji će biti uredniji i pouzdaniji (bez žica koje se mogu olabaviti ili prekinuti). Uspio sam pronaći savršenu projektnu kutiju za moje potrebe, odgovarajuće veličine, koja je uključivala iglastu ploču, držače za pričvršćivanje i vijke za spajanje. Takođe, bio je mrtav jeftin sa manje od 2 funte. Nakon što sam primio kutiju, sve što sam trebao učiniti je lemljenje komponenti na pin ploču.

Možda je najteži dio ovoga bilo postavljanje svih komponenti naponskog kruga baterije na mali prostor pored Lolina32. Srećom, uz pomalo šavova i odgovarajuće veze s lemljenjem, krug se lijepo uklapa. Također, budući da Wemos Lolin32 nema pin za izlaganje pozitivnog terminala baterije, morao sam lemiti žicu od konektora za bateriju do pin ploče.

Dodao sam i LED diodu koja treperi kada uređaj otkrije kretanje.

Korak 6: Završni dodiri

Image
Image
Završni dodiri
Završni dodiri
Završni dodiri
Završni dodiri

Super ljepio sam 4 neodimijumska magneta 6 6 mm x 4 mm na dno kutije što mu omogućava da se sigurno zalijepi za metalni vrh perilice rublja.

Projektna kutija već dolazi s malom rupom za pristup kablovima. Srećom, uspio sam postaviti ESP32 ploču blizu ove rupe kako bih omogućio pristup mikro USB konektoru. Nakon povećanja rupe zanatskim nožem, kabel se savršeno uklapa kako bi se omogućilo jednostavno punjenje baterije.

Ako vas zanima bilo koji detalj ovog projekta, slobodno ostavite komentar. Ako želite vidjeti kôd, provjerite ga na Githubu:

github.com/alexspurling/washingmachine

Preporučuje se: