Social Engine: una macchina che si muove a “suon di Tweet”

Di - 10 October 2013 - in
social-engine-raspberry-pi-arduino-node-js

Sono sempre stato affascinato dal mondo dei Makers. Io sono una di quelle persone alle quali una macchinina telecomandata durava meno di un’ora nella sua interezza.

Per lavoro, io sono un web developer freelance, sono approdato in Toolbox Torino: una struttura di co-working vicina a  Officine Arduino e  Fablab Torino. Per cui sono entrato a fare parte di quelli che fanno.
Stampanti 3D, macchine taglio laser sono ormai entrate a far parte del mio contesto lavorativo.

Un giorno come tanti, il co-creatore del progetto non ché mio socio in affari Silvio Cacamo e la co-creatrice Patricia Alonso Zabal, mi propongono di creare una struttura dinamica interamente in legno. Mi presenta il render 3D del progetto e immediatamente l’idea:

Perché non lo azioniamo con un tweet?

L’hardware

Mentre della parte “fisica” se ne è occupato Silvio, tagliando con il  laser gli ingranaggi e selezionando come materiali legno e MDF, io ho deciso di prendere in carico la parte hardware. Purtroppo ho dovuto ripiegare sulla configurazione Rasberry PI + Arduino in quanto Arduino YUN non era ancora disponibile ( ma è già in fase di implementazione). Per lo strato software mi sono avvalso di Node JS. Lo sto utilizzando parecchio per scopi professionali e quindi ho pensato “perché no?”.

La configurazione

Come Sistema Operativo per la Rasberry PI, ho scelto Raspbian. Non avendo a disposizione monitor e tastiera da collegare alla Rasberry PI, dopo aver “copiato” l’immagine sulla SD da 4GB tramite il tool per linux dd, ho poi montato la partizione in una directory e modificato il file /mnt/ruberrypi/etc/network/interface per dare un ip fisso alla Rasberry PI in modo da poter accedere tramite ssh.

Una volta connesso alla rete, ed effettuato il login:

$ ssh pi@192.168.0.109

ho installato mDNS, per accedere anche se inserito in una rete che viene gestita tramite dhcp (come ad esempio alla Maker Faire di Roma), e qualche altro tool.

Installiamo Node JS

Ok adesso tocca a Node JS. Spostiamoci in una cartella temporanea e recuperiamo tramite wget l’installazione di Node JS

$ wget wget http://nodejs.org/dist/v0.10.13/node-v0.10.13-linux-arm-pi.tar.gz

Estraiamo il contenuto

$ tar -xzvf ./node-v0.10.13-linux-arm-pi.tar.gz

e dopo aver creato una cartella sotto /opt di nome node

$sudo mkdir /opt/node

copiamo al suo interno il contenuto della cartella decompressa

$sudo cp -r node-v0.10.13-linux-arm-pi/* /opt/node

Non ci rimane che editare il file /etc/profile ed aggiungere alla variabile d’ambiente $PATH la direcory contente node

$ vim /etc/profile
...
NODE_JS_HOME="/opt/node"
PATH="$PATH:$NODE_JS_HOME/bin"
...

Cambiamo infine il proprietario della cartella

$ Sudo chown -R $USER /opt/node
e testiamo il tutto con un bel
$ node -v
v0.10.13

TWIT e SerialPort + Node JS

Durante la fase di scouting ho trovato molto interessante questi 2 moduli per il mio progetto. Twit per accedere alle Stream API di twitter e Serial Port “comunicare” con Arduino. I progetti sono hostati su github dove  troverete tutte le informazioni che vi servono per configurare a dovere i pacchetti.

Utilizzando le Stream API di Twitter per accedere allo stream pubblico, ho dovuto mettere dei filtri stabilendo quali tweet recuperare. Nello specifico ho utilizzato la funzione stream() del pacchetto Twit, passando come parametri statuses/filter e { track: ‘@account’} recuperando solo i tweet che menzionassero uno specifico account. Infine ho aggiunto una regex che tenesse conto solo di quelli con uno specifico hashtag. Questo mi permette di filtrare ulteriormente i tweet recuperati.

Arduino

Passiamo alla parte “manuale” del progetto. Per permettere di far girare tutti i due livelli  di ingranaggi, oltre al fantastico lavoro di Silvio nel far combaciare ogni ingranaggio co quelli adiacenti, ci siamo avvalsi di un motore passo passo, in quanto abbiamo scoperto che un DC non avere abbastanza coppia.

Ad Arduino abbiamo associato un Motor Shield Rev 3 alimentato a 12V con un trasformatore.

Finita la connessione,  ho scritto uno sketch che rimanesse in ascolto sulla porta seriale.L’arrivo di un input da parte dello script node ospitato sulla RaspberryPI (inviato grazie a SerialPort ), aziona il motore passo passo che crea un effetto ottico veramente affascinante.Il movimento dura un paio di minuti e al termine Arduino invia un segnale allo script Node.

Qui potete trovare il lavoro finito

Invece qui un piccolo video del Making Of

Leave a Reply

Giorgio Cerruti Articolo scritto da

Consulente informatico, Web developer freelance con una forte passione per la tecnologia a 360°. Sviluppa principalmente in PHP e Node JS utilizzando servizi Cloud per il deployment. Sfegatato sostenitore di GNU/Linux.

Contatta l'autore

Previous post:

Next post: