Pages: [1]   Go Down
Author Topic: Arduino + enc28j60 (ethernet) + biblioteca ethercard = não funciona  (Read 2394 times)
0 Members and 1 Guest are viewing this topic.
São Paulo / Brazil
Offline Offline
Newbie
*
Karma: 0
Posts: 6
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Boa tarde amigos.

Estou com um problema que não consigo resolver.
Tenho um arduino Duemilanove e uma placa ethernet com enc28j60.
Instalei a biblioteca EtherCard, e as devidas ligações SPI.

Liguei a placa ao meu roteador Linksys WRT54G, e comecei a testar alguns exemplos tanto da biblioteca quanto deste site http://www.lucadentella.it/en/category/enc28j60-arduino/ , mas nada funciona, não consigo nem pingar a placa.
As vezes o DHCP chega a funcionar, as vezes não.
O arduino chega a aparecer na tabela DHCP do roteador, mas nunca consigo pingar ou acessar a pagina de webserver.
Sem utilizar DHCP, o arduíno chegou a aparecer na tabela ARP uma vez mas não pingava. Em outras tentativas não aparece mais.


Meu computador está no IP 192.168.1.108
O DHCP dá ao ardunino IPs entre o 100 e o 149 (normalmente 100, 110, 111 ou 112).
Quando rodo com IP fixo costumo colocar no 10
A mensagem que recebo pelo ping executado a partir do computador é: "Resposta de 192.168.1.108: Host de destino inacessível"
Quando executo ping a partir do roteador, dá Timeout.


Segui exatamente os passos do site do lucadentella e nada funciona.
Alguém pode me ajudar?
« Last Edit: October 17, 2012, 05:10:26 pm by MKazan » Logged

Portugal
Offline Offline
Edison Member
*
Karma: 37
Posts: 1534
Pretending you know everything then you will learn nothing.
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Posta o teu codigo
Logged

Debian,Mint,Ubuntu
Arduino Mega 2560
Arduino Nano
Arduino Duemilanove
MAC OS Montain Lion
Raspberry PI Model B


'round the world...
Offline Offline
Faraday Member
**
Karma: 42
Posts: 3219
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Não uses DHCP.

Liga o teu computador ao router num porto qualquer e vê qual é o IP que o router dá ao teu computador. Depois, mete esse endereço no Arduino e liga-o nesse mesmo porto onde tinhas o computador. Por experiência o router costuma dar sempre o mesmo IP nos portos físicos e deixa o DHCP para o Wi-fI (por experiência com os meus routers...). Então assim garantes que estás na mesma rede que o teu computador para pingar.

Outra coisa... deixa apenas o mínimo indispensável no código do Arduino.
Logged

Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

São Paulo / Brazil
Offline Offline
Newbie
*
Karma: 0
Posts: 6
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Como eu disse no post inicial, os códigos que testei e não funcionaram são os codigos exemplo da biblioteca EtherCard e os codigos do site http://www.lucadentella.it/en/category/enc28j60-arduino/ .

Não achei necessário postá-los aqui denovo mas se acham necessário, aqui vai:

IP fixo:
Code:
#include <EtherCard.h>
static byte mymac[] = {0xDD,0xDD,0xDD,0x00,0x00,0x01};
static byte myip[] = {192,168,1,10};
byte Ethernet::buffer[700];
 
void setup () {
 
  Serial.begin(57600);
  Serial.println("PING Demo");
 
  if (ether.begin(sizeof Ethernet::buffer, mymac, 10) == 0)
    Serial.println( "Failed to access Ethernet controller");
 
  if (!ether.staticSetup(myip))
    Serial.println("Failed to set IP address");
}
 
void loop() {
 
  ether.packetLoop(ether.packetReceive());
}

DHCP:
Code:
#include <EtherCard.h>
static byte mymac[] = {0xDD,0xDD,0xDD,0x00,0x00,0x01};
byte Ethernet::buffer[700];
 
void setup () {
 
  Serial.begin(57600);
  Serial.println("DHCP Demo");
 
  if (!ether.begin(sizeof Ethernet::buffer, mymac, 10))
    Serial.println( "Failed to access Ethernet controller");
 else
   Serial.println("Ethernet controller initialized");
 
  if (!ether.dhcpSetup())
    Serial.println("Failed to get configuration from DHCP");
  else
    Serial.println("DHCP configuration done");
 
  ether.printIp("IP Address:\t", ether.myip);
  ether.printIp("Netmask:\t", ether.mymask);
  ether.printIp("Gateway:\t", ether.gwip);
}
 
void loop() {
 
  ether.packetLoop(ether.packetReceive());
}

Web Server:
Code:
#include <EtherCard.h>
static byte mymac[] = {0xDD,0xDD,0xDD,0x00,0x00,0x01};
byte Ethernet::buffer[700];

void setup () {
 
  Serial.begin(57600);
  Serial.println("BasicServer Demo");
 
  if (!ether.begin(sizeof Ethernet::buffer, mymac, 10))
    Serial.println( "Failed to access Ethernet controller");
 else
   Serial.println("Ethernet controller initialized");
 
  if (!ether.dhcpSetup())
    Serial.println("Failed to get configuration from DHCP");
  else
    Serial.println("DHCP configuration done");
 
  ether.printIp("IP Address:\t", ether.myip);
  ether.printIp("Netmask:\t", ether.mymask);
  ether.printIp("Gateway:\t", ether.gwip);
  Serial.println();
}
 
void loop() {
 
  word len = ether.packetReceive();
  word pos = ether.packetLoop(len);
 
  if(pos) {
   
    Serial.println("---------------------------------------- NEW PACKET ----------------------------------------");
    Serial.println((char *)Ethernet::buffer + pos);
    Serial.println("--------------------------------------------------------------------------------------------");
    Serial.println();
   
    BufferFiller bfill = ether.tcpOffset();
    bfill.emit_p(PSTR("HTTP/1.0 200 OK\r\nContent-Type: text/html\r\nPragma: no-cache\r\n\r\n"
                      "<html><body><h1>BasicServer Demo</h1></body></html>"));
    ether.httpServerReply(bfill.position());
  }
}
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 2
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ola amigo... tive um problema parecido e aqui era a conexão do arduino com a placa de rede... refiz a conexão e encurtei bem a conexão entre as duas placas e funcionou...
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 9
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Tive o mesmo problema, porem, era apenas conflito entre duas bibliotecas de Ethernet, tenho os dois Shields e sempre que vou usar um diferente,, removo a biblioteca do outro por completo.
Logged

Pages: [1]   Go Up
Jump to: