Caros Amigos,
Estou tentando iniciar um projetinho usando Ethernet Shield W5100 com Sd.
Já pesquisei bastante e não consegui encontrar ainda a solução para o meu problema!!
Segue os problemas:
1) Quando eu tento fazer o upload do programa com a Ethernet Shield conectada, eu recebo a msg abaixo:
avrdude: stk500_getsync(): not in sync: resp=0x00
2) Quando eu abro o Serial Monitor com o Ethenet Shield Conectado....não aparece nenhuma informação.
Se eu abrir o Serial Monitor sem o Ethernet Shield conectado aparece a mensagem "
server is at 0.0.0.0"
3) Parece que ao conectar a Ethernet Shield ele perde a conexão da porta COM5 a qual eu utilizo sempre e neste momento não aparece nada no Serial Monitor.
4) E ainda não consegui fazer a Ethernet Shield ser reconhecida pelo roteador.
Peço algumas dicas para tentar solucionar esse problema.
O programa utilizado é o WebServer
Desde já agradeço atenção e disponibilidade em ajudar o proximo!
Abraços!!
Bruno
/*
Web Server
A simple web server that shows the value of the analog input pins.
using an Arduino Wiznet Ethernet shield.
Circuit:
* Ethernet shield attached to pins 10, 11, 12, 13
* Analog inputs attached to pins A0 through A5 (optional)
created 18 Dec 2009
by David A. Mellis
modified 9 Apr 2012
by Tom Igoe
*/
#include <SPI.h>
#include <Ethernet.h>
// Enter a MAC address and IP address for your controller below.
// The IP address will be dependent on your local network:
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192,168,0,99);
// Initialize the Ethernet server library
// with the IP address and port you want to use
// (port 80 is default for HTTP):
EthernetServer server(80);
void setup() {
// Open serial communications and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for Leonardo only
}
// start the Ethernet connection and the server:
Ethernet.begin(mac, ip);
server.begin();
Serial.print("server is at ");
Serial.println(Ethernet.localIP());
}
void loop() {
// listen for incoming clients
EthernetClient client = server.available();
if (client) {
Serial.println("new client");
// an http request ends with a blank line
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
Serial.write(c);
// if you've gotten to the end of the line (received a newline
// character) and the line is blank, the http request has ended,
// so you can send a reply
if (c == '\n' && currentLineIsBlank) {
// send a standard http response header
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connnection: close");
client.println();
client.println("<!DOCTYPE HTML>");
client.println("<html>");
// add a meta refresh tag, so the browser pulls again every 5 seconds:
client.println("<meta http-equiv=\"refresh\" content=\"5\">");
// output the value of each analog input pin
for (int analogChannel = 0; analogChannel < 6; analogChannel++) {
int sensorReading = analogRead(analogChannel);
client.print("analog input ");
client.print(analogChannel);
client.print(" is ");
client.print(sensorReading);
client.println("<br />");
}
client.println("</html>");
break;
}
if (c == '\n') {
// you're starting a new line
currentLineIsBlank = true;
}
else if (c != '\r') {
// you've gotten a character on the current line
currentLineIsBlank = false;
}
}
}
// give the web browser time to receive the data
delay(1);
// close the connection:
client.stop();
Serial.println("client disonnected");
}
}
Tags:
Muito cuidado...é muito comum tentar fazer o upload do programa com o ethernet shield conectado ao Arduino.Não faca isso , pois o programa nao sera transferido para o Arduino...nao sei se chega a danificá-lo.Outra coisa, tente se assegurar que o seu PC consegue se comunicar com o Arduino.Depois que vc fizer o upload do seu programa o seu arduino tera um IP que deve se compativel com o IP do seu PC, para eles puderem fazer parte da mesma rede.Entao tente no prompt do "pingar" o PC e o Arduino.Enquanto isso nao estiver acontecendo, eles nao estarao em rede e os seus esforcos serao inuteis entao ve primeiro isso.
Fala Bruno,
Estou utilizando o código acima com a a mesma configuração de placa utilizada por você e está funcionando perfeitamente.
Verifique a instalação do driver de sua placa Arduíno, possivelmente tem problemas com a instalação do driver.
Veja também o tutorial em nossa pagina sobre a placa de rede e rele.
http://labdegaragem.com/profiles/blogs/tutorial-utilizando-o-relesh...
Ernane e Mauricio,
Muito obrigado pelas respostas!
Segui os conselhos e passo descritos em ambos os tutoriais, porem todos sem sucesso! :(
1) Fiz o upload do programa com a shield desconectada, abri o Serial Monitor e recebi a resposta "server is at 0.0.0.0"
2) Desconectei a USB, e pluguei a Shield com o cabo de rede conectado ao roteador.
3) Conectei o cabo USB, tentei abrir o Serial Monitor e não obtive nenhuma resposta.
4) Tentei com "pingar o IP 192.168.0.30" o IP e obtive essa resposta " Reply from 192.168.0.17: Destination host unreachable"
5) Todas os Led's da Shield acesso. Exceto o Led vermelho COLL. Led RX Ligado, Led TX Pisca com pouca frequência.
6) Quando eu pressiono o botão de reset ele perde a conexão com a porta COM5.
Vocês já tiveram esses problemas?
Muito Obrigado!!
Abraçoss
Ok,
Veja qual é o ip e a mascara de rede de seu computador e configure sua placa com os parâmetros de rede exemplo:
Seu computador >> ip 192.168.1.10 masc 255.255.255.0
sua placa >> ip 192.268.1.20 masc 255.255.255.0
até ++
Esqueci um detalhe...pode ser que o seu shield não seja compatível com a biblioteca padrão do Arduino.Confirme isso com o vendedor do seu shield.
As vezes, o programa precisa de uma determinada versão de IDE.
Sugiro que que vc descubra logo se o seu shield realmente está funcionado.Então esqueça um pouco a comunicação com o seu pc e tente o programa abaixo.Ele precisa de uma versão ideal superior a 018 e faz a comunicação do seu arduino com o twiter mandando para o twiter o estado de um pino do seu arduino, como o servidor nesse caso tá sempre ok, fica mais fácil saber se o problema e seu ethernet shield.
#if ARDUINO > 18
#include // needed for Arduino versions later than 0018
#endif
#include
#include
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 192, 168, 1, 177 };
byte gateway[] = { 192, 168, 1, 254 };
byte subnet[] = { 255, 255, 255, 0 };
Twitter twitter("YourID:Password");
boolean MsgSent = false;
const int Sensor = 2;
void setup()
{
Ethernet.begin(mac, ip, gateway, subnet);
Serial.begin(9600);
pinMode(Sensor, INPUT);
digitalWrite(Sensor, HIGH); //turn on pull-up resistors
delay(1000);
}
void loop()
{
if(digitalRead(Sensor) == LOW)
{ // here if mailbox is open
if(MsgSent == false){ // check if message already sent
MsgSent = sendMessage("Mail has been delivered");
}
}
else{
MsgSent = false; // door closed so reset the state
}
delay(100);
}
boolean sendMessage( char *message)
{
boolean isSent = false;
Serial.println("connecting ...");
if (twitter.post(message)) {
int status = twitter.wait();
if (status == 200) {
Serial.println("OK.");
isSent = true;
} else {
Serial.print("failed : code ");
Serial.println(status);
}
} else {
Serial.println("connection failed.");
}
delay(100);
return isSent;
}
O seu shield usa o chip da wiznet?
Tenho outro programa que vc pode usar como teste.Ele faz o arduino se comunicar com um site que fornecer as horas.Mais uma vez tu elimina a comunicação com o teu PC e parti direto pra internet.
#include
#include
const unsigned int DAYTIME_PORT = 13;
const unsigned int BAUD_RATE = 9600;
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte my_ip[] = { 192, 168, 2, 120 };
byte time_server[] = { 192, 43, 244, 18 }; // time.nist.gov
Client client(time_server, DAYTIME_PORT); //
void setup() {
Ethernet.begin(mac, my_ip); //
Serial.begin(BAUD_RATE);
}
void loop() {
delay(1000);
Serial.print("Connecting...");
if (!client.connect()) { //
Serial.println("connection failed.");
} else {
Serial.println("connected.");
delay(1000);
while (client.available()) {
char c = client.read();
Serial.print(c);
}
Serial.println("Disconnecting.");
client.stop();
}
}
Nos codigos q postei nao ta dando certo incluir as biblioteas SPI e Ethernet.h entao nao esqueca de coloca-las.
Ernane,
Isso a minha shield é a Wiznet!
Muito Obrigado, a noite irei testar esses códigos que vc me encaminhou.
E compartilho os resultados com vcs!!
Mais uma vez muito obrigado!!
Abraços
que bom que e o wiznet, provavelmente ele e compativel com a biblioteca padrao do arduino e provavelmente ele tem entrada pra cartao de memoria tambem.Tenho receio que o ethernet shield possa esta danificado...mas espero q não.
Boa Noite Ernane,
Cara tentei fazer todos esses testes e nada...tudo do msm jeito!!
Vou tentar trocar minha Ethernet Shield....e comprei uma nova placa do arduino!
A que eu tinha não era a original....achei algumas pessoas relatando o msm problema que onde, a placa perdia a conexào com o PC quando pressionava o botão reset!
E por se tratar de uma placa SMD ia dificultar mto a busca pelo problema!
Deve chegar essa semana a nova placa e devo retornar os novos testes!!
Muito obrigado por sua dedicação!!!
Abraços
Tive problemas assim utilizando Windows 7.
No XP não dá problema.
Seria esse o seu caso ?
Outro detalhe:
Voce trocou o MAC adress para o da sua shield ?
Marcelo,
Eu tenho Win7.
Mas esse problema só aconteceu com a Ethernet Shield!
Vou tentar rodar em algum PC que tenha o XP.
Quanto ao MAC eu troquei pra diversos tipos, mas tb sem sucesso!
Vou tentar rodar no XP e ai descubro se o problema era só este!
Muito Obrigado pelo seu retorno!
Abraços
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por