Conectando Arduino con Raspberry Pi, via USB

La conexión entre Arduino y Raspberry Pi es una buena idea. Por un lado Arduino es una plataforma muy conocida, con muchas aplicaciones y una gran comunidad, por otra, Raspberry Pi tiene la flexibilidad de la programación y la comunicación a la Internet.

ArduRaspi1

En este artículo veremos una forma de conectar Arduino con Rapsberry Pi, pero a través del cable USB. Esto tiene la ventaja adicional de usar un hardware mínimo.

Materiales

Los materiales ocupados son

La conexión la haremos en tres etapas:

  1. Programamos el Arduino
  2. Pruebas iniciales y finalmente
  3. Ejemplo en código Python usando PySerial

, tras el salto el procedimiento que usamos

Programando el Arduino

Se debe cargar en el arduino el siguiente sketch

void setup(){
  Serial.begin(9600);
}

void loop(){
  Serial.println("Hello Pi");
  delay(2000);
}

Prueba inicial

Conectamos nuestro Raspberry Pi con el USB Wifi, aqui estan las instrucciones. Conectamos el Raspberry Pi con la fuente de alimentación y ahora,  antes de conectar el Arduino, probamos el siguiente comando,

ls /dev/tty*

Ahora se puede conectar el Arduino y se ejecuta nuevamente el comando anterior para identificar la puerta correcta. En nuestro caso aparece la puerta /dev/ttyACM0 y es la que usamos en el programa de Python

Codificando en Python

Ahora ya tenenos conectado el Arduino con la Raspberry Pi, usamos la biblioteca PySerial para habilitar la puerta serial. Para instalar PySerial usamos el siguiente comando

sudo pip serial

A continuación escribimos el siguiente código de Python para mostrar el funcionamiento

# website: www.iot.cl
# 
# Purpose : Basic use of USB port
#
# Date : 2013–07–19

from serial import Serial

ardu = Serial('/dev/ttyACM0', 9600, timeout=1)

while True:
        try:
            a = ardu.readline()
            print a
        except KeyboardInterrupt:
            break
ardu.close()

Asi queda finalmente Arduino conectado a RaspberryPi , lo mejor de los dos mundos
Así queda finalmente Arduino conectado a RaspberryPi , lo mejor de los dos mundos

 

Bibliografía

blog de OscarLiang
Articulo anterior de Raspberry Pi y Teensy via GPIO

 

Author: Manuel Carrasco

Ingeniero Eléctrico, Institutano, instructor certificado Cisco, en twitter @mcarrasco con comentarios y opiniones personales.

2 thoughts

  1. muy interesante mi buen, lo intentare, oye pero una duda, si tambien quiero que la raspi envie datos, que deberia cambiar?, espero me puedas ayudar y si puedes me mandes la respuesta a mi correo, gracias

  2. Estimado Carlos,

    La respuesta esta en uno de los links de este articulo, en este caso se lee un valor n desde la raspberry y ese valor (de tipo entero) se ocupa para hacer parpadear un led n veces

    A continuacion el sketch

    ================

    const int ledPin = 12;

    void setup(){
    pinMode(ledPin, OUTPUT);
    Serial.begin(9600);
    }

    void loop(){
    if (Serial.available()) {
    light(Serial.read() – ‘0’);
    }
    delay(500);
    }

    void light(int n){
    for (int i = 0; i < n; i++) { digitalWrite(ledPin, HIGH); delay(100); digitalWrite(ledPin, LOW); delay(100); } } ============ Por el lado de la raspberry el script es muy sencillo, en este caso escribimos sobre la serial el valor 3 ========== from serial import Serial ardu = Serial('/dev/ttyACM0', 9600, timeout=1) ardu.write('3') ==========

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *