Nuovo modulo nuovo problema.... Enc28j60 module su arduino mega 2560

Salve a tutti oggi ho messo mani al modulo ho connesso tutti i cavi seguendo inizialmente la prima guida:
http://www.geeetech.com/wiki/index.php/Arduino_ENC28J60_Ethernet_Module
Messo a caricare il code mi da errori di compilazione quindi ho provato questa libreria GitHub - njh/EtherCard: EtherCard is an IPv4 driver for the ENC28J60 chip, compatible with Arduino IDE
La carica senza errori ma nulla non ne vuol sapere.

Ho carico un sample collegando l'ethernet al router un netgear n300 , il router mi segna arancio e non verde come se lo vede ma non funzoina, carico il code ma niente nessun segno di vita.

Il modulo è questo :
http://www.ebay.it/itm/ENC28J60-Ethernet-LAN-Network-Module-Arduino-PIC-/130863648999?pt=UK_BOI_Electrical_Components_Supplies_ET&hash=item1e7814d0e7#ht_1344wt_1144

http://upload.alibaba.com/wsproduct_repository/upload/135/306/879/094/hz-fileserver-upload2_h9la2xek.jpg?size=162988&height=700&width=700&hash=512a6c4f1b6a57f30f5d056759ea2ee1

Perfavore aiutatemi sto perdendo le speranze e la pazienza visto che mi son costruito lo shield e speranzoso di far funzionare l'ethernet ma alla fine non va un c.....

Ps sbagliato sezione ... perfavore qualche moderatore puo' spostarla in software grazie e scusate ancora :cold_sweat:

Ad occhio c'è già una prima incongruenza ...
... la prima guida che indichi ti fa collegare il piedino di CS al pin 10, la libreria che stai usando, quella presa da github, (... sperando sia quella giusta), usa come CS il pin 8 (... apri EtherCard.h e guarda il commento a riga 19).

Magari io farei una prova a spostare il CS dal pin 10 al pin 8 ... e ci togliamo il primo dubbio ... :wink:

Guglielmo

Hai usato i pin 10 a 13? Il Mega non ha la SPI lí ma sui pin 50 a 53, oppure usi il conettori ICSP. come CS puoi usare qualsiasi pin che vuoi.

SPI: 50 (MISO), 51 (MOSI), 52 (SCK), 53 (SS). These pins support SPI communication using the SPI library. The SPI pins are also broken out on the ICSP header, which is physically compatible with the Uno, Duemilanove and Diecimila.

Ciao Uwe

No quei pin non sono validi perchè sono per arudino uno sul mega la spi è 50 51 52 e 53 per la cs.... Il router rileva la connessione lan ma non mi assegna ip. Se faccio test dhcp di ethercard mi dice il mac del modulo e poi si pianta e non va avanti .....

Come ha detto uwe , l'abbiamo scritto insieme XD

Comunque niente adattatore icsp

Ok, scusa, no avevo notato che sei su una Mega ...
... mi resta comunque un dubbio ... mentre siamo d'accordo su pin MOSI, MISO e SCK, se ben ricordo il CS va gestito da programma e può essere un qualunque pin.

Quello definito di base, 10 sulla Uno e 53 sulla Mega, credo si intenda nel caso il modulo venga usato come Slave (... modalità per altro attualmente NON supportata dalla libreria SPI). Nel caso di master che colloquia con dei devices SPI slave, se ben ricordo, è il programma che decide quale pin usare per selezionare il modulo.

Non vorrei che quindi, devi si collegare MOSI, MISO e SCK ai relativi pin della Mega, ma il CS ... rimanga quello definito nella libreria ...

... salvo che non abbiate messo le mani nella libreria ed abbiate modificato il tutto :smiley:

Guglielmo

Allora , ti dico il mi intento qualè facciamo prima sono un neofita di arduino , diciamo un autodidatta ma anche un webmaster ("Della vecchia scuola tutto in codice"). Il mio intento è interfacciare arduino con l'impianto che ho creato che consiste in un antifurto tramite pir un impianto led rgb e i classici sensori tra cui infrarossi e se riesco a far quadrare il tutto mettero' anche un lcd touch e una cam recuperata da pc o anche da un cellulare vecchio(c'è le ho gia devo vedere come controllarle), che al movimento filma cosa succede.
Perchè ho detto che sono un webmaster il mio intento è anche fare una webapp per il controllo dell'impianto del tipo avvia la registrazione me la invia al router che me la instrada sul mio server personale che mi contatta sul cellulare e mi abilità alla visione della cam. Son tutte cose che puoi comprare ma il gusto di farsele da se come tutti voi sapete non ha eguali XD.
Ora io ho collegato il tutto credo alla perfezione , il mio shield è cosi :
http://sphotos-h.ak.fbcdn.net/hphotos-ak-frc1/906445_10151384964969033_795768491_o.jpg

Versione millefori poi da portare su basetta prestampata , quindi ricapitolando è tutto collegato come da predefinito il cs è su low perchè non l'attivo da codice , infatti faccio partire proprio il sample del test dhcp , il punto è che mi parte con il macaddres del modulo e si blocca non mi da le altre informazioni. Ho quindi settato manualmente sul router ip e mac pensando sia un problema da parte router niente me lo vede sulla porta infatti si illumina ma nei dispositivi collegati no.
Sbaglio qualcosa io o son cosi sfigato da beccare tutti i modulo incompatibili , eppure è il piu' diffuso deve andare per forza...

Sembra un problema di autonegoziazione del protocollo....
Dovresti provare a frapporre uno switch ethernet fra arduino e il router e vedere se così ti si pianta o meno.
Capita con i router recenti e con alcuni che supportano gigabit.

Allora, diamo al momento per scontato che tutti i collegamenti sono giusti (... li avrai sicuramente ri-verificati :wink: ) e vediamo di capirne di più a livello LAN ... assegnazione del MAC, dell'IP, ecc.

... hai cominciato con uno degli esempi più semplici che sono allegati alla libreria su github ? Esempio ... getStaticIP.ino cosa ti da ?

Guglielmo

Girando in giro su siti francesi e quant'altro tutti con sto santo pin 53 e cs per lo slave che nelle librerie dava sempre problemi cosi sono andato ad settarlo manualmente come sugerito su un topic per arduino 1:

if (ether.begin(sizeof Ethernet::buffer, mymac,53) == 0)

E bene ora funziona in static ho pingato dal mio pc pero' succede una cosa strana ossia il router non lo vede............ o meglio la luce rimane arancio per dire si è collegato ma in dispositivi collegati non rileva il mac e quatn altro.
In dhcp niente ho provato viene assegnato un ip vado a pingare ma niente ....

AGGIORNAMENTO !!!
Sono riuscito a farlo andare ,pingando google ora mi viene rilevato anche sul router , il codice è il seguente:

// Ping a remote server, also uses DHCP and DNS.
// 2011-06-12 <jc@wippler.nl> http://opensource.org/licenses/mit-license.php

#include <EtherCard.h>

// ethernet interface mac address, must be unique on the LAN
static byte mymac[] = { 0x74,0x69,0x69,0x2D,0x30,0x31 };

byte Ethernet::buffer[700];
static uint32_t timer;

// called when a ping comes in (replies to it are automatic)
static void gotPinged (byte* ptr) {
  ether.printIp(">>> ping from: ", ptr);
}

void setup () {
  Serial.begin(9600);
  Serial.println("\n[pings]");
  
  if (ether.begin(sizeof Ethernet::buffer, mymac,53) == 0)
    Serial.println( "Failed to access Ethernet controller");
  if (!ether.dhcpSetup())
    Serial.println("DHCP failed");

  ether.printIp("IP:  ", ether.myip);
  ether.printIp("GW:  ", ether.gwip);

#if 1
  // use DNS to locate the IP address we want to ping
  if (!ether.dnsLookup(PSTR("www.google.com")))
    Serial.println("DNS failed");
#else
  ether.parseIp(ether.hisip, "74.125.77.99");
#endif
  ether.printIp("SRV: ", ether.hisip);
    
  // call this to report others pinging us
  ether.registerPingCallback(gotPinged);
  
  timer = -9999999; // start timing out right away
  Serial.println();
}

void loop () {
  word len = ether.packetReceive(); // go receive new packets
  word pos = ether.packetLoop(len); // respond to incoming pings
  
  // report whenever a reply to our outgoing ping comes back
  if (len > 0 && ether.packetLoopIcmpCheckReply(ether.hisip)) {
    Serial.print("  ");
    Serial.print((micros() - timer) * 0.001, 3);
    Serial.println(" ms");
  }
  
  // ping a remote server once every few seconds
  if (micros() - timer >= 5000000) {
    ether.printIp("Pinging: ", ether.hisip);
    timer = micros();
    ether.clientIcmpRequest(ether.hisip);
  }
}

Non capisco come mai negli altri modi tipo tramite test dhcp non lo rilevi e con questo si... Che sia per via della richiesta continua di ping e quindi con lo statico e il dhcp test si collegava mostrava i dati e poi si scollegava e non facevo in tempo a vedere l'aggiunta del mac sul router ??

Sapete indicarmi della documentazione sull'uso della ethernet , ok gli esempi ma come comunico ad esempio con un php ecc non riesco a reperire nulla...

Ho un ulteriore problema , sta volta via hardware ho piazzato la ethernet e avendo un12v dc stabilizzato da 10A ho usato un lm7805 per portarli a 5v , da qui l'uscità è collegata al +5v del modulo. Ora non capisco come so che il regolatore senza carico è fresco non scalda quindi non ci sono corti , con su un modulo relè e un sensore audio scaldicchia ma siamo su valori accettabili , il dito sopra lo tieni tranquillamente.
Accendo e gia dal primo istante il regolatore inizia a scaldare un casino tanto da non tenere piu' il dito sopra , ho montato un dissipatore ma scalda cmq un casino lm che ho preso è da 1.5 A , il modulo al massimo 180mA di carico ... che sia perchè assorbe in modo discontinuo e non stabilizzato il modulo quindi mi conviene aggiungere i 2 condensatori da 0.33uF ingresso e 0.1uF in uscita ( non basta solo quello in uscita se ho ga una tensione in ingresso sul regolatore stabilizzata) ?
O in quale altro modo posso abbassare a 5v la tensione senza un carico termico cosi elevato ?

Quel modulo va alimentato a 3,3V..

No ha una doppia alimentazione o 3.3v oppure 5v e la nuova versione a 12pin e non a 10 :stuck_out_tongue:

Ho messo 4 diodi da 12.26 è arrivata a 9 volt sul vin del 7805 ,con una differenza quindi di 4 volt , il carico ora è di 140mA quindi si avrà una potenza di 0.560watt rispetto alla iniziale di 0.980watt quindi ogni diodo dissipa circa 0.105watt
(Scalda comunque un sacco e i diodi anche loro stanno rosolando per bene .... Non credo sia molto normale ... Che il regolatore vada in autooscillazione ?

Ora ho maggiorato il dissipatore , il regolatore sulla sinistra è solo in posizione momentanea per sostenere il dissipatore quello di fianco al led di stato shield è in funzione , ed è praticamente tiepido , lo lascio la nottata acceso per vedere domani mattina dopo 7 ore il calore il delta che ha raggiunto.

Ho notato che coni 5volt scalda un bel po il chip ENC28J60 dell'ethernet , forse per ovviare a tutto questo trambusto mi conviene collegare l'ethernet direttamente al 3.3v di arduino tanto con 10A in vin non ho problemi per 140ma.

Secondo voi cosa è meglio fare ?

Anch'io ho letto che il chip ENC28J60 accetta 3V3.
Inoltre non capisco il passaggio in cui dici che hai 10A su Vin. Sì, ma a che tensione? 5V? Guarda allora che dal regolatore a 3V3 dell'Arduino non escono più di 50 mA.

Allora a monte di tutto il circuito ho un 12v 10A, l arduino viene alimentato da 11 volt dal vin sulla scheda stessa. I 12 v poi dopo esser passati da 4 diodi raggiungono i 9v e poi entrano nel lm7805 da cuoi escono 5v a 1.5A. Sulla scheda che ho acquistato ce nella pedinatura 5v e anche 3v come dall immagine che vi ho mostrato prima., quindi viene alimentata da quest ultimo. Mi è stato detto che sull arduino posso tranquillamente montare direttamente l importante è non superare una certs soglia rispetto agli ampere erogati sulla scheda. Infatti anche se la scheda consuma un bel po, se la collego direttamente funziona.