Innholdsfortegnelse:
- Trinn 1: Prototype
- Trinn 2: Sende en melding via Blynk
- Trinn 3: Måling av strømforbruk og estimering av batterilevetid
- Trinn 4: Måling av batterinivå
- Trinn 5: Gjør det penere
- Trinn 6: Etterbehandling
Video: Vaskemaskin varslingssensor: 6 trinn (med bilder)
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:25
Denne vaskemaskinsensoren sitter på toppen av vaskemaskinen min og bruker et akselerometer for å oppdage vibrasjoner fra maskinen. Når den oppdager at vaskesyklusen er ferdig, sender den meg et varsel på telefonen. Jeg bygde dette fordi selve maskinen ikke lenger piper når den er ferdig, og jeg var lei av å glemme å ta ut tøyet.
Koden finner du her:
Full deleliste:
- WEMOS LOLIN32
- Brødbrett i halv størrelse (for prototyping)
- ABS prosjektboks med matrisetavle 59x88x30mm
- Sparkfun LIS3DH - Triple Axis Accelerometer Breakout
- 1x ZVP3306A P-kanal MOSFET, 160 mA, 60 V, 3-pinners E-linje
- 1x BC549B TO92 30V NPN -transistor
- 5mm LED blå 68 mcd
- 1x 100k 0.125W CF -motstand
- 1x 330k 0.125W CF motstand
- 2x 10k 0.250W CF motstand
- 1x 100 0,250W CF -motstand
- 2-pinners kvinnelig JST PH-stilkabel (14cm)
- 4x M1219-8 Neodymskivemagnet 6x4mm
Trinn 1: Prototype
Enheten bruker en ESP32 mikrokontroller. I dette tilfellet bruker jeg Lolin32 utviklingsbord av Wemos som du kan kjøpe på AliExpress for ca $ 7. Akselerometeret er Sparkfun LIS3DH - det er viktig at akselerometeret er digitalt i stedet for analogt som du vil se senere. Batteriet tok jeg fra et gammelt sett med Bluetooth -høyttalere.
ESP32 kobles til akselerometeret via I2C. Den første versjonen av koden spurte ganske enkelt de tre akselerasjonsaksene (x, y og z) for den målte akselerasjonsverdien hver 20. ms. Plasseringen av brødbrettprototypen på vaskemaskinen og jeg produserte grafen ovenfor som viser akselerasjonstoppene i forskjellige faser av vaskesyklusen. Toppene der absolutt akselerasjon var større enn 125 mg (125 tusendeler av normal tyngdekraft) er vist med oransje. Vi ønsker å oppdage disse periodene og bruke dem til å bestemme statusen til vaskemaskinen.
Hvordan finne ut om maskinen er på eller av?
Et av målene med å bygge denne enheten var at den skulle være helt passiv. Dvs. ingen knapper trenger å trykkes; det ville bare fungere. Det bør også være veldig lav effekt, da det egentlig ikke var mulig å forlenge strømkabler til vaskemaskinen i mitt tilfelle.
Heldigvis har LIS3DH-akselerometeret en funksjon der det kan utløse et avbrudd når akselerasjonen overskrider en gitt terskel (merk at dette krever bruk av akselerometerets innebygde høypassfilter-se koden på Github for detaljer) og ESP32 kan vekkes opp fra dyp dvalemodus via et avbrudd. Vi kan bruke denne kombinasjonen av funksjoner til å lage en dvalemodus med svært lite strøm som utløses av bevegelse.
Pseudokoden vil se slik ut:
# Enhet våkne
notification_threshold = 240 counter = 10 accelerometer.set_threshold (96) # 96mg while counter> 0: if accelerometer.above_threshold (): counter ++ else: counter-- if counter> notification_threshold: # final spin cycle detected sleep (1 second) accelerometer.set_threshold_interrupt () esp32.set_wakeup_trigger_on_interrupt () esp32.deep_sleep ()
Du kan se her at vi bruker en teller for å oppdage hvor mange sekunder med akselerasjon vi har oppdaget i løpet av den nåværende våkneperioden. Hvis telleren faller til null, kan vi sette enheten i dvale. Hvis telleren når 240 (varslingsterskelen), betyr det at vi har oppdaget 4 minutters vibrasjon. Vi kan justere verdiene til disse tersklene for å sikre at enheten korrekt oppdager den siste sentrifugeringssyklusen. Når tilstrekkelig vibrasjon er oppdaget, kan vi bare sove i ytterligere 5 minutter (i mitt tilfelle er dette hvor lang tid det tar før vasken faktisk er fullført) før vi sender et varsel.
Trinn 2: Sende en melding via Blynk
Blynk er en tjeneste designet for å tillate interaksjon med IoT -enheter med en app på telefonen. I dette tilfellet bruker jeg push -varslings -API som utløses av en enkel HTTP POST til Blynk API.
Trinn 3: Måling av strømforbruk og estimering av batterilevetid
ESP32 -brikken er annonsert for å ha et veldig lavt strømforbruk når den er i dyp søvn (så lav som 5uA). Dessverre gir kretsene på de mange forskjellige utviklingskortene veldig forskjellige strømforbrukskarakteristikker - ikke alle ESP32 dev -kort er skapt like. For eksempel, da jeg først startet dette prosjektet, brukte jeg Sparkfun ESP32 Thing som ville forbruke rundt 1 mA strøm i dyp dvalemodus (selv etter at LED -lampen var deaktivert). Siden da har jeg brukt Lolin32 (ikke Lite -versjonen) som jeg målte en strøm på 144,5uA i dyp dvalemodus. For å gjøre denne målingen, koblet jeg ganske enkelt et multimeter i serie med batteriet og enheten. Dette er absolutt lettere å gjøre mens du prototyper med et brødbrett. Jeg målte også gjeldende bruk når enheten er våken:
- Dyp søvn: 144,5uA
- Våken: 45mA
- WiFi aktivert: 150mA
Forutsatt at jeg bruker maskinen to ganger i uken, estimerte jeg følgende tidspunkt for tiden sensoren bruker i hver tilstand:
- Dyp søvn: 604090 sekunder (~ 1 uke)
- Våkn opp: 720 sekunder (12 minutter)
- Wifi aktivert: 10 sekunder
Fra disse tallene kan vi anslå hvor lenge batteriet kommer til å vare. Jeg brukte denne hendige kalkulatoren for å få et gjennomsnittlig strømforbruk på 0,2mA. Estimert batterilevetid er 201 dager eller omtrent 6 måneder! I virkeligheten har jeg funnet ut at enheten vil slutte å fungere etter omtrent 2 måneder, så det kan være noen feil i målinger eller kapasiteten til batteriet.
Trinn 4: Måling av batterinivå
Jeg trodde det ville være fint hvis enheten kunne fortelle meg når batteriet er lavt, så jeg vet når jeg skal lade det. For å måle dette må vi måle spenningen til batteriet. Batteriet har et spenningsområde på 4,3V - 2,2V (minimum driftsspenning for ESP32). Dessverre er spenningsområdet til ADC-pinnene på ESP32 0-3.3V. Dette betyr at vi må trappe spenningen til batteriet ned fra maksimum 4,3 til 3,3 for å unngå overbelastning av ADC. Dette er mulig å gjøre med en spenningsdeler. Bare led to motstander med passende verdier fra batteriet til jord og måle spenningen i midten.
Dessverre vil en enkel spenningsdelerkrets tappe strøm fra batteriet selv når spenningen ikke måles. Du kan redusere dette ved å bruke motstander med høy verdi, men den negative siden er at ADC kanskje ikke kan trekke nok strøm til å gjøre en nøyaktig måling. Jeg bestemte meg for å bruke motstander med verdier på 100kΩ og 330kΩ som vil falle 4,3V til 3,3V i henhold til denne spenningsdelerformelen. Gitt en total motstand på 430kΩ, forventer vi en nåværende trekning på 11,6uA (ved bruk av Ohms lov). Gitt at vår nåværende bruk av dyp søvn er 144uA, er det en rimelig betydelig økning.
Siden vi bare vil måle batterispenningen en gang rett før du sender et varsel, er det fornuftig å slå av spenningsdelerkretsen i løpet av tiden vi ikke måler noe. Heldigvis kan vi gjøre dette med et par transistorer koblet til en av GPIO -pinnene. Jeg brukte kretsen gitt i dette stackexchange -svaret. Du kan se meg teste kretsen med en Arduino og et brødbrett på bildet ovenfor (merk at det er en feil i kretsen som er grunnen til at jeg måler en høyere spenning enn forventet).
Med kretsen ovenfor på plass, bruker jeg følgende pseudokode for å få en batteriprosentverdi:
batteri prosent():
# aktiver batterispenningskrets gpio_set_level (BATTERY_EN_PIN, HIGH) # Batterinivå returneres som et heltall mellom 0 og 4095 adc_value = adc1_get_value (ADC_PIN) # aktiver batterispenningskrets gpio_set_level (BATTERY_EN_PIN, LOW) float adc_volt divider bruker 100k/330k ohm motstander # 4.3V -> 3.223, 2.4 -> 1.842 forventet_maks = 4,3*330/(100+330) forventet_min = 2,4*330/(100+330) batteri_nivå = (adc_spenning -forventet_min)/(forventet_maks. -forventet_min) returbatterinivå * 100,0
Trinn 5: Gjør det penere
Selv om brødbrettversjonen fungerer bra, ønsket jeg å sette den i en pakke som ville være penere og mer pålitelig (ingen ledninger som kan løsne eller kortsluttes). Jeg klarte å finne den perfekte prosjektboksen for mine behov, som var i riktig størrelse, inkludert et tavlebrett, monteringsholder og skruer for å sette alt sammen. Det var også dødt billig på under 2 pund. Etter å ha mottatt esken, var det bare å lodde komponentene på pinnebrettet.
Kanskje den vanskeligste delen av dette var å montere alle batterispenningskretskomponentene på den lille plassen ved siden av Lolin32. Heldigvis med litt jiggery pokery og de riktige tilkoblingene med loddetinn, passer kretsen pent inn. Siden Wemos Lolin32 ikke har en pinne for å avsløre den positive batteriterminalen, måtte jeg lodde en ledning fra batterikontakten til pinnekortet.
Jeg har også lagt til en LED som blinker når enheten har oppdaget bevegelse.
Trinn 6: Etterbehandling
Jeg superlimte 4 6 mm x 4 mm neodymmagneter til bunnen av esken som gjør at den kan feste seg sikkert til metalloverdelen på vaskemaskinen.
Prosjektboksen har allerede et lite hull for å gi tilgang til kabler. Heldigvis var jeg i stand til å plassere ESP32 -kortet nær dette hullet for å gi tilgang til mikro -USB -kontakten. Etter å ha forstørret hullet med en håndverkskniv, passet kabelen perfekt for å muliggjøre enkel lading av batteriet.
Hvis du er interessert i noen av detaljene i dette prosjektet, er du velkommen til å legge igjen en kommentar. Hvis du vil se koden, kan du sjekke den ut på Github:
github.com/alexspurling/washingmachine
Anbefalt:
Ta flotte bilder med en iPhone: 9 trinn (med bilder)
Ta flotte bilder med en iPhone: De fleste av oss har med oss en smarttelefon overalt i disse dager, så det er viktig å vite hvordan du bruker smarttelefonkameraet ditt til å ta flotte bilder! Jeg har bare hatt en smarttelefon i et par år, og jeg har elsket å ha et greit kamera for å dokumentere ting jeg
Overvåking av vaskemaskin/tørketrommel med klær med ESP8266 og akselerasjonssensor: 6 trinn
Overvåking av vaskemaskin/tørketrommel med ESP8266 og akselerasjonssensor: Vaskemaskinen/tørketrommelen er i kjelleren, og du legger som regel en haug med klær i den, og etter det blir du opptatt i ditt andre husarbeid. Du overser klærne som var fuktige og absorberende i kjelleren på maskinen din
Slik demonterer du en datamaskin med enkle trinn og bilder: 13 trinn (med bilder)
Slik demonterer du en datamaskin med enkle trinn og bilder: Dette er en instruksjon om hvordan du demonterer en PC. De fleste grunnkomponentene er modulære og fjernes lett. Det er imidlertid viktig at du er organisert om det. Dette vil bidra til å hindre deg i å miste deler, og også i å gjøre monteringen igjen
Vaskemaskin motor koblingsskjema: 6 trinn
Vaskemaskinens motor koblingsskjema: For å kunne koble vaskemaskinens motor eller universalmotor trenger vi et diagram som kalles vaskemaskinens motor koblingsskjema, denne kan brukes til å koble denne universelle motoren på 220v ac eller dc bare følg samme diagram
Arduino vaskemaskin tørketrommel varsel - push -melding til telefon med Blynk: 5 trinn (med bilder)
Arduino vaskemaskin tørketrommel varsel - push -melding til telefon med Blynk: Vaskemaskinen vår er i garasjen, og vi kan ikke høre pipene for å indikere at vasken er fullført. Jeg ønsket å finne en måte å bli varslet, uansett hvor vi er i huset, da syklusen var ferdig. Jeg har puslet med Arduino, ESP8266 WiFi