Nel precedente articolo, vi ho mostrato come sia ora possibile inviare in rete documenti di grandi dimensioni usando uno shield con chip ENC28J60. Oggi vi presento il progetto di un completo web server!
Descrizione
Il browser dell’utente invia la richiesta, tramite rete, al modulo ENC28J60. La richiesta viene quindi interpretata dallo sketch in esecuzione su Arduino il quale prepara la risposta. Sia il modulo ENC28J60 che quello per la SD card sono connessi ad Arduino tramite il bus SPI:
Il webserver supporta sia risorse statiche, che risorse dinamiche:
[checklist]
- le risorse statiche (pagine html, immagini…) vengono lette da SD card
- le risorse dinamiche (richieste AJAX…) vengono generate direttamente dallo sketch
[/checklist]
Lo sketch utilizza il metodo spiegato nel precedente articolo per inviare risorse statiche di qualsiasi dimensione.
Collegamenti
Sia il modulo SD card che quello ethernet utilizzano il bus SPI. Tale bus prevede la possibilità di collegare contemporaneamente più dispositivi, utilizzando un apposito PIN (detto di chip-select) per indicare a quale dispositivo il comando inviato sul bus è destinato. E’ quindi necessario collegare i PIN di CS dei vari moduli a diversi PIN di Arduino e configurare di conseguenza le librerie.
Purtroppo mi sono accorto che gli shield spesso utilizzano il medesimo PIN (ad esempio il 10) oppure che – peggio – non sono collegabili in cascata. Ho quindi dovuto utilizzare due moduli ed effettuare i collegamenti tramite cavetti:
I collegamenti da realizzare sono:
- alimentazione (5V e massa);
- MOSI (da Arduino al dispositivo), PIN 11
- MISO (dal dispositivo ad Arduino), PIN 12
- CLK (clock), PIN 13
- CS (chip select) -> modulo SD PIN 4 di Arduino, modulo ENC28J60 PIN 10 di Arduino
I PIN utilizzati per il segnale di chip select sono configurati all’inizio dello sketch:
#define SD_CS_PIN 4 #define ETH_CS_PIN 10 |
Risorse statiche da SD card
Per accedere alla SD card, ho utilizzato la libreria tinyFAT invece di quella inclusa nell’IDE perché occupa molto meno memoria RAM.
All’interno del setup(), viene configurato il PIN Arduino collegato al chip select del modulo SD card e viene inizializzata la libreria:
file.setSSpin(SD_CS_PIN); res = file.initFAT(); |
Quando viene richiesto un file, per prima cosa lo sketch verifica se il file è presente; in caso negativo viene inviato al browser l’errore 404 (= file non trovato):
if(!file.exists(filename)) { [...] bfill.emit_p(PSTR("HTTP/1.0 404 Not Found\r\n\r\nNot Found")); |
Se invece il file è presente, questo viene aperto e letto a blocchi di 512 bytes. Ogni blocco è inviato singolarmente (un blocco, un pacchetto) in rete:
res = file.openFile(filename, FILEMODE_BINARY); [...] bytesRead = file.readBinary(); uint8_t* payloadBuffer = ether.tcpOffset(); for(int i = 0; i < bytesRead; i++) payloadBuffer[i] = file.buffer[i]; |
Default webpage
Un caso particolare di risorsa statica è la default webpage: quando inseriamo nel browser un indirizzo Internet, la richiesta inviata è semplicemente GET /. Sta a chi configura il server web definire quale è la pagina di default inviata se non ne viene chiesta una specifica. Nello sketch tale pagina è configurata come costante:
static char* defaultPage = "index.htm"; [...] if(strncmp("GET / ", request, 6) == 0) { sendFile(defaultPage); |
Risorse dinamiche
Nello sketch è presente un esempio di risorsa dinamica: la pagina uptime.ino.
Tale pagina non viene cercata sulla scheda SD ma viene generata dallo sketch inviando al browser il valore della funzione millis(), che conta il numero di millisecondi da quando lo sketch è in esecuzione (e quindi l’uptime del webserver):
bfill.emit_p(PSTR("HTTP/1.0 200 OK\r\nContent-Type: text/html\r\nPragma: no-cache\r\n\r\n" "$L"), millis()); ether.httpServerReply(bfill.position()); |
Esempio
Ho preparato un completo esempio: un sito che visualizza una homepage dove, tramite chiamate AJAX ogni 30 secondi, viene visualizzato l’uptime del server:
ecco il dettaglio delle chiamate AJAX effettuate dal browser:
Trovate sketch e risorse per il sito di esempio nel mio repository su Github!
ciao..
ho seguito in questi giorni un po dei tuoi post per quanto riguarda il modulo enc28j60 per arduino..
volevo solo chiederti se c’è un modo per gestire le richieste “url” e creare una cosa simile a dei file …
ho fatto un programma che va a leggere la richiesta dell’utente esempio http://ip_arduino/file1 e il programma restituisce la variabile testuale file1 e cosi via per altri file..
ho solo il problema che se l’url ho l’html delle pagine sono troppo lunghe il programma salta e restituisce sempre una scermata bianca ….
[…]
Ciao Marco (ho rimosso lo sketch per non appesantire il commento): se ti da problemi con URL molto lunghe, significa che stai superando la dimensione massima del buffer di ricezione: a quanto lo hai impostato?
Hello sir, after learning from your tutorials about the enc28j60 module, i managed to make an IR remote out of an arduino connected with the enc28j60 to my wifi router and an ios app to go along with it. Now, i dont need to be in line of sight to control my tv. Keep up the good work thanks!.
Check it out here : https://github.com/abhiace/arduino-IRemote-iOS
Hi! Great work, thanks for sharing!
Ciao Luca, inutile farti i complimenti per i tuoi tutorial, li sto divorando con grande voracità. Bravo, soprattutto per gente come me alle prime armi. Sto cercando di estrarre il numero di likes dalla pagina facebook ma non riesco con la procedura GET mentre leggere una pagina html grazie alle tue informazioni non ci sono più difficoltà. Mi puoi dare delle dritte in proposito.
Ciao Luigi, per leggere i likes usi le API di Facebook o vuoi cercare di “interpretare” la pagina HTML?
Ciao Luca e grazie per il tuo interessante articolo. Sto cercando di far visualizzare sulla mia pagina html un valore di temperatura piuttosto che il valore della funzione “millis() adattando opportunamente il seguente frammento di codice:
else if(strncmp(“GET /temp.ino “, request, 16) == 0) {
Serial.print(F(“Requested dynamic page: temp.ino”));
BufferFiller bfill = ether.tcpOffset();
bfill.emit_p(PSTR(“HTTP/1.0 200 OK\r\nContent-Type: text/html\r\nPragma: no-cache\r\n\r\n”
“$L”), temperatura());
ether.httpServerReply(bfill.position());
Serial.println(F(” …sent :)”));
}
Il valore fornito dalla funzione “temperatura()” non viene visualizzato nella pagina html.
Ciao e grazie ancora!
Ciao Samuel, $L è un “segnaposto” per un valore di tipo long, che cosa restituisce la tua funzione temperatura()? Prova anche a salvarti prima in una variabile locale il valore restituito e poi usare quella variabile nel
bfill.emit_p
Ho dichiarato “long num=100000;” e usato tale variabile nella “bfill.emit_p” ma la pagina mi restituisce l’errore 404: temp.ino non trovata.
Non capisco come la tua pagina “uptime.ino” viene invece trovata.
L’errore sta qui:
strncmp("GET /temp.ino ", request, 16)
: il valore 16 indica il numero di caratteri da confrontare, essendo il nome della tua pagina più corto, dovrai correggerlo di conseguenza (GET /temp.ino
con lo spazio finale è lungo 14 caratteri)Grazie era proprio quello. Adesso ho assemblato vari sketch che gestiscono un lcd, un tastierino numerico, il modulo per le chiamate e gli sms. Ma provando a visualizzare la pagina web (sia sul pc che sul cellulare) arduino non riesce a ricevere la richiesta e quindi la pagina non viene visualizzata: sul monitor seriale, infatti, non stampa il messaggio “nome della pagina.estensione sent :). Questo problema può derivare dal fatto che arduino sta svolgendo troppe operazioni? Preciso che ogni loop impiega circa 3 sec.
3 secondi sono davvero tanti per gestire i pacchetti di rete… come mai il loop dura così tanto? Hai dei delay? Se fai uno sketch con la sola parte relativa all’enc28j60 funziona? Al ping arduino risponde?
Avevo un delay di 2 secondi alla fine del loop che ho tolto ma il problema persiste. Ho caricato su sd una pagina html contenente solo un tag ma invano. Se carico solo la parte di sketch relativa all’enc28j60 riesco invece a visualizzare la pagina.
Ho appena notato che aumentando la dimensione del l’ethernet buffer (da byte Ethernet::buffer[8000]; a byte Ethernet::buffer[1600];) e ricaricando lo sketch nel microcontrollore, la pagina web viene visualizzata solo una volta: se riaggiorno la pagina o provo a visualizzarla una seconda volta con un altro dispositivo, non visualizzo nulla.
il problema sembra essere di consumo di RAM, ci puoi fare poco: probabilmente il tuo sketch è troppo complesso per le risorse di Arduino. Se già non lo hai fatto e hai delle stringhe di testo, puoi provare a metterle in PROGMEM per risparmiare RAM come spiegato qui: http://playground.arduino.cc/Learning/Memory
Ma l’ide 1.6.1. di arduino, in fase di compilazione, mi dice che ho usato soltanto il 49% di memoria dinamica, ovvero di RAM (correggimi se sbaglio). Per questo motivo, ho scelto di utilizzare Arduino Mega2560.
Complimenti per i vari tutorial. In quest’ultimo avresti la possibilità di inserire un link ad una seconda pagina presente su SD ? Secondo me così sarebbe più completo come esempio. Spesso sul forum Arduino ci sono persone che richiedono proprio il multipagina prelevandole da SD (a meno che non lo hai già spiegato in un altro tutorial) ^-^
Ciao, questo esempio gestisce qualsiasi pagina o risorsa statica da SD
Hello, it is possible convert tinyFAT with SD.h library for sd card function. Im using MEGA2560.
Hi! It should work fine (I used TinyFAT due to the limited RAM memory of Arduino UNO) but I don’t own a Mega and I can’t test it… if you try, let us know the result!
Hello Luca! have you any scheme for connection encj->sd->arduino ? or maybe other pics ? i can’t connec properly my one and it can’t work ;< greetings!
I complimenti per il tuo lavoro sono dovuti ma per saltare subito al problema: tu hai implementato la tinyFAT.h mentre io utilizzo SdFat.h;
ho tentato la conversione ma, evidentemente, ho sbagliato qualcosa! Non è che potresti ………
Ciao Maurizio, purtroppo avevo provato anch’io ad usare la SdFat ma è troppo “pesante” in termini di RAM, non rimane sufficiente spazio per il buffer ethernet… quindi sono stato costretto ad usare la TinyFAT.
Grazie Luca, allora provo anch’io il … trapianto!
Rieccomi in panne!
Al di là della sostituzione del riferimento WProgram.h -> Arduino.h (sia in tinyFat.h che .cpp) la compilazione riporta una sequenza di errori in mmc.h.
che fare????
Ciao Maurizio, ma stai usando questa libreria? Non ho dovuto modificare nulla, è già compatibile con le versioni >1.0
A me ha dato una prima serie di errori; da un blog ho trovato la soluzione ovvero sostituire WProgram.h -> Arduino.h. Gli errori aono cambiati e sono quelli che ti ho elencato.
Ora sta emergendo un altro strano problema: sviluppando le tue rountine per la gestione web di 2 led fino a 18 a volte il Mega risponde subito aggiornando la pagina, a volte ci mette anche un minuto e a volte … non risponde!
Questa instabilità nei risultati mi mette un po’ in difficoltà!
In merito alla tinyFat quella presente al link da te segnalato è operativa; io l’ho scaricata da gitHub e quella ha problemi.
Ciao Luca, thank you for sharing your work with us.
Please help me, I’m your code use for Arduino Pro Micro (Chinese copy), the Ethernet module ENC28J60 and SD Card module LcSoft.
Everything is done according to your instructions and everything nice upload to the Arduino, but I have no info on serial monitor, and my website is not working.
Best regards, Gale
Gale, start using one of the simpler sketches, testing only the “ethernet” part with a ping… if it works we’re sure the connection to the ethernet module is ok and we can investigate further.
Dear Luca, I connect separately Ethernet shield with Arduino – and it works.
Then I connect only the SD card shield with Arduino – and it works.
But when both modules connect to the Arduino, I do not get anything
Was thinking that there might be a problem that tinyFat library does not support the Arduino Leonardo (my Arduino Pro Micro is classified as Leonardo).
Thank you for your quick reply.
Best regards
Hi! Yes, TinyFAT doesn’t support Leonardo so that could be your issue… anyway with Leonardo you should be able to use the “standard” SD library
can you explain the connections you made ? I do not know how to connect the SD module and ENC28J60 simultaneously on the Arduino
Hi,
when i use EtherCard and TinyFAT library i and declare ethernet buffer to 500 i have problem with dynamic memory – Arduino inform me about that it used about 89% dynamic memory and board can not work correct. When i decrese buffer i have problem with ICMP ethernet module etc.
Hi Jan, unfortunately it’s a common problem: the enc28j60 does not include a buffer and therefore you’re forced to use the Arduino RAM… moving to the W5100 chip or using a more “powerful” Arduino may solve.
Ciao Luca, ho un problema riguardo SD, in primis ho utilizzato una SD da 1GB e tutto funzionava, poi all’improvviso non andava più .. nemmeno leggerla con il PC.. ho provato con altre SD da 2 GB ma non le legge, mi sai dare qualche dritta? Grazie mille
Ciao Piero, controlla come sono formattate le SD… la libreria usata (TinyFAT) supporta solo memory fino a 2Gb in FAT16.
Ho una domanda ma il modulo ethernet con enc28j60 non va alimentato a 3.3 volt ?
ciao, dipende: molti moduli (incluso quello che ho io) hanno a bordo un regolatore quindi puoi alimentarli a 5V
Thx for yours tuturials about enc28j60. You are very smart! How can I receive big post request (700 kB) from web browser client and save it on the SD card (TinyFAT)?
Hi Lada, well you may try to save the different packets to a file on your sd but you’ll probably find some problems due to the limited memory of both arduino and the ethernet driver.
Thx 🙂 Can you please write, how to store packets? I have problems with oveloading buffer. Your examples are only about reading from the sd card… Thank you.
help! Failed to initialize SD card
ethernet shield work but sd shield not work.
are you sure that the CS pin is connected correctly? Is the SD formatted in FAT?
I’m trying to make an application to the master Arduino communicates with the ENC28J60 and other Arduino as a slave. But I do not know how to disable the select chip ENC28J60 and enable the chip select slave according to the command master receives the Arduino ENC28J60. How I could disable it only to send the byte to the slave and then enable it again.
Grateful
Wender
Hi! you need to setup a different CS pin for each SPI device you connect to the “master” Arduino
Ciao, sono riuscito a far funzionare l’esempio qui sopra e ti ringrazio, ma volevo riportare la mia esperienza per evitare a qualcun altro di perdere un sacco di tempo: all’inizio non funzionava nulla (ping saltuari, alcune volte si bloccava sull’apertura della SD)
Alla fine ho cambiato i collegamenti portando direttamente da Arduino a ENC28J60 i 3.3V (prima era collagato ai 3.3V della scheda SD) e lasciando la scheda SD alimentata con i 5V arduino: per magia tutto si è messo a funzionare. Il mio modulo ethernet per completezza è il HanRun HR9111105A 16/02
Spero di essere stato utile a qualcuno!
grazie per il commento Massimo!
Dear
How this 2 module connect to Arduino mega
Thank you
Hi! you can find the required connections on the library’s webpage.
Thank you for your reply
I already use this 2 module individually
But my problem is How this 2 module connect in simultaneously
Hi! You can connect both the modules to the SPI bus (use the same pins) but use two different pins for the SS (slave select) signal
ciao, non riesco a far funzionare entrambe le schede insieme , che fare ? i collegamenti sono corretti .
ciao, collegate singolarmente vanno? Il pin CS delle due schede è collegato a due diversi PIN di Arduino?
si, da sole funzionano entrambe e quando insieme solo la ethernet funziona. i cs sono separati 4 sd e 10 ethernet
mi correggo da sola la sd non va con la libreria tinyfat (la sd è una 2 GB in configurazione FAT) mentre con la libreria SD funziona
Per chiunque si trovi come nel mio caso ad usare l’esempio proposto da Luca Dentella e non riesca ad inizializzare la SD: assicurarsi che sia formattata correttamente e non corrotta. Provate ad usare l’esempio cardinfo della libreria SD e nel caso in cui vi siano problemi formattatela con il programma SD Formatter utilizzando l’azione di overwrite totale !
Ciao Luca,
Provo da giorni lo sketch relativo alla stampa su seriale dell’aforisma presente sulla pagina aphorisms.php ma tutto ciò che ottengo sono delle informazioni relative alla pagina stessa e non l’aforisma, ovvero :
HTTP/1.1 200 OK
Date: Mon, 30 Oct 2017 13:45:17 GMT
Server: Apache
Content-Length: 62
Content-Type: text/html; charset=UTF-8
X-Cache: MISS from localhost
X-Cache-Lookup: HIT from localhost:3128
Via: 1.1 localhost (squid/3.5.23)
Connection: close
Nell’arduino loop ho questo :
ether.packetLoop(ether.packetReceive());
if (millis() > timer)
{
timer = millis() + 5000;
Serial.println();
Serial.print(“<<< REQ ");
ether.browseUrl(PSTR("/demo/aphorisms.php"),"", website, my_callback);
}
Puoi aiutarmi ?
Ciao Andrea, dai logs vedo che la tua connessione passa x un proxy (Squid)… ho appena provato lo sketch da un arduino connesso diretto su internet e funziona senza problemi, è possibile che il tuo proxy blocchi la connessione?
Ciao, ho seguito tutti i tuoi tutorial in cui hai utilizzato il modulo ethernet enc28j60. Volevo a tal proposito chiedere una cosa:
Ci sono tuoi progetti o tutorial che includano della crittografia utilizzando tale modulo?
Spiego, devo realizzare un progetto di automazione di una casa, quindi una pagina web con pulsanti per l’accensione di led e magari l’aggiornamento di form per lo stato dei led o qualcosa ancora non ben specificata. Vorrei però “proteggere” le informazioni inviate online sia con l’autenticazione e quella è visibile in un tuo tutorial, sia con una crittografia che sia lo sha o una crittografia simmetrica o asimmetrica. Online ho trovato varie librerie che potrebbero fare al caso, ma non so come implementarle nel caso specifico, ossia cosa serva criptare, come e se è conveniente criptare, ad esempio, la richiesta “GET/LED1ON”. Al momento utilizzo l’sd card, un arduino uno e il modulo ethernet.
Ti ringrazio della disponibilità.
Rossella Stomati
ciao! la soluzione classica sarebbe utilizzare il protocollo HTTPS ma un Arduino Uno non ha abbastanza risorse per gestirlo. Purtroppo fare soluzioni custom è possibile ma complesso (non puoi utilizzare il browser cosi com’è ma devi anche lato client sviluppare un tuo modulo, es in javascript, che cifra la richiesta prima di inviarla tramite protocollo HTTP). Forse è pìù semplice cambiare piattaforma, se guardi i miei tutorial sul chip esp32 vedrai come è semplice in quel caso implementare un webserver in HTTPS.
Ciao, ho un problema con questo esempio: finchè mi connetto in wi-fi la pagina si carica completamente ma se la richiedo dall’esterno della rete privata me la carica fino ad un certo punto. Puoi verificare tu stesso il server è http://jellyserver.ddns.net sapresti dirmi come posso risolvere questo problema ?
ciao, dovresti vedere usando ad esempio la console sviluppatori di Chrome quali parti della pagina non vengono caricate e se ottieni degli errori (reset o altro…)
Non mi carica la parte finale di ogni pagina htm del server tranne quelle che hanno pochi caratteri ma il bello è che prima c erano anche foto e video mentre ora tutti i media sono su un sito di altervista privato come repository di dati e la mia SD contiene solo file htm
mancano tutti i tag di chiusura pagina etc ma ci sono nei file e con wifi tutto fila più che liscio
Ora provando a togliere parti in mezzo alla pagina ho visto che carica esattamente tanti caratteri in più quanti ne ho tolti. Problemi come dimensioni del file ? strano dato che le foto le mandava pure da 10 KB
prova a verificare se ricevi esattamente 512 bytes, che è la dimensione di un pacchetto TCP inviato… sembra che passando su Internet non ti arrivino i pacchetti successivi al primo.
ho controllato e sembra che spedisca sempre i primi 54 pacchetti (ne mancherebbero circa 3 per concludere la pagina più “pesante”) per poi non spedirne più alcuno se non riaggiornando la pagina ma allora mi spedisce gli stessi pacchetti iniziali
e a volte si blocca cioè non arriva nemmeno la richiesta della pagina ad arduino, ho provato a inserire Connection: close ma uguale
Ciao Luca, ho replicato il tuo progetto e a volte funziona a volte si fermaho durante l’inizializzazione del ip, il modulo micro sd funziona a 5v mentre il modulo enc28j60 funziona a 3,3v, presumo sia un problema di livelli che per qualche caso fortuito a volte funziona ma la maggior parte no, la micro sd da sola funziona e il modulo enc28j60 da solo funziona, hai qualche consiglio da darmi??, grazie e complimenti per i tuoi progetti.
Ciao Luca, ho capito il mio problema, le prove fatte erano le seguenti..singolarmente la enc28j60 funzionava tranquillamente, e la micro sd da sola funzionava pure….ma “le prove della micro sd le facevo con un esempio che conteneva la libreria SD di arduino”…….quindi rifacendo le prove mi da errore di formato…probabilmente la mia micro sd non è compatibile con la libreria tynyFAT….mi sapresti consigliare che test fare magari toccando qualche paramentro di questa libreria?? o qualcosaltro che possa trovare riscontro??…grazie 1000
ciao Salvo, la TinyFAT supporta SD di capacità massima 2Gb e formattata FAT16… prova così
Ciao Luca, ne ho provate 3, due sundisk da 2gb, e 1 kingston da 1 gb tutte fat 16, con la libreria SD funzionano tutte, con questa libreria mi esce questo errore..
***** ERROR: Unsupported filesystem
Grazie
Luca, un passo in avanto l’ho fatto….la sd era stata formattata con il mac, adesso l’ho formattata con un pc e adesso la sd la riconosce…ma ancora il problema persiste…separatamente funzionano entrambi, insieme no!, forse è un problema di velocità SPI??? mi sapresti indicare cosa provare a fare?? grazie 1000
ciao, se non funzionano insieme o hai qualche problema nei collegamenti, oppure hai qualche conflitto sul pin di CS (devono essere diversi!). Potrebbe essere anche un problema di risorse arduino, fai uno sketch minimale, ti da qualche warning quando compila?
Ciao Luca, i collegamenti sono apposto, sto provando con il tuo sketch nessun’altra cosa aggiunta, nessun warning..l’unico indizio…se leggo dalla sd tutto ok, se invece mando il tuo sketch in esecuzione devo togliere il pin 5v dalla scheda sd (che chiaramente mi da l’errore di inizializzazione ma almeno la parte web non rimane bloccata su (“SD Webserver”)); è veramente strano!! sono disperato 🙁
Ciao Luca, risolto!!!,…avevo un problema con il modulo sd card….provando provando sono riuscito a farlo fuori.. 🙂 adesso l’ho cambiato e tutto va alla grande….Grazie
Luca scusa il disturbo, ma se io volessi mandare anzichè il millis una stringa di testo…..”non statica” ci sto sbattendo la testa ma non riesco…ho provato con la String prova=”blablabla”; $S in modo che io di volta in volta possa riorganizzarci il contenuto ma non la accetta….idee………?? grazie
ciao, devi usare $F, guarda questo mio esempio…
Ciao Luca, RISOLTO anche il problema delle stringhe…adesso ho un’altro problema e “credo sia l’ultimo” Ethernet::buffer[600]; mi porta via un sacco di memoria…è possibile gestire questo buffer sulla micro sd?? temo non sia possibile ma te lo chiedo lo stesso…o magari qualche scappatoia per recuperare memoria…grazie 1000
ciao Salvo, purtroppo quello è il problema del chip enc28j60… non ha memoria interna quindi tutto il pacchetto deve essere memorizzato nella memoria RAM di Arduino (è il “buffer”).
Ciao Luca, ho risolto anche questa…grazie a te!, adesso mi piacerebbe poter inviare delle notifiche email “magari tramite Gmail” ho cercato in rete ma senza esito”almeno per quanto riguarda la componentistica adottata in questo tuo tutorial” ne sai qualcosa????Non so nemmeno come ringraziarti…. 🙂
Ciao Luca, Scusami tanto se ti scrivo a raffica….perdonami!!! ma ho provato a far andare sul mio “iphone 5 aggiornato”
questo esempio e non funziona, ho provato anche su android…nemmeno li, c’è qualche motivo per cui non funziona?? grazie e buonagiornata
Ciao Luca, dopo aver fatto centinaia di ricerche ancora non riesco a far girare sui miei cellulari iphone e android il tuo progetto, sul pc funziona regolarmente mentre sui cellulari no!, o fatto puntare il jquery anche sul repository ma non è questo il problema, hai qualche consiglio?? grazie
Ciao Luca, sono riuscito a far funzionare in ambiente Android, ma su iphone non ne vuole discutere!!, ho l’impressione che sia un problema legato o alla rirhiesta da parte del client o alla risposta che arduino da, come se l’iphone trovasse rischioso accedervi per via della comunicazione che si verrebbe a creare, ho cercato tantissimo su google e quanto pare forse che iphone troverebbe NON VALIDA la url e quindi la ignora del tutto senza restituire errori.
Ne sai qualcosa?? grazie
Ciao Luca, non riesco a fare andare le cose… ho pensato di acquistare la ethernet shield originale…prima che aquisto a vuoto…questo codice funziona anche li??…grazie
ciao, no se usi lo shield ufficiale devi cambiare sketch e librerie (trovi molti esempi su internet)
can this work with the micro sd card and enc28J60 ??
i can’t done it..
the sd adapter: https://d3s5r33r268y59.cloudfront.net/27271/products/thumbs/2014-05-16T16:00:29.024Z-237.jpg.855x570_q85_pad_rcrop.jpg
yes it should work if everything is connected properly
when i unplug the micro sd adapter it write ethernet initialized and Failed to initialize SD card
serial monitor sais: SD Webserver
and stock there..
Ciao Luca, innanzi tutto i miei complimenti per la tua preparazione.
Ho da sottoporti una problematica e spero tu possa darmi delle dritte sulla fattibilità o meno.
E’ possibile inviare ad arduino una foto da cellulare via bluetooth e questa venga interpretata in base ai colori (tipo rettangolini colorati intendo) che ci sono in sequenza sulla foto e che arduino si regoli perciò di conseguenza?
ciao Dario… la vedo difficile usando un arduino Uno… la poca memoria non è sufficiente per gestire una fotografia
OK. arduino mega? ma a parte la memoria, è un porgetto fattibile? in che modo?
io per progetti di questo tipo (interazione con cellulari…) starei su schede che eseguono Linux, sicuramente ti semplifica la vita perché molti layer di comunicazione già sono fatti…
OK. grazie. Non sapevo dell’esistenza di schede che lavorano su linux. Mi informo subito.
Ciao Luca, ho un problema con l’ENC28J60, provo a spiegarti il mio progetto:
1) ho realizzato un circuito con arduino + display 128×64 + sensore per microparticolato che usa la libreria SdsDustSensor.h + ENC28J60.
2) ho realizzato un sketch SOLO per il display 128×64 e il sensore di microparticolato –> funziona bene
2) ho provato uno sketch SOLO per ENC28J60 “backsoon” –> funziona bene
3) se li metto assieme vengono caricati su arduino senza errori ma il programma si blocca prima del void setup.
4) ho provato a cambiare la scheda di rete con una W5100 con la sua libreria ma si blocca lo stesso.
Hai qualche consiglio?
Siccome i due sketch singolarmente funzionano può essere che le librerie vadano in conflitto?
Grazie in anticipo.