Come accedere da remoto per controllare Arduino

Una funzionalità sempre utile è la possibilità di accedere alle risorse della board Arduino tramite un collegamento internet. Questa operazione non è particolarmente difficile anche se i passaggi da eseguire sono diversi, questo tutorial permette di controllare Arduino da remoto.
La prima cosa da risolvere è rintracciare l’indirizzo ip del nostro router per accedere alla rete locale dove è collegato l’Arduino. Solitamente l’ip dei router è dinamico, quindi può cambiare inavvertitamente rendendo impossibile conoscerlo da una postazione remota. Fortunatamente esistono dei servizi che risolvono questa necessità, permettendo, tramite un piccolo software che gira sul pc (o in alcuni casi direttamente sul router locale) di aggiornare un servizio web che memorizza l’indirizzo del router locale.

Il servizio che ho scelto per questo articolo è offerto dal sito no-ip.com. Prima di utilizzare le sue funzioni dobbiamo creare un account (free) compilando il relativo form

Registrazione al servizio no ip

Una volta ottenuto, eseguiamo il login per accedere alla pagina dei servizi. Clicchiamo sul link Hosts/Redirects e poi sul link Add Host

Aggiungi Host no ip

compiliamo i relativi campi che permettono di associare un host al nostro indirizzo ip corrente.
Nel campo Hostname inseriamo un nome che identificherà il nostro host, la combo box elenca i nomi di dominio disponibili, selezioniamone uno a piacere tra quelli free.
Selezioniamo tramite le checkbox l’Host Type, per la nostra applicazione  va bene quello di default (DNS Host(A)).
Nella casella Ip Address sarà presente l’indirizzo attuale del nostro router.
Concludiamo la creazione dell’host cliccando sul pulsante Create Host.

Ora scarichiamo l’utility che aggiornerà l’host con l’indirizzo ip del router locale. Clicchiamo sul link Download Client:

Download Client

selezioniamo il sistema operativo in uso sul computer, eseguiamo il download e successivamente la semplice installazione.

Una volta installato il client sul pc, eseguiamolo per configurare le prime impostazioni. Inseriamo innanzitutto l’indirizzo mail e la password relativi all’account no-ip.com precedentemente creato

Nome utente e password

Una volta effettuato l’accesso, il client ci invita a selezionare l’host da aggiornare, spuntiamo la checkbox relativa all’host creato precedentemente

salviamo per rendere operativo l’aggiornamento dell’ip.
Nella sezione preferenze del client spuntiamo la voce per eseguire automaticamente il programma all’accesso del sistema operativo.

Ritornando nella pagina Menage Host sul sito no-ip potremmo conoscere costantemente l’indirizzo del router locale da qualsiasi posizione della rete Internet.

Configurare Arduino Ethernet per rispondere alle richieste web

Per semplicità utilizzerò lo scketch di esempio Webserver (dall’IDE arduino File->Examples->Ethernet->WebServer), modifichiamo l’indirizzo ip dell’Arduino con un indirizzo compatibile con la nostra rete locale. Nel mio caso ho lasciato quello di default 192.168.1.177.

Verifichiamo tramite un pc della rete locale che l’Arduino risponda alle richieste http, apriamo il browser e nella barra degli indirizzi scriviamo l’ip della board Arduino (192.168.1.177) e premiamo invio. In assenza di problemi dovremmo ottenere qualcosa del genere

Configurare il router per le richieste remote

Questa è la parte più delicata perchè cambia da router a router ma teoricamente è necessario utilizzare la sezione virtual server del router, inserire nell’apposito campo l’indirizzo ip della board Arduino e sbloccare la porta 80 per il relativo indirizzo. In questo modo le richieste http remote verranno processate dalla board Arduino.

Collaudare il sistema

Ora tutto è pronto per il test finale. Da una postazione remota collegata ad internet apriamo il browser e digitiamo il nome dell’host come definito nella pagina Menage Host del sito no-ip.com, se tutto è stato impostato correttamente otterremo la risposta dell’Arduino cosi come nella prova locale.

In questo modo potremmo accedere alle risorse dell’Arduino per leggere dati o per pilotare i suoi pin digitali. Vi invito a leggere gli articoli precedenti per approfondire l’argomento.