INHOUDSOPGAWE:
- Stap 1: prototipe
- Stap 2: Stuur 'n kennisgewing via Blynk
- Stap 3: Meting van kragverbruik en skatting van batterylewe
- Stap 4: Meet die batteryniveau
- Stap 5: Maak dit mooier
- Stap 6: afwerking
Video: Kennisgewingsensor vir wasmasjien: 6 stappe (met foto's)
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:27
Hierdie wasmasjien sensor sit bo -op my wasmasjien en gebruik 'n versnellingsmeter om vibrasie van die masjien op te spoor. As dit voel dat die wassiklus klaar is, stuur dit 'n kennisgewing op my telefoon. Ek het dit gebou omdat die masjien self nie meer piep as dit klaar is nie en ek moeg was om die wasgoed uit te haal.
Die kode kan hier gevind word:
Volledige onderdele lys:
- WEMOS LOLIN32
- Halfgrootte broodbord (vir prototipering)
- ABS -projekboks met matriksbord 59x88x30mm
- Sparkfun LIS3DH - Drie -as versnellingsmeteruitbraak
- 1x ZVP3306A P-kanaal MOSFET, 160 mA, 60 V, 3-pins E-Line
- 1x BC549B TO92 30V NPN -transistor
- 5 mm LED blou 68 mcd
- 1x 100k 0.125W CF -weerstand
- 1x 330k 0.125W CF -weerstand
- 2x 10k 0.250W CF weerstand
- 1x 100 0.250W CF -weerstand
- 2-pins vroulike JST PH-stylkabel (14 cm)
- 4x M1219-8 Neodymium skyfmagneet 6x4mm
Stap 1: prototipe
Die toestel gebruik 'n ESP32 -mikrobeheerder. In hierdie geval gebruik ek die Lolin32 ontwikkelbord van Wemos wat u op AliExpress kan koop vir ongeveer $ 7. Die versnellingsmeter is die Sparkfun LIS3DH - dit is belangrik dat die versnellingsmeter digitaal eerder as analoog is, soos u later sal sien. Die battery het ek uit 'n ou stel bluetooth -luidsprekers geneem.
Die ESP32 maak via I2C verbinding met die versnellingsmeter. Die eerste weergawe van die kode het eenvoudig elke 20 ms die drie versnellingsasse (x, y en z) vir die gemete versnellingswaarde ondervra. Deur die prototipe van die broodbord op die wasmasjien te plaas, het ek die grafiek hierbo gemaak wat die versnellingspieke tydens verskillende fases van die wassiklus toon. Die pieke waar die absolute versnelling groter was as 125 mg (125 duisendste van die normale swaartekrag) word in oranje getoon. Ons wil hierdie periodes opspoor en dit gebruik om die status van die wasmasjien te bepaal.
Hoe om vas te stel of die masjien aan of af is?
Een van die doelwitte van die bou van hierdie toestel was dat dit heeltemal passief sou wees. D.w.s. geen knoppies hoef ingedruk te word nie; dit sal net werk. Dit moet ook 'n baie lae krag hê, aangesien dit in my geval nie regtig moontlik was om die kabels na die wasmasjien uit te brei nie.
Gelukkig het die LIS3DH-versnellingsmeter 'n funksie waar dit 'n onderbreking kan veroorsaak wanneer die versnelling 'n gegewe drempel oorskry (let op, dit vereis die gebruik van die ingeboude hoëpasfilter van die versnellingsmeter-sien die kode op Github vir meer inligting) en die ESP32 kan wakker gemaak word uit 'n diep slaapmodus via 'n onderbreking. Ons kan hierdie kombinasie van funksies gebruik om 'n baie lae krag slaapmodus te skep wat veroorsaak word deur beweging.
Die pseudokode sal so lyk:
# Toestel word wakker
notice_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 slaap (1 second) accelerometer.set_threshold_interrupt () esp32.set_wakeup_trigger_on_interrupt () esp32.deep_sleep ()
U kan hier sien dat ons 'n toonbank gebruik om op te spoor hoeveel sekondes versnelling ons gedurende die huidige wakkerperiode opgemerk het. As die toonbank tot nul daal, kan ons die toestel weer aan die slaap maak. As die teller 240 (die kennisgewingdrempel) bereik, beteken dit dat ons 4 minute trillings opgemerk het. Ons kan die waardes van hierdie drempels aanpas om seker te maak dat die toestel die laaste draai -siklus korrek opspoor. Sodra voldoende vibrasie opgemerk is, kan ons net nog 5 minute slaap (in my geval is dit hoe lank dit neem voordat die was eintlik voltooi is) voordat ons 'n kennisgewing stuur.
Stap 2: Stuur 'n kennisgewing via Blynk
Blynk is 'n diens wat ontwerp is om interaksie met IoT -toestelle met 'n app op u telefoon moontlik te maak. In hierdie geval gebruik ek die API vir stootkennisgewings wat veroorsaak word deur 'n eenvoudige HTTP POST na die Blynk API.
Stap 3: Meting van kragverbruik en skatting van batterylewe
Die ESP32 -chip word geadverteer as 'n baie lae kragverbruik as dit diep slaap (so laag as 5uA). Ongelukkig bied die stroombane op die verskillende ontwikkelingsborde baie verskillende kragverbruikseienskappe - nie alle ESP32 -dev -borde is gelyk geskep nie. Byvoorbeeld, toe ek die eerste keer met hierdie projek begin, gebruik ek die Sparkfun ESP32 Thing wat ongeveer 1mA krag in die diep slaapmodus sou verbruik (selfs nadat die krag -LED uitgeskakel is). Sedertdien gebruik ek die Lolin32 (nie die Lite -weergawe nie) waarop ek 'n stroom van 144.5uA gemeet het in die diep slaapmodus. Om hierdie meting te doen, het ek eenvoudig 'n multimeter in serie met die battery en die toestel bedraad. Dit is beslis makliker om te doen terwyl u met 'n broodbord prototipeer. Ek het ook die huidige gebruik gemeet as die toestel wakker is:
- Diep slaap: 144.5uA
- Ontwaak: 45mA
- Wifi geaktiveer: 150mA
As ek die masjien twee keer per week gebruik, het ek die volgende tydsberekeninge beraam vir die tyd wat die sensor in elke toestand deurbring:
- Diep slaap: 604090 sekondes (~ 1 week)
- Ontwaak: 720 sekondes (12 minute)
- Wifi geaktiveer: 10 sekondes
Uit hierdie syfers kan ons skat hoe lank die battery gaan hou. Ek het hierdie handige sakrekenaar gebruik om 'n gemiddelde kragverbruik van 0.2mA te kry. Die geskatte batterylewe is 201 dae of ongeveer 6 maande! In werklikheid het ek gevind dat die toestel na ongeveer 2 maande nie meer werk nie, sodat daar foute in die metings of die kapasiteit van die battery kan wees.
Stap 4: Meet die batteryniveau
Ek het gedink dit sal lekker wees as die toestel vir my kan sê wanneer die battery leeg is, sodat ek weet wanneer ek dit moet laai. Om dit te meet, moet ons die spanning van die battery meet. Die battery het 'n spanningsbereik van 4,3V - 2,2V (die minimum werkspanning van die ESP32). Ongelukkig is die spanningsbereik van die ADC-penne van die ESP32 0-3.3V. Dit beteken dat ons die spanning van die battery moet verlaag van die maksimum van 4.3 tot 3.3 om oorbelasting van die ADC te voorkom. Dit is moontlik met 'n spanningsverdeler. Draai twee weerstande met die toepaslike waardes van die battery na die aarde en meet die spanning in die middel.
Ongelukkig sal 'n eenvoudige spanningsverdelerkring die stroom uit die battery leegmaak, selfs as die spanning nie gemeet word nie. U kan dit verminder deur weerstande met hoë waarde te gebruik, maar die nadeel is dat die ADC moontlik nie genoeg stroom kan trek om 'n akkurate meting te maak nie. Ek het besluit om weerstande te gebruik met waardes van 100kΩ en 330kΩ, wat volgens die formule van hierdie spanningsverdeler met 4,3V tot 3,3V sal daal. Gegewe 'n totale weerstand van 430kΩ, sou ons 'n huidige trekking van 11.6uA verwag (met behulp van Ohm se wet). Aangesien ons huidige slaapverbruik 144 uA is, is dit 'n redelik aansienlike toename.
Aangesien ons die batteryspanning net een keer wil meet net voordat ons 'n kennisgewing stuur, is dit sinvol om die spanningsverdelerkring uit te skakel gedurende die tyd dat ons niks meet nie. Gelukkig kan ons dit doen met 'n paar transistors wat aan een van die GPIO -penne gekoppel is. Ek het die stroombaan gebruik wat in hierdie stackexchange -antwoord gegee is. U kan sien hoe ek die stroombaan met 'n Arduino en 'n broodbord op die foto hierbo toets (let op dat daar 'n fout in die stroombaan is, wat die rede is waarom ek 'n hoër spanning meet as wat verwag is).
Met die bogenoemde stroombaan in plek, gebruik ek die volgende pseudokode om 'n batterypersentasiewaarde te verkry:
battery_persentasie ():
# aktiveer batteryspanningskring gpio_set_level (BATTERY_EN_PIN, HOOG) # Batteryvlak word as 'n heelgetal teruggegee tussen 0 en 4095 adc_value = adc1_get_value (ADC_PIN) # aktiveer batteryspanningskring gpio_set_level (BATTERY_EN_PIN, LOW) float adc_95 verdeler gebruik 100k/330k ohm weerstande # 4.3V -> 3.223, 2.4 -> 1.842 verwagte_max = 4.3*330/(100+330) verwagte_min = 2.4*330/(100+330) battery_level = (adc_spanning -verwagte_min)/(verwagte_max -verwagte_min) terugvoerbatteryvlak * 100,0
Stap 5: Maak dit mooier
Alhoewel die broodbordweergawe goed werk, wou ek dit in 'n pakkie plaas wat netjieser en betroubaarder was (geen drade wat los of kort kan raak nie). Ek het daarin geslaag om die perfekte projekkas vir my behoeftes te vind, wat die regte grootte was, insluitend 'n speldbord, houers en skroewe om dit alles bymekaar te sit. Dit was ook baie goedkoop teen minder as £ 2. Nadat ek die boks ontvang het, hoef ek net die komponente aan die penbord te soldeer.
Miskien was die moeilikste deel daarvan om al die komponente van die batteryspanningskring op die klein ruimte langs die Lolin32 te plaas. Gelukkig, met 'n bietjie jiggery en die gepaste verbindings met soldeer, pas die kring netjies in. Aangesien die Wemos Lolin32 ook nie 'n pen het om die positiewe batteryklem aan die kaak te stel nie, moes ek 'n draad van die batteryaansluiting aan die penbord soldeer.
Ek het ook 'n LED bygevoeg wat flikker as die toestel beweging sien.
Stap 6: afwerking
Ek het 4 6mm x 4mm neodymiummagnete aan die onderkant van die boks vasgeplak, sodat dit veilig aan die metaalblad van die wasmasjien kan plak.
Die projekkas het reeds 'n klein gaatjie om kabels oop te maak. Gelukkig kon ek die ESP32 -kaart naby hierdie gat plaas om toegang tot die mikro -USB -aansluiting te gee. Nadat u die gat met 'n handwerkmes vergroot het, pas die kabel perfek om die battery maklik te kan laai.
As u belangstel in enige van die besonderhede van hierdie projek, kan u gerus 'n opmerking lewer. As u die kode wil sien, kyk gerus op Github:
github.com/alexspurling/washingmachine
Aanbeveel:
Monitor van wasmasjien/droër met ESP8266 en versnellingsensor: 6 stappe
Monitor van wasmasjien/droër met ESP8266 en versnellingsensor: die wasmasjien/droër van die kledingstuk is in die kelder, en u sit gewoonlik 'n hoop klere daarin, en daarna word u besig met 'n ander huiswerk. U kyk uit oor die klere wat deurdrenk en absorberend in die kelder van u masjien was
Kennisgewings oor wasmasjien: 3 stappe
Kennisgewings oor wasmasjien: ek het 'n 'dom' goedkoop wasmasjien vir ongeveer £ 150. Die grootte was die grootste beperking, dus moenie my te hard oordeel nie. Die domste ding in my huishouding is ek. Om wit onderklere met rooi truie te was, is een van my sondes. Die ander een word nie onthou nie
Bedradingskema vir die wasmasjien: 6 stappe
Bedradingdiagram vir wasmasjienmotor: Om die wasmasjienmotor of universele motor te kan bedrieg, benodig ons 'n diagram genaamd die bedradingsdiagram van die wasmasjienmotor. dieselfde diagram
Hoe maklik dit was om die elektronika van my wasmasjien te herstel: 5 stappe (met foto's)
Hoe maklik was dit om die elektronika van my wasmasjien te herstel: hoekom? Omdat ek 'n vervaardiger is, hou ek daarvan om my eie goed te herstel, wat soms 'n probleem is omdat dit onaktief bly terwyl ek tyd kry om die strategie van verdriet te bepaal. die probleem. Dit is gewoonlik eenvoudig en lekker om iets te herstel, maar om die oplossing te vind
Kennisgewings van wasmasjien met MESH: 4 stappe (met foto's)
Kennisgewings van wasmasjien met MESH: Oeps! Ek het vergeet van die klere in die wasmasjien … Vergeet u altyd om u klere op te tel nadat dit gewas is? Hierdie resep sal u wasmasjien opgradeer om kennisgewings via Gmail of IFTTT te ontvang sodra u klere gereed is om af te neem