Escrito el 6 julio 2013 por Luis Ignacio Díaz Martínez
Tabla de contenidos
Este es un tema que siempre me ha parecido curioso… el controlar un microcontrolador ( en nuestro caso Arduino ) desde nuestro PC.
No siempre nuestro microcontrolador podrá realizar todo lo que nosotros le indiquemos… sea por falta de memoria en el chip o la limitación de sus recursos…
También podemos tener como objetivo controlar de forma remota enviando ordenes en vivo recreando por ejemplo un movimiento en un robot ( por ejemplo moverse hacía delante ).
Principalmente estoy utilizando un Arduino Uno de tipo «clónico» ( no es el oficial de Arduino pero tiene la misma arquitectura ).
Como ya dice el título de este artículo estoy utilizando una distribución GNU/Linux… exactamente una Ubuntu 13.04.
Primero de todo lo que tenemos que hacer es instalar la librería PySerial en nuestra máquina. Por suerte para nosotros tanto en Debian como en Ubuntu encontramos el paquete python-serial en sus repositorios…
1 |
apt-get install python-serial |
Quizás necesitemos algún paquete más… si ese fuese el caso no dudéis en comentarlo.
Aún que conectemos nuestro Arduino Uno a nuestro PC necesitaremos cambiar los permisos del puerto serie de comunicación… ya que si no, no podríamos acceder a el desde nuestro usuario ( por defecto tan solo es accesible desde root ).
Para ello tan solo realizaremos lo siguiente…
1 |
sudo chmod 777 /dev/ttyACM0 |
Por lo tanto.. ya estará! no obstante recomiendo la lectura del artículo sobre el IDE de Arduino…
A continuación mostraré las dos piezas que necesitaremos para montar el pastel…
Primero de todo descargaremos el código que tengo en mi cuenta de GitHub…
1 2 3 |
wget https://github.com/luigdima/arduino/archive/master.zip unzip master.zip cd arduino-master/SketchBook/Serial/sendString |
Ahora ya estamos situados en el código que nos interesa!
Este es el código que hace referencia a nuestro Arduino…
Se produjo un error. Por favor, inténtelo de nuevo más tarde. |
El fragmento de código que se muestra a continuación se tendrá que ejecutar desde la consola… Muestro a continuación como ejecutar el script para los despistados…
1 |
./sendString.py |
Y a continuación el código…
Se produjo un error. Por favor, inténtelo de nuevo más tarde. |
Ejecutándolo tendría que devolver por pantalla el mismo string que hemos enviado al Arduino Uno.
Bueno, esto quizás sea lo más complicado de explicar…
La verdad es que me ha costado mucho hacer que funcione este trocito de código… la clave esencialmente reside en los tiempos de ejecución… y en esperar a que la conexión con el puerto serie se realice con éxito.
Una vez establecida la conexión ( desde Python hasta el Arduino UNO ) enviaremos un mensaje ( que se envía de byte a byte ) hacía el microcontrolador. A su vez, Arduino se encarga de recopilar esos bytes y almacenarlos en una variable de tipo string…
Insisto, el secreto está en el tiempo de espera a que se realice la conexión. También he modificado los baudios de conexión con el puerto serial a 115200…
Aún que son muchas… me gusta contrastar información!