Temporizador - Inicio

Todo comenz贸 con 茅l. Esta fue mi primera compra en Aliexpress para la primera automatizaci贸n en el pa铆s: quer铆a hacer un autowatering en el invernadero. El temporizador lleg贸 en una caja arrugada, con una tapa protectora rota, pero funcionaba. Hizo un gran trabajo regando pepinos durante toda la temporada de verano, fue retirado y escondido en un lugar c谩lido y seco durante el invierno. Pero la pr贸xima temporada estaba esperando una sorpresa desagradable: el temporizador comenz贸 a colgar, dej贸 de responder a los botones de control y abri贸 el agua. Al principio pequ茅 con bater铆as baratas y las reemplac茅 con la marca Duracell. Pens茅 que el problema era el poder y las corrientes de entrada. No sirvi贸 de nada. Luego saqu茅 un soldador y solde todo lo que pude en 茅l, incluso agregu茅 algunos condensadores faltantes. Pero tercamente continu贸 colgando. Desafortunadamente, el producto no es muy f谩cil de mantener, ya que utilic茅 una ca铆da de microcircuito de circuito abierto y, aparentemente, algo se desmont贸 precisamente debajo del compuesto con el microcircuito. De alguna manera, la temporada hab铆a terminado con un temporizador tan tambaleante, y comenc茅 a pensar con qu茅 deber铆a reemplazarlo.

Lo primero que pens茅 fue tomar un m贸dulo Arduino Mini, un m贸dulo de reloj, un indicador, y de alguna manera meterlo todo en el caso de un temporizador roto y usar su motor y v谩lvula de bola nativos. Pero de alguna manera no fue realmente all铆, consumir铆a claramente m谩s que el relleno original (lo que significa que puede olvidarse de las bater铆as en el estuche) y era aburrido y no escalable: quer铆a regar no solo el invernadero, sino solo un temporizador roto.

Y luego, en Ali, me encontr茅 con una v谩lvula de bola motorizada normal. Aqu铆 hay un hombre tan guapo:



S铆, cuesta un dinero decente, pero no daba miedo conectarlo con un suministro de agua de verano y dejarlo desatendido durante una semana. En general, es bastante s贸lido, aunque con una caja de engranajes de pl谩stico, ahora un par de grifos funcionan en mi suministro principal de agua, donde la presi贸n es de 5 atm.

La idea era simple. Un pa帽uelo con el m贸dulo WiFi ESP8266 estaba esperando en el caj贸n de la mesa. Se decidi贸 abandonar el ahorro de energ铆a en favor de una bater铆a de autom贸vil usada, que, seg煤n los c谩lculos, deber铆a haber sido suficiente durante al menos un mes de vida 煤til de la bater铆a. Para no perder el momento de descarga de la bater铆a, el circuito proporcion贸 un divisor a trav茅s del cual el ESP8266 ADC incorporado midi贸 continuamente el voltaje de suministro . El m贸dulo DS3231 con bater铆a deber铆a haber servido como un reloj en el circuito, y un pa帽uelo por m / s MP1584EN deber铆a haber reducido el voltaje de 12V a 3.3V.

Aqu铆 hay un diagrama de bloques prototipo:


Y aqu铆 hay una foto de su implementaci贸n.


implementaci贸n un poco desmontada: el m贸dulo DC-DC entr贸 en la gr煤a, el m贸dulo del reloj en la parte posterior de la placa de pruebas

El control del motor de la gr煤a se realiz贸 aqu铆 simplemente: qu茅 transistores se encontraron en el caj贸n de la mesa, se instalaron. En realidad, un motor puede controlarse, por ejemplo, a trav茅s de m / s ULN2003 conectando varios canales en paralelo con transistores de efecto de campo con control l贸gico o en general a trav茅s de un m贸dulo de rel茅 con optoaislamiento. Solo es necesario tener en cuenta que el motor, con una corriente de funcionamiento de aproximadamente 70 mA, tiene una corriente de entrada (y corriente en el momento del bloqueo de rotaci贸n) del orden de 300-350 mA.

Se escribir铆a un boceto r谩pido en Arduino con una interfaz web simple:



Y el prototipo estaba en servicio de prueba. Reenvi茅 la interfaz web de la gr煤a a trav茅s del enrutador y el dispositivo estaba constantemente disponible en l铆nea.

Y los pensamientos continuaron. Un prototipo es bueno, pero quiero varios de estos toques y hacerlo todo en la placa no es una opci贸n. La gr煤a ha sido abierta. Y qued贸 claro que hay mucho espacio dentro debajo de una cubierta sellada e incluso hay lugares de fijaci贸n:



En ese grifo que se utiliz贸 en el prototipo, debajo de la cubierta hab铆a una peque帽a placa de circuito con un rel茅, que proporcionaba l贸gica de control. Y en la foto hay una gr煤a con 铆ndice CR05. No hay l贸gica o placa de circuito en estos grifos. Los cables de control del motor y los cables del interruptor de l铆mite simplemente se retiran. Y necesita controlar tales gr煤as cambiando la polaridad del voltaje en el motor. Al mismo tiempo, es muy recomendable controlar los momentos finales de cierre / apertura en los puntos finales del TC, recordamos que la corriente en estos momentos ya es de 300-350 mA.

El diagrama de bloques comenz贸 a aparecer as铆:



Ahora tomamos la pinza, una hoja de papel en nuestras manos y comenzamos a tomar medidas, dibujamos el contorno de la placa de circuito impreso e intentamos colocar los componentes en ella. Se abandon贸 una bater铆a CR2032 grande y se us贸 una peque帽a CR1220 (o 1225). Durante mucho tiempo, se seleccion贸 un chip de puente H para controlar el motor. La elecci贸n parece ser grande, pero muchos de estos microcircuitos no pueden funcionar con un voltaje de suministro de 12V, o usan transistores bipolares con una ca铆da de voltaje muy grande, o el caso no tiene 茅xito. Al principio, el chip TB6612 no me llam贸 la atenci贸n durante mucho tiempo, y luego pareci贸 muy redundante e inconveniente para soldar. Pero al final me centr茅 en ella: es asequible y econ贸mico para Ali. El puente H est谩 construido sobre transistores de efecto de campo y puede operar con voltajes de hasta 15 voltios. El m贸dulo convertidor DC-DC (MP1584EN) fue dejado por el m贸dulo; result贸 ser simplemente m谩s barato en detalles y fue f谩cil de soldar. Lo principal, para la confiabilidad, es reemplazar la resistencia de sintonizaci贸n en ella por una constante (27kOhm, dar谩 un voltaje de salida de 3.4V). El microcircuito del reloj podr铆a usarse en una caja m谩s compacta, pero hab铆a una advertencia: iba a pedir todos los componentes para Ali y exist铆a el riesgo de obtener circuitos falsos o rotos. Por lo tanto, en la etapa inicial, se plane贸 comprar todos los microcircuitos como parte de los m贸dulos terminados y soldar a la placa desarrollada. Y en los m贸dulos, el reloj solo estaba en el caso SO16. De hecho, solo un microcircuito de reloj result贸 defectuoso o falso: su frecuencia de cuarzo fue de 32727 con 32768 kHz configurados.

Despu茅s de todo el trabajo preparatorio, tomamos KiKad, googleamos un poco en busca de asientos faltantes, dibujamos algunos componentes nosotros mismos y comenzamos a criar el tablero:



Lo comprobamos imprimiendo en una escala de 1: 1. Adjuntamos piezas y m贸dulos y, si todos coinciden, preparamos archivos Gerber para producci贸n y los enviamos a EasyEda. Despu茅s de 3 semanas, obtenemos 10 lindos pa帽uelos y los recogemos.


Quedan 5 en la foto, el resto todo funciona


Montaje del m贸dulo

Los agujeros para los sujetadores, por supuesto, no coincidieron un poco, algunos de los asientos no resultaron como quisieran, pero en general el producto, despu茅s del ensamblaje y el firmware, funcion贸 de inmediato. Se compraron colas de potencia herm茅ticas en Ali, pasaron por un sello de presi贸n est谩ndar en el edificio y el temporizador de la gr煤a WiFi obtuvo su aspecto de f谩brica:



Aqu铆 hay un par de gr煤as en servicio de combate en el pa铆s:

en la publicaci贸n


Pero entonces el pensamiento continu贸 de nuevo. Quer铆a m谩s automatizaci贸n en el pa铆s, y el m贸dulo result贸 ser bastante compacto y universal. A trav茅s del puente H puede controlar f谩cilmente un rel茅 convencional. Para la automatizaci贸n del bricolaje, muchos toman Sonoff, pero resulta que yo mismo no puedo hacerlo peor.

Y aqu铆 comienza la transformaci贸n de un simple toque de Wi-Fi en lo que se llama SHAPEsp , abreviatura de S mart H ome A utomation P latform basada en Esp 8266. Seg煤n lo planeado, este deber铆a convertirse en un m贸dulo universal econ贸mico para la automatizaci贸n del hogar. Y todo esto debe ser confiable y verse como un producto terminado despu茅s del ensamblaje en un estuche asequible.

Sorprendentemente, result贸 que en el caso chino con Aliexpress en 2DIN, la unidad est谩 bien, el cuerpo en el cuerpo, el popular convertidor AC / DC 220V / 12V HiLink (bueno, o su clon), el rel茅 y el conector de alimentaci贸n, y por supuesto mi m贸dulo ligeramente convertido con ESP8266, reloj y puente en H.

Hazlo una vez


Hacer dos


Hacer tres

El m贸dulo se puede instalar tanto en el cuerpo de la gr煤a como en la carcasa del bastidor DIN

Y obtenemos:



Ligeramente cambiado la forma del m贸dulo. Le agregu茅 conectores de borde para que pudiera mantenerse en pie en el paquete 2DIN. Coloqu茅 LED indicadores en el extremo superior del tablero, que son visibles a la luz en una caja de pl谩stico. Bueno, extend铆 la placa de medios para el rel茅 y la fuente de alimentaci贸n. Para hacerlo m谩s barato, todo esto se envi贸 a producci贸n con una placa:



Reun铆 dos de estos prototipos y los puse en la caba帽a para controlar la inclusi贸n de convectores para las llegadas de invierno:

En otro post

Uno de los m贸dulos en el panel, junto a un par de contactores que incluyen convectores.

Pero luego decidi贸 mejorarlo a煤n m谩s y hacerlo m谩s universal. Para un firmware m谩s confiable y conveniente, coloqu茅 el esquema de firmware de NodeMcu en el m贸dulo. Deduci贸 todos los pines posibles y agreg贸 almohadillas de contacto para la conveniencia de conectar diferentes sensores. Todos los pasadores de borde se colocan en incrementos de 2,54 mm, de modo que el m贸dulo se puede insertar en la placa de pruebas. Naturalmente prob茅 la conexi贸n del term贸metro ds1820, el sensor combinado BME280 y el sensor de humedad en el comparador. Result贸 que, adem谩s de un temporizador simple con un rel茅 o una gr煤a, puede construir f谩cilmente una estaci贸n meteorol贸gica o, por ejemplo, un sistema aquastop. Bueno, todo tipo de otros sistemas de notificaci贸n y control ...

Llevado, dibuj贸 un modelo de su m贸dulo para Fritzing. Para que pueda evaluar y rotar las diversas opciones de aplicaci贸n virtualmente:



Un enlace al modelo de GitHub se encuentra al final del art铆culo.

Bueno, entonces comienza la parte m谩s dif铆cil: soporte de software para el m贸dulo. Inicialmente, prob茅 y prob茅 todo con mi boceto Arduino bastante simple. HTML simple, un poco de script Java, varias formas simples de transmitir datos, solo la funcionalidad de un temporizador y algunos sensores que necesito. Pero r谩pidamente se hizo evidente que no ser铆a tan f谩cil dominar todo y todo en el mundo moderno de IoT y la construcci贸n inteligente de viviendas. Y tambi茅n solo pereza (aqu铆 hay una sonrisa sonriente). Y a veces no quiero reinventar la rueda.

Por lo tanto, se decidi贸 ver qu茅 hay de firmware listo para usar en el que puede agregar soporte para su m贸dulo. Como punto de partida, se tomaron firmwares alternativos para los productos de Sonoff: Sonoff-Tasmota, ESPurna, ESPEasy. La b煤squeda puede encontrar revisiones comparativas de estos firmware.

Por ejemplo:

https://lobradov.imtqy.com/FOSS-Firmware-comparison-overview/

https://lobradov.imtqy.com/FOSS-Firmware-comparison-developers/

En realidad, de alguna manera revis茅 el c贸digo fuente en los repositorios de estos firmware con mi ojo, me di cuenta de que la forma m谩s f谩cil para m铆 ser铆a agregar mi m贸dulo al firmware ESPurna. El c贸digo del firmware estaba estructurado de manera bastante razonable e inicialmente asumi贸 la adici贸n de nuevos m贸dulos y funciones. En el firmware estaba la funcionalidad del temporizador que necesitaba, el Sheduler independiente. Adem谩s, se puede decir de f谩brica, simplemente describiendo mi configuraci贸n con un simple rel茅 en el archivo hardware.h, obtuve una versi贸n funcional del firmware del rel茅 WiFi.

Sin embargo, mi m贸dulo ten铆a una funcionalidad m谩s rica y compleja. Y se decidi贸 contribuir al firmware. Por un lado, es bastante simple: escribimos funcionalidad y hacemos una solicitud de extracci贸n, pero en realidad es un proceso aburrido y largo con un resultado no siempre positivo o r谩pido. Estos son los costos del hecho de que la funcionalidad propuesta en general solo la necesitamos yo y mi placa desconocida.

Empec茅 con el apoyo del reloj. En el firmware ESPurna, todo funcionaba a trav茅s de NTP y la biblioteca Time para arduino; bueno, hist贸ricamente, necesita saber la hora, pero los productos Sonoff no tienen un reloj aut贸nomo y se supone que siempre tienen acceso a Internet. Para admitir el reloj RTC, escrib铆 un m贸dulo simple que, si lo desea, reemplaz贸 la funci贸n de proveedor de tiempo de NTP puro a NTP + RTC. El principio era simple: si la sincronizaci贸n NTP no est谩 disponible, intentamos leer la hora del reloj RTC local. Cuando aparece el acceso a los servidores NTP, restauramos la sincronizaci贸n y, si lo desea, sincronizamos el reloj local. Entonces el reloj de mi m贸dulo entr贸 en funcionamiento. La solicitud de extracci贸n se acept贸 con bastante rapidez, pero se envi贸 a una rama espurna-rtc separada.

La siguiente fue una solicitud de extracci贸n trivial. Dado que mido el voltaje de suministro al convertidor DC-DC para rastrear la descarga de la bater铆a, necesitaba monitorear no el voltaje de suministro del m贸dulo ESP8266, sino algo definido por el usuario. Lo que dise帽茅 como una solicitud de extracci贸n "agrega soporte para monitoreo VCC personalizado". Pero esta solicitud de alguna manera qued贸 suspendida en el aire ... y el deseo de contribuir de alguna manera disminuy贸.

Adem谩s, se hizo evidente que agregar su m贸dulo a la lista de dispositivos terminados compatibles no ser谩 tan f谩cil: tiene muchas configuraciones diferentes posibles. Por lo tanto, se decidi贸 simplemente desarrollar su bifurcaci贸n de firmware. Y si es posible y desea mantener la sincronizaci贸n, haga solicitudes de extracci贸n u ofrezca una selecci贸n de cereza en el repositorio de firmware principal.

Despu茅s de tal decisi贸n, todo se volvi贸 m谩s simple. En el firmware, el sistema de control de rel茅 fue reescrito parcialmente. Se le agreg贸 el modo de control H-bridge y se hizo m谩s conveniente en t茅rminos de agregar modos de operaci贸n de rel茅 personalizados.

Un estudio posterior del c贸digo de firmware mostr贸 que no es posible refactorizarlo. El estilo de escribir y usar recursos en algunos lugares es muy cruel para un microcontrolador (aunque es bastante inteligente de 32 bits). Por ejemplo, el sistema para emitir mensajes de depuraci贸n devor贸 la pila con gran velocidad, pero al mismo tiempo, solo para no soltar todo el sistema, se bloque贸 cuando el tama帽o de la pila lleg贸 a ser inferior a 10kB. Reescrib铆 el c贸digo en mi hilo un poco para que ahora todos los mensajes de depuraci贸n y las indicaciones en la consola se muestren por completo.

Bueno, por el momento, se ha agregado un subsistema de c谩lculo al firmware
Amaneceres / atardeceres y un SunriseSensor virtual, para que pueda construir un rel茅 astron贸mico simple desde el m贸dulo SHAPEsp. Ser谩 necesario tener coraje y comprometerse con el repositorio principal. Creo que esta es una funcionalidad 煤til.

Aqu铆 hay una historia de la transformaci贸n de ideas de bricolaje de un prototipo a un producto casi terminado. Quiz谩s un producto en demanda. Lo m谩s sorprendente es que a煤n no he probado ning煤n sistema dom茅stico inteligente: todos los m贸dulos funcionan para m铆 de manera completamente aut贸noma y son accesibles a trav茅s de interfaces web en Internet. Y una vez comprada, la placa de PC OrangePi se encuentra en un caj贸n y est谩 esperando en las alas para convertirse en un controlador de casa inteligente.

Lista de enlaces:

  1. Fritzing model y c贸mo me re煤no, creo que habr谩 un dise帽o de circuito y m贸dulo en Kikad
  2. Prueba simple de firmware para el m贸dulo
  3. Horquilla de firmware ESPurna con soporte de m贸dulo
  4. El repositorio principal de firmware ESPurna

Source: https://habr.com/ru/post/es422435/


All Articles