Control de salidas
Raspberry - Arduino -Python
Raspberry Pi xsetaseta@gmail.com
En este montaje realizó una comunicación entre la raspberry y el arduino mediante el cable USB.
Además de realizar la comunicación a través del cable usb, el arduino se alimenta de él.
Se basa en un anterior montaje aserie.html que activaba o desactivaba todas las salidas del arduino mediante un interface gráfica realizada en C y con la librería SDL.
En este caso hacemos lo mismo pero programando en python y con la librería tk.
Como realmente la raspberry es un ordenador con linux como sistema operativo, la realización se efectúa en el PC con debian por cuestión de velocidad, y luego se pasa a la raspberry donde funciona perfectamente.
El programa de arduino consiste en que se lee constantemente el puerto serie. Cuando se recibe una orden "1Dig13" el arduino interpreta que tiene que poner a 5V la salida de arduino Digital13. Si recibe la orden "0Dig13" el arduino pone la salida Digital13 a 0V.
Para mandar las ordenes al arduino se puede utilizar la consola del programador de arduino o cualquier otro programa de comunicaciones como por ejemplo CuteCom o minicom en Linux.
void WriteComand() |
def fAn0(): global An0 if An0 == 0: An0=1 ser.write('1An0\n') else: An0=0 ser.write('0An0\n') print "An0",An0 return def fAn0(): global An0 if An0 == 0: An0=1 ser.write('1An0\n') else: An0=0 ser.write('0An0\n') print "An0",An0 return |
El programa funcionando en la rapberry.
Circuito montado y funcionando.
Nos puede surgir algun problema como este:
Traceback (most recent call last):
File "./raArPy.py", line 5, in <module>
import serial
ImportError: No module named serial
Significa que no tenemos instalado el modulo serie, se instala con la orden:
sudo apt-get install python-serial
Otro problema que puede surgir es que no tengamos permisos para escribir el los puertos serie, /dev/ttyACMx o /dev/ttyUSBx , depende del modelo de arduino que tengamos . Para solucionarlo, debemos dar permisos al usuario que ejecuta el programa con la orden :
adduser usuario dialout
Arreglado estos problemas, ya solo nos queda ejecutar el programa ./raArPy.py .
Archivos del montaje
Un saludo
Juan Galaz
Bibliografía:
http://www.safecreative.org/work/1207302042960-curso-python-para-principiantes
http://docs.python.org/2/contents.html
http://gmendezm.blogspot.com.es/2012/12/tutorial-tkinter-python-gui.html