Bom dia,
Fiz (copiei) programa para acessar o releshield de 2 portas na estrutura Arduino + Ethernet + ReleShield, conectados nesta ordem. Quando ligo uma de cada e desligo antes de ligar a segunda funciona bem, porém quando ligo as duas ela trava com os 2 reles acionados e nao consigo desligar nenhuma delas, o que percebi foi que, quando aciono (via browser) os dois reles apagam se todos os leds que tem na placa do Ethernet Shield e depois elas voltam a piscar...parece que ligou e desligou, e os 2 leds do Rele Shield nao apagam. A impressão que tenho é que houve uma drenagem súbita de energia na placa do ethernet quando ligo os dois reles.
Será que é um problema da placa de rele? Ela é nova e experimentei retirar a placa do rele shield e rodei o programa só com o arduino + ethernet shield, ai funciona bem com as duas portas acionadas. Consigo ver pelo browser (ligado1 e ligado2) que estão com os dois reles acionados apesar que não ter a placa do rele:
/*
Web Server Demo
thrown together by Randy Sarafan
Allows you to turn on and off an LED by entering different urls.
To turn it on:
http://your-IP-address/$1
To turn it off:
http://your-IP-address/$2
Circuit:
* Ethernet shield attached to pins 10, 11, 12, 13
* Connect an LED to pin D2 and put it in series with a 220 ohm resistor to ground
Based almost entirely upon Web Server by Tom Igoe and David Mellis
Edit history:
created 18 Dec 2009
by David A. Mellis
modified 4 Sep 2010
by Tom Igoe
modified 18 Aug 2012 in order to use with Relay Shield +
Ethernet Shield + Arduino UNO by Marcos M Yoshida.
*/
#include <SPI.h>
#include <Ethernet.h>
boolean incoming = 0;
// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = { 0x90, 0xA2, 0xDA, 0x0D, 0x83, 0xEA };
IPAddress ip(192,168,0,130); //< ENTER YOUR IP ADDRESS HERE!!!
//byte ip[]={192,168,0,130};
byte gateway[] = { 192, 168, 0, 1 };
byte subnet[] = { 255, 255, 255, 0 };
// Initialize the Ethernet server library
// with the IP address and port you want to use
// (port 80 is default for HTTP):
EthernetServer server(85);
void setup()
{
// start the Ethernet connection and the server:
Ethernet.begin(mac, ip);
server.begin();
Serial.begin(9600);
pinMode(8, OUTPUT);
digitalWrite(8, LOW);
pinMode(7, OUTPUT);
digitalWrite(7, LOW);
}
int varOnOff1 = 0;
int varOnOff2 = 0;
void loop()
{
// listen for incoming clients
EthernetClient client = server.available();
if (client) {
// an http request ends with a blank line
boolean currentLineIsBlank = true;
String vars1;
while (client.connected()) {
if (client.available()) {
char c = client.read();
vars1.concat(c);
if(vars1.endsWith("/1on")) varOnOff1 =1;
else if(vars1.endsWith("/1off")) varOnOff1 =0;
if(vars1.endsWith("/2on")) varOnOff2 =1;
else if(vars1.endsWith("/2off")) varOnOff2 =0;
if (c == '\n' && currentLineIsBlank) {
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println();
if(varOnOff1 == 1)
{
client.println("ligado1" );
digitalWrite(7, HIGH);
}
else if (varOnOff1 ==0)
{
client.println("desligado1" );
digitalWrite(7, LOW);
}
if(varOnOff2 == 1)
{
client.println("ligado2" );
digitalWrite(8, HIGH);
}
else if (varOnOff2 ==0)
{
client.println("desligado2" );
digitalWrite(8, LOW);
}
else
{
client.println("Bem Vindo" );
}
break;
}
if (c == '\n') {
currentLineIsBlank = true;
}
else if (c != '\r') {
currentLineIsBlank = false;
}
}
}
// give the web browser time to receive the data
delay(1);
// close the connection:
client.stop();
}
}
Obrigado,
Marcos
Tags:
Marcos,
Sua programação parece estar ok. Vamos testar essa montagem no lab e verificar o que pode estar acontecendo.
O ehernet shield que você está usando é o original da Arduino?
Fica tranquilo, se for problema na placa a gente troca para você.
Abraço!!
Marcelo,
Comprei os três ( arduino, ethernet e o rele) ai na loja do LdG sábado passado, o ethernet é original sim.
Tks,
Marcos
Oi Marcos, fizemos um tutorial baseado na sua dúvida. Dá uma olhada: http://labdegaragem.com/profiles/blogs/tutorial-utilizando-o-relesh...
Você pode estar tendo problema na alimentação do Arduino. Como você está alimentando?? Talvez a fonte não esteja aguentando no momento do acionamento do relé. Aqui fizemos a mesma montagem que você e está funcionando normalmente.
Equipe LdG.
Oi Marcos,
Estranho, pois testamos aqui conectado ao cabo USB do PC e com uma fonte externa de 9V e 650mA.
Você falou que os shields estão funcionando perfeitamente, certo? Então não é DEFEITO das shields.
Agora não sei o que pode estar acontecendo... Experimenta passar a programação de novo sem os shields.
Se você não conseguir, poste aqui que entraremos em contato!
Equipe LdG.
Marcos,
Já que foram feitos vários testes e não foi detectado o problema, peço que você nos envie os produtos envolvidos no projeto, assim poderemos pesquisar a causa do não funcionamento ou se preferir compareça no LdG.
Caso seja necessário nos trocaremos os produtos.
Fico a disposição para maiores informações
Att.
mauricio.ortega@labdegaragem.com
ola,
me parece q o problema esta aki:
if(vars1.endsWith("/1on")) varOnOff1 =1;
else if(vars1.endsWith("/1off")) varOnOff1 =0;
if(vars1.endsWith("/2on")) varOnOff2 =1;
else if(vars1.endsWith("/2off")) varOnOff2 =0;
tire os ( else).
favor me avisar se deu certo ou errado
obrigado
Marcos, recebemos sua placa e aqui está o resultado. Utilizamos o mesmo código que você postou aqui no fórum. Tudo está funcionando perfeitamente.
Mais uma vez acreditamos que seja a fonte de alimentação que você está utilizando ou a USB do seu computador.
Boa tarde,
E como ficaria esse projeto sendo acionado pelo RFID da Sparkfun?
Tenho uma idéia de usar o mesmo sistema, porém queria "salvar" os dados de entrada do cartão, ou seja, data e hora que foi acionado.
Uma vez lido o cartão, na internet verificar o fluxo.
Se alguém tiver links ou tutoriais que possam ajudar, estou por aqui.
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por