Está en la página 1de 13

Arduino y Python: Controlar Arduino desde el

PC con Python

Publicado por David Rolando

   
Me gusta

ARDUINO UNO Y PYTHON3

Durante el aprendizaje de programación de Arduino necesitaremos establecer una


comunicación entre el PC y nuestro Arduino es decir se necesitará enviar datos del
Arduino al PC o por el contrario, necesitaremos enviar comandos del PC al Arduino. Es
por ello que en Python podemos encontrar herramientas útiles en los que
podremos conectar por comunicación serial nuestro Arduino con el PC.

Encuentra tu profesor ideal

Tería necesaria 

Python - pyserial

Necesitamos aprender cómo usar la librería py-serial en Python la cual nos permitirá
enviar y recibir comandos de nuestro Arduino, o en general cualquier microcontrolador
que se pueda comunicar por el puerto serial.

1. local = "COM" + str(number)  # /dev/ttyUSBx     COMx

2. ser = serial.Serial(local, 115200, rtscts=False, dsrdtr=False)

Arduino - Serial 
Cuando trabajamos con el módulo de Arduino, necesitamos habilitar explícitamente
el puerto serial para que pueda recibir y enviar información por el puerto serial a través
del terminal USB.

1. Serial.begin(115200);  //Iniciando puerto serial

2. Serial.setTimeout(50); // ms de tiempo de corte y espera a la comunicación

Arduino – Interrupción Serial 

En Arduino podemos activar el detector de eventos serial, es decir cada vez que el
Arduino reciba una señal de datos por el puerto serial, esta funcionalidad de activará y
realizará las operaciones que hayamos programado. Esto ahorra energía y tiempo de
cómputo del programa principal.

1. void serialEvent()

2. { // TODO }

 
Artículo relacionadoCómo convertirse en programador paso a paso
La profesión de programador puede que sea una de las más demandadas en la
actualidad y no tiene pinta de que esto vaya a cambiar. Saber programar es tan
importante como saber construir edificios, los ...

Editores de Texto 

Es el programa que nos permitirá escribir los códigos que colocaremos dentro del


Arduino y correremos con Python. No tiene nada de especial es solo una herramienta,
podríamos usar cualquier otro y seguiría funcionando igual.
 

Desarrollo

Lo primero que necesitaremos será un Arduino uno, un cable USB tipo B, ( para este
modelo en específico) y un par de servomotores. Nada interesante hasta el momento.
Ahora necesitaremos lo primordial, ... alguien que sepa programación, en serio no es
broma, sí o si necesitas programar para lo que se viene. No es para nada complicado,
pero sin una base clara será muy difícil.

1. Un Arduino UNO

2. Un cable USB
 

3. Dos servomotores SG90 (cualquier otro funciona perfecto)

4. Un programador**
Ahora lo que sigue es diseñar nuestro sistema de control del Arduino, esta es la parte
difícil en general para cualquier proyecto de programación, es lo que define lo que vas
a codificar. Luego lo demás es superficial, ya que tienes una meta clara, solo sigue para
adelante. Sin un objetivo no puedes anotar, Casey Neistat.

Pues, ¿cómo definimos esto? Iniciamos con el objetivo principal.

1. Enviar comandos desde el PC hacia el Arduino

2. Utilizando el lenguaje Python con la librería pyserial y la funcionalidad Serial dentro del


Arduino.

3. Los datos salen del PC y se van directamente hacia el Arduino, el cual los interpretará

4. Una vez recibido e identificado el comando por el Arduino se procederá ha realizar la


acción solicitada.

5. Una vez realizada la acción, el Arduino enviará una respuesta de regreso como señal de
conformidad o error.

La verdad que parece mucho trabajo ... y lo es ... ahora imaginence lo que
tomaría programar un robot más complejo con muchas más funcionalidades.
Cada una de estas 5 etapas definidas arriba pueden ser llevadas a código. Recordemos
que ahora estamos trabajando en dos lenguajes de programación, en C++ y en Python.
Los principios son los mismos pero la sintaxis es distinta.

Coding time

Punto 1. ¿Qué comandos queremos enviar?

 1. Comandos para que se identifique el elemento en el puerto serial, puede ser


cualquier otro.

RQN0 : Enviado al arduino nos devolverá el nombre del arduino

 2. Comando para ordenar que el servomotor ser mueva

ACN1M20 : Enviado al arduino para mover el motor 1 en 20 grados

ACN2M30 : Enviado al arduino para mover el motor 2 en 30 grados

 3. Comando para ordenar que envíe el estado actual del motor.

RQN3 : El arduino regresa el estado actuald de los motores.

Estos dos lo debemos implementar en el Arduino y en python.

Punto 2 y 3. ¿Cómo lo realizaremos?

Adruino:

 Iniciar el serial
 Crear la función para reconocer los eventos de entrada
 Crear las respuestas para cada comando, los cuales son 3
Python:

 Crear una clase que nos sirva para reconocer al Arduino automáticamente
 Crear métodos dentro de la clase que envíen los comandos que necesitaremos

 Crear un Loop que constantemente nos pida una acción, mover el servo o solicitar el
estado.
 

Punto 4 y 5. ¿Hacer qué?

1. Mover el servo dentro del Arduino.

2. Enviar mensaje de respuesta del Arduino al PC.

Test
Veremos que tal nos va nuestra implementación realizada, nunca esperen que funcione a
la primera, de hecho casi nunca funciona, en mi caso como soy un experto, esto debería
funcionar así que .... aún tenemos que hacer una ultima acción y esto es conectar
nuestro Arduino al PC.

En este caso particular podemos ver que nuestro código funciona a la perfección,


logramos comunicar nuestra PC con el Arduino. Ahora imagínense las otras cosas que
también podrían hacer. Todo está a su alcance.

Observaciones

No todo es color de rosa amigos, esto fue posible debido a que el Arduino y estos servos
en particular consumen muy poca energía, por lo que nuestro puerto USB proveer con
suficiente para que todo funcione, sin embargo, si hubiera sido otro servo, esto no
funcionaría, hubiéramos necesitado otra fuente de alimentación para nuestros
servomotores.

Conclusiones

Mediante esta implementación podemos agregar cualquier Arduino a nuestro PC y


controlar objetos, ya sean motores, reles, triac, transistores, todo por intermedio de
una interface escrita en python.

También podría gustarte