
Prólogo
Si leyó mi artículo anterior ( Running line on Arduino ), entonces probablemente ya sepa que tenemos la oportunidad de realizar proyectos de cursos de hardware en nuestra universidad. Y yo, inspirado en mi trabajo anterior, decidí intentar nuevamente hacer algo con mis propias manos. Solo que ahora el tema debería haber sido más serio. Por cierto, comencé a pensar qué hacer durante las vacaciones de invierno, es decir, antes del semestre. Quería hacer algo interesante y útil al mismo tiempo.Busca una idea
Una vez, en un par de Fundamentos de la protección de la información, tuvimos un tema relacionado con la propiedad intelectual y las patentes. El profesor nos dio la tarea de emitir una patente para cualquier dispositivo de acuerdo con todos los requisitos y citó un hervidor wifi como ejemplo.Él dijo, y se olvidó. Y todos lo olvidaron, pero en mi cabeza este tema se mantuvo. Y cuando llegó el momento de pensar qué hacer como curso en el próximo semestre, recordé sobre esta tetera.Lo primero que decidí ver es lo que ya se ha hecho. Y cuál fue mi sorpresa cuando vi que solo hay tres modelos de muñecos con soporte de control WiFi a la venta, y luego dos de ellos pertenecen a la misma compañía. Estos fueron Smarter iKettle 1.0 y 2.0 y el Russian Polaris PWK 1792CGL.
Es interesante que casi todas las casas tengan hervidores eléctricos ordinarios, y hay muy pocos inteligentes. Comparando las características ofrecidas por iKettle y Polaris, hice una lista de las más necesarias. Esto es lo que sucedió:- encender / apagar desde un teléfono inteligente;
- ajuste de cualquier temperatura para calentar agua;
- la capacidad de averiguar la temperatura actual;
- seguimiento del volumen actual de agua en el hervidor de agua;
- advertencia y protección contra el encendido con un pequeño volumen de agua;
- establecer el tiempo de activación automática;
- aviso de disponibilidad;
Parece real, es hora de ponerse manos a la obra.Busque los componentes requeridos
Como no era posible hacer un hervidor completamente nuevo, se decidió modificar uno eléctrico ordinario ya hecho. Justo en casa había una tetera huérfana con un interruptor roto.Entonces, la base ya está allí, pensé.Ahora tenía que empezar a buscar componentes para el hardware. Como ya había poca experiencia trabajando con Arduino, decidí implementar todo en él. Por otra parte, Arduin y sus módulos son económicos.Como tuve que insertar toda la parte del control del hervidor dentro del hervidor, la elección recayó en el Arduino Nano. Es pequeño y tiene una interfaz para conectar un cable, a diferencia del Pro Mini, que debe flashearse a través de UART.
El componente principal de un hervidor wifi es, por supuesto, un módulo wifi. Al buscar en Internet algo asequible y muchos tutoriales, me encontré con el ESP8266. A saber, en la versión 01. Parecía que era económico (alrededor de $ 2) y había muchas instrucciones para conectarse. Detenido en eso. En cuanto al módulo en sí, la frase aquí es buena: barata y alegre. Pero más sobre eso más tarde.
Para controlar la temperatura, necesitábamos algún tipo de sensor de temperatura a prueba de agua. Encontré un termistor NTC a prueba de agua en aliexpress, que puede soportar temperaturas de más de 100 grados. También encontré un ejemplo de trabajar con él, así que aquí decidí rápidamente.
Era necesario decidir cómo encender el hervidor de agua en un punto dado en el tiempo, por supuesto, podría hacer que el programa registre en Arduino y encender el hervidor si el tiempo coincidía, pero esto funcionaría de manera inestable, y si el programa se reiniciara accidentalmente, todo saldría mal. Por lo tanto, un reloj en tiempo real vino al rescate aquí. A saber DS1307. Tienen alimentación independiente (de una batería de 3 V), y también había un chip de memoria EEPROM de 32K bits en el módulo en el que paré, que usé para guardar el tiempo de encendido.
Ah, sí, dado que el hervidor ahora debería encenderse programáticamente, también necesitaba un relé de 1 canal.
En cuanto al sensor de nivel de líquido, tenía que hacerse manualmente. Detalles a continuación.Del resto, todavía se necesitaban varias resistencias de diferentes denominaciones, una placa de pruebas, una placa de circuito para la instalación real, el cableado, un soldador con fundente y soldadura, y la mayor parte de la paciencia.Inicio del desarrollo
Dado que el proyecto es un hervidor wifi, lo primero que quería y necesitaba para lidiar con el módulo wifi. Tan pronto como llegó el paquete, lo desempaqué inmediatamente y comencé a conectarme.Encontré un montón de ejemplos en Internet. Todo está como debería, regulador de voltaje de 3.3 V, divisores de voltaje para RX y TX. Recopilé todo con el ejemplo, lo conecté, ¡no voló! Se mostró un montón de texto en el monitor del puerto COM, ya que resultó que el módulo se reiniciaba constantemente. No responde a los comandos AT enviados. El autor del artículo funciona, yo no.Cual es el problema Traté de buscar otros esquemas de conexión, y así sucesivamente, pero el módulo todavía se restablece o no muestra nada. Y en todas partes está escrito en letra roja: "No aplique al módulo de 5 V, de lo contrario fallará". Entonces, la búsqueda de soluciones a veces duraba por las tardes, ya estaba pensando en comprar otro módulo, pero decidí verificar el voltaje con un multímetro.Resultó que cuando el módulo está conectado a 3.3 V, el voltaje cae por debajo de 3.2 V. Parece que, bueno, está bien, cae y cae. Decidí alimentarlo desde otra fuente de alimentación y resultó que el módulo funciona normalmente con un voltaje por encima de 3.2 V, y por debajo no es suficiente y se reinicia constantemente.Como resultado, bajo mi propio riesgo y riesgo, lo conecté a 5 V y todo funcionó y aún funciona bien.
No hubo tales problemas con otros componentes.Después de descubrir el wifi, tuve que decidir qué hacer con el sensor de nivel de líquido. Buscando en Google, encontré un artículo en el que el autor hizo un sensor de humedad del suelo. Cuando el suelo se seca, la resistencia del sensor aumenta y el voltaje en el puerto analógico de Arduino aumenta. Al detectar un cambio en el voltaje, se puede detectar la apariencia de un líquido. En lugar de dos contactos, se usó 6 para determinar el nivel de líquido en mi proyecto, uno de ellos está conectado a la salida de 5 V y el resto a las entradas analógicas y resistencias de 10 kΩ a GND.Aquí hay fotos de las pruebas.
Aquí está el sensor de nivel que es el resultado.
Lo siguiente que probé es el reloj en tiempo real. Pero trabajar con ellos es básicamente simple. Para establecer el tiempo y obtener información al respecto, utilicé exclusivamente ejemplos que vienen con la biblioteca para trabajar con DS1307.Como resultado, cuando todo se ensambló en una placa de pruebas, obtuvimos ese cruce entre cables y módulos. Por cierto, en estas fotos hay otro sensor de temperatura.
Comenzando
Ahora todo esto tenía que soldarse en la placa de circuito. No hay nada especial para comentar, así que solo una foto. Como puede ver, se agregó otro botón para que pueda encender el hervidor no solo desde un teléfono inteligente, sino también de la manera habitual.

A continuación, debe colocar todo dentro de la tetera.


Se agregó un inserto de asbesto para proteger todos los interiores del sobrecalentamiento.
Es cierto que el caso tuvo que ser ligeramente elevado con un inserto de plástico adicional.

Ahora ve a la parte móvil.
En cuanto a la aplicación, ya que se desarrolló bajo el sistema operativo Android, originalmente se planeó usar Android Studio. Pero para estudiar nuevas tecnologías, se decidió utilizar una plataforma preparada para desarrollar programas en el campo de Internet de las cosas. Como resultado, la elección recayó en el producto Evothings: Evothings Studio.
Estas son sus principales ventajas:- Una gran cantidad de ejemplos estándar sobre el trabajo con varios módulos (Wifi, Bluetooth);- desarrollo de aplicaciones usando JS, HTML, CSS, que le permite escribir un código que funcionará igualmente en Android e iOS, es decir desaparece el enlace a una sola plataforma;- facilidad para probar la aplicación: se instala una aplicación en el teléfono inteligente para previsualizar su desarrollo, y todos los mensajes de prueba y mensajes de error se muestran en el programa en la computadora;- Una gran cantidad de información en Internet sobre el desarrollo utilizando JS, HTML, CSS;En este Estudio Evothings hubo un ejemplo de encender el LED transmitiendo una solicitud de encendido a través del ESP8266. Decidí tomar este ejemplo como base, porque era lo más valioso para mí: la comunicación con el módulo WiFi a través del zócalo tcp. Y de manera similar a cómo se transmitió la solicitud de encender el LED, solicité actualizar los sensores del hervidor, configurar el tiempo de encendido, configurar la temperatura, etc.Luego atornillé las notificaciones de disponibilidad y una pequeña cantidad de agua, el beneficio es que todo en nuestro tiempo se busca fácilmente en Google. El resultado es una aplicación de este tipo (lo bueno es hacer la interfaz de la aplicación usando CSS):




Una breve descripción de la interacción del teléfono inteligente y el hervidor de agua.
La comunicación entre el servidor y el cliente se realiza mediante el módulo WiFi. Cuando enciende el módulo de control del hervidor, el módulo WiFi comienza a distribuir una red llamada artKettle. Esto se realiza mediante comandos AT en el lado del servidor. Entonces, por ejemplo, para poner el módulo en modo de punto de acceso, necesita enviar el comando AT + CWMODE = 2. Luego, con estos comandos, debe asignar parámetros de red, permitir la conexión de varios dispositivos y obtener la dirección IP del wifi en sí.Desde el lado del cliente, la conexión se realiza a través de un puerto específico y por la dirección IP del módulo wifi utilizando chrome.tcp.socket.Después de conectar el cliente al servidor, puede controlar el hervidor desde su teléfono inteligente. Considere el ejemplo de encender la tetera.Cuando hace clic en el botón de encendido en la aplicación artKettle, se llama a la función correspondiente de la inclusión de app.kettleOn (). Dentro de esta función, se transfieren dos líneas al lado del servidor:app.sendString('H');
app.sendString('U');
El siguiente es el trabajo que ya está del lado de Arduino. Después de que llega la primera línea con el carácter 'H', se ejecuta el siguiente código:if(message.indexOf("H") >= 0 && waterDetected()) {
digitalWrite(POWER_PIN, LOW);
IS_ON = true;
Serial.println("ON");
sendCIPData(0, "ON");
}
Primero, verifica si hay agua en el hervidor llamando al método waterDetected (). Considere la opción cuando haya agua en el hervidor de agua.Se aplica un nivel de bajo voltaje al pin de control del relé, que corresponde a su inclusión, es decir circuito de alimentación cierra:digitalWrite(POWER_PIN, LOW);
Luego, la bandera se establece para indicar que la tetera está encendida y se muestra un mensaje en la salida al monitor del puerto serie.Después de eso, se llama a una función que transmite un mensaje de respuesta al lado del cliente de que toda la inclusión fue exitosa:sendCIPData(0, "ON");
En el lado del cliente, después de verificar el mensaje entrante, el botón de encendido se establece en el estado Encendido:if (buf.substr(0, 2) == "ON") {
app.setButtonOn();
}
Después de eso, el mensaje de texto se procesa con el carácter 'U' enviado desde el cliente al servidor. Aquí, de manera similar a la inclusión, se actualiza la información sobre la temperatura actual y el volumen de líquido en el hervidor.Por lo tanto, se organiza una comunicación bidireccional entre el cliente y el servidor, de modo que cualquiera de ellos sepa sobre el estado del otro en un momento dado.Conclusión
Como resultado del proyecto del curso, se desarrolló una modificación para un hervidor eléctrico convencional, que permite controlarlo desde un teléfono inteligente a través de wifi. Ahora esta tetera se puede atribuir a los representantes de Internet de las cosas. Logramos implementar completamente todas las funciones, por lo que ahora este hervidor de agua tiene las siguientes características:- encendido / apagado desde un teléfono inteligente;- ajuste de cualquier temperatura para calentar agua;- la capacidad de averiguar la temperatura actual;- seguimiento del volumen actual de agua en el hervidor de agua;- advertencia y protección contra el encendido con un pequeño volumen de agua;- establecer el tiempo para encender;- notificación de disponibilidad;Las ventajas del proyecto implementado son la accesibilidad de la base del elemento, porque todo lo que necesita se puede encontrar en las tiendas de componentes electrónicos, la extensibilidad del proyecto. Dado que el hervidor de agua tiene todos los sensores necesarios instalados, puede modificarse mediante programación y no ser peor que los análogos. Dada la versatilidad del módulo wifi utilizado, puede conectarlo a Internet y organizar el control del hervidor, estar en cualquier parte del mundo y usar el servicio en línea para procesar mensajes SMS, puede organizar la inclusión por SMS. Es decir el proyecto aún es muy ampliable, hay oportunidades para esto, pero no se implementaron, ya que no formaban parte de los objetivos del proyecto que se estaba desarrollando.Por supuesto, hay desventajas en el proyecto. El primero es el funcionamiento inestable del módulo Wifi. Un módulo a veces simplemente pierde su red, comienza a restablecer la configuración o simplemente no procesa las señales entrantes. Además, estos son problemas populares entre los usuarios de este módulo. El segundo inconveniente es la falta de apagado mecánico de la tetera. El apagado se implementa en el software; cuando se alcanza el punto de ebullición, el circuito se rompe con la ayuda de un relé. Si el programa se bloquea repentinamente, es posible que el hervidor no se apague. El tercer inconveniente es el problema de controlar la temperatura de calentamiento. Entonces, por ejemplo, si apaga el hervidor a una temperatura de 60 grados, la calefacción diez continuará emitiendo calor, y después de un tiempo la temperatura del agua ya será de aproximadamente 70 grados. Pero esto se corrige haciendo ajustes al programa.