strano problema con arduino uno e enc28j60

Ciao, ho problema che si presenta in maniera "casuale" con una scheda ethernet enc28j60. A causa della pessima gestione dell'arp (i pc spenti vengono eliminati dopo pochi secondi e spesso anche quelli in sospensione) sul modem fibra di tim e avendo necessità di riattivare da remoto alcuni dei pc nella mia rete domestica ho pensato che di mettere in piedi un forwarder di magic packet con un arduino e una scheda enc28j60. In pratica ho configurato il port forwarding di una porta udp sul router verso la enc28j60 collegata ad arduino. Quindi invio un magic packet con il mac address della scheda di rete del pc che voglio riattivare al mio ip pubblico su qella specifica porta, recupero il mac address e lo broadcasto su tutta la rete interna. Il sistema funziona alla perfezione, i pc si risvegliano dalla sospensione o si riaccendono. Capita però, con tempi variabili da qualche decina di ore o qualche giorno che la enc28j60 "incanti", non rispondendo piu al ping. Non riceve piu nulla via udp o tcp. Le luci sulla sulla scheda rimangono spente (alimentazione a parte). Utilizzo la libreria ethercard di jeelabs. Visto il problema come prima cosa ho pensato di impostare dei loop di controllo nel programmino in arduino verificando la presenza online della scheda (ad esmepio pingando l'ip privato del router) e tentando nell'ordine di: -riconfigurare la scheda (ip, gateway,...) -resettare e riconfigurare la scheda (con la funzione doBIST() della ethercard) -spegnendo, riaccendendo e riconfigurando la scheda (con le funzioni powerDown() e powerUp() della etehercard) -reset software di arduino

Ripetendo una o piu di queste operazioni a volte la situazione migliora e la scheda riprende vita (dopo aluni tentativi). Ma finisco sempre con il ritrovarmi prima o poi con la scheda che non risponde piu.

In giro si parla di problemi di surriscaldamento del enc28j60 ho anche provato a mettere una ventolina per essere certi di mantenere fresco il chip, ma senza notare alcuna differenza.

Ho collegato un piccolo display oled per visualizzare alcune informazioni (stato della scheda, memoria libera durante le varie operazioni di ricezione/elaborazione/instradamento dei pacchetti,...) senza verificare alcun problema (ad esempio sempre oltre 400byte liberi).

La cosa piu strana è che anche togliendo l'alimentazione e ridandola dopo un po di tempo (anche oltre un'ora) e staccando il cavo ethernet la scheda addormentata non si riprende. Nemmeno ricaricado lo schetch. Solo dopo diversi tetativi di reset (fisico), dai/togli alimentazione e simili (senza che sia stato in grado di cogliere una logica in tutto questo).

Qualcuno ha qualche idea sulle possibili cause? Possibile che si tratti di problemi intrinsechi del enc28j60 ? Qualche soluzione da provare/sperimentare?

Insomma sono alla ricerca di qualche idea. Spero in un aiuto. Grazie in anticipo.

Come stai alimentando l'ENC?

Il problema si verifca sia alimentando da usb del pc, sia da usb sfruttando un alimentatore esterno di uno smartphone (5v 850mA)...ora sto provando con un alimentatore esterno regolato a 9v (500mA), attaccato questa sera alle 19. Nel giro di 24 ore dovrei vedere se si verifica qualcosa di diverso...ma non sono molto convinto che questa possa essere l'origine del problema...

Ho chiesto come alimenti l’ENC, non il tutto. Posta anche una foto della scheda precisa che usi.

Se poi pensi di sapere tu qual è la causa del problema, perché hai aperto un thread?

La scheda è uguale a questa http://www.ebay.it/itm/like/182253980955 (non è stata presa li ma è identica). E' alimentata con il 3.3 di arduino.

tompoz: E' alimentata con il 3.3 di arduino.

Credo sia scritto in più di 100 punti su questo forum che la corrente che può fornire il pin 3.3V di Arduino (... max 50 mA) [u]NON[/u] è assolutamente sufficiente per alimentare un ESP8266 ... una letta al THREAD in Megatopic ti avrebbe chiarito qualsiasi dubbio ! un ENC28J60, una letta al reference della UNO ti avrebbe tolto il dubbio.

Guglielmo

OK. Provo a spostarlo sui 5v. Speriamo che il problema si risolva. Ne sarei contento.
Grazie

tompoz: OK. Provo a spostarlo sui 5v. Speriamo che il problema si risolva. Ne sarei contento.

NO ... LO BRUCI !!!! L'ESP8266 NON è 5V tolerant !!!!

Guglielmo

Erm, gpb, occhio che qua si parla di un ENC28J60 (scheda Ethernet), non dell'ESP8266 (wireless) :).

Però effettivamente il problema è lo stesso, anche l'ENC richiede più corrente di quella che Arduino può fornire, per cui la soluzione è la stessa: un bel regolatore 3.3V esterno.

Non è invece fondamentale il level shifting, in quanto l'ENC è 5V-tolerant.

Ooooppppssss ... chiedo scusa, mea culpa ... ho veramente mischiato le sigle ESP e ENC ... :-[ :-[ :-[

Però, come dici, il problema dell'assorbimento rimane ... il 3.3V può dare al massimo 50mA ;)

Guglielmo

Intanto grazie a tutti per le risposte. Quindi se non ho capito male (ma forse si) quando dici

Però effettivamente il problema è lo stesso, anche l'ENC richiede più corrente di quella che Arduino può fornire, per cui la soluzione è la stessa: un bel regolatore 3.3V esterno.

dovrei alimentare la scheda con un alimentatore esterno? Se si qualche consiglio su cosa usare? O intendi qualcos'altro? (pazientate sull'ignoranza)

Inoltre quando nel primo post dicevo

La cosa piu strana è che anche togliendo l'alimentazione e ridandola dopo un po di tempo (anche oltre un'ora) e staccando il cavo ethernet la scheda addormentata non si riprende. Nemmeno ricaricado lo schetch. Solo dopo diversi tetativi di reset (fisico), dai/togli alimentazione e simili (senza che sia stato in grado di cogliere una logica in tutto questo).

E' possibile che sia causato dal problema che segnalate? A me pare strano che anche dopo diverso tempo senza alcuna alimentazione ci sia un problema così persistente. Se così fosse mi piacerebbe avere una rapida spiegazione tecnica. Giusto per capirci un po di piu.