Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Control de clima por zonas con MediaTeks LinkIt ™ Smart 7688

Componentes y suministros

Espressif ESP8266 ESP-01
× 1
Arduino Nano R3
× 1
Tecnología de microchip ATtiny85
× 1
Sensor de temperatura DHT22
× 1
Servos (Tower Pro MG996R)
× 1

Aplicaciones y servicios en línea

Arduino IDE

Acerca de este proyecto

Se acerca el invierno

Cuando mi esposa y yo tuvimos nuestro primer hijo el invierno pasado, compramos un calentador eléctrico para mantener el área alrededor de nuestra bebé agradable y cálida. Mientras íbamos de una habitación a otra, trajimos el calentador con nosotros, mientras pensábamos que estábamos siendo súper eficientes al tener control de clima en el punto de uso. Un mes después, recibimos una factura de electricidad el doble de nuestra cantidad normal y nos damos cuenta de que hubiera sido más barato calentar toda la casa con el horno de gas las 24 horas del día.

El invierno está sobre nosotros nuevamente, así que esta vez me cambié a un termostato WiFi para poder encender el calentador mientras estoy abajo o abrigado bajo las sábanas. Esto es mucho más conveniente, pero seguimos calentando toda la casa a pesar de que la mayor parte del tiempo estamos todos en una parte de la casa.

Trabaje de forma más inteligente

Al mirar los registros de nuestros sensores de movimiento que controlan nuestra iluminación, es bastante obvio que pasamos de 4 a 5 horas abajo como familia después del trabajo, y luego subimos a nuestras habitaciones alrededor de las 9 p.m., donde dormimos hasta que salimos a la mañana siguiente para trabajar. Los fines de semana son un poco diferentes, pero de lunes a viernes funcionan como un reloj (especialmente con un niño de 10 meses con un horario de sueño estricto).

He analizado los sistemas HVAC que tienen monitoreo de temperatura de múltiples zonas y deflectores de conductos controlables de forma inalámbrica, pero el hardware es muy costoso y todo el software parece una ocurrencia tardía (con poco soporte o actualizaciones a medida que la tecnología mejora). Ya tengo algunos sensores de temperatura habilitados para WiFi en mi casa para los controladores de la unidad de aire acondicionado en el punto de uso y he estado ansioso por usar algunos servos pequeños en un proyecto. Todo lo que necesito son servos conectados a WiFi que puedan abrir / cerrar conductos de ventilación en mi sistema HVAC ... debería ser bastante fácil.

LinkIt ™ Smart 7688 de MediaTek

El nuevo LinkIt Smart 7688 Duo HDK de MediaTek es un microprocesador conectado a WiFi que ejecuta OpenWRT con un microcontrolador integrado compatible con arduino. Es perfecto para este proyecto ya que tiene todos los pines de E / S necesarios para múltiples sensores y servomotores, además de capacidad WiFi para comunicarse con mis sensores de temperatura existentes. Además, dado que ya tiene OpenWRT instalado con uHTTPd, puedo ejecutar la aplicación web directamente en LinkIt Smart 7688 HDK para obtener un paquete completamente autónomo.

Configuración de LinkIt Smart 7688 HDK

Esta es la primera vez que uso una placa que tiene WiFi integrado, así que me estaba preparando para una curva de aprendizaje empinada. Afortunadamente, la configuración consta literalmente de 3 pasos:

  • Encienda el Linkit Smart 7688 y conéctese a su punto de acceso WiFi desde su computadora
  • Inicie sesión en la interfaz web e ingrese la configuración de su punto de acceso WiFi
  • Agregue la placa "LinkIt Smart 7688 Duo" en el IDE de Arduino

¡Eso es! Cuando selecciona la placa "LinkIt Smart 7688 Duo" en el IDE de Arduino, puede enviar su boceto a través de serie como cualquier otra placa, o puede cargar a través de WiFi (esto será muy útil más adelante). La guía de introducción y la guía para desarrolladores de Linkit Smart 7688 también pueden resultarle útiles.

Si desea permitir que el microcontrolador use el WiFi directamente en su boceto de arduino (lo que haremos), simplemente ingrese al HDK y gire un poco para habilitar la compatibilidad de la biblioteca Arduino Yun.

Puede copiar / pegar las líneas desde aquí:

Cliente WiFi y servocontrolador

Dado que esto ha incorporado compatibilidad con la biblioteca de puentes Yun y usa el IDE de Arduino, es realmente fácil adaptar el código existente. Usando la biblioteca del puente, puedo hacer que el HDK sondee el servidor web a bordo para la configuración de ventilación (ya sea arriba, abajo o toda la casa) y luego ajuste los dos servos en consecuencia. En el siguiente video, tenía esto ejecutándose en una Raspberry Pi 2, pero pude transferir la aplicación web al LinkIt Smart 7688 para hacerlo aún más eficiente (código incluido al final).

Mi aplicación web se ejecuta en php, así que utilicé el administrador de paquetes opkg para instalarlo, ya que está incluido en OpenWRT en LinkIt Smart 7688:

Luego actualicé el archivo / etc / config / uhttpd para interpretar php agregando esta línea:

y reinició uHTTPd

Hardware

Adjunté la bocina del servo directamente a la ventilación y fabricé un soporte de aluminio para mantener el servo en posición con algunos separadores de acero inoxidable. Todavía hay un poco de juego, así que agregaré algunas bridas para que esto sea un poco más permanente.

Software

Esta compilación realmente se reduce a tres componentes:

  • Los sensores de temperatura de la casa envían actualizaciones periódicas al servidor web uHTTPd que se ejecuta en LinkIt Smart 7688.
  • Una aplicación web que se ejecuta en LinkIt Smart 7688 que muestra el estado actual y le permite reconfigurar manualmente las ventilaciones.
  • El MCU del LinkIt Smart 7688 que controla las rejillas de ventilación para dirigir el aire caliente hacia arriba o hacia abajo, según la hora del día.

Los sensores de temperatura son solo ATtiny85s o Arduino Nanos conectados a un DHT11 o DHT22 y envían esa información de temperatura / humedad a un servidor web a través de un ESP8266 a través de una serie de software. Tengo un informe completo sobre esos sensores aquí, ya que fueron diseñados y desarrollados originalmente como la fase II de mi proyecto de aire acondicionado en el punto de uso (esta parte es completamente opcional, pero le brindará métricas adicionales que se pueden usar para ajustar el sistema y eventualmente automatizarlo).

El LinkIt Smart 7688 HDK está en mi ático conectado directamente a los conductos de ventilación. En el lado de OpenWRT, un cronjob actualiza el archivo de texto del estado de ventilación. El lado de la MCU que ejecuta el boceto de arduino verifica este archivo de texto periódicamente y ajusta las rejillas de ventilación en consecuencia.

Para verificar el estado de las rejillas de ventilación y reconfigurarlas manualmente, creé una pequeña aplicación web que está alojada directamente en el LinkIt Smart 7688. Con dyndns y reenvío de puertos, puedo ver y controlar todo esto desde fuera de la casa si es necesario.

Espacio para mejorar

Con las noches ya cada vez más frías, necesitaba que esto funcionara lo antes posible, por lo que se hicieron algunas concesiones en nombre de un despliegue rápido. En el lado del hardware, estaré imprimiendo en 3D los montajes adecuados para los servos, ya que mis montajes de hack-job tienen un poco de juego. Además, el pequeño servo RC que usé en la demostración tiene todos los engranajes de plástico que no espero que duren años, así que como no quiero volver a subir al ático pronto, voy a cambiar para servos más grandes con engranajes metálicos.

Es posible que algún día agregue servos adicionales conectados a WiFi a las rejillas de ventilación de cada habitación y haga que todos se conecten de nuevo al LinkIt Smart 7688 único.

Actualmente, las sondas de temperatura solo están volcando las lecturas en un archivo csv para que pueda rastrearlo y graficarlo fácilmente. Sería bueno encender el calentador temprano si la casa está particularmente fría, pero mi termostato WiFi aún no tiene una API. También me gustaría conectarme a mi sistema de automatización del hogar para que las rejillas de ventilación se ajusten automáticamente en función de la ocupación de la habitación en tiempo real derivada de los sensores de movimiento en lugar de basarse completamente en la hora del día (especialmente los fines de semana debido a nuestros horarios dinámicos).

Código

  • Ventilación WiFi LinkIt Smart Duo
  • Sensor de temperatura WiFi
  • Vent.php
  • Aplicación web para Android LinkIt Smart Vent
Ventilación WiFi LinkIt Smart Duo C / C ++
Este boceto usa las bibliotecas Bridge y HTTP Client de Arduino Yun para sondear un servidor web y abrir / cerrar ventilaciones de HVAC según sea necesario.
 / * Adaptado del ejemplo de servo de barrido por BARRAGAN  y Yun Ejemplo de cliente HTTP creado por Tom igoe  ** Ambos son de dominio público. *** Código adaptado para HAI (domótica con inteligencia) por Buddy Crotty ** Este boceto de arduino se basa en un servidor web para hacer todo el trabajo pesado. Esto puede ser un dispositivo separado como una Raspberry Pi, o puede ejecutarlo en el lado MPU del LinkIt Smart inOpenWRT. ** El servidor web recopila lecturas de temperatura de toda la casa y determina dónde debe ir el aire caliente / frío según el tiempo de día, clima exterior (incluido el pronóstico) y ocupación de la casa. ** Luego genera 'arriba', 'abajo' o 'toda la casa' dependiendo de dónde se debe enviar el aire. * / # include  #include  #include  Servo upservo; // crea un objeto servo para controlar el servo de arriba Servo downservo; // servo de la compuerta de ventilación de aire de la planta baja int uppos =0; // variable para almacenar la posición del servo (arriba) int downpos =0; // posición del servo de la planta baja const char * host ="192.168.1.80"; // IP interna del servidor web de automatización del hogarint dopenangle =80; // Número de grados que su servo necesita girar entre abrir / cerrar en el ventint dcloseangle =0; int uopenangle =140; int ucloseangle =0; configuración vacía () {upservo.attach (9); // Pin para servo conectado al amortiguador de ventilación del piso de arriba downservo.attach (10); // Pin para servo conectado a la compuerta de ventilación de aire de la planta baja // puente de inicio a OpenWRT pinMode (13, OUTPUT); digitalWrite (13, BAJO); Bridge.begin (); digitalWrite (13, HIGH);} void wholehouse () {if (downpos <=dcloseangle) {// Asegúrese de que la ventilación no esté ya en posición // abra la ventilación de la planta baja para (downpos =dcloseangle; downpos <=dopenangle; downpos + =1) // Pasar del ángulo cerrado ajustado al ángulo abierto paso a paso {downservo.write (downpos); retraso (20); // espera entre pasos hasta que el servo alcanza la posición}} if (uppos <=uopenangle) {// abre la ventilación de arriba para (uppos =ucloseangle; uppos <=uopenangle; uppos + =1) {upservo.write (uppos); retraso (20); }}} void downstairs () {if (downpos <=dopenangle) {// abre el respiradero de la planta baja para (downpos =dcloseangle; downpos <=dopenangle; downpos + =1) {downservo.write (downpos); retraso (20); }} if (uppos> =ucloseangle) {// cierre el respiradero de arriba para (uppos =uopenangle; uppos> =ucloseangle; uppos- =1) {upservo.write (uppos); retraso (20); }}} void upstairs () {if (uppos <=uopenangle) {// abrir ventilación de arriba para (uppos =ucloseangle; uppos <=uopenangle; uppos + =1) {upservo.write (uppos); retraso (20); }} if (downpos> =dcloseangle) {// cierre de ventilación de la planta baja para (downpos =dopenangle; downpos> =dcloseangle; downpos - =1) {downservo.write (downpos); retraso (20); }}} void loop () {cliente HttpClient; // Cree y realice una solicitud HTTP:String cmd ="http://"; cmd + =host; cmd + ="/vent.txt"; cliente.get (cmd); // Leer los bytes entrantes del servidor while (client.available ()) {int c =client.read (); if (c =='2') arriba (); if (c =='1') abajo (); if (c =='0') casa completa (); } retraso (60000);} 
Sensor de temperatura WiFi C / C ++
Sensor de temperatura y humedad conectado. Registra datos en el servidor central de automatización del hogar.
 / * * Código adaptado para HAI (automatización del hogar con inteligencia) por Buddy Crotty * * Envía datos a través de solicitudes HTTP GET a su servidor HAI * * La conectividad se realiza a través de una conexión en serie de software a un ESP8266 WiFi * interfaz ya configurada para conectarse a su WLAN, * pero puede descomentar la configuración de WiFi para restablecer SSID / contraseña * * / const char * host ="192.168.1.80"; // IP interna de Home Automation Webserverconst char * devID ="downstairs"; // ID de dispositivo (palabra única, sin espacios, sin caracteres especiales) #include  SoftwareSerial ser (10, 11); // (RX, TX) // Serie de software para controlar el módulo ESP8266 // Serie de hardware para debugginglong utime =300000; // Tiempo entre actualizaciones // 900000 =15 minutos (para batería / energía solar) // 300000 =5 minutos (para energía de CA) // 5000 =5 segundos (para prueba) // Debe ser más largo que 10000 para ESP8266 para salir del modo de suspensión (modo de batería) // Sensor de temperatura y humedad # incluye  #define DHTPIN 2 // Pin para sensor de temperatura / humedad # define DHTTYPE DHT22 // DHT11, DHT22 (AM2302 o DHT21 (AM2301 ) DHT dht (DHTPIN, DHTTYPE); void setup () {Serial.begin (9600); ser.begin (9600); //ser.listen (); / * // Descomentar para restablecer la configuración de WiFi delay (1000); ser.println ("AT + CWMODE =1"); ser.println ("AT + CWJAP =\" SSID \ ", \" Contraseña \ ""); * / ser.println ("AT + RST"); / / Restablecer ESP8266 desde que se restableció arduino delay (10); dht.begin (); // Iniciar DHT Serial.println ("Dando a todo la oportunidad de calentarse"); // esperar 25 segundos para que WiFi se conecte Serial.println ( "| ------------------------- |"); Serial.print ("|"); para (int x =0; x <25; x ++) {Serial.print ("#"); delay (1000);} Serial.println ("|"); Serial.println ("Listo");} float t =0; int h =0; float hi =0; bucle vacío () {Serial.println (); // Temperatura y humedad float t =dht.readTemperature (true); int h =dht.readHumidity (); float hi =dht.computeHeatIndex (t, h); // Los valores de salida se envían a ThingSpeak Serial.print ("Temperature:"); Serial.print (t); Serial.print ("* F \ t"); Serial.print ("Índice de calor:"); Serial.print (hola); Serial.println ("* F"); Serial.print ("Humedad:"); Serial.print (h); Serial.println ("% \ t"); Serial.print ("... conectando a"); Serial.println (host); // Cadena de conexión TCP cmd ="AT + CIPSTART =\" TCP \ ", \" "; cmd + =host; cmd + =" \ ", 80"; ser.println (cmd); retraso (1000); if (ser.find ("Error")) {Serial.println ("Error AT + CIPSTART"); regreso; } else {} // preparar GET string String getStr ="GET /tempupdate.php?ID="; getStr + =devID; getStr + ="&campo1 ="; // Temp getStr + =t; getStr + ="&campo2 ="; // Humedad getStr + =h; getStr + ="&campo3 ="; // Índice de calor getStr + =hi; getStr + ="\ r \ n \ r \ n"; Serial.print ("URL de envío de datos:"); Serial.println (getStr); // enviar longitud de datos cmd ="AT + CIPSEND ="; cmd + =Cadena (getStr.length ()); ser.println (cmd); if (ser.find (">")) {ser.print (getStr); Serial.println ("¡Éxito!"); } else {ser.println ("AT + CIPCLOSE"); Serial.println ("Error de conexión"); // alertar al usuario} Serial.print ("Próxima actualización en"); Serial.print (utime / 1000); Serial.println ("segundos"); delay (utime); // espera entre actualizaciones} 
Vent.php PHP
Verifique el estado y anule manualmente la configuración de ventilación.
       
Solo arriba

Toda la casa

Solo en la planta baja

Ventilaciones abiertas actualmente para"; if ($ status ==="0 ") imprime" toda la casa "; if ($ status ===" 1 ") imprime" Sólo abajo "; if ($ status ===" 2 ") imprime" Sólo arriba "; imprime"
"; fclose ($ myfile); if ($ _GET ["zone"] ==""); else {$ myfile =fopen ("vent.txt", "w +") or die ("¡No se puede abrir el archivo!"); if ($ _GET ["zone"]! ="") print "

Enviando comando para abrir ventilaciones para"; if ($ _GET ["zone"] ==="0") print "Toda la casa"; if ($ _GET ["zone"] ==="1") imprimir "Solo abajo"; if ($ _GET ["zone"] ==="2") imprimir "Solo arriba"; imprimir "

"; fwrite ($ miarchivo, $ _GET ['zona']); fclose ($ miarchivo);}?>
Aplicación web para Android LinkIt Smart Vent JSON
Archivo de manifiesto para que Chrome en Android abra el controlador de ventilación como una aplicación web.
 {"name":"LinkIt Smart Vent", "icons":[{"src":"LinkIt_icon_36.png", "tamaños":"36 x 36", "tipo":"imagen / png", "densidad":0,75}, {"src":"LinkIt_icon_48.png", "tamaños":"48 x 48", "tipo":"imagen / png", "densidad":1.0}, {"src":"LinkIt_icon_128.png", "tamaños":"128x128", "tipo":"imagen / png", "densidad":1.0}, {"src":"LinkIt_icon_192 .png "," tamaños ":" 192x192 "," tipo ":" imagen / png "," densidad ":1.0}]," start_url ":" vent.php "," pantalla ":" independiente "," orientación ":" retrato "} 

Esquemas

ATtiny85 o Arduino Nano extrayendo temperaturas de un DHT11 / 22 y WiFi conectado con un ESP8266.

Proceso de manufactura

  1. MÓDULO DE DATOS:pantalla TFT ultraestirada de 23,1 ”con control inteligente
  2. Control de acceso con QR, RFID y verificación de temperatura
  3. Mejor control de calidad con piezas impresas en 3D
  4. El aprovisionamiento inteligente equilibra la IA con HI
  5. Controlar el aceptador de monedas con Arduino
  6. Control remoto de TV a batería con carcasa impresa en 3D
  7. ¡Arduino con Bluetooth para controlar un LED!
  8. Arduino Nano:Controla 2 motores paso a paso con joystick
  9. Controla tu LED con Cortana
  10. GÖPEL mejora el control de calidad en la fabricación de automóviles con Universal Robots
  11. Torno con CNC