Cómo conectar un Arduino a una Raspberry Pi a través de una comunicación serie
Tutorial Comunicación serial Arduino Raspberry Pi
En este artículo os vamos a explicar o al menos intentarlo cómo conectar una placa Arduino a una Raspberry Pi a través de una comunicación serie. De todas maneras y de manera informativa diremos que hay varias maneras de hacerlo. Se puede hacer con la comunicación I2C, SPI o incluso a través de los pines GPIO en la Raspberry Pi.
Antes de nada una cuestión ¿por qué queremos conectar una Raspberry Pi 2 B + y un Arduino Uno Rev 3 juntos? Sobretodo para poder usar las ventajas de ambos al mismo tiempo.
Ventajas y desventajas de Arduino y Raspberry Pi
Ventajas de Arduino:
- Bajo consumo de corriente
- Fácil a la hora de conectar sensores digitales y sensores analógicos sin necesidad de hardware adicional
- Excelente para IOT
etecetera
Algunos defectos de Arduino:
- la mayoría necesita tarjetas adicionales y extensiones para conectarlo a internet, USB, Wfi, bluetooth, etc.
Puntos fuertes de la Raspberry Pi:
- Funciona con un sistema operativo «raspbian: a linux derivation»
- Tiene un montón de extensión (ranura USB, Wifi, ranura HDMI, puerto RJ45, etc)
- Se puede utilizar para IoT «Internet de las cosas«
- Puede hacer un cálculo más alto que la mayoría de placas Arduino
Algunos defectos de la Raspberry Pi:
- Necesidad de agregar hardware adicional para conectar sensores analógicos
- Consumir más energía que un arduino
Así que para conectar nuestras 2 placas y explotar sus puntos fuertes para nuestros proyectos futuros, tenemos que hacer que se comuniquen y compartan datos, por ejemplo ser datos de los sensores de tiempo, de presión, de Internet, etc.
Ahora vamos a la demostración. Para demostrar cómo funciona este tipo de comunicación haremos un par de pequeños proyectos, uno para los datos que van a la Raspberry Pi de Arduino, el otro para lo contrario. En primer lugar, asegúrate de haber instalado pySerial, que permite leer y escribir en el puerto serie con el lenguaje de programación Python.
Para empezar, vamos a necesitar:
- Una Raspberry Pi 2 B + o 3
- Un Arduino Uno, Mega u otro
- Consiga un cable de usb macho macho
Conéctelos con el cable USB y pruebe la comunicación en serie en la Raspberry mediante el siguiente comando en el terminal pi:
ls /dev/tty
Y el resultado debería ser esto: «/ dev / ttyACM0» , eso te permite saber que todo esta bien y que la Raspberry Pi esta conectada y encuentra su nombre.
Ahora vamos a enviar datos desde el Arduino a la Raspberry Pi
Carga el siguiente programa en su Arduino:
Programa:
void setup(){ Serial.begin(9600); } void loop(){ Serial.println(“Hola Pi”); delay(2000); }
Ejecute Python en su Raspberry Pi y escriba este comando en su terminal:
Programa:
import serial ser = serial.Serial('/dev/ttyACM0', 9600)
/ Dev / ttyACM0: ser el nombre del puerto, Puede ser diferente para dependiendo de la Raspbery Pi
9600: Representa el baud en el puerto serie. Debe ser bethe sqme en ambos lados (Arduino y Raspbery pi).
Ahora escribe el siguiente código para agregar un escucha al puerto serie en la Raspbery pi
Programa
while 1 : ser.readline()
Deberíamos ver aparecer en nuestra pantalla de terminal: «Hola Pi»
Ahora vamos a enviar datos de la Raspberry Pi a Arduino
En este ejemplo, nuestra Raspberry Pi enviará un número único, y el Arduino encenderá y apagará el LED del Pin 12 tantas veces como sea ese número.
[sourcecode language=”cpp”] 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); } } [/sourcecode]
En la Raspberry Pi es necesario escribir
ser.write('3')
Ahora debes ver que el LED del Arduino se enciende 3 veces. Y nada más ahora te toca a ti ponerte manos a la obra para crear proyectos usando este tutorial.