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");
}
}

Exibições: 12320

Responder esta

Respostas a este tópico

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

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço