Hola.
Vengo aquí desde el hilo de domótica para dejar un ejemplo de la ñapa que he hecho con Arduino para emular un mando a distancia de split de Aire Acondicionado Daikin.
Está basado en una líbrería que realiza el protocolo de comunicación con el split. <DYIRDaikin.h>
Luego yo he realizado un par de modificaciones:
1.- Conectar un sensor de humedad/temperatura DHT11 en el pin digital 10 de Arduino.
2.- Añadir un poco de comunicación serie (puerto USB) para enviar comandos a Arduino desde un sistema externo (podría ser una Raspberri) En total se pasan 5 parámetros separados por comas, como se explica en el apartado "Modo de Uso".
Por ejemplo: enviando "0,0,0,0,18" lo apagamos y enviando "1,0,3,4,23" se enciende como bomba de calor, con el ventilador a tope y una temperatura objetivo de23 grados.
********************************************************************************************************
#include "DHT.h"
#include <DYIRDaikin.h>
#define DHTPIN 10 // what digital pin we're connected to
#define DHTTYPE DHT11 // DHT 11
DYIRDaikin irdaikin;
int isOn;
int swing;
int mode;
int fan;
int temp;
char entrada[11];
byte leido;
DHT dht(DHTPIN, DHTTYPE);
int counter;
//-- Modo de uso: power,swing,mode,fan,temp
//-- power: 0 --> OFF 1 --> ON
//-- swing: 0 --> OFF, 1 --> ON
//-- mode: 0 FAN, 1 COOL, 2 DRY, 3 HEAT,4 AUTO
//-- fan: 0~4 SPEED,5 AUTO,6 MOON
//-- temp: 18 ~ 33
void setup()
{
counter = 11; // Tramas a filtrar: counter * 5 segs = 60 segundos. Modificar tambien en el bucle loop
Serial.begin(115200);
irdaikin.begin(11);
dht.begin();
irdaikin.off();
irdaikin.setSwing_off();// Turn Off
irdaikin.setMode(0);// MODE to FAN
irdaikin.setFan(6);//FAN speed to MOON
irdaikin.setTemp(20);//Temp to 20
//----everything is ok and to execute send command-----
irdaikin.sendCommand();
}
void loop() {
if (Serial.available() > 0) {
leido = Serial.readBytesUntil('\n', entrada, 11);
// read string of parameters from serial stream
if ( (leido >= 10) && (entrada[1] == ',') && (entrada[3] == ',') && (entrada[5] == ',') && (entrada[7] == ',') ) {
isOn = entrada[0] - 48;
swing = entrada[2] - 48;
mode = entrada[4] - 48;
fan = entrada[6] - 48;
temp = ( entrada[8] - 48 ) * 10 + ( entrada[9] - 48 );
if (isOn == 0){
irdaikin.off();
}else{
irdaikin.on();
}
if (swing == 0){
irdaikin.setSwing_off();
}else{
irdaikin.setSwing_on();
}
irdaikin.setMode(mode);
irdaikin.setFan(fan);
irdaikin.setTemp(temp);
irdaikin.sendCommand();
}
}else{
delay(5000);
if (counter == 0){
counter = 11; // Tramas a filtrar: counter * 5 segs = 60 segundos.
char h[6],t[2];
float hum = dht.readHumidity();
float temp = dht.readTemperature();
dtostrf(hum,2,0,h);
dtostrf(temp,2,0,t);
// float hic = dht.computeHeatIndex(temp, hum, false);
Serial.print("Humedad:");
Serial.print(h);
Serial.print(",");
Serial.print("Temperatura:");
Serial.print(t);
// Serial.print(",");
// Serial.print("Indice:");
// Serial.print(hic);
Serial.println("");
} else {
counter = counter - 1;
}
}
}
*******************************************************************************************************************
Por último, hay que hacer un pequeño circuito electrónico como se explica en este esquema. Sólo hacen falta dos resistencias, un transistor y un led. Por mi experiencia, interesa que haya visión directa entre el led emisor y el split y no más de 4-5 metros de distancia. Yo tengo el led oculto detrás de uno de los altavoces del HiFi, apuntando al split.
Si alguien se anima, soy todo oídos.
Saludos.