Amigos estou com esse projeto bem no inicio...

Com ele eu ja estou acionando a lampada da minha sala via internet e intranet, o projeto foi adapitado do projeto do tuto do site engenheirando.com, ai vem o meu problema....

Estou querendo adicionar ao projeto um LCD 5110 para me dar informações como IP, temperatura, luminosidade, etc... mais não estou conseguindo de forma nenhuma, quando eu passo o meu codigo altera no IDE esta tudo certo, mais quando eu subo o codigo para o Arduino acontece que ou funciona os reles ou funciona o LCD 

AJUDEM AI!!!!!!!!!!

O CODIGO

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

LCD5110 myGLCD(9,10,11,12,13);
extern uint8_t SmallFont[];

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

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

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

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

void setup() {
Ethernet.begin(mac, ip, gateway, subnet);
server.begin();
myGLCD.InitLCD();
myGLCD.setFont(SmallFont);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
pinMode(8,OUTPUT);
pinMode(3,OUTPUT);
pinMode(4,OUTPUT);
}

void loop() {

EthernetClient client = server.available();

myGLCD.clrScr();
myGLCD.print("Homeduino", CENTER, 0);
myGLCD.print("IP:192.168.25.17", RIGHT, 8);
myGLCD.print("Iluminacao", LEFT, 16);
myGLCD.print("Projeto ", LEFT, 24);
myGLCD.print("Por: ", LEFT, 32);
myGLCD.print("KARLOS PEREIRA", LEFT, 40);
delay (5000);

// 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] = client.read();

if (msg[6]=='#') {
switch(msg[5]) {
case 'R':
// Se receber o comando 'R#' envia de volta o status dos
// dispositivos. (Que é a string 'Luz')
client.write(Luz);
break;
case 'P':
// Caso P#, aciona o pino do portão pequeno por 1s.
digitalWrite(3,LOW);
delay(1000);
digitalWrite(3,HIGH);
break;
case 'G':
// Caso G#, aciona o pino do portão pequeno por 1s.
digitalWrite(4,LOW);
delay(1000);
digitalWrite(4,HIGH);
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];
if (Luz[0]=='1') digitalWrite(5,LOW); else digitalWrite(9,HIGH);
if (Luz[1]=='1') digitalWrite(6,LOW); else digitalWrite(10,HIGH);
if (Luz[2]=='1') digitalWrite(7,LOW); else digitalWrite(11,HIGH);
if (Luz[3]=='1') digitalWrite(8,LOW); else digitalWrite(12,HIGH);
break;

}
}
}
}

_________________________________________________________________________

_________________________________________________________________________

O CODIGO PHP

<html>
<head></head>
<body>

<?php
$sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
// Se conecta ao IP e Porta:
socket_connect($sock,"192.168.25.177", 8090);

// Executa a ação correspondente ao botão apertado.
if(isset($_POST['bits'])) {
$msg = $_POST['bits'];
if(isset($_POST['Fora' ])){ if($msg[0]=='1') { $msg[0]='0'; } else { $msg[0]='1'; }}
if(isset($_POST['Quarto1'])){ if($msg[1]=='1') { $msg[1]='0'; } else { $msg[1]='1'; }}
if(isset($_POST['Quarto2'])){ if($msg[2]=='1') { $msg[2]='0'; } else { $msg[2]='1'; }}
if(isset($_POST['Sala' ])){ if($msg[3]=='1') { $msg[3]='0'; } else { $msg[3]='1'; }}
if(isset($_POST['Pequeno'])){ $msg = 'P#'; }
if(isset($_POST['Grande' ])){ $msg = 'G#'; }
socket_write($sock,$msg,strlen($msg));
}

socket_write($sock,'R#',2); //Requisita o status do sistema.

// Espera e lê o status e define a cor dos botões de acordo.
$status = socket_read($sock,6);
if (($status[4]=='L')&&($status[5]=='#')) {
if ($status[0]=='0') $cor1 = 'lightcoral';
else $cor1 = 'lightgreen';
if ($status[1]=='0') $cor2 = 'lightcoral';
else $cor2 = 'lightgreen';
if ($status[2]=='0') $cor3 = 'lightcoral';
else $cor3 = 'lightgreen';
if ($status[3]=='0') $cor4 = 'lightcoral';
else $cor4 = 'lightgreen';

echo "<form method =\"post\" action=\"PaginaPHP.php\">";
echo "<input type=\"hidden\" name=\"bits\" value=\"$status\">";
echo "<button style=\"width:200; background-color: $cor1 ;font: bold 14px Arial\" type = \"Submit\" Name = \"Fora\">Sala</button></br></br>";
echo "<button style=\"width:70; background-color: $cor2 ;font: bold 14px Arial\" type = \"Submit\" Name = \"Quarto1\">Quarto Casal</button></br></br>";
echo "<button style=\"width:70; background-color: $cor3 ;font: bold 14px Arial\" type = \"Submit\" Name = \"Quarto2\">Quarto Solteiro</button></br></br>";
echo "<button style=\"width:70; background-color: $cor4 ;font: bold 14px Arial\" type = \"Submit\" Name = \"Sala\">Cozinha</button></br></br></br>";
echo "<button style=\"width:90;font: bold 14px Arial\" type = \"Submit\" Name = \"Pequeno\">Portao Pequeno</button></br></br>";
echo "<button style=\"width:90;font: bold 14px Arial\" type = \"Submit\" Name = \"Grande\">Portao Grande</button></br></br>";
echo "</form>";
}
// Caso ele não receba o status corretamente, avisa erro.
else { echo "Falha ao receber status da casa."; }
socket_close($sock);
?>

</body>
</html>

______________________________________________________________________________

______________________________________________________________________________

Exibições: 2083

Anexos

Responder esta

Respostas a este tópico

Bom dia Karlos,

Eu terminei ontem um projeto que liga/desliga ar-condicionados por meio de contatores.

Acredito que eu tenha tido o mesmo problema que o seu, ou seja, quando eu ligava os reles que ligavam os contatores, o display LCD simplesmente apagava, mas o código do Arduino continuava rodando.

Eu fiz duas coisas:

1) Liguei em paralelo com as saidas dos reles um filtro composto de 1 capacitor de 0,1 uF x 400V em série com um resistor de 470ohm , o mesmo filtro fornecido com o releshield.

Liguei também esse filtro na saída dos contatores (também em paralelo.

Isso já diminuiu bastante o ruído mas mesmo assim o LCD apagava.

Para contornar o problema do LCD eu simplismente reinicio o LCD doda vez que eu mostro algum coisa.

No meu caso é o LCD 16x2 mas acredito que no seu caso deve ocorrer o mesmo problema.

Na minha rotina do Arduino para este LCD eu incluí a linha lcd.begin(16,2) toda vez que eu mostro as informações, ou seja:

lcd.begin(16,2);

lcd.clear();

lcd.setCursor(0,0);

lcd.print("TESTE LINHA 1");

lcd.setCursor(1,0);

lcd.print("TESTE LINHA 2");

Veja que no início da impressão eu coloquei o lcd.begin(16,2)

Acho que no caso de seu LCD seria o

myGLCD.InitLCD();
myGLCD.setFont(SmallFont);

 

Não tenho certeza, mas acho que é por aí.

Meu projeto está em produção h'30 horas ligando/desligando cargas grandes e até agora 100% sem falhas.

Boa sorte

Sim, resistor 1/4W 470 ohm e capacitor de poliester (o mesmo componente que vem no rele-shield)

Vou dar uma tentada aqui pra ver se isso resolve o meu problema!

quando eu coloco o codigo funciona mais so por 5 segundo creio que o tempo do delay que eu coloquei mais eu queria que ele ficasse permanente e outra quando adiciono os codigos para o LCD a pagina PHP fica muito lenta o nem funfa!!!!!

Agora eu to com o seguinte problema...

o meu lcd so aparece as mensagens que eu programei quando dou o comando no site PHP, mais eu quero ele ligado sempre AJUDA AI 

CODIGO ARDUINO:

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

LCD5110 myGLCD(8,9,10,11,12);
extern uint8_t SmallFont[];

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

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

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

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

void setup() {
Ethernet.begin(mac, ip, gateway, subnet);
server.begin();
myGLCD.InitLCD();
myGLCD.setFont(SmallFont);
pinMode(4,OUTPUT);
pinMode(5,OUTPUT);
pinMode(6,OUTPUT);
pinMode(7,OUTPUT);
pinMode(2,OUTPUT);
pinMode(3,OUTPUT);
myGLCD.clrScr();
myGLCD.print("Homeduino", CENTER, 0);
myGLCD.print("IP:192.168.25.17", RIGHT, 8);
myGLCD.print("Iluminacao", LEFT, 16);
myGLCD.print("Projeto ", LEFT, 24);
myGLCD.print("Por: ", LEFT, 32);
myGLCD.print("KARLOS PEREIRA", LEFT, 40);
delay(5000);
}

void loop() {


EthernetClient 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] = client.read();



if (msg[6]=='#') {
switch(msg[5]) {
case 'R':
// Se receber o comando 'R#' envia de volta o status dos
// dispositivos. (Que é a string 'Luz')
client.write(Luz);
break;
case 'P':
// Caso P#, aciona o pino do portão pequeno por 1s.
digitalWrite(2,LOW);
delay(1000);
digitalWrite(2,HIGH);
break;
case 'G':
// Caso G#, aciona o pino do portão pequeno por 1s.
digitalWrite(3,LOW);
delay(1000);
digitalWrite(3,HIGH);
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];
if (Luz[0]=='1') digitalWrite(4,LOW); else digitalWrite(4,HIGH);
if (Luz[1]=='1') digitalWrite(5,LOW); else digitalWrite(5,HIGH);
if (Luz[2]=='1') digitalWrite(6,LOW); else digitalWrite(6,HIGH);
if (Luz[3]=='1') digitalWrite(7,LOW); else digitalWrite(7,HIGH);
myGLCD.InitLCD();
myGLCD.setFont(SmallFont);
myGLCD.clrScr();
myGLCD.print("Homeduino", CENTER, 0);
myGLCD.print("IP:192.168.25.17", RIGHT, 8);
myGLCD.print("Iluminacao", LEFT, 16);
myGLCD.print("Projeto ", LEFT, 24);
myGLCD.print("Por: ", LEFT, 32);
myGLCD.print("KARLOS PEREIRA", LEFT, 40);
delay(5000);

break;

}
}
}
}

CODIGO PHP:

<html>
<head></head>
<body>

<?php
$sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
// Se conecta ao IP e Porta:
socket_connect($sock,"192.168.25.177", 8090);

// Executa a ação correspondente ao botão apertado.
if(isset($_POST['bits'])) {
$msg = $_POST['bits'];
if(isset($_POST['Fora' ])){ if($msg[0]=='1') { $msg[0]='0'; } else { $msg[0]='1'; }}
if(isset($_POST['Quarto1'])){ if($msg[1]=='1') { $msg[1]='0'; } else { $msg[1]='1'; }}
if(isset($_POST['Quarto2'])){ if($msg[2]=='1') { $msg[2]='0'; } else { $msg[2]='1'; }}
if(isset($_POST['Sala' ])){ if($msg[3]=='1') { $msg[3]='0'; } else { $msg[3]='1'; }}
if(isset($_POST['Pequeno'])){ $msg = 'P#'; }
if(isset($_POST['Grande' ])){ $msg = 'G#'; }
socket_write($sock,$msg,strlen($msg));
}

socket_write($sock,'R#',2); //Requisita o status do sistema.

// Espera e lê o status e define a cor dos botões de acordo.
$status = socket_read($sock,25);
if (($status[4]=='L')&&($status[5]=='#')) {
if ($status[0]=='0') $cor1 = 'lightcoral';
else $cor1 = 'lightgreen';
if ($status[1]=='0') $cor2 = 'lightcoral';
else $cor2 = 'lightgreen';
if ($status[2]=='0') $cor3 = 'lightcoral';
else $cor3 = 'lightgreen';
if ($status[3]=='0') $cor4 = 'lightcoral';
else $cor4 = 'lightgreen';

echo "<form method =\"post\" action=\"PaginaPHP.php\">";
echo "<input type=\"hidden\" name=\"bits\" value=\"$status\">";
echo "<button style=\"width:200; background-color: $cor1 ;font: bold 14px Arial\" type = \"Submit\" Name = \"Fora\">Sala</button></br></br>";
echo "<button style=\"width:70; background-color: $cor2 ;font: bold 14px Arial\" type = \"Submit\" Name = \"Quarto1\">Quarto Casal</button></br></br>";
echo "<button style=\"width:70; background-color: $cor3 ;font: bold 14px Arial\" type = \"Submit\" Name = \"Quarto2\">Quarto Solteiro</button></br></br>";
echo "<button style=\"width:70; background-color: $cor4 ;font: bold 14px Arial\" type = \"Submit\" Name = \"Sala\">Cozinha</button></br></br></br>";
echo "<button style=\"width:90;font: bold 14px Arial\" type = \"Submit\" Name = \"Pequeno\">Portao Pequeno</button></br></br>";
echo "<button style=\"width:90;font: bold 14px Arial\" type = \"Submit\" Name = \"Grande\">Portao Grande</button></br></br>";
echo "</form>";
}
// Caso ele não receba o status corretamente, avisa erro.
else { echo "Falha ao receber status da casa."; }
socket_close($sock);
?>

</body>
</html>

POR FAVOR ME DEEM ESSA FORCINHA AI !

Encomendei um rele com acoplador ótico para poder controlar os contatores.

Deve chegar daqui a uns dois dias.

Assim que chegar eu faço testes para verificar se as interferencias param e informo em seguida.

Vou separar a alimentação do arduino do circuito dos reles.

Bom dia Karlos e Higor,

Eu já recebí os releshields com acopladores óticos.

Realizei os testes e como eu havia suspeitado, zeraram os problemas.

No circuito do rele vem um jumper ligando a alimentação do Arduino na alimentação do rele.

Eu retirei esse jumper e liguei uma fonte externa de 5 volts 2A apenas para o rele.

Assim eu me assegurei que o circuito lógico está totalmente separado do circuito de energia.

Com os testes de stress que eu fiz, o LCD não apagou nenhuma vez.

e aí....conseguiu resolver seu problema???

me passa a dica....tenho o mesmo projeto seu....

cara achei muito interessante seu projeto, vc ta usando apenas o arduino e o ethernet shield?

sim brother e um modulo relay de 8 ch 

Boa noite carlos,

Parabens pelo projeto, queria poder ajudar, mais infelizmente sou novo usuário de arduíno, por gentileza poderia tirar uma dúvida?

Tem como colocar na pagina php do medições analógicas mais estados em campo ?

abraço, ate mais

Boa tarde pessoal sou novo aqui e no assunto arduino, alguem poderia me ajudar, ja rodei a net toda e nada de ajuda, to com um projeto para automatizar minha casa e nao consigo ligar minha tv via net, tenho o arduino e shield internet e nao consigo casar os dois codigos fonte que tenho, nao conheco Php e nem html, to pesquisando o assunto, alguem pode me ajudar....

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço