martes, 16 de agosto de 2016

Control de Arduino mediante la Raspberry Pi


Control de Arduino mediante la Raspberry Pi


Publicado por Isaac PE el 30 octubre 2013 a las 11:08.

Compártelo en G+
Compártelo en Facebook
Compártelo en Twitter




Arduino y Raspberry Pi no son dos productos sin relación, juntos pueden hacer una simbiosis bastante interesante y permitirte ampliar el rango de posibilidades de una placa Arduino sola. Además podrás aprender como funciona la comunicación entre software y hardware para captar la esencia de lo que se cuece en tu equipo cada vez que realizas alguna operación.

Eso es lo bueno de Arduino y Raspberry Pi, que no solo creas, sino que también aprendes. Y por eso son dos amigos muy potentes para tus proyectos. En éste artículo te enseñamos a realizar los lazos entre Arduino y Raspberry Pi para poder controlar tu proyecto de Arduino mediante el software que creamos en la Raspi.



Lo cierto es que la comunicación entre ambos dispositivos se puede hacer de muchas maneras. En cuanto a las formas físicas de hacerlo se encuentran: utilizar un módulo Ethernet, mediante el propio cable USB, por Bluetooth, etc. Pero lo más sencillo y barato es hacerlo mediante el puerto serie (el USB que ya trae). Una vez elegido el método físico, también nos topamos con diversos métodos de comunicación: apps para realizar el control, mediante la consola de Arduino IDE o creando nuestro propio programa escrito en cualquier lenguaje de programación que admita la comunicación serie (Python, C, Java, Processing,…).
Material necesario
Una placa Raspberry Pi ya preparada.
Una placa Arduino UNO.
LED verde (o cualquier otro color, incluso podría servir una pequeña bombilla, motor, etc…)
Procedimiento

Nosotros vamos a usar un método bastante sencillo, mediante el cable USBcon el que conectamos Arduino al PC y empleando Python. Para nuestro ejemplo emplearemos un circuito simple que consta únicamente de un LED, así podrás ver los resultados de una forma sencilla (pero puedes crear cualquier otra cosa). Los pasos a seguir son:
Desde nuestra Raspberry Pi ya configurada accedemos al terminal (debe estar conectada a Internet, si no dispones de conexión para la Raspi, puedes descargarte el paquete desde otro PC y pasarlo a la Raspberry Pi) y tecleamos lo siguiente:


sudo apt-get install python-serial
Ahora ya tenemos instalado el paquete Python que se necesita para la comunicación serial con Arduino. Vamos a montar ahora el “circuito” para lo que simplemente tenemos que insertar el terminal largo (ánodo) del LED en el pin digital 13 de la placa Arduino y el corto (cátodo) en GND o tierra. Por cierto, colocar el LED así directamente sobre la placa de Arduino no es aconsejable en caso de dejar mucho tiempo el LED encendido, en ese caso podemos implementar una resistencia (de unos 220 ohmios es suficiente) en serie con el terminal largo.


Luego escribiremos el código fuente o sketch para programar Arduino desde Arduino IDE (si lo deseas puedes tenerlo instalado en tu Raspberry Pi o incluso en tu móvil Android gracias a la app ArduinoDroid). Para nuestro sketch empleamos el siguiente código:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/*Programa para hacer que Arduino espere ordenes de la Raspberry Pi*/

const int led=13; //Declaramos el pin digital del LED

void setup(){
pinMode(led, OUTPUT); //Configuramos el pin como salida
Serial.begin(9600); //Iniciamos la transmision serial a 9600 baudios
}
void loop(){ //Este es nuestro bloque de ejecucion
if (Serial.available()) {
luz(Serial.read) - '0'); //Esto toma el valor 0 inicial
}
delay(500);
}

void luz(int n){
for(int i=0; i<n; i++){
digitalWrite(led, HIGH); //Se enciende el LED por 130ms
delay(130);
digitalWrite(led, LOW); //Se apaga el LED por 130ms
delay(130);
}
}

Una vez revisado para ver si hemos cometido errores sintácticos o de cualquier otro tipo, lo cargamos en nuestra placa Arduino utilizando el cable USB y mediante el botón de acceso rápido Cargar.
Ya solo nos falta una parte, escribir la línea en el terminal para que Python haga el resto. Fíjate en la siguiente línea. Si la escribes en el terminal de la Raspi respetando el punto y las comillas simples y sustituyendo n por cualquier número, en Arduino verás titilar el LED tantas veces como hayas especificado:


ser.write(‘n’)

Finalizo explicando un poco lo que ocurre. Al escribir el código o sketch de Arduino, hemos conseguido que la placa esté a la “escucha” de cualquier cantidad entera que le llegue por el puerto serie. Gracias al bucle for que hemos creado, el código que contiene se repetirá tantas veces como indique el númeron. Si te fijas en el código for (int i = 0; i < n; i++) lo que hace es evaluar el número i que comienza tomando el valor 0 y se va incrementando (i++). El bucle se rompe cuando i supere a n (i < n). ¡Ahora es tu turno, espero que te haya gustado!

No hay comentarios:

Publicar un comentario