Sadržaj:

Senzor obavijesti perilice rublja: 6 koraka (sa slikama)
Senzor obavijesti perilice rublja: 6 koraka (sa slikama)

Video: Senzor obavijesti perilice rublja: 6 koraka (sa slikama)

Video: Senzor obavijesti perilice rublja: 6 koraka (sa slikama)
Video: СТРАННЫЕ НОВОСТИ НЕДЕЛИ - 36 | Таинственный | Вселенная | НЛО | Паранормальный 2024, Srpanj
Anonim
Image
Image
Prototip
Prototip

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

Prototip
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

Slanje obavijesti putem Blynka
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

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, 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

Mjerenje razine baterije
Mjerenje razine baterije
Mjerenje razine baterije
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

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 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

Image
Image
Završni dodiri
Završni dodiri
Završni dodiri
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: