6 gennaio 2013

Nanpy - Usa il tuo Arduino con Python


Salve a tutti, quest'oggi ho il piacere di ospitare Andrea Stagi, un programmatore italiano che in passato ho avuto già il piacere di intervistare su questo blog (qui potete leggere l'intervista). In questo suo guest post Andrea ci illustrerà un suo nuovo progetto ovvero Nampy, che vi consentirà di usare Arduino con Python. Non vi trattengo oltre, lascio dunque la parola ad Andrea Stagi. Buona lettura :)

Ciao a tutti,

sono stato chiamato nuovamente  alle armi da Marco per illustrare Nanpy, un progetto sul quale ho cominciato a lavorare quest’estate e che si sta avvicinando verso una versione stabile: Nanpy. Grazie a questa libreria open source (https://github.com/nanpy/nanpy) è possibile scrivere script Python che interagiscono con Arduino, e quindi è possibile utilizzare un Lcd, accendere un led, leggere la temperatura da un sensore ecc.. il tutto collegando Arduino al PC (o a una RaspberryPi) e utilizzando Python e Nanpy :)

Perché ho fatto tutto questo?
Per semplificare a me e agli altri la vita. Python è un linguaggio semplice da imparare e utilizzare, e incrementa di molto la produttività: scrivere prototipi e debuggarli, testare componenti e fare piccoli esempi diventa semplice e veloce, inoltre Nanpy è uno strumento che facilita il lavoro nel caso si abbia la necessità di utilizzare Arduino con Raspberry, com’è successo a me che dovevo riesumare una mia vecchia macchinina radiocomandata https://www.youtube.com/watch?v=NI4PDfVMdgM

Come Funziona?
Per utilizzare Nanpy dovete innanzitutto avere a disposizione un Arduino e un PC o RaspberryPi con installato Python 2 o 3. Scaricate poi l’ archivio da http://pypi.python.org/pypi/nanpy . Nanpy si compone di due parti: la parte firmware, che dovete compilare e uploadare su Arduino (e che dovete flashare solo una volta), quindi collegate il vostro Arduino via USB e andate di terminale

cd firmware
export BOARD=uno
make
make upload

Adesso è il turno della libreria Python che starà sul vostro PC o Raspberry

python setup.py install

bene, siete pronti :) I vostri script Python grazie a Nanpy comunicheranno con Arduino via USB.

Un esempio
Partiamo da un semplice esempio, il classico blink, ovvero fate lampeggiare un Led, che poniamo sul pin 13. Per prima cosa importate gli oggetti che vi servono: potete importare Arduino, che contiene le funzioni di base come map, delay, digitalWrite, digitalRead ecc.. ma potete importare anche i moduli Lcd, Tone, DallasTemperature, OneWire ecc... a seconda delle necessità. In questo caso abbiamo bisogno solo di Arduino quindi

from nanpy import Arduino

Bene, adesso impostiamo il pin 13 come pin in uscita

Arduino.pinMode(13, Arduino.OUTPUT)

Adesso possiamo scrivere sul piedino 13 un valore alto (Arduino.HIGH) oppure un valore basso (Arduino.LOW). Accendiamo il nostro led:

Arduino.digitalWrite(13, Arduino.HIGH)

Per creare il blinking comunque avrete bisogno di dichiarare un ciclo che accenda e spenga il vostro led, quindi:

for i in range(10000):
    Arduino.digitalWrite(13, (i + 1) % 2)
    Arduino.delay(10)

dando un piccolo delay in fondo al ciclo :) Ci sono altri esempi nel codice, guardate nella cartella examples. Inoltre esiste un repository che contiene dei mini progetti fatti con Nanpy, https://github.com/nanpy/eggsamples .

Se volete approfondire la questione consiglio l’ultimo numero di MagPi dove parlo di Nanpy: http://www.themagpi.com/ .

Happy coding :)

=.4S.=

Nessun commento:

Posta un commento

Licenza
Licenza Creative Commons

Quest' opera è distribuita con licenza Creative Commons Attribuzione - Non commerciale - Non opere derivate 3.0 Unported. Questo blog non rappresenta una testata giornalistica, in quanto viene aggiornato senza alcuna periodicità. Non può, pertanto, considerarsi un prodotto editoriale, ai sensi della legge n. 62 del 7/03/2001

Disclaimer immagini

Le immagini utilizzate in questo blog appartengono ai loro rispettivi autori e sono utilizzati per scopi educativi, personali e senza scopo di lucro. Ogni eventuale violazione del copyright non è intenzionale, ma se si riconosce un'immagine protetta da copyright, fatemelo sapere qui, e sarò lieto di aggiungere i credits o modificarla o rimuoverla.

Disclaimer images

Images used on this blog belong to their respective authors and are used for educational, personal and no profit purposes. Any eventual copyright infringement is not intentional, but if you recognize a copyrighted image, please let me know here, and I'll happily provide to add the right credits or modify or remove it.