Cómo conectar Arduino con una Raspberry


En este tutorial de Zagur, vamos a ver como es posible  conectar de una forma muy sencilla a través del puerto serie  una   placa   Arduino  con  una Raspberry Pi utilizando Python para hacer esta comunicación.

El resultado va a ser  reproducir una melodía con un zumbador  conectado a Arduino por medio de un servicio (Apache, por ejemplo)que correrá en la Rasberry Pi.

Para hacer posible el ejemplo conectaremos primero Arduino en nuestro PC,  cargaremos el software en él y luego lo conectaremos a la Rasberry Pi.

El código de Arduino es realmente sencillo, y el montaje no requiere mucho tiempo, ya que solo es conectar el zumbador piezoléctrico en el pin 8 (cable rojo) y en el pin GND (cable negro).

Ahora cargamos este programa en nuestro Arduino,

#include “pitches.h”
// Notas en la melodía
int melody[] = {
NOTE_C4, NOTE_G3, NOTE_G3, NOTE_A3, NOTE_G3,0, NOTE_B3, NOTE_C4};

// Duración de las notas: 4 (negra), 8 (semicorchea), etc
int noteDurations[] = {
4, 8, 8, 4, 4, 4, 4, 4};

void setup () {
Serial.begin(9600); //Inicializamos el puerto serial a 9600 baudios
}

void loop() {
if (Serial.available()) { //Si está disponible el puerto serie
char c = Serial.read(); //Guardamos la lectura en una variable char

if (c == ‘w’) { // Si escribo w  entonce  haremos sonar una melodía y reiniciamos  apache (en la RPi)

for (int thisNote = 0; thisNote < 8; thisNote++) {

int noteDuration = 1000/noteDurations[thisNote];
tone(8, melody[thisNote],noteDuration);

int pauseBetweenNotes = noteDuration * 1.30;
delay(pauseBetweenNotes);
// parar el tono que se esta reproduciendo:
noTone(8);
}
}
}
}

 

 

Este código resumidamente lo que hace es que comprobar mediante el   condiciona   if (c == ‘w’)   si la variable que Raspberry Pi le envía es igual  el carácter ‘w’ ( o el carácter que se desee siempre  que lo defina en este código) , entonces ejecutará la melodía hasta que finalice    por medio del bucle for{} .

Junto a esto, abriremos un fichero nuevo y lo llamaremos pitches.h que contendrá las notas musicales  que se puede descargar aquí.

 

Una vez hemos cargado este código en Arduino, el siguiente paso es preparar la Raspberry Pi.

Aquí tendremos que hacer un pequeño programa en Python que nos permitirá mandarle comandos a la placa Arduino. Para eso, tendremos que instalar una librería de Python en Raspberry Pi mendiante el comando.

aptget install pythonserial  
 Una vez instalado, conectamos Arduino a nuestra Rasberry Pi y creamos un fichero llamado RaspDuino.py. En él añadiremos lo siguiente:
import os
 
arduino = serial.Serial(‘/dev/ttyACM0’, 9600)
 
print(“Starting!”)
 
continuar = True
while continuar:
        comando = raw_input(‘Introduce un comando: ‘) #Input
        arduino.write(comando) #Mandar un comando hacia Arduino
 
        if comando == ‘w’:
                print(‘Reiniciando apache…’)
                resultado = os.system(“service apache2 restart”)
        elif comando == ‘exit’:
                continuar = False
arduino.close() #Finalizamos la comunicacion

 

Este código también es sencillo. En primer lugar creamos un bucle para que nos vaya pidiendo siempre el “Introduce un comando“, y todo lo que vayamos escribiendo, se enviará al Arduino y de modo  que dependiendo del código qeu tenga Arduino hará una cosa u otra. En el ejemplo si enviamos ‘w‘ ejecutará la melodía en el Arduino y además, ejecutaremos en la Raspberry Pi, “service apache2 restart“. Si escribimos “exit” saldrá del bucle while y se acabará el programa.

Para ejecutar este fichero ya sólo queda ejecutar el fichero en python: python RaspDuino.py

 

 

Fuente   aqui

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s