Taula de continguts:

Sensor de notificació de la rentadora: 6 passos (amb imatges)
Sensor de notificació de la rentadora: 6 passos (amb imatges)

Vídeo: Sensor de notificació de la rentadora: 6 passos (amb imatges)

Vídeo: Sensor de notificació de la rentadora: 6 passos (amb imatges)
Vídeo: Cuando el copiloto me ensucia el sillín 👀😅 #humor #eli #motos 2024, Juliol
Anonim
Image
Image
Prototip
Prototip

Aquest sensor de rentadora es troba a la part superior de la meva rentadora i utilitza un acceleròmetre per detectar les vibracions de la màquina. Quan detecta que el cicle de rentat ha finalitzat, m’envia una notificació al telèfon. Vaig construir-ho perquè la màquina ja no emet un pit quan hagi acabat i em cansava d’oblidar treure la bugada.

El codi es pot trobar aquí:

Llista completa de peces:

  • WEMOS LOLIN32
  • Taula de pa de mida mitjana (per prototipatge)
  • Caixa de Projectes ABS amb Tauler Matrix 59x88x30mm
  • Sparkfun LIS3DH - Acceleròmetre de triple eix
  • 1 MOSFET de canal P ZVP3306A, 160 mA, 60 V, línia electrònica de 3 pins
  • 1x Transistor NPN BC549B TO92 30V
  • 5mm LED Blau 68 mcd
  • Resistència CF 1x 100k 0,125W
  • 1x resistència CF de 330k 0,125W
  • Resistència CF 2x 10k 0.250W
  • Resistència CF 1x 100 0.250W
  • Cable femení d'estil JST de 2 pins (14 cm)
  • 4x M1219-8 Imant de disc de neodimi 6x4mm

Pas 1: prototip

Prototip
Prototip

El dispositiu utilitza un microcontrolador ESP32. En aquest cas, estic fent servir la placa de desenvolupament Lolin32 de Wemos, que podeu comprar a AliExpress per aproximadament 7 dòlars. L’acceleròmetre és el Sparkfun LIS3DH: és important que l’acceleròmetre sigui digital en lloc d’analògic, com veureu més endavant. La bateria que vaig treure d’un vell conjunt d’altaveus bluetooth.

L’ESP32 es connecta a l’acceleròmetre mitjançant I2C. La primera versió del codi simplement enquesta els tres eixos d’acceleració (x, y i z) per obtenir el valor d’acceleració mesurat cada 20 ms. Col·locant el prototip de la taula de pa a la rentadora i vaig produir el gràfic anterior que mostra pics d’acceleració durant diverses fases del cicle de rentat. Aquells pics on l'acceleració absoluta va ser superior a 125 mg (125 mil·lèsimes de gravetat normal) es mostren en taronja. Volem detectar aquests períodes i utilitzar-los per determinar l’estat de la rentadora.

Com es pot determinar si la màquina està engegada o apagada?

Un dels objectius de construir aquest dispositiu era que fos completament passiu. És a dir, no s'hauria de prémer cap botó; només funcionaria. També hauria de ser de molt baixa potència, ja que en el meu cas no era possible estendre els cables d’alimentació a la rentadora.

Afortunadament, l’acceleròmetre LIS3DH té una característica en què pot provocar una interrupció quan l’acceleració supera un llindar determinat (tingueu en compte que això requereix l’ús del filtre de pas alt integrat de l’accelerador; consulteu el codi de Github per obtenir més informació) i es pot despertar l’ESP32 des del seu mode de son profund mitjançant una interrupció. Podem utilitzar aquesta combinació de funcions per crear un mode de repòs de molt baixa potència que s’activa pel moviment.

El pseudocodi es veuria així:

# El dispositiu es desperta

notification_threshold = 240 comptador = 10 accelerometer.set_threshold (96) # 96mg mentre que comptador> 0: si accelerometer.above_threshold (): comptador ++ else: comptador - si comptador> notification_threshold: # cicle de gir final detectat son (1 segon) accelerometer.set_threshold_interrupt () esp32.set_wakeup_trigger_on_interrupt () esp32.deep_sleep ()

Aquí podeu veure que fem servir un comptador per detectar quants segons d’acceleració hem detectat durant el període de vigília actual. Si el comptador cau a zero, podem tornar a dormir el dispositiu. Si el comptador arriba a 240 (el llindar de notificació), significa que hem detectat 4 minuts de vibració. Podem ajustar els valors d’aquests llindars per assegurar-nos que el dispositiu detecta correctament el cicle de gir final. Un cop detectada la vibració suficient, podem dormir 5 minuts més (en el meu cas, això és el temps que triga fins que es realitzi el rentat) abans d’enviar una notificació.

Pas 2: enviar una notificació mitjançant Blynk

S’envia una notificació mitjançant Blynk
S’envia una notificació mitjançant Blynk

Blynk és un servei dissenyat per permetre la interacció amb dispositius IoT amb una aplicació al telèfon. En aquest cas, estic utilitzant l'API de notificació push que s'activa mitjançant un simple HTTP POST a l'API Blynk.

Pas 3: mesurar el consum d'energia i estimar la durada de la bateria

Mesura del consum d'energia i estimació de la durada de la bateria
Mesura del consum d'energia i estimació de la durada de la bateria

S'anuncia que el xip ESP32 té un consum d'energia molt baix quan es dorm profundament (fins a 5 uA). Malauradament, els circuits de les diferents plaques de desenvolupament proporcionen característiques de consum d'energia molt diferents; no totes les plaques de desenvolupament ESP32 són iguals. Per exemple, quan vaig començar aquest projecte, vaig utilitzar el Sparkfun ESP32 Thing, que consumiria al voltant d’1 mA d’energia en mode de repòs profund (fins i tot després de desactivar el LED d’alimentació). Des de llavors he estat utilitzant el Lolin32 (no la versió Lite) en què mesurava un corrent de 144,5uA mentre estava en mode de son profund. Per fer aquesta mesura, simplement he connectat un multímetre en sèrie amb la bateria i el dispositiu. Sens dubte, això és més fàcil de fer mentre es fan prototips amb una taula de treball. També he mesurat l’ús actual quan el dispositiu està despert:

  • Son profund: 144,5uA
  • Despert: 45 mA
  • Wifi activat: 150 mA

Suposant que faig servir la màquina dues vegades per setmana, he estimat els temps següents per al temps que passa el sensor en cada estat:

  • Son profund: 604090 segons (~ 1 setmana)
  • Despert: 720 segons (12 minuts)
  • Wifi activat: 10 segons

A partir d’aquestes xifres, podem estimar el temps que durarà la bateria. He utilitzat aquesta pràctica calculadora per obtenir un consum mitjà d’energia de 0,2 mA. La durada estimada de la bateria és de 201 dies o aproximadament 6 mesos. En realitat, he trobat que el dispositiu deixarà de funcionar al cap d’uns 2 mesos, de manera que hi pot haver alguns errors en les mesures o en la capacitat de la bateria.

Pas 4: mesurar el nivell de la bateria

Mesurament del nivell de la bateria
Mesurament del nivell de la bateria
Mesurament del nivell de la bateria
Mesurament del nivell de la bateria

Vaig pensar que seria bo que el dispositiu em digués quan la bateria s’està esgotant, així que sé quan s’ha de carregar. Per mesurar-ho, hem de mesurar el voltatge de la bateria. La bateria té un rang de tensió de 4,3 V a 2,2 V (el voltatge de funcionament mínim de l’ESP32). Malauradament, el rang de tensió dels pins ADC de l’ESP32 és de 0-3,3V. Això significa que hem de baixar el voltatge de la bateria del màxim de 4,3 a 3,3 per evitar una sobrecàrrega de l'ADC. Això es pot fer amb un divisor de tensió. Simplement connecteu dos resistors amb els valors adequats de la bateria a terra i mesureu la tensió al centre.

Malauradament, un simple circuit divisor de tensió consumirà la bateria fins i tot quan no es mesura la tensió. Podeu mitigar-ho utilitzant resistències d’alt valor, però el costat negatiu és que l’ADC podria no ser capaç de treure prou corrent per fer una mesura precisa. Vaig decidir utilitzar resistències amb valors de 100kΩ i 330kΩ que baixaran de 4,3V a 3,3V segons la fórmula d’aquest divisor de voltatge. Donada una resistència total de 430 kΩ, esperaríem un corrent de 11,6 uA (utilitzant la llei d'Ohm). Tenint en compte que l’ús actual de son profund és de 144 uA, és un augment raonablement significatiu.

Com que només volem mesurar el voltatge de la bateria una vegada just abans d’enviar una notificació, té sentit apagar el circuit divisor de tensió durant el temps en què no mesurem res. Per sort, ho podem fer amb un parell de transistors connectats a un dels pins GPIO. He utilitzat el circuit donat en aquesta resposta stackexchange. A la foto superior em podeu veure provant el circuit amb un Arduino i un tauler d’anàlisi (tingueu en compte que hi ha un error al circuit que és el motiu pel qual mesuro una tensió més alta de l’esperada).

Amb el circuit anterior al seu lloc, faig servir el pseudocodi següent per obtenir un percentatge de bateria:

percentatge_bateria ():

# habilita el circuit de voltatge de la bateria gpio_set_level (BATTERY_EN_PIN, HIGH) # El nivell de la bateria es retorna com a enter entre 0 i 4095 adc_value = adc1_get_value (ADC_PIN) # activa el circuit de voltatge de la bateria gpio_set_level (BATTERY_EN_PIN, LOW) el divisor utilitza resistències 100k / 330k ohm # 4.3V -> 3.223, 2.4 -> 1.842 expected_max = 4.3 * 330 / (100 + 330) expected_min = 2.4 * 330 / (100 + 330) battery_level = (adc_voltage-expected_min) / (expected_max -previst_min) retornar nivell_bateria * 100.0

Pas 5: fer-lo més bonic

Fent-ho més bonic
Fent-ho més bonic
Fent-ho més bonic
Fent-ho més bonic
Fent-ho més bonic
Fent-ho més bonic

Tot i que la versió de taulers de treball funciona bé, volia posar-la en un paquet que fos més net i fiable (sense cables que es puguin desprendre o reduir). Vaig aconseguir trobar la caixa de projecte perfecta per a les meves necessitats que tingués la mida adequada, inclosa una placa de passadors, agafadors i cargols per muntar-ho tot. A més, va ser molt barat a menys de 2 lliures esterlines. Després de rebre la caixa, tot el que havia de fer era soldar els components a la placa de passadors.

Potser la part més complicada d’això era instal·lar tots els components del circuit de tensió de la bateria al petit espai situat al costat del Lolin32. Per sort, amb una mica de pokery jiggery i les connexions adequades realitzades amb soldadura, el circuit s’adapta perfectament. A més, com que el Wemos Lolin32 no té un pin per exposar el terminal positiu de la bateria, vaig haver de soldar un cable del connector de la bateria a la placa de pins.

També he afegit un LED que parpelleja quan el dispositiu ha detectat moviment.

Pas 6: Acabat de tocs

Image
Image
Tocs d'acabat
Tocs d'acabat
Tocs d'acabat
Tocs d'acabat

Vaig super-enganxar 4 imants de neodimi de 6 mm x 4 mm a la base de la caixa que li permeten adherir-se de forma segura a la part superior metàl·lica de la rentadora.

La caixa del projecte ja inclou un petit forat per proporcionar accés als cables. Per sort, vaig poder situar la placa ESP32 a prop d’aquest forat per donar accés al connector micro USB. Després d’ampliar el forat amb un ganivet artesanal, el cable s’adapta perfectament per permetre una fàcil càrrega de la bateria.

Si esteu interessats en algun dels detalls d’aquest projecte, no dubteu a deixar un comentari. Si voleu veure el codi, consulteu-lo a Github:

github.com/alexspurling/washingmachine

Recomanat: