Arduino Web server

March 12, 2011 | 3 Minute Read

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