Tabla de contenido:
- Paso 1: prototipo
- Paso 2: enviar una notificación a través de Blynk
- Paso 3: medir el consumo de energía y estimar la vida útil de la batería
- Paso 4: medir el nivel de la batería
- Paso 5: haciéndolo más bonito
- Paso 6: Toques finales
Video: Sensor de notificación de lavadora: 6 pasos (con imágenes)
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:44
Este sensor de lavadora se encuentra en la parte superior de mi lavadora y usa un acelerómetro para detectar la vibración de la máquina. Cuando detecta que el ciclo de lavado ha terminado, me envía una notificación en mi teléfono. Construí esto porque la máquina ya no suena cuando está terminada y estaba cansado de olvidar sacar la ropa.
El código se puede encontrar aquí:
Lista completa de piezas:
- WEMOS LOLIN32
- Protoboard de tamaño medio (para la creación de prototipos)
- Caja de Proyecto ABS con Tablero Matrix 59x88x30mm
- Sparkfun LIS3DH - Acelerómetro de triple eje Breakout
- 1x MOSFET de canal P ZVP3306A, 160 mA, 60 V, línea E de 3 pines
- 1x Transistor NPN BC549B TO92 30V
- LED azul de 5 mm 68 mcd
- 1 resistencia CF de 100 k 0,125 W
- 1 resistencia CF de 330 k 0,125 W
- Resistencia CF de 2x 10k 0.250W
- 1x 100 resistencia CF de 0,250 W
- Cable tipo PH JST hembra de 2 pines (14 cm)
- 4x M1219-8 Disco magnético de neodimio de 6x4 mm
Paso 1: prototipo
El dispositivo utiliza un microcontrolador ESP32. En este caso, estoy usando la placa de desarrollo Lolin32 de Wemos que puedes comprar en AliExpress por unos 7 dólares. El acelerómetro es el Sparkfun LIS3DH; es importante que el acelerómetro sea digital en lugar de analógico, como verá más adelante. La batería la saqué de un viejo par de altavoces bluetooth.
El ESP32 se conecta al acelerómetro a través de I2C. La primera versión del código simplemente sondeó los tres ejes de aceleración (x, y y z) para el valor de aceleración medido cada 20 ms. Colocando el prototipo de tablero en la lavadora y produje el gráfico anterior que muestra picos de aceleración durante varias fases del ciclo de lavado. Los picos en los que la aceleración absoluta fue superior a 125 mg (125 milésimas de la gravedad normal) se muestran en naranja. Queremos detectar estos periodos y utilizarlos para determinar el estado de la lavadora.
¿Cómo determinar si la máquina está encendida o apagada?
Uno de los objetivos de la construcción de este dispositivo era que fuera completamente pasivo. Es decir. no es necesario presionar ningún botón; simplemente funcionaría. También debería ser de muy baja potencia, ya que en mi caso no era posible extender los cables de alimentación a la lavadora.
Afortunadamente, el acelerómetro LIS3DH tiene una función en la que puede activar una interrupción cuando la aceleración excede un umbral determinado (tenga en cuenta que esto requiere el uso del filtro de paso alto incorporado en el acelerómetro; consulte el código en Github para obtener más detalles) y el ESP32 se puede activar. salir de su modo de sueño profundo a través de una interrupción. Podemos utilizar esta combinación de funciones para crear un modo de suspensión de muy bajo consumo que se activa con el movimiento.
El pseudocódigo se vería así:
# Dispositivo despertador
notification_threshold = 240 counter = 10 accelerometer.set_threshold (96) # 96mg while counter> 0: if acelerometer.above_threshold (): counter ++ else: counter-- if counter> notification_threshold: # ciclo de centrifugado final detectado sueño (1 segundo) acelerómetro.set_threshold_interrupt () esp32.set_wakeup_trigger_on_interrupt () esp32.deep_sleep ()
Puede ver aquí que usamos un contador para detectar cuántos segundos de aceleración hemos detectado durante el período de activación actual. Si el contador cae a cero, podemos volver a poner el dispositivo en reposo. Si el contador llega a 240 (el umbral de notificación), eso significa que hemos detectado 4 minutos de vibración. Podemos modificar los valores de estos umbrales para asegurarnos de que el dispositivo detecta correctamente el ciclo de centrifugado final. Una vez que se detecta suficiente vibración, simplemente podemos dormir durante otros 5 minutos (en mi caso, este es el tiempo que tarda hasta que se completa el lavado) antes de enviar una notificación.
Paso 2: enviar una notificación a través de Blynk
Blynk es un servicio diseñado para permitir la interacción con dispositivos IoT con una aplicación en su teléfono. En este caso, estoy usando la API de notificaciones push que se activa mediante un simple HTTP POST a la API de Blynk.
Paso 3: medir el consumo de energía y estimar la vida útil de la batería
Se anuncia que el chip ESP32 tiene un consumo de energía muy bajo cuando está en sueño profundo (tan bajo como 5uA). Desafortunadamente, los circuitos de las diferentes placas de desarrollo proporcionan características de consumo de energía muy diferentes; no todas las placas de desarrollo ESP32 son iguales. Por ejemplo, cuando comencé este proyecto por primera vez, usé Sparkfun ESP32 Thing que consumiría alrededor de 1 mA de energía en el modo de suspensión profunda (incluso después de deshabilitar el LED de encendido). Desde entonces he estado usando el Lolin32 (no la versión Lite) en el que medí una corriente de 144.5uA mientras estaba en modo de suspensión profunda. Para hacer esta medición, simplemente conecté un multímetro en serie con la batería y el dispositivo. Sin duda, esto es más fácil de hacer mientras se crea un prototipo con una placa de pruebas. También medí el uso actual cuando el dispositivo está despierto:
- Sueño profundo: 144.5uA
- Despierto: 45mA
- Wifi habilitado: 150mA
Suponiendo que uso la máquina dos veces por semana, calculé los siguientes tiempos para el tiempo que el sensor pasa en cada estado:
- Sueño profundo: 604090 segundos (~ 1 semana)
- Despierto: 720 segundos (12 minutos)
- Wifi habilitado: 10 segundos
A partir de estas cifras, podemos estimar cuánto va a durar la batería. Usé esta práctica calculadora para obtener un consumo de energía promedio de 0.2mA. ¡La duración estimada de la batería es de 201 días o aproximadamente 6 meses! En realidad, he descubierto que el dispositivo dejará de funcionar después de aproximadamente 2 meses, por lo que podría haber algunos errores en las mediciones o en la capacidad de la batería.
Paso 4: medir el nivel de la batería
Pensé que sería bueno si el dispositivo pudiera decirme cuando la batería se está agotando para saber cuándo cargarla. Para medir esto necesitamos medir el voltaje de la batería. La batería tiene un rango de voltaje de 4,3 V a 2,2 V (el voltaje de funcionamiento mínimo del ESP32). Desafortunadamente, el rango de voltaje de los pines ADC del ESP32 es 0-3.3V. Esto significa que debemos reducir el voltaje de la batería de su máximo de 4.3 a 3.3 para evitar sobrecargar el ADC. Esto se puede hacer con un divisor de voltaje. Simplemente conecte dos resistencias con los valores apropiados de la batería a tierra y mida el voltaje en el medio.
Desafortunadamente, un circuito divisor de voltaje simple agotará la energía de la batería incluso cuando no se esté midiendo el voltaje. Puede mitigar esto utilizando resistencias de alto valor, pero el lado negativo es que es posible que el ADC no pueda extraer suficiente corriente para realizar una medición precisa. Decidí usar resistencias con valores de 100kΩ y 330kΩ que bajarán 4.3V a 3.3V de acuerdo con la fórmula de este divisor de voltaje. Dada una resistencia total de 430kΩ, esperaríamos un consumo de corriente de 11.6uA (usando la ley de Ohm). Dado que nuestro uso actual de sueño profundo es 144uA, es un aumento razonablemente significativo.
Como solo queremos medir el voltaje de la batería una vez justo antes de enviar una notificación, tiene sentido apagar el circuito divisor de voltaje durante el tiempo en que no estamos midiendo nada. Afortunadamente, podemos hacer esto con un par de transistores conectados a uno de los pines GPIO. Usé el circuito dado en esta respuesta de intercambio de pila. Puede verme probando el circuito con un Arduino y una placa en la foto de arriba (tenga en cuenta que hay un error en el circuito que es la razón por la que estoy midiendo un voltaje más alto de lo esperado).
Con el circuito anterior en su lugar, utilizo el siguiente pseudo código para obtener un valor de porcentaje de batería:
porcentaje de batería():
# habilitar el circuito de voltaje de la batería gpio_set_level (BATTERY_EN_PIN, HIGH) # El nivel de la batería se devuelve como un número entero entre 0 y 4095 adc_value = adc1_get_value (ADC_PIN) # habilitar el circuito de voltaje de la batería gpio_set_level (BATTERY_EN_PIN, LOW) float adc_95 # voltaje El divisor usa resistencias de 100k / 330k ohmios # 4.3V -> 3.223, 2.4 -> 1.842 esperado_máx = 4.3 * 330 / (100 + 330) esperado_mín = 2.4 * 330 / (100 + 330) nivel_de_batería = (adc_voltaje-esperado_min) / (esperado_máx -expected_min) return battery_level * 100.0
Paso 5: haciéndolo más bonito
Si bien la versión de tablero funciona bien, quería ponerla en un paquete que fuera más ordenado y confiable (sin cables que puedan aflojarse o cortocircuitarse). Me las arreglé para encontrar la caja de proyecto perfecta para mis necesidades que tenía el tamaño correcto, incluía un tablero de clavijas, soportes de montaje y tornillos para unirlo todo. Además, era muy barato por menos de 2 libras esterlinas. Después de recibir la caja, todo lo que tuve que hacer fue soldar los componentes en el tablero de clavijas.
Quizás la parte más complicada de esto fue colocar todos los componentes del circuito de voltaje de la batería en el pequeño espacio al lado del Lolin32. Afortunadamente, con un poco de póquer y las conexiones apropiadas hechas con soldadura, el circuito encaja perfectamente. Además, dado que el Wemos Lolin32 no tiene un pin para exponer el terminal positivo de la batería, tuve que soldar un cable desde el conector de la batería al tablero de pines.
También agregué un LED que parpadea cuando el dispositivo detecta movimiento.
Paso 6: Toques finales
Superpegué 4 imanes de neodimio de 6 mm x 4 mm a la base de la caja, lo que permite que se adhiera de forma segura a la parte superior de metal de la lavadora.
La caja del proyecto ya viene con un pequeño orificio para proporcionar acceso a los cables. Afortunadamente, pude colocar la placa ESP32 cerca de este orificio para dar acceso al conector micro USB. Después de agrandar el orificio con una navaja, el cable encajó perfectamente para permitir una fácil carga de la batería.
Si está interesado en alguno de los detalles de este proyecto, no dude en dejar un comentario. Si desea ver el código, compruébelo en Github:
github.com/alexspurling/washingmachine
Recomendado:
Monitoreo de lavadora / secadora de ropa con ESP8266 y sensor de aceleración: 6 pasos
Supervisión de la lavadora / secadora de ropa con ESP8266 y sensor de aceleración: la lavadora / secadora de ropa está en el sótano y, por regla general, usted pone un montón de ropa en él y, después de eso, se ocupa en el trabajo de su otra casa. Pasas por alto la ropa que quedó empapada y absorbida en el sótano de tu máquina
Qué fácil fue reparar los componentes electrónicos de mi lavadora: 5 pasos (con imágenes)
Qué tan fácil fue reparar los componentes electrónicos de mi lavadora: ¿Por qué? Porque soy un fabricante me gusta reparar mis propias cosas, lo que a veces es un problema porque no funcionan mientras encuentro algo de tiempo para averiguar la estrategia de depurar. el problema. Reparar algo suele ser sencillo y divertido, pero encontrar el ca
Alerta de lavadora secadora Arduino - Notificación de inserción al teléfono con Blynk: 5 pasos (con imágenes)
Alerta de lavadora secadora Arduino - Notificación de empuje al teléfono con Blynk: Nuestra lavadora está en el garaje y no podemos escuchar los pitidos que indican que el lavado está completo. Quería encontrar una manera de recibir una notificación, donde sea que estemos en la casa, cuando el ciclo haya terminado. He estado jugando con Arduino, ESP8266 WiFi
Cómo conectar el motor de una lavadora como generador: 3 pasos (con imágenes)
Cómo cablear un motor de lavadora como generador: Cómo cablear un motor de lavadora como generador o motor de lavadora Los conceptos básicos del cableado del generador es un tutorial sobre los principios de cableado universal del motor en la fuente de alimentación de CC y CA.Un generador es un dispositivo que convierte la potencia motriz en energía eléctrica
Notificaciones de lavadora usando MESH: 4 pasos (con imágenes)
Notificaciones de lavadoras usando MESH: ¡Ups! Olvidé la ropa en la lavadora … ¿Siempre te olvidas de recoger tu ropa después de lavarla? Esta receta actualizará tu lavadora para recibir notificaciones a través de Gmail o IFTTT una vez que tu ropa esté lista para la foto