Cómo programar Arduino con Python: Guía práctica completa

  • La integración de Arduino y Python permite proyectos versátiles y efectivos.
  • PySerial es clave para establecer comunicación entre ambos mediante el puerto serie.
  • Se pueden lograr tanto tareas básicas como avanzadas, incluyendo sensores y visión artificial.
  • Identificar el puerto serie y configurar ambos entornos son pasos esenciales.

python arduino

La programación de Arduino con Python abre un mundo de posibilidades para los apasionados de la electrónica y el desarrollo de software. Integrar estas dos herramientas permite combinar la versatilidad de Arduino como microcontrolador con el poder y la sencillez de Python para crear proyectos innovadores. En este artículo, aprenderás cómo conectar ambos mundos y profundizarás en los pasos esenciales para empezar a desarrollar tus propias aplicaciones utilizando estas tecnologías.

Arduino, una plataforma de hardware libre, es conocida por su facilidad de uso y adaptabilidad, mientras que Python, un lenguaje de programación de alto nivel, destaca por su simplicidad y eficacia. Aunque Arduino suele programarse en su propio lenguaje basado en C++, es posible comunicarse con él utilizando Python gracias a bibliotecas como PySerial, que habilitan la comunicación mediante el puerto serie. Aquí exploraremos a fondo cómo realizar esta integración desde los principios básicos hasta ejemplos prácticos más avanzados.

Requisitos para empezar

Antes de comenzar a programar Arduino con Python, es indispensable asegurarse de contar con las herramientas y configuraciones necesarias:

  • Una placa Arduino: Modelos como el Arduino UNO, Nano o Mega son perfectos para este tipo de proyectos.
  • Cable USB: Necesario para conectar la placa Arduino al ordenador.
  • Python instalado: Puedes descargar la última versión de Python desde su página oficial.
  • Instalar la librería PySerial: Esta biblioteca es crucial para establecer comunicación entre Arduino y Python. Se instala ejecutando el comando pip install pyserial.

Configuración básica en Arduino

El primer paso para conectar Arduino con Python es configurar el sketch de Arduino. Este código, escrito en el IDE de Arduino, permitirá que la placa reciba y procese los datos que Python le envíe. Por ejemplo, el siguiente programa permite encender y apagar un LED en el pin 13 según el dato recibido:

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

void loop() {
  if (Serial.available() > 0) {
    char data = Serial.read();
    if (data == '1') {
      digitalWrite(13, HIGH);
    } else if (data == '0') {
      digitalWrite(13, LOW);
    }
  }
}

Este código establece una comunicación por el puerto serie a 9600 baudios y espera recibir los caracteres ‘1’ o ‘0’ para encender o apagar el LED integrado.

Conexión con Python

Una vez que el Arduino esté configurado, es momento de escribir un programa en Python que establezca la conexión con la placa y envíe comandos. A continuación, un ejemplo sencillo utilizando la biblioteca PySerial:

import serial
import time

# Configuración del puerto serial
arduino = serial.Serial('COM3', 9600)
time.sleep(2)  # Espera para estabilizar la conexión

# Enviar comandos
arduino.write(b'1')
print("LED encendido")
time.sleep(2)
arduino.write(b'0')
print("LED apagado")

arduino.close()

Este script abre el puerto serie, envía el comando ‘1’ para encender el LED, espera dos segundos y luego envía ‘0’ para apagarlo. Recuerda ajustar el puerto COM según el sistema operativo y la conexión de tu placa.

Identificación del puerto serie

Para que Arduino y Python se comuniquen correctamente, es crucial identificar el puerto serie donde está conectado el Arduino. En Windows, puedes verificarlo desde el Administrador de dispositivos. En sistemas Linux o macOS, usa el comando ls /dev/ en la terminal para encontrar algo similar a /dev/ttyUSB0.

Ejemplo avanzado: Lectura de sensores

Otro uso práctico de la comunicación entre Arduino y Python es la lectura de datos desde sensores conectados a Arduino y su visualización en tiempo real en Python. Por ejemplo, para un sensor de temperatura:

Código en Arduino:

int sensorPin = A0;

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

void loop() {
  int sensorValue = analogRead(sensorPin);
  Serial.println(sensorValue);
  delay(1000);
}

Código en Python:

import serial
import time

arduino = serial.Serial('COM3', 9600)
time.sleep(2)

while True:
  sensor_data = arduino.readline().decode('utf-8').strip()
  print(f"Valor del sensor: {sensor_data}")

Este ejemplo recibe valores del sensor en Arduino y los imprime en la consola de Python, permitiendo monitorizar los datos en tiempo real.

Ampliando posibilidades con visión artificial

Si deseas llevar tu proyecto al siguiente nivel, puedes integrar Python y Arduino para tareas de visión artificial utilizando OpenCV. Por ejemplo, un sistema que detecte si alguien lleva mascarilla y encienda luces LED de colores según el resultado:

  • Un LED azul indica que la persona lleva mascarilla.
  • Un LED rojo se enciende si no detecta mascarilla.

Utilizando Mediapipe y OpenCV, podrías entrenar un modelo para detección facial y enviar los resultados a Arduino para accionar los LEDs según corresponda.

La unión de Arduino y Python desbloquea infinidad de posibilidades para proyectos creativos y educativos. Desde tareas simples, como controlar LEDs, hasta aplicaciones avanzadas con sensores y visión artificial, estas herramientas ofrecen una combinación perfecta para maximizar tu aprendizaje en electrónica y programación.


Sé el primero en comentar

Deja tu comentario

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

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.