Bom dia Pessoal, gostaria de compartilhar meu primeiro projeto com vocês, sou totalmente leigo em eletrônica e até o momento era (ou ainda sou) em Arduino.

Enfim a necessidade:

Refrigerar uma sala onde ficam os servidores da minha empresa, nessa sala tenho um Ar Cond. de 30.000 btus Carrier, preciso que ele ligue aos finais de semana, pois no calor o nosso server HP Proliant quase frita, mas no final de semana fica apenas um Vigilante na empresa e como os servidores ficam na sala dos Diretores então não fornecemos acesso a qualquer pessoa.

O caminho:

Já havia me interessado por Arduino e comecei a pesquisar sobre e decidi meter as caras, comprei um Arduino UNO, receptor IR, emissor IR, eu fui fazer um monte de teste. Descobrir que ligar um AR Cond. via IR é "quase" impossível, pois as bibliotecas atuais não contemplam esses dispositivos, fiz teste de tudo quanto foi jeito e sem sucesso. Decidi que ia fazer isso de forma manual mesmo, ligando o AR Cond. através do botão "AUTO/COLL" que existe internamente na evaporadora, isso claro implica em alguns limites, por exemplo a temperatura no AUTO é sempre de 24 Graus e a Carrier não fornece informações sobre como alterar.

A Solução:

Feito toda a Skecth e testando em uma LED dai então resolvi que era hora de por a mão na massa e fazer a coisa acontecer, decidi soldar dois fios no botão da Evaporadora para que a porta digital 12 do Arduino para ser a ponte:

Antes eu usei o multímetro para ver qual era a corrente passava no botão (5V), ainda fiz teste jampeando para ver se realmente ia funcionar.

Agora seguem as fotos , esquemas e Sketch do projeto, sintam-se a vontade para dar dicas, informações informar sobre correções e etc.

Prototipo:

Acabado:

Coloquei uma chave para desligar no caso de Verão ou uso através do controle remoto e alimentação através de fonte de 5V / 1A

Decidi usar o Garagino, por que é Ótimo custo Beneficio, e tamanho excelente.

Sketch:

// SKECTH PARA QUEM TEM PROBLEMA DE CONTROLE DE AR CONDICINADO, //DESSA FORMA TEM QUE SER ACIONADO MANUALMENTE
// COMO ALGUNS AC TEM O BOTAO MANUAL , É SÓ SOLDAR O O PINO 12 E O //GND NO BOTAO DE ACIONAMENTO MANUAL
// É BEM BÁSICO SERVE PARA SALAS DE SERVIDOR.
// QUALQUER DUVIDA MEU EMAIL É michaeltamoio@gmail.com


int pinoSensor = 0; //pino que está ligado o terminal central do LM35 (porta analogica 0)
int valorLido = 0; //valor lido na entrada analogica
float temperatura = 0; //valorLido convertido para temperatura

void setup() { // INICIA SETUP DO SKETCH
pinMode(12, OUTPUT); // SETANDO PINO DIG 12 COMO OUTPUT
digitalWrite(12, LOW); // INICIA DESLIGANDO O PINO 12
Serial.begin(9600); // INICIA COMUNICACAO SERIAL
}


void loop() { // ###$$$ INICIA O LOOP $$$##

retornaAcima:
// 1.A #### LENDO A TEMPERATURA E CONVERTENDO #####
valorLido = analogRead(pinoSensor);
temperatura = (valorLido * 0.00488); // (5V / 1023) = 0.00488 (precisão do A/D) OBS: USANDO LM35
temperatura = temperatura * 100; //Converte milivolts para graus celcius, lembrando que a cada 10mV equivalem a 1 grau celcius
Serial.print("Temperatura atual: ");
Serial.print(temperatura);
Serial.println(" C");
// 1.A FIM


if(temperatura >26){ // TESTA A TEMP SE ESTIVER MAIOR QUE 26 ACIONA PINO DIG 12 PARA PULSAR O BOTAO DO AR
digitalWrite(12,HIGH); // ACIONA O PINO DIG 12
delay(100); // AGUARDA TEMPO EM MILISEG PARA DESLIGAR
digitalWrite(12,LOW); // DESACIONA O PINO DIG 12
Serial.println("TEMP. ACIMA DE 26c. LIGANDO AC !!!"); // ESCREVE NO MONITOR A ACAO
delay(600000); // AGUARDA 10 MIN.
goto retornaAcima; // RETORNA AO LABEL "retornaAcima"
}else if(temperatura >25){ // FAZ O TESTE PARA O RESTANTE DAS TEMPERATURAS ATÉ A TEMPERATURA DE CONFORTO
Serial.println("AINDA EM 25c.");
delay(600000);
goto retornaAcima;
}else if(temperatura >=24){
Serial.println("AINDA ACIMA DE 24c.");
delay(600000);
goto retornaAcima;
}else if(temperatura < 24){ // SE A TEMP FOR MENOR QUE 24c. INICIA SEQUENCIA PARA DESLIGAR AC
digitalWrite(12,HIGH);
delay(100);
digitalWrite(12,LOW);
delay(1000);
digitalWrite(12,HIGH);
delay(100);
digitalWrite(12,LOW);
Serial.println("TEMP. ABAIXO DE 24c. DESLIGANDO AC !!!");
delay(600000);
} // FINAL DOS IF PARA AC LIGADO



retornaAbaixo:

// 1.A #### LENDO A TEMPERATURA E CONVERTENDO #####
valorLido = analogRead(pinoSensor);
temperatura = (valorLido * 0.00488); // 5V / 1023 = 0.00488 (precisão do A/D)
temperatura = temperatura * 100; //Converte milivolts para graus celcius, lembrando que a cada 10mV equivalem a 1 grau celcius
Serial.print("Temperatura atual: ");
Serial.print(temperatura);
Serial.println(" C");
// 1.A FIM

if(temperatura < 24){ // SE A TEMP AINDA FOR MENOR QUE 24c. FICA NESSE LOOP ATÉ SUBIR
Serial.println("TEMP. ABAIXO DE 24c.");
delay(600000);
goto retornaAbaixo;
}

delay(600000); // ESPERA MAIS 10 MINUTOS PARA TESTAR TUDO DENOVO

} // ###$$$ ENCERRA LOOP $$$###

Basicamente o que a Sketch faz é a cada 10 Minutos ela lê o LM35 converte a temperatura e liga ou desligar o ACond. Se a sala estiver com a temperatura maior que 26 graus ele liga o ar, e quando baixar de 24 graus desliga.

A Sketch, é bem amadora, eu fiz juntando alguns codigos prontos, acrescentei mais alguns linhas, tendo em vista que conheço de programação PHP, então fui adicionando linhas que entendia que precisava

Vou continuar tentando aperfeiçoar esse projeto, talvez transmitindo a informação de ligar e desligar via RF433 Mghz (preciso estudar um pouco mais) mas se alguém tiver também alguma ideia seria bem vinda.

Galera é isso, agradeço a loja do Lab de Garagem que me ajudou tirando algumas duvidas.

Grande Abraço

Exibições: 1835

Anexos

Responder esta

Respostas a este tópico

Bom dia Michael, então, também estou começando no arduino e meu projeto é para fazer a automação da minha casa.
Depois de muito custo, eu consegui pegar os códigos RAW e consegui fazer funcionar via IR o meu ar condicionado.

Se quiser, posso te passar o sketch que usei para obter os dados RAW e o sketch que usei para enviar os dados para ligar e controlar o ar.

Osmar boa tarde, chefe eu também consegui, seria legal mandar o sketch de enviar os dados para o Ar, para eu e outros colegas pudessemos aprender um pouco mais sobre como fazê lo.

Agradeço a colaboração

Grande abraço.

Desculpe a demora....então.....o sketch é simples, tá na mão

#include <IRremote.h>

// Botao ligar, MODO AUTO, Temperatura 23, FAN BAIXO
unsigned int on23[343] = {9160,4492,760,1472,740,1492,696,436,652,472,636,480,624,492,616,500,596,1644,588,536,564,1668,552,1684,540,584,520,596,520,596,520,596,524,596,520,1712,524,1708,516,1720,512,604,520,596,516,600,520,596,512,608,520,596,516,1712,524,596,520,596,520,1712,524,592,520,1708,524,600,524,592,516,600,520,596,520,596,524,592,512,604,516,596,520,604,516,600,520,592,520,596,524,592,524,592,516,600,528,588,520,592,532,8312,532,592,524,592,520,596,524,592,520,596,532,584,524,592,524,1712,524,592,516,1716,524,1708,524,596,520,592,520,596,520,596,524,596,520,596,524,592,528,588,528,588,524,592,520,596,520,596,520,600,520,596,524,592,524,592,516,600,512,600,520,596,528,588,524,596,524,592,524,592,524,592,520,596,520,596,524,592,520,596,520,600,528,588,528,588,520,596,516,600,516,596,524,592,520,596,528,596,520,596,524,588,520,596,524,592,524,592,520,596,524,592,516,604,524,1704,532,1704,520,596,528,588,524,1704,520,600,524,1704,532,1700,524,8328,524,596,524,592,516,600,520,596,528,588,516,600,520,596,520,600,520,1708,524,596,524,592,520,596,516,600,520,592,520,596,524,600,516,600,524,588,524,592,520,596,520,596,516,600,516,600,516,604,520,596,520,596,520,596,520,596,516,600,520,592,528,588,524,596,524,592,524,592,524,592,520,596,520,596,520,596,516,600,524,596,524,592,520,596,520,596,528,588,520,596,524,592,516,600,520,600,516,1712,520,600,524,592,516,600,524,592,512,600,520,596,528,588,520,};

// trocar de 23 para 24
unsigned int on23_24[343] = {9052,4640,612,1620,600,1632,584,552,552,564,536,580,528,588,516,604,512,1724,512,604,516,1716,512,1720,512,604,512,604,512,604,516,600,516,604,512,1720,512,1720,512,604,512,604,512,604,512,604,512,604,516,604,508,608,512,1716,520,596,520,596,520,596,516,1716,516,1716,524,600,512,604,516,596,516,600,516,600,516,600,512,604,520,596,516,604,516,600,520,596,512,604,512,604,512,600,516,600,516,600,512,604,516,8332,520,600,512,600,524,592,520,596,516,600,516,600,516,600,516,1720,512,604,512,1720,520,596,520,1712,520,1712,520,1712,520,600,516,604,516,600,516,596,524,596,512,604,512,600,516,600,516,600,520,600,524,592,516,600,516,600,512,604,516,600,512,600,516,600,516,608,520,592,520,596,516,600,520,596,520,596,516,600,516,600,516,604,512,604,516,600,520,596,512,600,524,592,516,600,516,600,516,604,516,600,516,600,520,596,516,600,516,600,516,600,512,600,520,604,512,1716,520,1716,516,600,520,1712,516,1716,516,600,516,1716,512,1720,520,8328,520,600,512,604,516,596,516,600,520,596,516,600,516,600,516,604,520,596,520,1712,516,600,512,604,512,604,516,600,516,596,528,596,512,604,516,596,512,604,520,596,524,592,512,604,512,604,516,604,516,600,516,600,516,600,516,604,512,596,516,600,520,596,516,604,524,592,520,596,520,596,520,596,520,596,516,600,520,596,516,604,512,604,512,604,516,600,516,600,512,600,516,600,512,604,512,608,516,600,512,1720,516,600,520,596,516,600,520,596,512,604,516,596,532,};

// trocar de 24 para 25
unsigned int on24_25[343] = {9004,4672,580,1656,564,1680,544,576,528,588,520,596,520,600,512,600,520,1720,516,600,512,1720,516,1716,512,604,516,596,524,596,512,600,520,604,516,1716,520,1712,516,600,508,608,512,604,516,596,520,596,516,604,516,600,516,1716,520,596,520,596,516,1716,524,1708,524,1712,516,604,520,596,524,592,512,600,520,596,524,592,516,600,516,600,516,604,516,600,512,604,520,596,528,588,512,604,516,600,512,600,524,592,516,8336,520,1712,516,600,516,600,516,596,520,596,520,596,516,600,520,1720,516,600,512,1720,520,592,520,596,520,1716,516,1716,516,600,520,600,516,600,512,604,520,596,520,592,520,596,516,600,516,600,516,604,516,600,516,600,520,596,520,596,520,596,512,604,520,592,524,600,520,592,524,592,524,592,520,596,524,592,520,596,516,600,520,600,516,600,524,592,516,600,520,592,524,592,520,596,520,596,516,608,516,600,516,596,516,600,520,596,520,596,516,600,516,596,524,600,528,588,520,1712,528,588,524,592,516,600,512,600,516,1716,520,1716,520,8328,524,592,516,600,516,600,520,600,512,600,516,600,516,596,516,608,520,592,520,1716,524,588,520,600,516,596,516,600,520,596,516,604,520,596,520,596,520,596,516,600,516,600,520,596,520,596,512,608,516,600,508,608,520,592,516,600,520,596,520,596,524,592,516,604,516,600,516,600,516,600,516,600,520,592,520,596,520,596,516,608,516,596,520,596,524,592,520,596,516,600,516,600,524,592,512,608,520,596,524,1708,520,596,512,604,520,596,516,596,524,592,520,596,528,};

// trocar de 25 para 26
unsigned int on25_26[343] = {9008,4668,584,1656,564,1676,548,572,528,588,528,588,520,596,520,596,512,1728,512,600,520,1716,512,1720,516,600,512,604,516,600,512,600,516,608,512,1720,516,1716,516,600,512,604,520,592,524,592,516,600,516,604,520,596,520,1716,520,592,524,592,516,600,516,600,520,596,520,1716,520,596,528,588,520,596,516,600,520,596,520,596,516,600,512,608,524,588,520,596,524,592,524,592,524,592,516,600,512,604,520,592,524,8328,528,1704,520,596,516,600,516,600,516,600,524,592,516,600,512,1724,520,596,516,600,516,1716,520,596,516,1716,528,1704,516,600,520,600,520,596,524,592,516,600,520,596,524,592,516,600,516,596,524,600,516,600,512,600,520,596,520,596,516,600,528,588,524,592,516,604,512,604,516,600,516,600,516,600,516,596,520,596,520,596,520,600,520,596,520,596,520,596,520,596,516,600,516,600,520,596,516,604,516,600,516,600,516,596,524,592,524,592,520,596,520,596,520,600,520,596,520,596,520,1712,520,596,528,1704,516,1716,520,596,524,592,528,8320,528,588,524,592,520,596,516,600,528,588,508,608,512,604,520,600,524,592,520,1712,520,596,512,604,516,600,520,596,516,596,516,608,516,596,524,592,524,592,520,596,516,600,516,600,512,604,520,600,516,600,520,596,520,596,516,596,516,600,516,600,520,596,516,604,520,596,524,592,512,604,516,600,520,596,520,596,516,596,520,604,520,596,512,604,524,588,520,596,520,596,516,600,516,600,528,592,520,596,520,1712,520,596,520,596,516,600,512,604,516,596,528,588,532,};

// trocar de 26 para 27
unsigned int on26_27[343] = {9048,4644,608,1628,588,1648,572,560,540,576,536,580,520,596,516,600,516,1720,512,604,516,1716,516,1716,516,600,516,600,524,592,516,600,516,604,516,1716,516,1716,524,592,516,600,520,596,516,600,520,596,512,608,516,600,516,1716,520,596,512,604,516,1716,516,600,520,596,512,1724,520,596,516,600,520,596,516,600,516,600,516,600,512,600,520,604,516,600,516,596,520,596,516,600,516,600,516,600,516,600,520,592,520,8332,520,1712,516,600,516,600,520,596,516,600,512,604,520,596,516,1720,516,600,516,1716,520,1712,516,600,520,1712,524,1708,520,596,520,600,520,596,520,596,516,600,516,600,516,600,516,600,520,596,516,604,512,604,512,604,524,592,516,596,520,600,512,600,520,596,516,608,516,596,520,596,520,596,512,604,516,600,520,596,516,596,516,608,516,600,520,596,516,596,524,592,516,600,516,600,520,596,516,604,516,600,520,596,520,596,520,596,516,596,520,596,520,596,516,608,516,596,524,1708,520,1712,524,592,520,596,524,1708,524,592,520,596,516,8332,524,596,520,596,516,596,520,596,516,600,516,600,520,596,516,604,520,596,512,1720,520,596,516,600,516,600,520,596,516,600,516,604,516,600,520,596,516,600,520,592,520,596,520,596,520,596,516,604,524,592,524,592,512,604,516,600,516,600,516,600,520,596,516,604,516,600,516,596,520,596,524,592,524,592,520,596,520,596,520,600,516,600,516,600,516,600,516,600,516,596,520,596,524,592,520,604,516,596,524,1708,524,592,516,600,516,600,516,600,516,600,516,596,532,};

// desligar
unsigned int off_ar[343] = {9032,4644,616,1616,592,1640,580,544,568,560,540,576,532,584,520,596,516,1724,524,592,516,1716,512,1720,516,600,516,600,512,604,516,600,516,604,516,1716,516,1716,520,1712,520,596,516,600,516,600,520,596,516,604,516,600,516,1716,516,600,520,596,520,1712,516,600,520,596,516,1720,516,600,512,604,512,604,520,592,528,588,520,596,520,596,516,604,520,600,512,600,516,600,516,600,520,596,516,600,516,600,520,592,524,8328,524,592,520,1712,512,604,520,596,516,600,516,596,524,592,524,1716,520,596,520,592,520,1716,516,596,520,596,524,592,520,596,520,600,520,596,516,600,520,596,516,600,516,600,516,600,516,600,516,604,516,600,528,584,524,592,524,592,516,600,520,596,520,596,516,604,516,600,520,596,524,592,520,596,516,596,528,588,520,596,516,608,520,592,528,588,524,592,524,592,512,604,516,600,516,600,516,604,512,604,516,600,520,596,520,592,520,596,516,600,520,596,520,600,524,1708,528,1704,524,592,524,592,520,1712,528,588,520,596,520,592,516,8336,528,588,520,596,512,604,512,604,512,604,520,596,516,600,516,604,520,1712,512,604,512,604,516,600,520,592,520,596,516,600,520,600,524,592,520,596,520,596,512,604,516,600,520,596,520,596,520,600,520,596,516,596,520,596,520,596,520,596,516,600,520,596,516,604,524,592,520,596,524,592,520,596,520,592,524,592,516,600,524,600,512,600,516,600,516,600,516,600,520,596,520,596,520,596,520,600,524,1708,520,596,520,596,524,592,520,596,520,592,520,596,520,596,532,};

// ligar vetilador
unsigned int on_vent[343] = {9044,4648,600,1632,588,1644,572,564,544,576,528,588,520,596,520,596,516,1720,516,600,516,1716,516,1716,516,600,512,604,512,604,512,604,512,608,516,1716,516,600,508,1720,520,600,512,604,516,600,512,600,520,604,516,596,516,600,520,1712,520,596,516,1716,520,1712,520,1712,516,608,520,596,516,600,512,600,516,600,520,596,520,596,520,596,516,604,520,596,520,596,516,600,512,604,520,592,516,600,516,600,516,600,520,8328,524,592,516,1716,520,596,520,596,516,600,516,600,520,596,512,1724,516,600,516,1716,520,596,520,1712,516,600,516,600,516,600,516,604,516,600,516,600,516,596,520,596,516,600,516,600,520,596,516,604,520,596,516,600,512,604,516,600,516,600,512,604,512,600,520,604,516,596,516,600,520,596,520,596,520,596,520,596,520,592,524,600,516,600,516,600,512,600,516,604,512,600,520,596,520,596,516,604,520,596,516,600,520,596,516,600,512,600,516,600,516,600,516,604,520,1712,524,592,520,596,516,1716,520,1712,520,1712,520,1712,520,1712,520,8332,520,596,520,596,512,604,516,600,516,600,516,596,516,600,516,604,524,1708,520,596,516,600,516,600,512,604,520,596,516,600,520,600,516,600,520,596,516,600,512,600,516,600,520,596,516,600,516,604,516,600,520,596,516,600,520,596,516,600,520,592,516,600,520,604,516,600,516,596,516,600,516,600,516,600,516,600,512,604,512,608,508,608,512,604,516,596,516,600,516,600,516,600,512,604,520,600,516,1716,516,600,516,600,520,596,516,600,516,596,520,596,516,600,524,};

IRsend irsend;

void setup()
{
Serial.begin(9600);
}

void loop() {
if(Serial.available() > 0){

char valor = Serial.read();

if(valor == 'q'){
irsend.sendRaw(on23,343,38);
Serial.println("Liga - Temp: 23");
delay(40);//orginal 40
}
if(valor == 'w'){
irsend.sendRaw(on23_24,343,38);
Serial.println("24");
delay(40);//orginal 40

}
if(valor == 'e'){
irsend.sendRaw(on24_25,343,38);
Serial.println("25");
delay(40);//orginal 40

}
if(valor == 'r'){
irsend.sendRaw(on25_26,343,38);
Serial.println("26");
delay(40);//orginal 40

}
if(valor == 't'){
irsend.sendRaw(on26_27,343,38);
Serial.println("27");
delay(40);//orginal 40

}
if(valor == 'y'){
irsend.sendRaw(off_ar,343,38);
Serial.println("off");
delay(40);//orginal 40

}
if(valor == 'u'){
irsend.sendRaw(on_vent,343,38);
Serial.println("ventilador");
delay(40);//orginal 40
}
}
}

o problema agora que eu estou enfrentando é juntar o comando no sketch principal onde tenho uma placa de automação com 10 reles, contatos secos e mais umas coisas + ethernet shield.....


quando junto os comandos do ar condicionado, ele para de receber os comandos via serial.....

Olá, estou tendo problemas com ar da midea, pode me informar o código usado para leitura dos controles e o código para envio ?

Lucas Bom dia, 

Cara seguinte para pegar o código, é só usar o Sketch IRrecvDump que vem na Biblioteca IRremote, que pode ser pego na net ou mesmo aqui no site da LdG. Dai esse nesse post aqui tem todas as informações para pegar e como usar,, da uma olhada na pagina 2 o Alex Barbosa, ensinou como configurar a biblioteca e pra mim aqui funcionou.

Qualquer duvida vai postando aqui que eu tento ajudar dentro do meu conhecimento ou a galera vai ajudando. 

Abraço

Eu tbm sou novo em arduino mais me corrija se estiver errado seu ar já tem controle certo? se tiver! vc pode usar um emissor ir e um sensor de temperatura, assim vc clona o controle do ar, quando o ambiente estiver muito quente o arduino juntamente com o emissor ir aciona o ar e em seguida aciona o modo auto do ar, se o ambiente esfriar desliga o ar, é uma teoria possível  ou eu viajei aqui hehe abs

Fala pessoal, 

Seguinte já atualizei esse projeto ai:

http://labdegaragem.com/forum/topics/2o-projeto-arduino

Abraço

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço