Bom dia Pessoal,

Estou fazendo meu TCC utilizando Arduino uno + ethernet W5100 + Led's + Reed Switch.

Meu objetivo é controlar os Led's simulando as lâmpadas das residência. Até ai esta OK.
Fiz a conexão com socket e esta controlando as lâmpadas ON/OFF.

Usei esse projeto: http://engenheirando.com/projetos/automacao/

O sensores Reed Switch vai controlar as entradas da residência. Ai que esta o problema.

Não estou conseguindo capturar no Arduino quando a porta esta aberta e passa para o PHP para mostrar que esta aberta ou fechada. Alguém pode me ajudar? Eu ate pago. Preciso resolver isso urgente.

Meu projeto vai controlar os gastos e enviar um SMS caso tiver ativado o alerta. Portas forem aberta!

Ajuda por favor.

Abraco

Exibições: 973

Responder esta

Respostas a este tópico

coloca o irmã na porta... e o reed switch na parede... e faz uma leitura ... se a entrada for HIGH a porta ta fechada se Low esta aberta

Sim ate ai ta tranquilo. Mas comp vou jogar para PHP? Conectei usando socket

eu ainda não trabalho com php mas estava olhando o código ... A pagina web fica atualizando só ou só quando um dos botões a apertado?

Se a pagina se atualizar só.  a minha ideia seria coloca o estado da porta  na array  luz porque ela é enviada para o arquivo php para configura as cores dos butões 

// String que representa o estado dos dispositivos
char Luz[7] = "0000L#";

 onde 

Luz[0] é o estado da luz da sala
Luz[1] é o estado da luz do quarto 1

Luz[2] ......quarto 2

Luz[3] ......sala

o mais fácil é retira o quarto 2 e coloca o estado da porta e no código php coloca porta aberta ou fechada.

no arduino

coloca no loop

//porta é o estado da porta fazendo uma leitura do pino do arduino

if (porta == 1){Luz[2] = 1;} else{Luz[2] = 0}

na parte do codigo


        case 'L':
          // Caso L#, ele copia os 4 bytes anteriores p/ a
          //   string 'Luz' e cada byte representa um
          // dispositivo, onde '1'=ON e '0'=OFF
          Luz[0]=msg[1];
          Luz[1]=msg[2];
          Luz[2]=msg[3]; renover do codigo
          Luz[3]=msg[4];
          if (Luz[0]=='1') digitalWrite(A0,HIGH); else digitalWrite(A0,LOW);
          if (Luz[1]=='1') digitalWrite(A1,HIGH); else digitalWrite(A1,LOW);
          if (Luz[2]=='1') digitalWrite(A2,HIGH); else digitalWrite(A2,LOW) renover do codigo
          if (Luz[3]=='1') digitalWrite(A3,HIGH); else digitalWrite(A3,LOW);
        break;

No PHP

Na Parte

  if ($status[2]=='0') $cor3 = lightcoral;
    else $cor3 = lightgreen;

coloca assim

  if ($status[2]=='0') $cor3 = Porta Aberta;
    else $cor3 = Porta Fechada;

e na parte 

  echo "<button style=\"width:70; background-color: $cor3 ;font: bold 14px Arial\" type = \"Submit\" Name =\"Quarto2\">Quarto2</button></br></br>";

para assim

  echo "$cor3 ;";

/////////////////////////

eu não testei as modificações

 

Amigo, estou testando aqui.

Não sei se fiz algo errado no protoboard mas quando ligo o reed switch na portas digital.
Os LED acende.

Será por que?

Abraço!

coloca o código completo da ide do arduino

Entendi vou testa e falo meu resultado. Brigado

compartilha seu código comigo....estou fazendo uma automação parecida com a sua....????

Assim que chegar em casa compartilho amigo para vocês me ajudarem.


Estou trabalhando...

Skype: Henrique.ricks

Pessoal,

vejam o código.

#include <SPI.h>
#include <Ethernet.h>

//Configurações do Ethernet Shield
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192,168,0, 222 }; // ip que o arduino assumirá
byte gateway[] = { 192,168,0, 1 }; // ip do roteador
byte subnet[] = { 255, 255, 255, 0 };

// String que representa o estado dos dispositivos
char Luz[9] = "000000L#";

EthernetServer server(8081); // Cria o servidor na porta 8081
EthernetClient client;

// String onde é guardada as msgs recebidas
char msg[9] = "000000L#";

//Variavel aponta para a porta Digital do Arduino
int Lampada01 = 6; //SALA
int Lampada02 = 4; //QUARTO
int Lampada03 = 5; //Cozinha
int Lampada04 = 3; //Jantar
int Lampada05 = 2; //Banheiro

int LED = 13;
int REED = 8;

void setup() {
Ethernet.begin(mac, ip, gateway, subnet);
server.begin();
pinMode(Lampada01,OUTPUT);
pinMode(Lampada02,OUTPUT);
pinMode(Lampada03,OUTPUT);
pinMode(Lampada04,OUTPUT);
pinMode(Lampada05,OUTPUT);
pinMode(LED, OUTPUT);
pinMode(REED, INPUT);
}

void loop() {

client = server.available();

// SE receber um caracter...
if (client) {
// guarda o caracter na string 'msg'
msg[1]=msg[2]; msg[2]=msg[3]; msg[3]=msg[4]; msg[4]=msg[5]; msg[5]=msg[6]; msg[6]=msg[7]; msg[7]=msg[8];
msg[8] = client.read();

if (msg[8]=='#') {
switch(msg[7]) {
case 'R':
// Se receber o comando 'R#' envia de volta o status dos
// dispositivos. (Que é a string 'Luz')
client.write(Luz);
break;
case 'L':
// Caso L#, ele copia os 4 bytes anteriores p/ a
// string 'Luz' e cada byte representa um
// dispositivo, onde '1'=ON e '0'=OFF
Luz[0]=msg[1];
Luz[1]=msg[2];
Luz[2]=msg[3];
Luz[3]=msg[4];
Luz[4]=msg[5];
Luz[5]=msg[6];

if (Luz[0]=='1') digitalWrite(Lampada01,HIGH); else digitalWrite(Lampada01,LOW);
if (Luz[1]=='1') digitalWrite(Lampada02,HIGH); else digitalWrite(Lampada02,LOW);
if (Luz[2]=='1') digitalWrite(Lampada03,HIGH); else digitalWrite(Lampada03,LOW);
if (Luz[3]=='1') digitalWrite(Lampada04,HIGH); else digitalWrite(Lampada04,LOW);
if (Luz[4]=='1') digitalWrite(Lampada05,HIGH); else digitalWrite(Lampada05,LOW);
}
}
}

if(digitalRead(REED)){
Ethernet.print("<html>");
Ethernet.print("<head>");
Ethernet.print("<meta HTTP-EQUIV='REFRESH\' content='0; url=http://localhost/websupervisor/home.php?teste=1");
Ethernet.print(webval);
Ethernet.print("></head>");
Ethernet.print("Test");
Ethernet.print("</html>");
} else{

}

}

Se eu conseguir chamar essa url: http://localhost/websupervisor/home.php?teste=1
pelo arduino eu consigo saber se a porta está aberta ou fechada.

Aguardo retorno abraço.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço