Tartalomjegyzék:

Mosógép értesítési érzékelő: 6 lépés (képekkel)
Mosógép értesítési érzékelő: 6 lépés (képekkel)

Videó: Mosógép értesítési érzékelő: 6 lépés (képekkel)

Videó: Mosógép értesítési érzékelő: 6 lépés (képekkel)
Videó: Antik Smart senzory - zabezpečte svoj dom, byt či chatu inteligentnými zariadeniami 2024, November
Anonim
Image
Image
Prototípus
Prototípus

Ez a mosógép -érzékelő a mosógépem tetején található, és gyorsulásmérő segítségével érzékeli a gépből származó rezgést. Amikor érzékeli, hogy a mosási ciklus befejeződött, értesítést küld nekem a telefonomon. Ezt azért építettem, mert maga a gép már nem sípol, amikor befejeződött, és elegem volt abból, hogy elfelejtettem kivenni a ruhaneműt.

A kód itt található:

Teljes alkatrészlista:

  • WEMOS LOLIN32
  • Fél méretű kenyértábla (prototípus készítéséhez)
  • ABS projektdoboz mátrix táblával 59x88x30mm
  • Sparkfun LIS3DH - hármas tengelyű gyorsulásmérő
  • 1x ZVP3306A P-csatorna MOSFET, 160 mA, 60 V, 3 tűs E-Line
  • 1x BC549B TO92 30V NPN tranzisztor
  • 5 mm LED kék 68 mcd
  • 1x 100k 0,125W CF ellenállás
  • 1x 330k 0,125 W CF ellenállás
  • 2x 10k 0,250W CF ellenállás
  • 1x 100 0.250W CF ellenállás
  • 2 tűs női JST PH-típusú kábel (14 cm)
  • 4x M1219-8 neodímium tárcsamágnes 6x4 mm

1. lépés: Prototípus

Prototípus
Prototípus

A készülék ESP32 mikrokontrollert használ. Ebben az esetben a Wemos Lolin32 fejlesztőlapját használom, amelyet az AliExpressen vásárolhat körülbelül 7 dollárért. A gyorsulásmérő a Sparkfun LIS3DH - fontos, hogy a gyorsulásmérő nem analóg, hanem digitális, mint később látni fogod. Az akkumulátort egy régi bluetooth hangszóróból vettem.

Az ESP32 az I2C -n keresztül csatlakozik a gyorsulásmérőhöz. A kód első verziója egyszerűen lekérdezte a három gyorsulási tengelyt (x, y és z) a mért gyorsulási értékhez 20 ms -onként. A kenyeretábla prototípusát a mosógépre helyezve elkészítettem a fenti grafikont, amely a mosási ciklus különböző fázisaiban látható gyorsulási csúcsokat mutatja. Azok a csúcsok, ahol az abszolút gyorsulás nagyobb volt, mint 125 mg (a normál gravitáció 125 ezreléke), narancssárgán láthatók. Szeretnénk észlelni ezeket az időszakokat, és ezek alapján meghatározni a mosógép állapotát.

Hogyan állapítható meg, hogy a gép be van -e kapcsolva?

Ennek az eszköznek az építésének egyik célja az volt, hogy teljesen passzív legyen. Azaz. gombokat nem kell megnyomni; csak működne. Ezenkívül nagyon alacsony teljesítményűnek kell lennie, mivel az én esetemben nem volt igazán lehetséges a kábel csatlakoztatása a mosógéphez.

Szerencsére a LIS3DH gyorsulásmérő rendelkezik olyan funkcióval, amely megszakítást okozhat, ha a gyorsulás meghaladja az adott küszöbértéket (megjegyzés: ehhez szükség van a gyorsulásmérő beépített felüláteresztő szűrőjére-a részletekért lásd a Github kódját), és az ESP32 felébreszthető megszakítással felkelni mély alvás üzemmódjából. A funkciók ezen kombinációjával nagyon alacsony energiaigényű alvó üzemmódot hozhatunk létre, amelyet mozgás vált ki.

Az álkód valahogy így nézne ki:

# A készülék felébred

értesítési_küszöb = 240 számláló = 10 gyorsulásmérő.set_threshold (96) # 96mg, míg számláló> 0: if accelerometer.above_threshold (): számláló ++ egyéb: számláló- ha számláló> értesítési_küszöb: # végső centrifugálási ciklus észlelt alvás (1 másodperc) gyorsulásmérő.set_threshold_interrupt () esp32.set_wakeup_trigger_on_interrupt () esp32.deep_sleep ()

Itt látható, hogy számlálóval észleljük, hány másodperces gyorsulást észleltünk az aktuális ébresztési időszakban. Ha a számláló nullára csökken, visszaállíthatjuk a készüléket. Ha a számláló eléri a 240 -et (az értesítési küszöböt), akkor ez azt jelenti, hogy 4 perces rezgést észleltünk. Csíphetjük ezen küszöbértékeket, hogy megbizonyosodjunk arról, hogy az eszköz helyesen érzékeli a végső centrifugálási ciklust. Ha elegendő rezgést észlelünk, egyszerűen aludhatunk további 5 percet (az én esetemben ennyi idő telik el, amíg a mosás ténylegesen befejeződik), mielőtt értesítést küldünk.

2. lépés: Értesítés küldése a Blynk segítségével

Értesítés küldése a Blynk -en keresztül
Értesítés küldése a Blynk -en keresztül

A Blynk egy olyan szolgáltatás, amely lehetővé teszi az IoT -eszközökkel való interakciót a telefonon lévő alkalmazással. Ebben az esetben a push értesítési API -t használom, amelyet egy egyszerű HTTP POST aktivál a Blynk API -hoz.

3. lépés: Az energiafogyasztás mérése és az akkumulátor élettartamának becslése

Az energiafogyasztás mérése és az akkumulátor élettartamának becslése
Az energiafogyasztás mérése és az akkumulátor élettartamának becslése

Az ESP32 chipet úgy hirdetik, hogy nagyon alacsony az energiafogyasztása mély alvás közben (akár 5uA). Sajnos a sokféle fejlesztőpanel áramköre nagyon eltérő energiafogyasztási jellemzőket biztosít - nem minden ESP32 fejlesztői kártya egyenlő. Például, amikor először elkezdtem ezt a projektet, a Sparkfun ESP32 Thing -et használtam, amely körülbelül 1 mA áramot fogyaszt el mély alvás üzemmódban (még a tápellátás LED kikapcsolása után is). Azóta a Lolin32 -t használom (nem a Lite verziót), amelyen 144,5uA áramot mértem mély alvás üzemmódban. Ehhez a méréshez egyszerűen egy multimétert kötöttem sorba az akkumulátorral és a készülékkel. Ezt minden bizonnyal könnyebb megtenni, miközben prototípusokat készítenek a kenyérpaddal. Mértem az aktuális használatot is, amikor a készülék ébren van:

  • Mély alvás: 144,5uA
  • Ébren: 45mA
  • Wifi engedélyezve: 150mA

Feltételezve, hogy hetente kétszer használom a gépet, a következő időzítéseket becsültem arra az időre, amelyet az érzékelő az egyes állapotokban tölt:

  • Mély alvás: 604090 másodperc (~ 1 hét)
  • Ébren: 720 másodperc (12 perc)
  • Wifi engedélyezve: 10 másodperc

Ezekből a számokból megbecsülhetjük, hogy az akkumulátor mennyi ideig tart. Ezzel a praktikus számológéppel 0,2 mA átlagos energiafogyasztást kaptam. Az akkumulátor várható élettartama 201 nap vagy körülbelül 6 hónap! A valóságban azt tapasztaltam, hogy a készülék körülbelül 2 hónap elteltével leáll, így előfordulhatnak hibák a mérésekben vagy az akkumulátor kapacitásában.

4. lépés: Az akkumulátor töltöttségi szintjének mérése

Az akkumulátor töltöttségi szintjének mérése
Az akkumulátor töltöttségi szintjének mérése
Az akkumulátor töltöttségi szintjének mérése
Az akkumulátor töltöttségi szintjének mérése

Arra gondoltam, hogy jó lenne, ha a készülék megmondaná, mikor kezd lemerülni az akkumulátor, így tudom, mikor kell tölteni. Ennek méréséhez meg kell mérnünk az akkumulátor feszültségét. Az akkumulátor feszültségtartománya 4,3 V - 2,2 V (az ESP32 minimális üzemi feszültsége). Sajnos az ESP32 ADC csapjainak feszültségtartománya 0-3,3 V. Ez azt jelenti, hogy le kell csökkentenünk az akkumulátor feszültségét a maximális 4,3 -ról 3,3 -ra, hogy elkerüljük az ADC túlterhelését. Ezt feszültségosztóval lehet elvégezni. Egyszerűen csatlakoztasson két ellenállást a megfelelő értékekkel az akkumulátorról a földre, és mérje meg a feszültséget középen.

Sajnos egy egyszerű feszültségosztó áramkör lemeríti az akkumulátort, még akkor is, ha a feszültséget nem mérik. Ezt mérsékelheti nagy értékű ellenállások használatával, de a hátránya az, hogy az ADC nem képes elegendő áramot felvenni a pontos méréshez. Úgy döntöttem, hogy 100 kΩ és 330 kΩ értékű ellenállásokat használok, amelyek a feszültségosztó képlet szerint 4,3 V -ról 3,3 V -ra csökkennek. Tekintettel a teljes ellenállásra 430 kΩ, 11,6uA áramfelvételt várnánk (Ohm törvénye alapján). Tekintettel a mély alvás áramfelvételünkre 144uA, ez ésszerűen jelentős növekedés.

Mivel csak egyszer szeretnénk megmérni az akkumulátor feszültségét közvetlenül az értesítés elküldése előtt, ezért célszerű kikapcsolni a feszültségosztó áramkört abban az időben, amikor nem mérünk semmit. Szerencsére ezt megtehetjük pár tranzisztorral, amelyek az egyik GPIO tűhöz vannak csatlakoztatva. Ebben a csereváltási válaszban megadott áramkört használtam. Láthatod, hogy a fenti képen tesztelem az áramkört Arduino -val és kenyérsütő táblával (vegye figyelembe, hogy hiba van az áramkörben, ami miatt a vártnál magasabb feszültséget mérök).

Ha a fenti áramkör a helyén van, a következő álkódot használom az akkumulátor százalékos értékének meghatározásához:

akkumulátor_százalék ():

# akkumulátor feszültségáramkör engedélyezése gpio_set_level (BATTERY_EN_PIN, HIGH) # Az akkumulátor töltöttsége 0 és 4095 közötti egész számként kerül visszaadásra az osztó 100k/330k ohmos ellenállásokat használ # 4.3V -> 3.223, 2.4 -> 1.842 várt_max = 4.3*330/(100+330) várt_min = 2.4*330/(100+330) akkumulátor_szint = (adc_feszültség -várható_min)/(várható_max -expected_min) return battery_level * 100.0

5. lépés: szebbé varázsolni

Csinosabbá téve
Csinosabbá téve
Csinosabbá téve
Csinosabbá téve
Csinosabbá téve
Csinosabbá téve

Míg a kenyérsütő változat jól működik, szerettem volna egy olyan csomagba tenni, amely rendesebb és megbízhatóbb (nincsenek vezetékek, amelyek kilazulhatnak vagy rövidre záródhatnak). Sikerült megtalálni az igényeimnek megfelelő projektdobozt, amely a megfelelő méretű volt, beleértve a csapszeget, a rögzítőtartókat és a csavarokat az összes összeállításához. Ezenkívül halott olcsó volt, kevesebb mint 2 font. Miután megkaptam a dobozt, már csak az alkatrészeket kellett a tűlapra forrasztani.

Ennek talán a legbonyolultabb része az volt, hogy az akkumulátorfeszültség -áramkör összes alkatrészét a Lolin32 melletti kis helyre szerelte. Szerencsére egy kis bunkósággal és a forrasztással készített megfelelő csatlakozásokkal az áramkör szépen illeszkedik. Továbbá, mivel a Wemos Lolin32 nem rendelkezik tűvel az akkumulátor pozitív kivezetésének felfedéséhez, egy vezetéket kellett forrasztanom az akkumulátor csatlakozójából a csaplapba.

Hozzáadtam egy LED -et is, amely villog, ha a készülék mozgást észlelt.

6. lépés: Utolsó simítások

Image
Image
Utolsó simítások
Utolsó simítások
Utolsó simítások
Utolsó simítások

A doboz aljához 4 6 mm x 4 mm-es neodímium mágnest ragasztottam, ami lehetővé teszi, hogy biztonságosan tapadjon a mosógép fém tetejéhez.

A projektdobozban már van egy kis lyuk, amely hozzáférést biztosít a kábelekhez. Szerencsére sikerült az ESP32 kártyát a lyuk közelébe helyezni, hogy hozzáférhessek a mikro USB csatlakozóhoz. Miután a lyukat kézműves késsel megnagyobbította, a kábel tökéletesen illeszkedik az akkumulátor könnyű feltöltéséhez.

Ha érdekli a projekt bármely részlete, kérjük, írjon megjegyzést. Ha látni szeretné a kódot, nézze meg a Githubon:

github.com/alexspurling/washingmachine

Ajánlott: