Finalmente questa mattina ho avuto un po’ di tempo ed ho fatto il circuito che avevo in mente ormai da qualche giorno, e che potete vedere nel video qui sopra (e sentirne la descrizione live).
Il progettino è un semplice Web server, ed è servito a mettere assieme lo shield Ethernet con uno degli LCD che ho acquistato qualche settimana fa: nella MicroSD si trovano le pagine Web autogenerate dai tool integrati in Erlang, si tratta semplicemente dell’equivalente della Javadoc per quel linguaggio, è la documentazione di un progetto. Ho rinominato i file in modo tale che rispettassero il formato 8.3 richiesto dalla libreria SD, modificando quindi anche tutti i link interni alle pagine stesse, per il resto è un insieme di file html, fogli di stile ed immagini (più un paio di documenti testuali).
Lo sketch caricato sull’Arduino Uno è un remix di diversi esempi trovati in giro, e ciò che fa è avviare un server Web all’IP specificato (l’idea iniziale era di ricevere l’IP via DHCP, ma questo implicava agganciarsi al router via cavo ed era scomodo), attendere le singole connessioni e restituire i file richiesti, cercando di indovinare il mimetype corretto (a partire dall’estensione), così che i browser interpretino le pagine e le immagini correttamente. Nel contempo, sullo schermo LCD viene mostrata la richiesta HTTP, e due led indicano se gli hit sono positivi (200, led verde) o negativi (404, led rosso).
La vera sfida è stata trovare posto per tutte le connessioni, non solo perchè la mia breadboard è decisamente piccolina per farci stare tutto, ma soprattutto perchè lo shield richiede 5 pin (4, 10, 11, 12, 13) e l’LCD 6, e dei rimanenti tre, i primi due sono collegati anche alla seriale; alla fine ho risolto collegando uno dei due led nell’ultimo pin veramente libero, e l’altro nel pin RX: questo comporta il fatto che durante il caricamento dello sketch questo led si accende, ma durante il funzionamento dell’applicazione esso risponde correttamente ai digitalWrite (non faccio uso della seriale, eventuale debugging avviene sullo schermo LCD).
Ora ho in mente un altro progettino, che applicherò sul Duemilanove ma per il quale ho bisogno di un paio di componenti; vi dico solo che il tutto comporterà l’interfacciamento con Processing e CSound…
Ciao siv, vedo che ti stai divertendo con l’arduino 😉
Oh yes! Era anche ora, dopo mesi per non dire anni… 🙂
Già, fa piacere vedere che almeno qualcuno degli arduini comprati dalla gente del POuL non è in un cassetto a prender polvere 🙂
Sai che potresti presentare il tuo webserver alla conferenza sull’embedded? Che ne pensi?
Si può fare, posso anche vedere come va in performance (dato che ora l’obiettivo non era quello…); probabilmente in realtà nel caso performance le informazioni sull’lcd devono cambiare, dato che la frequenza di refresh la vedo piuttosto scarsa! Quand’è la conferenza?
Che io sappia è nei primi giorni d’aprile, anche se non ne sono sicuro.
Come fare per avere lo sketch???
Ecco il codice: https://gist.github.com/1408749
Non garantisco il funzionamento, dato che a) è passato qualche mese, e b) potrebbe non essere compatibile con la versione 1.0 di Arduino. Di fatto, è esattamente l’esempio SDWebBrowse con l’aggiunta di un LCD.