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

Integra tu calefacción central con Arduino para control inteligente

Componentes y suministros

Arduino UNO × 1
Shield Arduino OpenTherm × 1
Fuente de alimentación 24V × 1

Sobre este proyecto

¿Alguna vez te has preguntado cuándo y por qué tu caldera está funcionando y calentando tu hogar? ¿Quieres automatizar tu sistema de calefacción con Arduino? El shield OpenTherm está diseñado para ti. Te permitirá monitorear y controlar tu caldera OpenTherm con Arduino.

Antecedentes

El año pasado quise combinar mi caldera de gas con un regulador de chimenea. Mi caldera BAXI y termostato son bastante inteligentes, así que quería naturalmente extender la caldera para controlar la chimenea también. Estaba harto de todas esas extensiones oficiales caras de BAXI que me permitirían hacerlo.

Así que construí yo mismo una pasarela OpenTherm que me permitió interceptar la comunicación entre el termostato y la caldera y colocar un algoritmo que dispararía la caldera o usaría el calor de la chimenea - [más sobre el regulador].

Como había mucha gente que quería algo similar, decidí crear un módulo - shield de Arduino - que permitiera a cualquiera controlar muy fácilmente la calefacción de su casa.

¿Para qué sirve el shield?

Datos y comandos disponibles

* Nota: estos solo están disponibles si tu caldera está equipada con los accesorios necesarios

Construyendo el shield

El circuito electrónico está basado en el proyecto OpenTherm gateway que usa microcontrolador PIC. Lo adapté para Arduino y creé un diseño compatible con Arduino UNO.

Puedes usar el esquema anterior y los archivos Gerber para crear el shield por tu cuenta. Yo fabrico mis placas con PCBWay - Prototipos PCB de forma fácil. Puedes hacer que creen y envíen estas hermosas placas azules en solo una semana. La máscara de soldadura azul cuesta lo mismo que la verde básica. También me encanta su servicio al cliente, nada es un problema. O puedes pedir un kit DIY preempaquetado.

Usando el shield para crear un termostato

El primer ejemplo te mostrará cómo usar el shield para crear tu propio termostato personalizado. Lo que necesitas:

Conecta tu caldera con el shield OpenTherm de Arduino como se muestra en la imagen de arriba, coloca el shield en tu Arduino y puedes empezar a programar. La biblioteca Arduino OpenTherm IO contiene el siguiente ejemplo para mostrarte cómo comunicarte con la caldera.

void loop() {
  if (OPENTHERM::isIdle()) {
    message.type = OT_MSGTYPE_READ_DATA;
    message.id = OT_MSGID_SLAVE_CONFIG;
    message.valueHB = 0;
    message.valueLB = 0;
    Serial.print("-> ");
    OPENTHERM::printToSerial(message);
    Serial.println();
    OPENTHERM::send(BOILER_OUT, message); // enviar mensaje a la caldera
  } else if (OPENTHERM::isSent()) {
    OPENTHERM::listen(BOILER_IN, 800); // esperar respuesta de la caldera
  } else if (OPENTHERM::getMessage(message)) {
    // la caldera respondió
    OPENTHERM::stop();
    Serial.print("<- ");
    OPENTHERM::printToSerial(message);
    Serial.println();
    Serial.println();
    delay(100); // retraso mínimo antes de la siguiente comunicación
  } else if (OPENTHERM::isError()) {
    OPENTHERM::stop();
    Serial.println("<- Timeout");
    Serial.println();
  }
}

Primero, verifica si no hay ningún comando pendiente con OPENTHERM::isIdle. Si no, puedes enviar el siguiente. En este ejemplo, solicitas las banderas de configuración del esclavo. Si el comando se envió correctamente, tienes que empezar a escuchar una respuesta de la caldera con la llamada OPENTHERM::listen. El método OPENTHERM::getMessage devolverá true tan pronto como haya una respuesta pendiente del esclavo y si algo salió mal o ocurrió un timeout, el método OPENTHERM::isError devuelve true. La biblioteca contiene la estructura de mensaje OpenTherm que contiene datos decodificados del protocolo, así que no necesitas preocuparte por los formatos. Revisa el código fuente, está bien documentado. Todos los tipos de mensajes están listados en las constantes o puedes consultar la documentación de OpenTherm.

struct OpenthermData {
  byte type;
  byte id;
  byte valueHB;
  byte valueLB;
  float f88();
  void f88(float value);
  uint16_t u16();
  void u16(uint16_t value);
  int16_t s16();
  void s16(int16_t value);
}

Usando el shield para crear un monitor, pasarela o regulador

El segundo ejemplo te mostrará cómo adjuntar un dispositivo intermediario al bus OpenTherm para monitorear la caldera y el termostato o interceptar su comunicación. Lo que necesitas:

Conecta el shield en el bus entre la caldera y el termostato como se muestra en la imagen de arriba. Puedes ver que interrumpe el bus entre estos dos dispositivos. Ahora tu comunicación está rota a menos que subas un software de pasarela a tu Arduino que reenvíe comandos y respuestas del termostato a la caldera y viceversa. De nuevo hay un excelente ejemplo en la biblioteca Arduino OpenTherm IO.

void loop() {
  if (mode == MODE_LISTEN_MASTER) {
    if (OPENTHERM::isSent() || OPENTHERM::isIdle() || OPENTHERM::isError()) {
      OPENTHERM::listen(THERMOSTAT_IN);
    } else if (OPENTHERM::getMessage(message)) {
      Serial.print("-> ");
      OPENTHERM::printToSerial(message);
      Serial.println();
      OPENTHERM::send(BOILER_OUT, message); // reenviar mensaje a la caldera
      mode = MODE_LISTEN_SLAVE;
    }
  } else if (mode == MODE_LISTEN_SLAVE) {
    if (OPENTHERM::isSent()) {
      OPENTHERM::listen(BOILER_IN, 800); // la respuesta debe enviarse en 800ms
    } else if (OPENTHERM::getMessage(message)) {
      Serial.print("<- ");
      OPENTHERM::printToSerial(message);
      Serial.println();
      Serial.println();
      OPENTHERM::send(THERMOSTAT_OUT, message); // enviar mensaje de vuelta al termostato
      mode = MODE_LISTEN_MASTER;
    } else if (OPENTHERM::isError()) {
      mode = MODE_LISTEN_MASTER;
      Serial.println("<- Timeout");
      Serial.println();
    }
  }
}

La pasarela simplemente empieza a escuchar los comandos del termostato. Si se detecta una solicitud, la analizará y la reenviará a la caldera. La pasarela ahora empezará a escuchar la respuesta de la caldera. Si se recibe una respuesta en 800ms, la pasarela reenviará la respuesta de vuelta al termostato. Tanto el termostato como la caldera nunca sabrán que hay algo extra entre ellos. Como puedes ver, hay mucho espacio para escribir tu propio código que pueda capturar los mensajes y leer información útil de ellos (estado, temperaturas, presión, estadísticas,...). Incluso puedes anular o desechar solicitudes o respuestas que no te gusten.

Como puedes ver, es realmente fácil comunicarse con tu sistema de calefacción inteligente y hacerlo aún más inteligente. En el próximo artículo te mostraré un uso más práctico de este hardware en mi regulador OpenTherm.

Código

Biblioteca Opentherm IO para Arduino

https://github.com/jpraus/arduino-opentherm

Esquemas

Diagrama esquemático del shield OpenTherm.

Proceso de manufactura

  1. Monitorización de caldera de calefacción central con Raspberry Pi – Hardware, software y guía de configuración
  2. Construya una Red de Sensores Inalámbrica Económica para su Hogar
  3. Conecte un Sensor de Gas TGS2600 a Raspberry Pi para Detección de Gases Nocivos
  4. Construya un robot con streaming de vídeo controlado por Internet con Arduino y Raspberry Pi
  5. Controla tu Ventilador de Techo con Alexa: Guía Paso a Paso
  6. Construye un Spybot controlado por Bluetooth con Arduino
  7. FlickMote: Mando IR por gestos para Smart Home
  8. Crear iluminación de marquesina LED dinámica con Arduino Nano y NeoPixels
  9. Monitoriza la Temperatura de tu Hogar desde Cualquier Lugar con Integración Arduino Cloud
  10. Conectar GrabCAD Print a su impresora 3D Stratasys – Guía paso a paso
  11. Maximice Beneficios: Estrategias Comprobadas de Eficiencia en Calefacción por Gasóleo