Sadržaj:
- Korak 1: Prototip
- Korak 2: Slanje obavijesti putem Blynka
- Korak 3: Mjerenje potrošnje energije i procjena vijeka trajanja baterije
- Korak 4: Mjerenje razine baterije
- Korak 5: Učinite to ljepšim
- Korak 6: Završni dodiri
Video: Senzor obavijesti perilice rublja: 6 koraka (sa slikama)
2024 Autor: John Day | [email protected]. Zadnja promjena: 2024-01-30 09:37
Ovaj senzor perilice rublja nalazi se na vrhu moje perilice rublja i koristi mjerač ubrzanja za otkrivanje vibracija iz stroja. Kad osjeti da je ciklus pranja završen, šalje mi obavijest na telefon. Napravio sam ovo jer sam stroj više ne pišti kad je gotov i bilo mi je dosadilo zaboraviti izvaditi rublje.
Kôd se može pronaći ovdje:
Cijeli popis dijelova:
- WEMOS LOLIN32
- Oglasna ploča pola veličine (za izradu prototipova)
- ABS projektna kutija s 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,15W CF otpornik
- 1x 330k 0,125 W CF otpornik
- 2x 10k CF otpornik od 0,250 W
- 1x 100 0,250 W CF otpornik
- 2-pinski ženski JST kabel u stilu PH (14 cm)
- 4x M1219-8 Magnet od neodimijskog diska 6x4mm
Korak 1: Prototip
Uređaj koristi mikrokontroler ESP32. U ovom slučaju koristim razvojnu ploču Lolin32 tvrtke 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, što ćete vidjeti kasnije. Bateriju sam uzeo iz starog seta bluetooth zvučnika.
ESP32 se povezuje s 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 perilicu rublja napravio sam gornji grafikon koji prikazuje vršne vrijednosti ubrzanja tijekom različitih faza ciklusa pranja. Vrhovi gdje je apsolutno ubrzanje bilo veće od 125 mg (125 tisućinki normalne gravitacije) prikazani su narančastom bojom. Želimo otkriti ta razdoblja i koristiti ih za utvrđivanje statusa perilice rublja.
Kako odrediti je li stroj uključen ili isključen?
Jedan od ciljeva izgradnje ovog uređaja bio je da bude potpuno pasivan. Tj. ne treba pritisnuti nijedan gumb; to bi samo uspjelo. Također bi trebao biti vrlo male snage jer u mom slučaju nije bilo moguće produžiti kabele za napajanje do perilice rublja.
Srećom, mjerač ubrzanja LIS3DH ima značajku u kojoj može pokrenuti prekid kada ubrzanje premaši zadani prag (imajte na umu da to zahtijeva uporabu ugrađenog visokopropusnog filtra akcelerometra-detalje pogledajte u kodu na Githubu), a ESP32 se može probuditi iz načina rada dubokog sna preko prekida. Ovu kombinaciju značajki možemo koristiti za stvaranje načina mirovanja s vrlo niskom snagom koji se pokreće kretanjem.
Pseudo kod bi izgledao otprilike ovako:
# Uređaj se budi
notice_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 sleep (1 sekunda) mjerač ubrzanja.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 tijekom trenutnog razdoblja 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 detektirali 4 minute vibracije. Vrijednosti ovih pragova možemo prilagoditi 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 do pranja do kraja) prije slanja obavijesti.
Korak 2: Slanje obavijesti 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 obavijesti koji se pokreće jednostavnim HTTP POST -om na Blynk API.
Korak 3: 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, sklopovi na mnogo različitih razvojnih ploča pružaju vrlo različite karakteristike potrošnje energije - nisu sve ploče za razvoj ESP32 jednake. Na primjer, kada sam prvi put 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 verziju Lite) 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. To je zasigurno lakše učiniti dok izrađujete prototipe s krutom pločom. 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 stroj koristim dva puta tjedno, procijenio sam sljedeće vrijeme za vrijeme koje senzor provodi u svakom stanju:
- Duboki san: 604090 sekundi (~ 1 tjedan)
- Buđenje: 720 sekundi (12 minuta)
- Wifi omogućen: 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 pogrešaka u mjerenjima ili kapacitetu baterije.
Korak 4: Mjerenje razine 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 spojite 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 ADC možda neće moći izvući dovoljno struje za točno 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 tijekom vremena kada ništa ne mjerimo. Srećom, to možemo učiniti s nekoliko tranzistora spojenih na jedan od GPIO pinova. Koristio sam krug dat u ovom odgovoru na razmjenu stackex -a. Možete vidjeti kako testiram sklop s Arduinom i ploču na gornjoj fotografiji (imajte na umu grešku u krugu zbog čega mjerim veći napon od očekivanog).
Kad je gornji krug postavljen, koristim sljedeći pseudo kôd za dobivanje vrijednosti postotka baterije:
postotak_baterije ():
# omogući krug napona akumulatora gpio_set_level (BATTERY_EN_PIN, HIGH) # Razina baterije se vraća kao cijeli broj između 0 i 4095 adc_value = adc1_get_value (ADC_PIN) # omogući krug napona baterije gpio_set_level (BATTERY_EN_PIN, LOW) plovak adc_valjeći napon = 3.3 razdjelnik koristi otpornike 100k/330k ohma # 4.3V -> 3.223, 2.4 -> 1.842 očekivana_max = 4.3*330/(100+330) očekivana_min = 2.4*330/(100+330) razina baterije = (adc_voltage -očekivana_min)/(očekivana_max -očekivani_min) povratna_razina baterije * 100.0
Korak 5: Učinite 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 svoje potrebe koja je bila odgovarajuće veličine, uključivala je iglastu ploču, držače za pričvršćivanje i vijke za sve to. Također, 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 šavove 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
Super sam zalijepio 4 neodimijska magneta 6 6 mm x 4 mm na dno kutije što mu omogućuje 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 što je rupom povećao rupu, kabel je savršeno pristajao 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čeni:
Praćenje perilice/sušilice rublja s ESP8266 i senzorom ubrzanja: 6 koraka
Praćenje perilice/sušilice rublja s senzorom ESP8266 i senzora ubrzanja: perilica/sušilica rublja nalazi se u podrumu, a vi u pravilu stavljate hrpu odjeće u nju i nakon toga se bavite drugim kućanskim poslom. Previđate odjeću koja je ostala vlažna i upijajuća u podrumu vašeg stroja
Obavijesti perilice rublja: 3 koraka
Obavijesti o perilici rublja: Imam "glupu" najjeftiniju perilicu rublja za oko 150 funti. Veličina je bila najveće ograničenje, stoga nemojte me osuđivati previše strogo. Gluplja stvar u mom domaćinstvu sam ja. Pranje bijelog donjeg rublja s crvenim džemperima jedan je od mojih grijeha. Drugi se ne sjeća
Kako je bilo lako popraviti elektroniku moje perilice rublja: 5 koraka (sa slikama)
Kako je bilo lako popraviti elektroniku moje perilice rublja: zašto? Budući da sam proizvođač, volim popravljati vlastite stvari, što je ponekad problem jer one ostaju neaktivne dok ja nađem vremena da smislim strategiju nečistoće problem. Popraviti nešto obično je jednostavno i zabavno, ali pronaći ca
Upozorenje Arduino perilice -sušilice rublja - push obavijest na telefon s Blynkom: 5 koraka (sa slikama)
Upozorenje o perilici -sušilici rublja Arduino - Obavijestite telefon putem Blynka: Naša je perilica u garaži i ne možemo čuti zvučne signale koji označavaju da je pranje završeno. Htio sam pronaći način da dobijem obavijest, gdje god se nalazili u kući, kad ciklus završi. Petljao sam s Arduinom, ESP8266 WiFi
Obavijesti perilice rublja pomoću MESH -a: 4 koraka (sa slikama)
Obavijesti perilice rublja pomoću MESH -a: Ups! Zaboravila sam na odjeću u perilici za rublje … Zaboravljate li uvijek pokupiti odjeću nakon pranja? Ovaj recept će nadograditi vašu perilicu za primanje obavijesti putem Gmaila ili IFTTT -a kad vaša odjeća bude spremna za slikanje