Arduino + Raspberry Pi - RaspDuino

¡Hola! Hoy os traemos un tutorial que seguro que os gusta y, que pensamos que es de gran utilidad. Vamos a establecer una comunicación a través del puerto serie entre Arduino y Raspberry Pi. Para ello, vamos a hacer uso de Python. Si no sabéis Python, no os asustéis, es muy fácil. Os recomiendo que leáis antes algún tutorial de iniciación, pero ya digo que es fácil el código.

Exposición del proyecto

Vamos a encender y apagar un LED, que estará conectado al pin número 13 de la placa Arduino. ¿Cómo lo vamos a hacer? Fácil. Vamos a conectar el Arduino a la Raspberry Pi con un cable USB (el mismo que usamos para conectarlo al ordenador) y ejecutaremos un programa en Python que nos permitirá controlar dicho LED a nuestro gusto.

Realización del proyecto

Voy a dividir el proyecto en 2 partes:

  • Parte 1: Arduino (código y montaje)
  • Parte 2: Raspberry Pi (código y ejecución)

- Parte 1: Arduino

El código de Arduino es realmente sencillo y, el montaje más aún, pues es colocar un único LED.

Si ya habéis usado Arduino antes, entenderéis este código a la primera. Si, por lo contrario, es vuestra primera vez, no os preocupéis, es muy intuitivo.

int led = 13; void setup () { pinMode(led, OUTPUT); //LED 13 como salida Serial.begin(9600); //Inicializo el puerto serial a 9600 baudios } void loop () { if (Serial.available()) { //Si está disponible char c = Serial.read(); //Guardamos la lectura en una variable char if (c == 'H') { //Si es una 'H', enciendo el LED digitalWrite(led, HIGH); } else if (c == 'L') { //Si es una 'L', apago el LED digitalWrite(led, LOW); } } }

¿Qué hace este código?

Lo primero de todo es declarar la variable 'led' como entero, a la que le asignaremos el valor 13, que es el pin donde está conectado. Tras esto, inicializaremos la comunicación y, en el 'loop()', que es la función principal, leeremos constantemente los valores que nos estén llegando desde Python.

- Parte 2: Raspberry Pi

Vamos, ahora, con la parte de Raspberry Pi. Esta parte consiste en la programación en Python del código que nos permitirá mandarle comandos a la placa Arduino. Llamaremos a este código RaspDuino.py.

Antes de escribir el código, tendremos que instalar la librería 'python-serial' para que no nos de error en la ejecución:

sudo apt-get install python-serial

¡Vamos con el código!

import serial arduino = serial.Serial('/dev/ttyACM0', 9600) print("Starting!") while True: comando = raw_input('Introduce un comando: ') #Input arduino.write(comando) #Mandar un comando hacia Arduino if comando == 'H': print('LED ENCENDIDO') elif comando == 'L': print('LED APAGADO') arduino.close() #Finalizamos la comunicacion

¿Qué hace este código?

Necesitamos la importar las funciones necesarias para utilizar el puerto serie. Esa es la razón de la primera línea. Tras esto, declaramos una variable llamada 'arduino', con los datos necesarios para establecer la comunicación (puerto y baudios). Tras esto, en un while-true, pedimos al usuario que introduzca un comando. Cuando lo introduzca, se enviará a Arduino, donde ya le hemos hecho diferenciar entre 'H' y 'L'. Si es una 'H', se encenderá el LED y, si es una 'L', se apagará. Así de simple.

Para ejecutar este código, simplemente tendremos que introducir lo siguiente en la consola de la Raspberry Pi:

python RaspDuino.py

Os dejo un vídeo con la explicación que acabo de dar paso a paso y con la demostración de que el código funciona, aunque lo veréis vosotros mismos.

¿Os ha servido este tutorial? ¿Tenéis dudas? ¿Queréis proponer algo? ¡Dejad un comentario! ¡Un saludo!