Sisällysluettelo:
- Vaihe 1: Prototyyppi
- Vaihe 2: Ilmoituksen lähettäminen Blynkin kautta
- Vaihe 3: Virrankulutuksen mittaaminen ja akun käyttöiän arvioiminen
- Vaihe 4: Akun varaustason mittaus
- Vaihe 5: Tee siitä kauniimpi
- Vaihe 6: Viimeistely
Video: Pesukoneilmoitusanturi: 6 vaihetta (kuvilla)
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:03
Tämä pesukoneanturi sijaitsee pesukoneeni päällä ja käyttää kiihtyvyysmittaria havaitakseen tärinän koneesta. Kun se havaitsee, että pesuohjelma on päättynyt, se lähettää minulle ilmoituksen puhelimeeni. Rakensin tämän, koska itse kone ei enää piippaa, kun se on valmis, ja olin kyllästynyt unohtamaan pyykin poistamisen.
Koodi löytyy täältä:
Koko osaluettelo:
- WEMOS LOLIN32
- Puolikokoinen leipälauta (prototyyppien luomiseen)
- ABS -projektilaatikko, jossa matriisilevy 59x88x30mm
- Sparkfun LIS3DH - kolmiakselinen kiihtyvyysanturi
- 1x ZVP3306A P-kanava MOSFET, 160 mA, 60 V, 3-nastainen E-Line
- 1x BC549B TO92 30V NPN -transistori
- 5 mm LED sininen 68 mcd
- 1x 100k 0,125 W CF -vastus
- 1x 330k 0,125 W CF -vastus
- 2x 10k 0,250 W CF -vastus
- 1x 100 0,250W CF -vastus
- 2-nastainen naaras JST PH-tyylinen kaapeli (14 cm)
- 4x M1219-8 neodyymilevymagneetti 6x4mm
Vaihe 1: Prototyyppi
Laite käyttää ESP32 -mikrokontrolleria. Tässä tapauksessa käytän Wemosin Lolin32 -kehityskorttia, jonka voit ostaa AliExpressistä noin 7 dollarilla. Kiihtyvyysmittari on Sparkfun LIS3DH - on tärkeää, että kiihtyvyysmittari on digitaalinen eikä analoginen, kuten näet myöhemmin. Akku, jonka otin vanhasta bluetooth -kaiutinsarjasta.
ESP32 muodostaa yhteyden kiihtyvyysmittariin I2C: n kautta. Koodin ensimmäinen versio yksinkertaisesti kyselytti kolme kiihdytysakselia (x, y ja z) mitatulle kiihtyvyysarvolle 20 ms välein. Kun laitoin leipälevyn prototyypin pesukoneelle ja tein yllä olevan kaavion, joka näyttää kiihtyvyyshuiput pesun eri vaiheiden aikana. Huiput, joissa absoluuttinen kiihtyvyys oli suurempi kuin 125 mg (125 tuhannesosaa normaalipainosta), näkyvät oranssina. Haluamme havaita nämä ajanjaksot ja käyttää niitä pesukoneen tilan määrittämiseen.
Kuinka selvittää, onko kone päällä vai pois päältä?
Yksi tämän laitteen rakentamisen tavoitteista oli, että se olisi täysin passiivinen. Toisin sanoen painikkeita ei tarvitse painaa; se vain toimisi. Sen pitäisi myös olla erittäin alhainen teho, koska virtajohtoja ei ollut mahdollista laajentaa pesukoneeseen tapauksessani.
Onneksi LIS3DH-kiihtyvyysmittarissa on ominaisuus, joka voi laukaista keskeytyksen, kun kiihtyvyys ylittää tietyn kynnyksen (huom. Tämä edellyttää kiihtyvyysmittarin sisäänrakennetun ylipäästösuodattimen käyttöä-katso lisätietoja Githubin koodista) ja ESP32 voidaan herättää ylös syvästä lepotilasta keskeytyksen kautta. Voimme käyttää tätä ominaisuuksien yhdistelmää luodaksemme erittäin vähän virtaa kuluttavan lepotilan, jonka liike laukaisee.
Pseudo -koodi näyttäisi suunnilleen tältä:
# Laite herää
ilmoitus_kynnys = 240 laskuri = 10 kiihtyvyysmittari.set_threshold (96) # 96mg kun laskuri> 0: jos kiihtyvyysmittari.above_threshold (): laskuri ++ muu: laskuri- jos laskuri> ilmoitusraja: # viimeinen linkousjakso havaittu lepotila (1 sekunti) kiihtyvyysmittari.set_threshold_interrupt () esp32.set_wakeup_trigger_on_interrupt () esp32.deep_sleep ()
Näet täältä, että käytämme laskuria havaitsemaan kuinka monta sekuntia kiihtyvyyttä olemme havainneet nykyisen herätysjakson aikana. Jos laskuri laskee nollaan, voimme laittaa laitteen takaisin nukkumaan. Jos laskuri saavuttaa 240 (ilmoitusraja), se tarkoittaa, että olemme havainneet 4 minuutin tärinän. Voimme säätää näiden kynnysten arvoja varmistaaksemme, että laite havaitsee oikein viimeisen linkouksen. Kun riittävä tärinä on havaittu, voimme yksinkertaisesti nukkua vielä 5 minuuttia (minun tapauksessani kestää niin kauan, kunnes pesu todella päättyy) ennen ilmoituksen lähettämistä.
Vaihe 2: Ilmoituksen lähettäminen Blynkin kautta
Blynk on palvelu, joka on suunniteltu mahdollistamaan vuorovaikutus IoT -laitteiden kanssa puhelimen sovelluksella. Tässä tapauksessa käytän push -ilmoitussovellusliittymää, jonka laukaisee yksinkertainen HTTP -POST Blynk -sovellusliittymään.
Vaihe 3: Virrankulutuksen mittaaminen ja akun käyttöiän arvioiminen
ESP32 -sirun mainostetaan kuluttavan hyvin vähän virtaa syvässä unessa (jopa 5uA). Valitettavasti monien eri kehityskorttien piirit tarjoavat hyvin erilaisia virrankulutusominaisuuksia - kaikki ESP32 -kehityskortit eivät ole tasavertaisia. Esimerkiksi, kun aloitin tämän projektin, käytin Sparkfun ESP32 Thing -tekniikkaa, joka kuluttaa noin 1 mA: n virtaa syvässä lepotilassa (vaikka virran merkkivalo olisi poistettu käytöstä). Siitä lähtien olen käyttänyt Lolin32: ta (ei Lite -versiota), jolla mitasin 144,5 uA: n virran syvässä lepotilassa. Tätä mittausta varten johdotin vain yleismittarin sarjaan akun ja laitteen kanssa. Tämä on varmasti helpompaa tehdä, kun prototyyppiä valmistetaan leipälevyllä. Mittasin myös nykyisen käytön, kun laite on hereillä:
- Syvä uni: 144,5 uA
- Herätys: 45 mA
- Wifi käytössä: 150 mA
Olettaen, että käytän konetta kahdesti viikossa, arvioin seuraavat ajoitukset anturille kuluvaan aikaan jokaisessa tilassa:
- Syvä uni: 604090 sekuntia (~ 1 viikko)
- Herää: 720 sekuntia (12 minuuttia)
- Wifi käytössä: 10 sekuntia
Näiden lukujen perusteella voimme arvioida, kuinka kauan akku kestää. Käytin tätä kätevää laskinta saadakseni keskimääräisen virrankulutuksen 0,2 mA. Arvioitu akunkesto on 201 päivää tai noin 6 kuukautta! Todellisuudessa olen huomannut, että laite lakkaa toimimasta noin 2 kuukauden kuluttua, joten mittauksissa tai akun kapasiteetissa saattaa olla virheitä.
Vaihe 4: Akun varaustason mittaus
Ajattelin, että olisi hienoa, jos laite kertoisi minulle, milloin akku on vähissä, joten tiedän milloin ladata se. Tämän mittaamiseksi meidän on mitattava akun jännite. Akun jännitealue on 4,3 V - 2,2 V (ESP32: n vähimmäiskäyttöjännite). Valitettavasti ESP32: n ADC-nastojen jännitealue on 0-3,3 V. Tämä tarkoittaa, että meidän on vähennettävä akun jännite maksimistaan 4,3: sta 3,3: een, jotta vältetään ADC: n ylikuormitus. Tämä on mahdollista tehdä jännitteenjakajalla. Kytke vain kaksi vastusarvoa vastaavilla arvoilla akusta maahan ja mittaa keskellä oleva jännite.
Valitettavasti yksinkertainen jännitteenjakajapiiri kuluttaa virtaa akusta, vaikka jännitettä ei mitata. Voit lieventää tätä käyttämällä arvokkaita vastuksia, mutta huono puoli on, että ADC ei ehkä pysty ottamaan tarpeeksi virtaa tarkan mittauksen tekemiseksi. Päätin käyttää vastuksia, joiden arvot ovat 100 kΩ ja 330 kΩ ja jotka laskevat 4,3 V - 3,3 V tämän jännitteenjakajakaavan mukaisesti. Kun otetaan huomioon 430 kΩ: n kokonaisvastus, odotamme 11,6 uA: n virran (Ohmin lain mukaan). Koska syvän unen virrankulutus on 144uA, se on kohtuullisen merkittävä lisäys.
Koska haluamme mitata akun jännitteen vain kerran juuri ennen ilmoituksen lähettämistä, on järkevää sammuttaa jännitteenjakajapiiri silloin, kun emme mittaa mitään. Onneksi voimme tehdä tämän pari transistoria yhdellä GPIO -nastalla. Käytin tässä stackexchange -vastauksessa annettua piiriä. Näet minun testaavan piiriä Arduinolla ja leipälevyllä yllä olevassa kuvassa (huomaa, että piirissä on virhe, joka on syy, miksi mittaan odotettua korkeampaa jännitettä).
Kun yllä oleva piiri on paikallaan, käytän seuraavaa pseudokoodia akun prosenttiarvon saamiseksi:
akkuprosentti():
# ota akkujännitepiiri käyttöön gpio_set_level (BATTERY_EN_PIN, HIGH) # Akun varaustaso palautetaan kokonaislukuna välillä 0 - 4095 jakaja käyttää 100k/330k ohmin vastuksia # 4.3V -> 3.223, 2.4 -> 1.842 odotettu_max = 4.3*330/(100+330) odotettu_min = 2.4*330/(100+330) akun taso = (adc_jännite -odotettu_min)/(odotettu_max -odotettu_min) palauta akun taso * 100.0
Vaihe 5: Tee siitä kauniimpi
Vaikka leipälevyversio toimii hyvin, halusin laittaa sen pakkaukseen, joka olisi siistimpi ja luotettavampi (ei johtoja, jotka voivat irrota tai oikosulkua). Onnistuin löytämään tarpeisiini sopivan projektikotelon, joka oli oikean kokoinen, mukaan lukien nastalevy, kiinnitystelineet ja ruuvit kaiken yhdistämiseksi. Lisäksi se oli halpaa alle 2 puntaa. Laatikon vastaanottamisen jälkeen minun tarvitsi vain juottaa komponentit pin -levylle.
Ehkä vaikein osa tästä oli kaikkien akkujännitepiirin komponenttien sovittaminen pieneen tilaan Lolin32: n vieressä. Onneksi hieman jiggery pokery ja asianmukaiset liitokset tehty juotoksella piiri sopii siististi. Lisäksi koska Wemos Lolin32 -laitteessa ei ole nastaa, joka paljastaa akun positiivisen navan, jouduin juottamaan johdon akun liittimestä nastalevylle.
Lisäsin myös LED -valon, joka vilkkuu, kun laite on havainnut liikkeen.
Vaihe 6: Viimeistely
Liimasin 4 6 mm x 4 mm: n neodyymimagneettia laatikon pohjaan, jolloin se voi kiinnittyä tukevasti pesukoneen metallipintaan.
Projektikotelossa on jo pieni reikä, joka mahdollistaa kaapelien käytön. Onneksi pystyin sijoittamaan ESP32 -kortin lähelle tätä reikää, jotta pääsen käsiksi mikro -USB -liittimeen. Kun reikä on laajennettu käsityöveitsellä, kaapeli sopii täydellisesti, jotta akku voidaan ladata helposti.
Jos olet kiinnostunut projektin yksityiskohdista, jätä kommentti. Jos haluat nähdä koodin, tarkista se Githubista:
github.com/alexspurling/washingmachine
Suositeltava:
DIY 37 Leds Arduino -rulettipeli: 3 vaihetta (kuvilla)
DIY 37 Leds Arduino Roulette Peli: Ruletti on kasinopeli, joka on nimetty ranskalaisen sanan mukaan, joka tarkoittaa pientä pyörää
Covid -suojakypärä, osa 1: johdanto Tinkercad -piireihin!: 20 vaihetta (kuvilla)
Covid -suojakypärä, osa 1: johdanto Tinkercad -piireihin!: Hei, ystävä! Tässä kaksiosaisessa sarjassa opimme käyttämään Tinkercadin piirejä - hauskaa, tehokasta ja opettavaista työkalua piirien toiminnasta! Yksi parhaista tavoista oppia on tehdä. Joten suunnittelemme ensin oman projektimme: th
Weasleyn sijaintikello neljällä kädellä: 11 vaihetta (kuvilla)
Weasleyn sijaintikello neljällä kädellä: Joten Raspberry Pi: n kanssa, joka oli pyörinyt jonkin aikaa, halusin löytää mukavan projektin, jonka avulla voisin hyödyntää sitä parhaalla mahdollisella tavalla. Löysin ppeters0502 tämän upean Instructable Build Your Own Weasley Location Clockin ja ajattelin, että
Ammattimainen sääasema käyttäen ESP8266- ja ESP32 -DIY: 9 vaihetta (kuvilla)
Ammattimainen sääasema käyttämällä ESP8266- ja ESP32 -DIY: LineaMeteoStazione on täydellinen sääasema, joka voidaan liittää Sensirionin ammattitunnistimiin sekä joihinkin Davis -instrumenttikomponentteihin (sademittari, tuulimittari)
Pultti - DIY -langaton latauskello (6 vaihetta): 6 vaihetta (kuvilla)
Pultti - DIY -langaton latausyökello (6 vaihetta): Induktiiviset lataukset (tunnetaan myös nimellä langaton lataus tai langaton lataus) on langattoman voimansiirron tyyppi. Se käyttää sähkömagneettista induktiota sähkön tuottamiseen kannettaville laitteille. Yleisin sovellus on langaton Qi -latauslaite