INHOUDSOPGAWE:

Kennisgewingsensor vir wasmasjien: 6 stappe (met foto's)
Kennisgewingsensor vir wasmasjien: 6 stappe (met foto's)

Video: Kennisgewingsensor vir wasmasjien: 6 stappe (met foto's)

Video: Kennisgewingsensor vir wasmasjien: 6 stappe (met foto's)
Video: Biggy - Dames 2024, Julie
Anonim
Image
Image
Prototipe
Prototipe

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

Prototipe
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

Stuur 'n kennisgewing via Blynk
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

Meting van kragverbruik en skatting van batterylewe
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

Meet battery vlak
Meet battery vlak
Meet battery vlak
Meet battery vlak

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

Maak dit mooier
Maak dit mooier
Maak dit mooier
Maak dit mooier
Maak dit mooier
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

Image
Image
Afwerking
Afwerking
Afwerking
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: