Interfacce Web con Arduino [revisione Review4U]

La piattaforma Arduino sta diventando sempre più diffusa e amata da tutti. Il motivo? Semplicità e potenzialità in una scheda di piccole dimensioni e dal prezzo accessibile a tutti sono caratteristiche che possiedono veramente in pochi, tra i vari sistemi di sviluppo.

Sinceramente ero abituato a sviluppare applicazioni con Microchip, scegliendo un PIC con le caratteristiche utili al mio progetto, montando una scheda, magari dopo un primo test su breadboard. Il vantaggio principale di Arduino a mio avviso è la praticità: si scarta la confezione, si collega tramite usb al computer ed è subito pronto per i primi test senza necessità di saldature. La diffusione di questo prodotto nel mondo e la filosofia open-source permette di trovare in rete un’infinita collezione di esempi più disparati, per qualsiasi applicazione.

Interfacce Web Con Arduino - l'applicazione

Un’interessante applicazione che ho voluto approfondire in questa review è l’interazione di Arduino con il pc, in particolare il controllo attraverso una semplice interfaccia Web.

Questa tecnica può rivelarsi piuttosto utile in molti sistemi, dai test in “laboratorio”, alla gestione semi-automatica (o semplice controllo a distanza) di apparecchiature elettroniche, fino all’automazione domestica.

Dopo una lunga ricerca di diversi script che permettono la gestione di una porta seriale attraverso la pagina web, sono arrivato alla conclusione che il JavaScript sembra essere il linguaggio più adeguato. L’applet necessario per questa applicazione è JSSerial, di cui potete trovare tutte le informazioni al seguente link:

http://www.walking-productions.com/jsserial/new/JSSerial.html

Innanzitutto preciso che questo sistema permette di controllare esclusivamente la porta seriale del computer dal quale si visualizza la pagina web, a patto che questo computer sia configurato opportunamente. Per questo motivo non sono possibili applicazioni di controllo remoto, purtroppo.

Prima di tutto è necessario scaricare la libreria RXTX

http://rxtx.qbang.org/pub/rxtx/rxtx-2.1-7-bins-r2.zip

ed installarla nel proprio computer, seguendo queste istruzioni:

(Windows)
Copiare rxtxParallel.dll in C:\Programmi\Java\jreX.XX\bin\	
Copiare rxtxSerial.dll in C:\Programmi\Java\jreX.XX\bin\	
Copiare RXTXcomm.jar in C:\Programmi\Java\jreX.XX\lib\ext\

(Mac OSX)
Copiare i file RXTXcomm.jar e librxtxSerial.jnilib in /System/Library/Java/Extensions/
Eseguire i seguenti comandi da terminale:
sudo mkdir /var/lock
sudo chmod 777 /var/lock

Una volta eseguita questa procedura, sarà possibile verificare il funzionamento dell’applet nella pagina di test http://www.walking-productions.com/jsserial/new/JSSerial.html, nella sezione “Testing it out”. Cliccando sul tasto “List Ports” appariranno tutte le porte seriali presenti sulla propria macchina. Trascrivere l’etichetta della porta relativa ad Arduino (nel mio caso /dev/tty.usbserial-A700flI0), che sarà utile in seguito.

A questo punto dobbiamo scaricare e copiare i seguenti file nella stessa cartella dove metteremo la nostra pagina web:

http://www.walking-productions.com/jsserial/new/JSSerial.jar
http://www.walking-productions.com/jsserial/new/jsserial-applet.jnlp
http://www.walking-productions.com/jsserial/new/JSSerial.java

Ora passiamo alla creazione della pagina web, che andrà strutturata così:

Nota: per attivare/disattivare le uscite digitali di Arduino e per richiedere la lettura di un ingresso analogico ho usato come convenzione dei byte “significativi”:
100 per disattivare l’uscita 0, 101 per abilitarla, 110 e 111 per l’uscita 1, 120 e 121 per la 2, eccetera. Invece 201,202,203 sono le “richieste” per la trasmissione del valore letto dagli ingressi analogici 1,2,3, eccetera.
Il programma scritto sulla piattaforma Arduino è molto semplice:

int analogValue0 = 0;		// ingresso analogico 0
int inByte = 0;			// dato seriale in ingresso

void setup()
{
   Serial.begin(9600);	//inizializzazione seriale a 9600baud
   pinMode(13, OUTPUT);	//configurazione pin di uscita
}

void loop()
{
   if (Serial.available() > 0) {
inByte = Serial.read();			//lettura seriale
if(inByte==100)					//100=uscita disattivata
     		digitalWrite(13, LOW);	
  	if(inByte==101)					//101=uscita attivata
     		digitalWrite(13, HIGH);
  	if(inByte==200){					//200=richiesta dato
     		analogValue0 = analogRead(0);	//lettura ingresso analogico 0
     		Serial.print(analogValue0);	//trasmissione dato
  	}  
   }
}

Si possono ovviamente aggiungere altri canali in uscita e in ingresso (in base a quelli disponibili su Arduino). Come uscita è stato utilizzato il pin 13, in quanto ha già collegato un led su scheda, quindi è pratico per i primi test. L’espansione di questo sistema è limitata solo dalla propria fantasia, ad esempio si possono usare altri javascript per fare il plot dei dati registrati ad intervalli regolari.

In caso di datalogging, per evitare di far funzionare la pagina web come “motore” del sistema (lasciandola sempre aperta), si potrebbe dotare la scheda Arduino di una memoria SD e quindi programmarla per registrare i dati ad intervalli regolari. A questo punto l’interfaccia web può eseguire un’interrogazione della memoria, richiedendo i dati in un intervallo definito dall’utente e visualizzandoli sotto forma di tabella o grafico.

Scarica subito una copia gratis

12 Commenti

  1. Avatar photo electropower 18 Aprile 2011
  2. Avatar photo Antonio Mangiardi 18 Aprile 2011
  3. Avatar photo Andres Reyes 18 Aprile 2011
  4. Avatar photo FlyTeo 18 Aprile 2011
  5. Avatar photo Giovanni Giomini Figliozzi 18 Aprile 2011
  6. Avatar photo Fabrizio87 19 Aprile 2011
  7. Avatar photo Fabrizio87 19 Aprile 2011
  8. Avatar photo s1m0n3t 24 Aprile 2011
  9. Avatar photo s1m0n3t 24 Aprile 2011
  10. Avatar photo Fabrizio87 25 Aprile 2011
  11. Avatar photo alfredpennarini 25 Aprile 2011
  12. Avatar photo Giovanni Giomini Figliozzi 27 Aprile 2011

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend