Tartalomjegyzék:
- 1. lépés: Prototípus
- 2. lépés: Értesítés küldése a Blynk segítségével
- 3. lépés: Az energiafogyasztás mérése és az akkumulátor élettartamának becslése
- 4. lépés: Az akkumulátor töltöttségi szintjének mérése
- 5. lépés: szebbé varázsolni
- 6. lépés: Utolsó simítások
Videó: Mosógép értesítési érzékelő: 6 lépés (képekkel)
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:43
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
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
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 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
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
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
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:
ForgetMeNot - Intelligens otthon értesítési platform: 14 lépés (képekkel)
ForgetMeNot - Intelligens otthon értesítési platform: Elfoglalt egyetemistákként, az órák, munkahelyek és családi kötelezettségek között rohangálva hajlamosak vagyunk elfelejteni az apróságokat. A születésnap úgy jön és megy, hogy észre sem vesszük, egy fontos határidő elmúlik a feledékenység miatt, és néha
Az 1930 -as évek Kodak Pi értesítési lámpája: 6 lépés (képekkel)
Az 1930 -as évek Kodak Pi értesítési lámpája: Ez az 1930 -as évek Kodak Table Viewer programja, amelyet az értesítések és figyelmeztetések megjelenítéséhez igazítottam, élénk színek segítségével. A fényforrás egy Unicorn pHAT, a fényes LED -ek programozható mátrixa, és ezt egy Raspberry Pi Zero W vezérli, amely
Automatikus kávé értesítési rendszer: 7 lépés (képekkel)
Automatikus kávéértesítési rendszer: Ebben a projektben intelligensvé teszem az irodai kávéfőzőt, egy olyan kávériasztó rendszer kiépítésével, amely Slack értesítéseket küld, amikor valaki friss kávét főz. A kód megváltoztatható e -mail vagy szöveges üzenet küldésére. Ez a projekt egy R
A mosógép motorjának bekötése generátorként: 3 lépés (képekkel)
A mosógép motorjának bekötése generátorként: A mosógép motorjának generátorként vagy mosógépmotor -generátor vezetékezésének alapjainak bemutatása egy oktatóanyag az univerzális motorvezetékek elveiről az egyenáramú és váltakozó áramú tápegységekben. A generátor egy eszköz, amely átalakítja a motorteljesítményt elektromos áramba
A mosógép értesítései a MESH használatával: 4 lépés (képekkel)
Mosógép értesítések a MESH használatával: Hoppá! Elfelejtettem a mosógépben lévő ruhákat … Mindig elfelejted felvenni a ruháidat mosás után? Ez a recept frissíti a mosógépet, hogy értesítéseket kapjon a Gmail vagy az IFTTT segítségével, amint a ruhák készen állnak a képre