Arduino Mega e Ethernet

Salve, il problema che voglio sollevare è già presente da tempo sulla rete ma nessuno riesce a risolverlo del tutto. Mi trovo in questa situazione:
Arduino Mega 2560
Ethernet Shield +SD
RTC shield
Ora: il software inizializza la scheda ethernet. Tutto funziona. Dopo alcune ore o giorni(a seconda di come gli gira) la parte ethernet si pianta e la pagina web, non è piu raggiungibile.
Ho cercato di seguire varie guide:
https://forum.arduino.cc/index.php?topic=146415.0
http://forum.arduino.cc/index.php?topic=263538.0
http://mcukits.com/2009/04/06/arduino-ethernet-shield-mega-hack/

e prendendo spunto da tutte queste sono arrivato ad questa cosa:

i Pin 13,12,11 li ho scollegati dal Arduino Mega e li ho collegati al 50,51,52 del Mega;
ho settato alto il 53,10,4 da software

la spia di RX della shield ethernet è spesso acceso e lampeggiante, insieme al led LINK e al led della velocità.

Ora vorrei capire come fare per rendere stabile per sempre la pagina web, in maniera che non debba resettare il tutto ogni qualche ora ecc anche perche lo uso da remoto e non posso resettarlo.

posto le impostazioni dello sketch riguardanti la ethernet.

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; // mac address
byte ip[] = { 192, 168, 1, 19 }; // ip arduino internet in
byte gateway[] = { 192, 168, 1, 1 }; // internet access via router
byte subnet[] = { 255, 255, 255, 0 }; //subnet mask
byte dnsServerIp[] = { 192, 168, 1, 1 }; //subnet mask
EthernetServer server(9595); //server port
String readString;
 Ethernet.begin(mac, ip, gateway, subnet, dnsServerIp);// Start Ethernet
  server.begin();

Aspetto qualche idea forse decisiva...
Grazie mille in anticipo a tutti

Ti rammemento che, in conformità al REGOLAMENTO (che ti consiglio di rileggere con attenzione), punto 13, il cross-posting è proibito e quindi ti prego di NON andare a scrivere su altri thread relativamnete a questo stesso argomento.

Grazie.

Guglielmo

il problema che voglio sollevare è già presente da tempo sulla rete ma nessuno riesce a risolverlo del tutto.

Sarà ... ma io non ce l'ho mai avuto questo problema (mega+ethernet+SD), forse non hai seguito bene o cercato abbastanza..... non so.

Sarebbe opportuno usare l'apposito tag che fa il collegamento ipertestuale dei link (il classico blu sottolineato) che non usa nessuno, ci evita di fare il copia incolla e aprire nuove finestre.

Non hai specificato l'hardware, versioni, originali o no, IDE usata compreso il tipo di SD impiegato
Non hai specificato se esistono interfacce ad esso collegate ed eventuali carichi induttivi/capacitivi/resistivi
Non ci sono schemi ne specifiche di alimentazione del tutto
Non hai postato lo sketch, da quello che hai messo vedo 3 linee di codice inutili + una che complica il tutto.

Questa non l'ho capita

i Pin 13,12,11 li ho scollegati dal Arduino Mega e li ho collegati al 50,51,52 del Mega;

i pin che interessano lo shield sono il 10-11-12-13-4-50-51-52-53 poichè lo shield è connesso all'SPI che si trova al centro della scheda, non devi scollegare nulla, semplicemente non vanno usati (i pin sopracitati) per fare altre cose quando monti uno shield ethernet + SD o qualunque altra scheda che utilizza l'SPI.

I treadh del 2013 sono vecchi e ancora poco chiari, cerca 2015-2016

Aspetto qualche idea forse decisiva...

se l'hardaware è originale le soluzioni sono già presenti nel forum

Sarà ... ma io non ce l'ho mai avuto questo problema (mega+ethernet+SD), forse non hai seguito bene o cercato abbastanza..... non so.

potrebbe essere che non seguo in maniera corretta il giusto percorso, infatti vorrei capire bene e riuscire con l'aiuto di gente piu esperta ad ottimizzare e far funzionare tutto alla perfezione.

Non hai specificato l'hardware, versioni, originali o no, IDE usata compreso il tipo di SD impiegato

come segnato, hardware: Arduino Mega 2560(non so come capire se originale), Ethernet shield rev 3 (non so se originale) con chip W5100, RTCshield. Nessuna SD.

Non hai specificato se esistono interfacce ad esso collegate ed eventuali carichi induttivi/capacitivi/resistivi

Esiste un'interfaccia modulo Relè a 6 relè, a cui sono collegati dei relè già esistenti nell'impianto civile, che comandano la caldaia per l'uso del riscaldamento, poi, ad alcuni di questi relè inoltre sono collegate delle elettrovalvole per l'irrigazione.
Come sensori esterni sono collegati due sonde DS18b20 su bus, poi un sensore di flusso analogico, e degli interuttori manuali.
Il tutto viene alimentato tramite usb con un alimentatore 5v,1A

Non hai postato lo sketch, da quello che hai messo vedo 3 linee di codice inutili + una che complica il tutto.

Lo sketch lo posto sotto in allegato.

i pin che interessano lo shield sono il 10-11-12-13-4-50-51-52-53 poichè lo shield è connesso all'SPI che si trova al centro della scheda, non devi scollegare nulla, semplicemente non vanno usati (i pin sopracitati) per fare altre cose quando monti uno shield ethernet + SD o qualunque altra scheda che utilizza l'SPI.

Sui link che ho postato sopra(mi scuso se non sono direttamente collegati ma solo copiati) indicavano questi rimedi sulla scheda MEGA
Per quello ho seguito la guida ma con scarsi risultati.

se l'hardaware è originale le soluzioni sono già presenti nel forum

mi potrebbe indicare dove si trovano questi thread sul forum in maniera da leggerli perche io non riesco a trovarli.

Come schema elettrico non riesco a postargli tutto lo schema perche abbastanza complesso. se realmente le serve, vedo di realizzarlo.

Domos_rev11.ino (52.1 KB)

Faccio una rettifica allego ora lo skhetc completo.

Domos_rev13.ino (52.2 KB)

Ok, l'ho messo in test
Su android anche se non scrivi le credenziali admin admin e fai annulla entra lo stesso, a parte questo trovo una decina di punti critici.

Domanda:
Ma quando fai refresh da browser tipo 5-10 volte di seguito ... non ottieni pagine multiple infinite fino a perdersi e parecchio confusionate?

Ok, l'ho messo in test

Grazie mille!! :smiley: :smiley:

Su android anche se non scrivi le credenziali admin admin e fai annulla entra lo stesso, a parte questo trovo una decina di punti critici.

Questo non l'ho mai provato. buono a sapersi. quali sono i punti critici

Ma quando fai refresh da browser tipo 5-10 volte di seguito ... non ottieni pagine multiple infinite fino a perdersi e parecchio confusionate?

Non ho mai provato e non so risponderti, ma probabilmente può essere cosi.

togli
riga 37 #define pin_53 53 //pin 10 high
riga 91 byte gateway[] = { 192, 168, 1, 1 }; // internet access via router
riga 92 byte subnet[] = { 255, 255, 255, 0 }; //subnet mask
riga 93 byte dnsServerIp[] = { 192, 168, 1, 1 }; //subnet mask
riga 106 pinMode(pin_53, OUTPUT);
riga 320 delay(1000); // non è bello mettere un delay dentro una connessione col client, rischi un timeout
riga 1192 delay(1000); // per la stessa ragione
riga 1225 delay(1000); // per la stessa ragione
insomma togli tutti i delay durante la connessione http.......

rimetti (che avevi tolto)
riga 103 // pinMode(pin_4, OUTPUT);
riga 104 // pinMode(pin_10, OUTPUT);
riga 144 // digitalWrite(pin_4, HIGH);
riga 145 //digitalWrite(pin_10, HIGH);

cambia questa
riga 130 Ethernet.begin(mac, ip, gateway, subnet, dnsServerIp);// Start Ethernet
in questa
riga 130 Ethernet.begin(mac, ip);// Start Ethernet

aggiungi
riga 289: delay(5); //prima del client.stop
riga 347: delay(5); //prima del client.stop
riga 514: delay(5); //prima del client.stop
riga 740: delay(5); //prima del client.stop
riga 801: delay(5); //prima del client.stop
riga 826: delay(5); //prima del client.stop
riga 841: delay(5); //prima del client.stop
riga 883: delay(5); //prima del client.stop
riga 1487: delay(5); //prima del client.stop

Questo aggiusta buona parte del codice webserver (sono modifiche obbligatorie), non è però escluso che un crash possa essere causato dai relè e da disturbi dei carichi collegati alla rete elettrica, quindi ci vuole un buon alimentatore filtrato, un filtro antidisturbo sui carichi sopratutto se sono induttivi, schermature dove servono.

Quindi un po' di prove per confermare se sono i carichi è quello di farlo funzionare un po' di tempo a vuoto senza relè.
Non potrò risponderti fino a domani per impegni .. ciao

Perfetto. Quest'oggi implemento il tutto. verifico con carichi collegati per ovvie ragioni meteorologiche(non posso non usare il riscaldamento :D); Verifico come procede poi domani o appena possibile vi aggiorno sul tutto.
Chiedo, sarebbe il caso di aggiungere client.flush(); prima del client.stop?

per quanto riguarda alimentatore ecc, vedo di adeguare il tutto.

Ci sono topici che si sprecano a dire che Arduino è un oggetto dilettantistico, mentre qui sembra lo si voglia mettere a governare la casa. O che sia una casa della Barbie ?

Ci sono topici che si sprecano a dire che Arduino è un oggetto dilettantistico, mentre qui sembra lo si voglia mettere a governare la casa. O che sia una casa della Barbie ?

è una tipica abitazione civile, ma sono dell'idea che se queste piattaforme hanno tutta questa diffusione sul mercato, perche non utilizzarle sul serio, che scopo ha farlo solo per scopo didattico? fosse semplicissimo... visto che lo faccio lo faccio per uno scopo reale!!

Per Pablos:
ho schermato l'alimentatore in maniera che magari non fosse lui la causa, ho schermato in parte i rele effettivi delle pompe, ma il problema persiste. il sistema è rimasto in piedi per circa un giorno e mezzo poi si è piantato. io cmq credo di avere la scheda ethernet originale e il mega non originale. ma non capisco come mai è proprio la scheda ethernet a piantarsi e non il mega.

Attendo vostre notizie.. magari se vi servono prove o verifiche sono a disposizione per farle... vorrei proprio risolvere questo problema perche il ssitema è utile e comodo...

Cosa c'è collegato ai pin della mega?
fammi capire come hai strutturato l'elettronica e l'elettromeccanica a valle della scheda.
Guarda per mia esperienza personale arduino senza carichi fuziona mesi, quando vai a mettere dei carichi da comandare è praticamente un ricominciare da capo, perfezionato il software ci vuole altrettanto tempo per perfezionare l'hardware, io mi affido a schemi di schede gia fatte professionali e ne copio l'elettronica dato che ne monto molte e prima di consegnare il lavoro fotografo fronte e retro di queste casomai dovesse servirmi un prototipo .... ma alla fine non li uso mai a causa del poco tempo hobbystico e poi arduino non lo uso nel mio lavoro, faccio prima a comprare, installare prodotti già fatti e testati, dove il fornitore/costruttore ne risponde in caso di difetto, costano molto dai 500 ai 1000.00 euro, ma non è un mio problema, il cliente chiede, faccio un preventivo ... accetta o rifiuta, io non mi metto a progettare schede, software o hardware per poi avere rogne.
Tu considera questo:
Se quelle schede costano molto è perchè sanno che a certi livelli non trovi di meglio e se ne approfittano, nello stesso tempo però sono convinto che per uso personale qualcosa di buono si poss fare con arduino, ma ci vuole tanta pazienza, tante prove e studio.

Come ti ho detto post fa, i tuoi test vanno fatti a step.
Io toglierei tutti i relay e monterei dei leds, test 30 giorni sul software, mi collego 10-20-30 volte al giorno tutti i giorni, ne verifico la stabilità ... superato questo mi dedico all'hardware ed escludo che sia un difetto software se tutto è andato bene. Se hai premura purtroppo non vai da nessuna parte.

PS: il test software di 60 gg con leds già l'ho fatto ed è stato superato, il server risponde sempre e si chiude con regolarità, ma non mi ero accontentato di un browser solo, Android, apple, firefox, IE explorer, crome, più connessioni contemporanee, tutto nello stesso giorno e 20 volte al giorno ... stress massimo, è un lavoro palloso lo so, insomma dovevo trovare il modo di crasharlo, io ti ho passato le mie configurazioni, poi di più non posso fare

Cosa c'è collegato ai pin della mega?
fammi capire come hai strutturato l'elettronica e l'elettromeccanica a valle della scheda.

Ai piedini del mega ci sono collegati i relè(shield relè ad 8 moduli), il bus delle sonde di temperatura, le spie, ed gli interuttori manuali. Secondo il mio punto di vista potrebbero benissimo essere i relè a valle dei relè della shield che disturbano il tutto. In estate il sistema funzionava e abbastanza bene, ed i relè erano sempre fermi. ora che i rele commutano parecchio, il sistema non funziona. Appena riesco provo a verificare con i rele fermi. in caso volevo sostituirli con relè statici o in caso montargli un condensatore ai capi della bobina del relè per eliminare un po di disturbi.
Volevo sostituire anche i rele stessi dell'arduino con la shield con relè statici. Appena riesco a fare tutte queste prove poi faccio sapere il funzionamento.
Grazie mille per l'aiuto fin'ora dimostrato.

pablos:
Io toglierei tutti i relay e monterei dei leds

@Pablos: Puoi spiegarmi meglio questo passaggio?

Ame90:
ho schermato l'alimentatore in maniera che magari non fosse lui la causa, ho schermato in parte i rele.

@Ame90: hai una foto? Come ai fatto le schermature?

pablos:
... ci vuole un buon alimentatore filtrato, un filtro antidisturbo sui carichi sopratutto se sono induttivi, schermature dove servono.

@Pablos: Mi daresti gentilmente dei link per capire cosa usare?

Grazie e tutt'e due :stuck_out_tongue:

@Ame90: hai una foto? Come ai fatto le schermature?

Le schermature le ho effettuate con una lamina in metallo attorno alla scatola di plastica dove sono inseriti i rele. la cosa però non ha portato miglioramenti. infatti, appena sarà stagione adeguata, provo a eliminare i rele e vedere se tutto funziona senza. in quel caso sono sicuro che sono i rele, e quindi vorrei provare a sostituirli con relè allo stato solido. QUesto però potrò farlo solo piu avanti.

Il tuo progetto mi incuriosisce in quanto è simile al mio.
Io infatti ho per ora, l'esigenza di controllarne lo stato, alzare ed abbassare una tenda da sole e, ho anche inserito diversi sensori di temperatura in giro per la casa (interni/esterni camere più popolate e dentro un congelatore) ed infine di verificare la potenza istantanea di corrente consumata.
Avevo poi intenzione di usare un modulo RTC (che ho collegato ma non ho ancora programmato) e di comandare la mia caldaia visualizzando il tutto su un display ma per quest'ultimo non sò bene ancora come gestirlo.
Tu dove hai preso spunti circa la caldaia? Posso avere qualche foto del tuo lavoro?
Grazie.

Come foto vedo di postartele al piu presto.. magari appena riesco a concludere anche il cablaggio in maniera decente. Il mio progetto è nato per esigenza di gestire l'irrigazione del giardino programmata tramite orario automatico ed elettrovalvole. infatti ne ho montate 3, una per giardino e due per l'orto. vengono gestite con l'rtc, e con un sensore di flusso perche le due dell'orto sono una su di una cisterna dell'acqua piovana e una sull'acquedotto, e qualora nella cisterna non ci sia acqua viene aperta quella dell'acquedotto.
da tutto ciò, successivamente ho deciso di montare anche dei relè ed un controllo per i riscaldamento della casa. con due sonde rilevo la temperatura di due zone distinte(quelle di mio interesse) e con controlli manuali via internet, oppure manualmente con un termostato adeguatamente modificato, accendo e spengo i relè delle pompe del riscaldamento. Ora una volta che vedo che funziona tutto in maniera regolare, devo inserire un controllo sulla precedenza termica della caldaia, e poi un controllo rtc per accendere e spegnere automaticamente il riscaldamento nelle ore critiche della giornata.

Ame90:
Come foto vedo di postartele al piu presto.. magari appena riesco a concludere anche il cablaggio in maniera decente. Il mio progetto è nato per esigenza di gestire l'irrigazione del giardino programmata tramite orario automatico ed elettrovalvole. infatti ne ho montate 3, una per giardino e due per l'orto. vengono gestite con l'rtc, e con un sensore di flusso perche le due dell'orto sono una su di una cisterna dell'acqua piovana e una sull'acquedotto, e qualora nella cisterna non ci sia acqua viene aperta quella dell'acquedotto.
da tutto ciò, successivamente ho deciso di montare anche dei relè ed un controllo per i riscaldamento della casa. con due sonde rilevo la temperatura di due zone distinte(quelle di mio interesse) e con controlli manuali via internet, oppure manualmente con un termostato adeguatamente modificato, accendo e spengo i relè delle pompe del riscaldamento. Ora una volta che vedo che funziona tutto in maniera regolare, devo inserire un controllo sulla precedenza termica della caldaia, e poi un controllo rtc per accendere e spegnere automaticamente il riscaldamento nelle ore critiche della giornata.

Ciao, volevo ricordarti se potevi postarmi le foto.
Grazie.