funzionamento di Arduino Mega&WizNet+SD

Buongiorno cari moderatori ed esperti,

la mia domanda riguarda l’interfacciamento fra Mega e WizNet con SD.

Prima faccio una premessa:
Ho iniziato con una Uno.3 ed ho realizzato, un pò alla volta, quello che mi serviva, solo che sia la flash che la Ram erano al limite.
All’inizio non mi ero nemmeno reso conto che strani errori erano dovuti alla Ram, anche se un freeRam() messo qui e la, mi diceva che di Ram ne avevo ancora …
Sulla Uno+Ethernet+SD girano :

  • un programma di acquisizione Meteo (temperature Int/Est, Max/min, medie e umidità);
  • un programma di posta client
  • un server che mette in rete la pagina Meteo
  • un programmino calendario con NTP
    ed avrebbe dovuto starci anche la SD per le immagini da inserire nella pagina.

Partendo da zero, ho faticato ad attingere dal forum, perché c’è molta confusione e risposte da chi ha poca esperienza.

Quando mi sono trovato di fronte a cose mai viste, ho chiesto aiuto, per esempio per impaginare il web server.
Nessuna risposta e non ho insistito.
Non avendo mai usato HTML ho dovuto leggermi un pò di letteratura in merito, ma bastava che qualche anima buona mi dicesse di usare il TAG .
Poi avevo un problema con l’impaginazione della posta : il corpo del messaggio era visibile solo visualizzando la sorgente, mentre il soggetto era OK.
Visto che tanti non riescono nemmeno ad inviare una mail, potevo contentarmi, ma ho chiesto in giro.
Nessuna risposta, così ho messo i dati nel soggetto, e via.

Ero arrivato a qualcosa che poteva andarmi bene, ma non potevo usare l’SD.
Avevo usato massicciamente la macro(F) per risparmiare Ram, ridotto all’osso i commenti, anche troppo, ma bastava caricare l’#include SD e già andavo fuori.

Quindi la Mega. E qui i problemi e la domanda.

Per prima cosa, non c’era più la porta COM ; ho chiesto (italiano e inglese) e mi hanno detto di caricare FTDI.
Niente da fare, e poi mi chiedevo perché mai dover gestire qualche bit in più di indirizzi di memoria dovesse richiedere un altro driver.
Poi ho caricato il driver <Arduino\drivers\old_drivers\Mega 2560rev3.inf> e la COM si è creata, ma niente upload.
Sollecitato dal fatto che il compilatore indicava 32K Ram ho capito che dovevo selezionare la scheda giusta.
Chissà perché, pensavo che la scheda potesse scambiare due byte col compilatore per presentarsi.

Mica finita. Provo a caricare sulla Mega lo sketch che andava senza problemi sulla Uno, e l’upload si blocca.
Sul Forum, tanti a lamentarsi dello stesso problema, tentando di tutto e di più.
Un ragazzo ha pensato ad un overload della USB.
Ha ragione: ho tolto la WizNet e carica, quindi ho messo un alimentatore esterno e tutto funziona.
Ma perché non viene evidenziato sul sito ?

La Mega scalda, molto di più della Uno (altro che pochi mA), quindi la corrente erogabile dalla USB è al limite.
Ho detto che tutto funziona dalla Uno alla Mega, perché sulla Uno avevo sospeso l’SD.
Finalmente, senza problemi di flash e di Ram, attivo la sezione SD. E sulla Mega non funziona.

Leggo dei pin 11,12,13 che diventano 51,52,53, leggo dei pinMode OUTPUT su 4 e 10, provo gli sketc del grande Igoe (non ci dormiva la notte), metto digitalWrite(4, LOW) e digitalWrite(10, HIGH) quando entro nella subrSD e viceversa prima di uscire : nulla di nulla.

Provo vari sketch per leggere/scrivere directory, file e contenuti : tutti funzionano se metto la WizNet sulla Uno, ma se la WizNet è sulla Mega no.

Mi mandate qualche info o meglio uno sketch funzionante sulla Mega?
Ho provato le note di pablos e cantore : niente

Un sentito GRAZIE.

Dritan

Ciao dritan Scrivi tanto ma mancano le informazioni concrete per poterti aiutare.

Quale schede usi (per favre i link dove li hai comprato) Lo sketch che usi e i link alle librarie che usi.

L'Arduino MEGA ha come interfaccia un FT232 e serve il driver di quello. La risposta che Ti era stata data era giustavisto che avevi detto di avere una "Arduino MEGA" e non "MEGA 2560" L'Arduino UNO e MEGA2560 hanno come interfaccia un ATmega8u2 o 16U2 con il driver Mega 2560rev3.inf. Questo é descritto nel http://arduino.cc/en/Guide/HomePage

Come possiamo mandarti foto o cosiglairti qualcosa se non sappiamo cosa hai. WizNet non definisce una scheda ma é una ditta produttrice di integrati Ethernet.

Ma perché non viene evidenziato sul sito ?

Non possiamo sapere che combinazioni di Hardware stai unendo e le librerie che usi. Come si puó prevedere tutte le possibilitá. Arduino non é un sistema a blocchetti chiuso dove il produttore ha pensato a tutte le eventualitá e blocca certe combinazioni non possibili. Tocca a te avere le conoscenze per poter definire se certe cose funzionano insieme.

Ciao Uwe

Quando mi sono trovato di fronte a cose mai viste, ho chiesto aiuto, per esempio per impaginare il web server.
Nessuna risposta e non ho insistito.
Non avendo mai usato HTML ho dovuto leggermi un pò di letteratura in merito, ma bastava che qualche anima buona mi dicesse di usare il TAG .
Poi avevo un problema con l’impaginazione della posta : il corpo del messaggio era visibile solo visualizzando la sorgente, mentre il soggetto era OK.
Visto che tanti non riescono nemmeno ad inviare una mail, potevo contentarmi, ma ho chiesto in giro.
Nessuna risposta, così ho messo i dati nel soggetto, e via.

Mi ricordi me con sta MEGA quando non ci dormivo la notte, chiedevo per la sd e problemi sulla parte web e pochi davano risposte e queste non sempre risolvevano, ma non potevo nemmeno pretendere di non farli dormire neanche loro :), devi considerare che purtroppo qui sul forum ITA non molti usano arduino con la wiznet e altrettantinon usano la SD, molti si accontentano del programmino proposto dall’Ide e finisce lì, pochi fanno una cosa complessa (pubblicata) ma mirata comunque ad un utilizzo per loro e poco espandibile. Quindi diciamo che ti capisco :slight_smile:

a parte quanto ti ha detto uwefed, cosa ti serve con esattezza? perchè sono molti gli argomenti che hai toccato e vanno presi uno alla volta riducendo all’osso i consumi di ram, io qualcosa di quello che ho fatto sulla 2560 in tempo passato e funzionante ce l’ho ancora.

intanto come prima domanda dovresti dirci se hai completato l’installazione e riesci a fare l’upload degli sketch, se no è inutile proseguire.

poi ti consiglio di ignorare il discorso 50,51,52,53, semplicemente non usarli al momento (il 53 è un spi slave) i pin che interessano a te (con certezza te lo dico) con lo shield ufficiale sono il 4 e il 10
quindi non collegare nulla al PORTB (b7)13-(b6)11-(b5)12-(b4)10-(b3)50-(b2)51-(b1)52-(b0)53

metto digitalWrite(4, LOW) e digitalWrite(10, HIGH) quando entro nella subrSD

NO, quando tu vai a mettere in LOW il 4 apri il canale tra l’SD e l’SPI e non sei tu che devi decidere quando, se il micro non è pronto inchiodi tutto, entrambi vanno settati come OUTPUT, entrambi in HIGH solo nel setup e basta, non devi più nominare quei pin da nessuna parte del programma, anche questo te lo dico con certezza, sono le librerie SD ed Ethernet ad occuparsi di fare l’enable e disable nei tempi corretti.
Utilizza una SD di buona fattura, correttamente formattata, non di quelle recuperate da un vecchio cellulare, ai tempi diventai pazzo anche per alcune SD non apprpriate.

io personalmente potrei avere qualche carenza sullo sketch Mail, ma per il resto se hai bisogno siamo qui
Ho letto che hai bisogno di più pagine da aprire, non ho capito bene, spiega cosa vuoi fare a grandi linee perchè poi finisci col fare molto lavoro e dover cambiare tutto.
ciao

Intanto vi ringrazio per aver dato riscontro alla mia richiesta.

ciao Uwe :
ok per la nota; pensavo che Mega fosse per tutti una Mega2560. Si tratta di una Robotale Mega2560 R3 migliorata (HongKong), mentre la Ethernet è una W5100 della HanRun HR911105A.
Anche la Uno è della Robotale.
Sinceramente pensavo che un produttore, se vuole vendere “Arduino”, deve rispettare degli standard, e quindi qualunque prodotto con certa sigla dovrebbe essere intercambiabile.

Prima della Mega usavo la Uno R3 con la W5100, ed hanno sempre funzionato, stanno funzionando tuttora in remoto, ma senza SD.
Adesso il problema con la Mega è che sto unendo la Ethernet con la Mega invece che con la Uno.
Le librerie per la Uno+W5100, sono quelle consuete : <SPI.h> ed <Ethernet.h>, e poi due specializzate <OneWire.h> e <LiquidCrystal.h>.
Per la Mega+W5100 ho aggiunto <SD.h>.

Sono ancora convinto che un problema, riscontrato da tanta gente nel forum internazionale, richieda una nota pubblica.
Una volta caricato il driver, aperto la porta di comunicazione e selezionato la scheda giusta, non ti aspetti che il caricamento si impalli senza alcuna spiegazione (o meglio, la spiegazione c’è : troppa corrente).
La prova è evidente : stacchi la W5100 dalla Mega e il programma si carica.
“Se usate una Mega + W5100, procurate un alimentatore esterno a 7,5Vcc”

Magari non sei d’accordo, ma stavo per buttare la Mega. Ne ho acquistata un’altra da DX ma ancora non è arrivata.

ciao Pablos :
mi conforta quello che mi scrivi; vuol dire che non sono io a crearmi il problema :slight_smile:
Il fatto è che sono arrivato a pensare che la Mega potrebbe essere difettosa, e ne ho ordinata un’altra.
Ho notato che la pagina, creata dallo stesso sketch caricato sulla Uno, gira velocemente, mentre con la Mega è vistosamente più lento. In più scalda, e non è mai buon segno.
Con questo confermo che posso caricare lo sketch sulla Mega 2560, e veniamo agli argomenti :

  • WEB server :
    ho iniziato non avendo idea di HEAD, TITLE, BODY ecc.
    sono riuscito a costruire la mia pagina, ma volevo andare avanti e ricevere comandi dal browser.
    Qui ho chiesto aiuto, senza riceverlo (forse come dici tu dovevo chiedere un help), e poi ho trovato il modo con . Certo sono pagine essenziali, senza pulsanti colorati con bordi a rilievo, ecc.
    Quindi : il browser deve far cambiare i dati mostrati sulla pagina, che vuol dire scegliere la pagina da visualizzare (indirizzo/pag). Vuol dire anche attivare delle porte da comando.
    Se hai qualcosa, sarà certo più elegante di quello che ho fatto io, magari.
  • SD :
    ma volendo aggiungere immagini senza andarle a recuperare dai siti, dovevano stare sulla SD.
    Niente da fare, la Mega la SD non la vede proprio : è una Sony SR8-C4.
    Monto la scheda sulla Uno e il programma gira senza problemi, ma devo rinunciare al Meteo ed alla posta: se va con la Uno direi che non è un problema di SD.
    Uwe giorni fa mi ha scritto di non essere uno specialista circa i quesiti che ponevo, mentre tu mi dici che sulle mail non ti sei mai appassionato, mentre su Mega+Ethernet+SD hai fatto discreta esperienza.
    Ho letto la tua nota tecnica, capisco e ne prendo atto, ma ho consumato il tasto slash (le ho provate tutte).
    Vista la tua comprensione, se hai qualcosa che utilizzi la SD (e quindi l’Ethernet) e vuoi farmi provare, sarò ben contento; se poi a te funziona e a me no, allora è la Mega.
  • MAIL :
    le tue carenze sulla posta saranno a buccia d’arancia rispetto ai miei crateri. Chissà se puoi aiutarmi. Ho postato in merito, spiegando che il problema non è l’invio della posta : è il suo “impacchettamento”.
    Nel senso che scrivo il soggetto (subject) e va a posto, poi scrivo il corpo del messaggio (body) ma il ricevente vede un messaggio vuoto : per vedere il contenuto deve visualizzare la sorgente del messaggio. Inaccettabile, così ho messo una pezza scrivendo tutto nella riga del soggetto …
    Il mio post del 6 giugno sta ancora lì.

Beh, con questa enciclopedia, ho dato abbastanza chiarimenti.

Che mi possiate aiutare o no, comunque è stato di conforto.

Ciao e grazie,
Dritan

... sulla via di Damasco !

ma se fosse un contatto difettoso, magari solo del pin4, della scheda Arduino ?

Se separo le schede, e collego l'alimentazione ed i pins 4,10,11,12,13 tramite i ponticelli, è lo stesso vero ?

ci provo appena ho un pò di tempo.

ciao, Dritan

Ho notato che la pagina, creata dallo stesso sketch caricato sulla Uno, gira velocemente, mentre con la Mega è vistosamente più lento. In più scalda, e non è mai buon segno.

Ohhh finalmente, sei il secondo oltre a me che se ne è accorto, la mega viaggia a meno della metà della UNO.

Metti lo sketck che usi per la SD e vedo se gira sulla mia e la controlliamo

ciao

ps: 13$ la mega e 20$ la ethernet :fearful: ma non è che hanno dimenticato di metterci dei pezzi??

Dritan Ti consiglio di studiarti il HTML e di informarti in un tutorial su come funziona il protocollo email perché le email possono avere una parte testo e una parte HTML che non tutti i programmi visualizzano. Qua siamo un Forum che si occupa di programmazione di microcontroller e non di HTML. È difficile che ricevi risposte in merito perché c'é poca gente che ha fatto queste cose.

Non Ti funzionerá mettere delle immagini nella SD e aggiungere nella pagina Web perché l' arduino UNO e MEGA non sono abbastanza potenti per farlo. Una soluzione sarebbe Arduino YUN, ma visto che pochi la usano avrai problemi di ricevere risposte nel forum italiano. Forse potresti trovare aiuto e informazioni nella sezione inglese che tratta il YUN.

Se separo le schede, e collego l'alimentazione ed i pins 4,10,11,12,13 tramite i ponticelli, è lo stesso vero ?

Quato vale per la UNO. La MEGA ha un altro controller che ha l' interfacci su altri pin

http://arduino.cc/en/Main/ArduinoBoardMega2560: 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.

http://arduino.cc/de/Reference/SPI sotto connections.

Sinceramente pensavo che un produttore, se vuole vendere "Arduino", deve rispettare degli standard, e quindi qualunque prodotto con certa sigla dovrebbe essere intercambiabile.

Non capisco; dici prima

Si tratta di una Robotale Mega2560 R3 migliorata

e poi credi che sia uguale al 100% Poi non credo che una ditta Cinese adesisca alla iniziativa zero carbon footprint impatto zero come stampata sulla scheda. http://forum.arduino.cc/index.php?topic=52680.msg379746#msg379746

Ho anche un dubbio che si possa far girare in contemporanea un WEB server e spedire email.

Ciao Uwe

Ciao Uwe,

posso assicurarti che funziona, sta funzionando adesso. La mia Arduino Uno legge alcuni sensori, chiede NTP per impostare epoch e procede con millis(), crea il calendario, formatta i dati, crea la pagina Web sempre accessibile, riceve comando da GET per cambiare pagine ed attuare altri sensori, invia ad intervalli regolari i dati formattati per e-mail, usa la SD.

Detto così sembra che fa chissà che, ma tutto viene fatto in modo essenziale : sono solo 5K di programma che ovviamente non sono riuscito a compattare per una Uno.

Prendo atto di quanto dici per la mail, ma non ho tanto tempo da dedicare all'approfondimento, almeno per ora. Per il momento, mettere le informazioni nel soggetto è inelegante, ma funziona.

Volevo aggiornare la situazione SD : ho provato a separarle connettendole cablate, ma non era un problema di falso contatto.

Dev'essere qualcosa di più fumoso.

CREDEVO DI AVER TROVATO perchè la Mega e la W5100 con SD non funzionavano bene insieme. Ho ripetuto la prova più volte ottenendo lo stesso risultato. Sembra che quando il compilatore carica le due schede connesse, e dà per completato il download, in effetti questo non sia vero o sia parzialmente vero. Non metti in dubbio il messaggio dell'uploader : provi, e il programma si impalla. E perdi le ore a debuggare. Poi ho fatto di nuovo il tentativo di separare le schede, come all'inizio per il problema di alimentazione. Disconnetti le schede, fai l'upload dello stesso sketch ottenendo sempre la conferma del caricamento completato, togli alimentazione, monti la W5100, dai alimentazione, e tutto funziona, SD compresa. Forte ! Magari riguarda solo la Robotale, ma è proprio forte (ok, sono cinesi, che si pretende, ma una di marca non lo fa ?)

E INVECE mentre stamane prima di uscire, la cosa si è ripetuta identica più volte, adesso, 10 ore dopo, l'errore si ripete.

Forse Pablos ha ragione : troppo economiche per funzionare bene ?

Ciao, Dritan

P.S. come si fa a modificare un Post dove vuoi correggere un errore senza riscrivere tutto ? non vedo un tasto "modifica"

Ciao dritan

il tasto per modificare il messaggio lo trovi all’inizio del post in alto a destra.
Se ti è possibile posta lo sketch che stai utilizzando, magari stai sbagliando qualcosa
io uso una funduino mega 2560 + ethernet shield 5100 e tutto funziona alla perfezione, riesco a creare un server e a salvare dati sulla scheda SD.
Non hai un alimentatore esterno da 12V al quale collegare arduino?

ciao TuonoPayne,

sei gentile, mi era sfuggito il modify. Vedi, non è una questione di sketch, se lo pensassi lo avrei già pubblicato per intero come ho fatto per le sezioni "calendario" e "mail". Anche Pablos si è reso disponibile a testarlo. A proposito, hai esperienza di "impacchettamento" dell'e-mail ? (mio post del 6 giugno).

Il fatto è che, anche se sono un neofita di Arduino, sono convinto (sbaglio ?) che un programma si carica o non si carica, funziona o non funziona. Non può essere che talvolta si carica e talvolta funziona. Quindi dev'essere l'hardware. Con la UnoR3 non avevo avuto altri problemi che di Ram, ma con la Mega .. Appena avuta, ho provato a caricare lo sketch, ma nemmeno completava l'upload (non vorrei ripetere, ma la cosa succedeva a parecchi, ed era un problema di alimentazione dall'USB, almeno da "alcune" porte USB). Quindi, alimentatore a 7,5V esterno.

Non hai un alimentatore esterno da 12V al quale collegare arduino?

(perchè a 12V, povero regolatore !) Cmq, ieri mattina, con una certa sequenza di "avvio", funzionava tutto, ma proprio tutto. Credevo fosse un baco hardware di qualche tipo, ma nemmeno. Per sapere come va a finire, aspetto una nuova Mega.

Ciao, Dritan

12V perché nella pagina di arduino mega 2560 è riportato che le tensioni raccomandate vanno dai 7 ai 12V, ma se con 7.5V riesci a caricare i programmi allora ok tieni quella. giusto per curiosità se provi a caricare gli sketch di esempio arduino funziona correttamente? se si è probabile che il problema sia software. purtroppo non ho mai neanche provato ad inviare una mail con arduino, l'unico progetto a cui ho lavorato è un web server. Comunque per lavorare in html ti consiglio di usare un editor grafico come addobe dreamwear ciao

Non sono un informatico purtroppo, ma un elettronico; quindi quando leggo 7-12 V di alimentazione esterna e sulla scheda vedo un piccolo regolatore senza dissipatore, vedo che volentieri le porte USB non reggono la coppia Mega+W5100, e noto come la scheda scalda con alimentazione esterna, allora entro col minimo di voltaggio ammissibile. Hahaha.

giusto per curiosità se provi a caricare gli sketch di esempio arduino funziona correttamente?

Si, si, quando ho visto che la Uno andava e la Mega si impallava, ho provato con tutti quei minisketch (mio post del 15 giugno) demo della SD : niente.

Mi sono fermato, non posso continuare a girare intorno ad un problema che sembra software e magari è solo hardware. Quando gli gira, il kit Mega+Ethernet funziona alla grande, quindi aspetto il nuovo hardware.

Mi vado a guardare dreamwear. Ciao.

Se usi solo la mega senza la shield ethernet gli sketch di esempio funzionano?

Se usi solo la mega senza la shield ethernet gli sketch di esempio funzionano?

se parli della SD, come provare ? la SD sta sulla Ethernet

. . apprezzo la tua disponibilità, ma senza nuovo hardware non faccio altro. Ho notato che anche il DHCP prende indirizzi strani.

intendevo gli sketch di esempio che utilizzano solo la mega (scollega la shield ethernet) come blink al limite se hai la possiblità prova a far accendere più di un led. in che senso indirizzi strani?

Naturalmente, con la sola board Mega girano cose anche più complesse di blink. E non si pone il problema di upload, nè occorre alimentazione esterna.

DHCP : poniamo che il DHCP sia impostato da 10 a 100, e che al Mac di Arduino sia assegnato 90; talvolta l'IP dichiara 101, ed in quel caso non funziona.

Guarda che dice qualcuno già da un anno : - gc9n del 10apr13; - tortelli2 del 3 dic13.

Chissà che c'entri qualcosa il riporto dell'SPI sull'ICSP

Mi piace la battuta di Pablos (Genova):

ps: 13$ la mega e 20$ la ethernet :fearful: ma non è che hanno dimenticato di metterci dei pezzi??

Ciao, Dritan

DHCP : poniamo che il DHCP sia impostato da 10 a 100, e che al Mac di Arduino sia assegnato 90; talvolta l'IP dichiara 101, ed in quel caso non funziona.

Se io ho 10 computer nella rete e le loro schede non hanno un IP statico impostato da software, i miei pc ne chiederanno uno al router, ogni volta che accendo il pc potrei averlo diverso, dipende dalla sequenza di accensione. Quando avrò bisogno di raggiungere uno di questi tramite IP ci sarà però un problema ... che IP avrà la mia macchina? Quindi per default non si usa il DHCP per macchine che devono essere raggiunte via IP. Perciò per fare questo, essendo il DHCP un protocoolo di comunicazione col router, arduino invia un comando (in broadcast) al router "dammi un IP disponibile" e il router ne invia uno, se il router è impostato da 10 a 100 non ti darà mai 101.

Se poi a capo della rete di questi 10 pc c'è un server che contiene dati dove tutti devono accedere è fondamentale che quel server abbia un IP statico (fisso) mentre i client no.

Cosa centra il MAC assegnato a 90? il mac è un altra cosa ... se intendevi dire che arduino è assegnato a 90 allora non stai usando il dhcp.

Quindi il DHCP si usa quando non è importante sapere che IP ha arduino, ottimo se lo usi come client, non va bene se usi arduino come server. Va bene anche se usi un dns server esterno dove arduino spedisce ogni tot tempo l'ip aquisito col dhcp o ad ogni cambiamento.

Se vuoi che il router dia un IP statico alla tua macchina a ogni accensione utilizzando il DHCP e senza impostarlo nel software arduino allora devi giocare col MAC. Sei sicuro a sto punto che sia un problema della tua scheda e non una configurazione della tua rete a dare problemi?

Poi come ti ho detto post fa, senza esempio di codice che stai usando possiamo buttare giù tante belle parole scientifiche, ma tu concludi poco e noi ci capiamo ancora meno.

ciao

Ciao Pablos, è sempre un piacere leggerti. Sono stato troppo stringato, ma talvolta mi era sembrato di essere prolisso rispetto ad altri post. Ho scritto :

DHCP : poniamo che il DHCP sia impostato da 10 a 100, e che al Mac di Arduino sia assegnato 90;

e, senza altre informazioni, tu fai notare, giustamente :

Se io ho 10 computer nella rete e le loro schede non hanno un IP statico impostato da software, i miei pc ne chiederanno uno al router, ogni volta che accendo il pc potrei averlo diverso, dipende dalla sequenza di accensione. Quando avrò bisogno di raggiungere uno di questi tramite IP ci sarà però un problema ... che IP avrà la mia macchina? Quindi per default non si usa il DHCP per macchine che devono essere raggiunte via IP. Perciò per fare questo, essendo il DHCP un protocoolo di comunicazione col router, arduino invia un comando (in broadcast) al router "dammi un IP disponibile" e il router ne invia uno, se il router è impostato da 10 a 100 non ti darà mai 101.

Se poi a capo della rete di questi 10 pc c'è un server che contiene dati dove tutti devono accedere è fondamentale che quel server abbia un IP statico (fisso) mentre i client no.

Cosa centra il MAC assegnato a 90? il mac è un altra cosa ... se intendevi dire che arduino è assegnato a 90 allora non stai usando il dhcp. Quindi il DHCP si usa quando non è importante sapere che IP ha arduino, ottimo se lo usi come client, non va bene se usi arduino come server.

Quello che ho scritto significa che quando il router, che gestisce il DHCP, riceve la richiesta da un certo MAC (quello dell'Arduino), è impostato per dargli sempre lo stesso IP. Poi, siccome a quell'IP ha aperto una porta, il server è servito. Potrei usare un IP fisso per Arduino, certo, ma se cambio router ..

byte mac[] = {0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC};
IPAddress ip(192,168,x,xxx); // se conosci il Gateway
// sarebbe meglio il DHCP, ma essendo un server, l'IP deve essere CERTO
// start the Ethernet connection:
 if (!Ethernet.begin(mac))
 {
  Serial.println(F("!DHCP"));
// DHCP fallito, IP fisso:
  Ethernet.begin(mac, ip);
 }
 else Serial.println(F("DHCP!"));

Nel mio caso, per dettagliare, un NetGear DGN2200 concede indirizzi da 10 a 100, ed ha un certo numero di IP riservati ad altrettanti MAC. C'è poi un extender wireless che gestisce altri indirizzi da 200 a 220. Non dovrebbe entrarci niente col DHCP del DGN2200, tantopiù in LAN, eppure talvolta la Ethernet con la Mega dichiara un IP 201 ! Ho dei dubbi anche sulla stabilità del DGN2200. Spero di aver esposto in modo più esauriente ;). Per quanto riguarda Mega + Ethernet&SD propendo sempre di più verso l'idea che c'è qualcosa di hardware sotto, perchè se guardi sul sito globale, troppa gente ha problemi (non vede la SD con la Mega ma tutto OK con la Uno). Il codice è minimale :

void SD()
{
 File dataFile = SD.open("index.htm");
  if (dataFile)
  {
   while (dataFile.available())  {client.write(dataFile.read());}
   dataFile.close();
   Serial.println(F("SD ok"));
 }
 else Serial.println(F("errore in index.htm"));
}

All'inizio mi ero interrogato sui pin di interfaccia, ma non ha nessuna importanza se sono 10,11,12,13 o 50,51,52,53, perchè tanto si usa il connettore ICSP. Buona giornata a tutti e grazie per il riscontro. Dritan

è sempre un piacere leggerti.

ehhhhh, non esagerare, ultimamente per alcuni non è stato proprio bello leggermi ahahahahhahaha

byte mac[] = {0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC};

questo non è il massimo, il router potrebbe essere infastidito da un MAC che non rientra in certi standard, usa il suo che hai dietro la scheda ethernet è meglio, se non lo hai cercane uno che abbia un senso su internet.

Leggi questo articolo, ti fa capire che alcuni router identificano dai primi numeri del MAC se la scheda di rete è tipo wifi o via cavo http://www.ilsoftware.it/articoli.asp?tag=Indirizzo-MAC--Wi-Fi-e-Ethernet--cos-e-e-come-trovarlo_9896

C'è poi un extender wireless che gestisce altri indirizzi da 200 a 220. Non dovrebbe entrarci niente col DHCP del DGN2200, tantopiù in LAN, eppure talvolta la Ethernet con la Mega dichiara un IP 201 !

Non lo dico con certezza, ma potrebbe essere che il tuo router mega-intelligente l'abbia classificata come wifi oppure lo hai messo in condizione di incertezza :)

non ha nessuna importanza se sono 10,11,12,13 o 50,51,52,53, perchè tanto si usa il connettore ICSP.

non sarebbe proprio esatto 11,12,13 o 50,51,52 si .... ma il 10 o 53 hanno il loro peso non trascurabile (il 10 è master e il 53 è slave) nel tuo caso il 10 è fondamentale

ciao

nel setup hai inserito come suggerito da pablos le seguenti righe?

pinMode(4, OUTPUT);
  pinMode(10, OUTPUT);
  digitalWrite(4, HIGH);
  digitalWrite(10, HIGH);