Go Down

Topic: Arduino e ENC28j60 e DHCP non funzionante (Read 4879 times) previous topic - next topic

PaoloP

Hai collegato l'Arduino al Router o al PC? Sicuro che il DHCP sia attivo?

Ho collegato arduino al Router (ne ho provati due differenti) chiaramente con DHCP attivo ma non viene assegnato nessun IP e anche se provo ad assegnare un IP statico ho lo stesso risultato (ip della stessa classe). Il router rileva la presenza del dispositivo solamente come presenza sulla porta, per intenderci mi si accende il numero di porta relativo sul router, il led arancoine presente sulla porta ethernet dello shield lampeggia dopo un po si spegne e periodicamente lampeggia, quello verde resta chiaramente fisso.

lucadentella

Ciao

prova a reinstallare la libreria seguendo questo tutorial:
http://www.lucadentella.it/2012/02/12/enc28j60-e-arduino-1/

l'errore che ottieni (failed to...) indica quasi sicuramente che devi cambiare il PIN di ChipSelect, probabilmente sul tuo modulo è il 10 e quindi usare il metodo begin() come ti hanno suggerito.

bye
lucadentella.it

In realtà la prima cosa che ho fatto prima di mettere mani sullo shield è stato quello di documentarmi, avevo già visitato il tuo sito seguendo la guida per scrupolo ho rifatto esattamente la stessa cosa ora.

Ho scaricato da questo link le librerie https://github.com/jcw/ethercard

sistemate nell'apposita directory carico testDHCP ovviamente dopo aver preventivamente modificato:

Quote
static uint8_t begin (const uint16_t size, const uint8_t* macaddr,
                        uint8_t csPin =8);


in

Quote
static uint8_t begin (const uint16_t size, const uint8_t* macaddr,
                        uint8_t csPin =10);


monitorizzo con serial ed ottengo:

[testDHCP]
MAC: 74:69:69:2D:30:31
Setting up DHCP
DHCP failed
My IP: 0.0.0.0
Netmask: 0.0.0.0
GW IP: 0.0.0.0
DNS IP: 0.0.0.0


lucadentella

ciao

volendo puoi anche non modificare la libreria ma chiamare la begin() con il PIN CS corretto (10)...
comunque ora vedo che non ti da più ne l'errore in compilazione, ne il failed sul controller quindi riesce a "parlare" con il chip.

Tra queste due scritte:
Setting up DHCP
DHCP failed

dovrebbero passare circa 30 secondi, la libreria infatti fa 3 tentativi di richiesta DHCP con 10s di timeout... sicuro che ci sia un DHCP server attivo in rete? Prova a compilare lo sketch con l'IP statico e a pingarlo... ricevi risposta?
lucadentella.it

Il pcb è FuturaElettronica ma è stato assemblato e distribuito da una azienda che si occupa di elettronica quindi suppongo si tratti di un dispositivo testato e funzionante




lucadentella

ciao

infatti il mio dubbio non è che non funzionasse ma che per qualche motivo non riceva un IP dal dhcp server.
lucadentella.it

Allora ho provato ad utilizzare getStaticIp

Quote
// ethernet interface mac address
static byte mymac[] = { 0x74,0x69,0x69,0x2D,0x30,0x31 };
// ethernet interface ip address
static byte myip[] = { 192,168,0,200 };
// gateway ip address
static byte gwip[] = { 192,168,0,1 };
// remote website ip address and port
static byte hisip[] = { 74,125,79,99 };
// remote website name
char website[] PROGMEM = "google.com";


gli ip specificati sono in linea con la classe della mia rete ma ottengo dal ping:

PING 192.168.0.200
PING 192.168.0.200 (192.168.0.200): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1
Request timeout for icmp_seq 2
Request timeout for icmp_seq 3

mentre dall'output serial:

[getStaticIP]
Failed to access Ethernet controller
Server: 74.125.79.99


In modalità DHCP sono sicuro che è attivo perchè la mia rete attualmente funziona solo in DHCP sono certo che l'ip 192.168.0.200 non è stato assegnato a nessuno.






lucadentella

stranissimo... se riepilogo bene:

- con lo sketch in DCHP non ti da Failed to access Ethernet controller ma non prende l'IP
- con lo sketch in IP statico invece ti da Failed to access Ethernet controller e quindi non riesce a parlare con il chip enc28j60...
lucadentella.it

si esatto... e sono sicuro che il pin è il numero 10...che rompicapo!

In allegato ti invio la libreria che il venditore mi ha inviato via mail:


https://folders.io/get/xX3ayN


Questo invece è quello che il venditore mi ha scritto via email:

La scheda che sta impiegando è un progetto di futura elettronica. Sul loro sito sono pubblicate le librerie relative a questo progetto. A bordo è installato il chip enj2060. Su questi link può leggere
Notizie a tal riguardo :
http://www.lucadentella.it/2012/02/12/enc28j60-e-arduino-1/
http://www.futurashop.it/allegato/8190-ETHSHIELDKIT.asp?L2=CORRELATI&L1=7300-ARDUINOMEGAREV3&L3=&cd=8190-ETHSHIELDKIT&nVt=&d=24,00
https://github.com/jcw/ethercard

Allego le librerie impiegate per questo tipo di chip,anche se installato su una scheda analoga.



Non va... potrebbe essere un problema hardware? Cosa potrei cominciare a controllare?

PaoloP

Controlla se nella scheda, fronte e retro, si vedono le piste che arrivano ai pin 10, 11, 12 e 13 di Arduino e anche se sono collegate le piste ai i pin ICSP.
Visto che, dalla foto, il connettore ICSP non c'è, non vorrei che la connessione avvenisse proprio con quello.

lucadentella

Ciao

prova a compilare entrambi gli esempi (statico e dhcp) dal mio sito e posta cosa ottieni... è stranissimo che con una chiamata ti dia errore nell'accesso allo shield e con l'altra no...
lucadentella.it

Quote
Controlla se nella scheda, fronte e retro, si vedono le piste che arrivano ai pin 10, 11, 12 e 13 di Arduino e anche se sono collegate le piste ai i pin ICSP.
Visto che, dalla foto, il connettore ICSP non c'è, non vorrei che la connessione avvenisse proprio con quello.


I pin attualmente "utilizzati"su arduino con lo shield sono:




Go Up