Combinar Arduino con Python es una de las integraciones más poderosas en el mundo maker. Arduino es insuperable para interactuar con el mundo físico —leer sensores, controlar motores, encender LEDs— pero tiene limitaciones de memoria y procesamiento. Python, en cambio, es perfecto para análisis de datos, machine learning y automatización avanzada.
¿Por qué usar Arduino con Python?
La combinación permite aprovechar lo mejor de ambos mundos: la capacidad de Arduino para controlar hardware en tiempo real, y el ecosistema de Python para procesamiento de datos e interfaces gráficas.
- Análisis de datos de sensores en tiempo real con pandas y matplotlib
- Integración con librerías de machine learning como scikit-learn
- Interfaces gráficas con tkinter o PyQt
- Automatización de sistemas complejos
- Control remoto de dispositivos Arduino
Herramientas Necesarias
- Placa Arduino Uno R3 con cable USB
- Python 3.x instalado en tu computador
- Librería PySerial:
pip install pyserial - Arduino IDE para cargar el sketch inicial
PySerial: La Librería Clave
PySerial es el puente entre Python y Arduino. Instálala con un simple comando:
pip install pyserial
Una vez instalada, Python puede leer y escribir datos al puerto serie USB donde está conectado tu Arduino.
Proyecto Real: Controlar un LED desde Python
Paso 1: Código en Arduino (C++)
Carga este sketch en tu Arduino Uno. Quedará esperando comandos por el puerto serie:
const int LED_PIN = 13;
void setup() {
Serial.begin(9600);
pinMode(LED_PIN, OUTPUT);
}
void loop() {
if (Serial.available() > 0) {
char cmd = Serial.read();
if (cmd == '1') digitalWrite(LED_PIN, HIGH);
if (cmd == '0') digitalWrite(LED_PIN, LOW);
}
}
Paso 2: Código en Python
Desde tu computador, este script de Python envía comandos al Arduino:
import serial
import time
# Windows: 'COM3' | Linux/Mac: '/dev/ttyUSB0' o '/dev/tty.usbmodem*'
arduino = serial.Serial('COM3', 9600, timeout=1)
time.sleep(2) # Espera a que Arduino inicie
print("Encendiendo LED...")
arduino.write(b'1')
time.sleep(2)
print("Apagando LED...")
arduino.write(b'0')
arduino.close()
Leer Datos de Sensores con Python
El flujo inverso también funciona: Arduino envía datos de sensores y Python los procesa. Por ejemplo, leer el sensor DHT11:
# Arduino envía: Serial.println(temperature);
# Python lee:
while True:
if arduino.in_waiting > 0:
data = arduino.readline().decode('utf-8').strip()
print(f"Temperatura: {data}°C")
Aplicaciones Avanzadas
- Dashboard en tiempo real: Grafica temperatura del DHT11 con matplotlib
- Control por gestos: Usa la cámara del PC con OpenCV para controlar Arduino
- Automatización del hogar: Scripts Python que reaccionan a sensores de tu Arduino
- Data logging: Guarda lecturas de sensores en CSV o base de datos SQLite
Troubleshooting Común
- Puerto no encontrado: Verifica el nombre en Arduino IDE → Herramientas → Puerto
- Sin datos: Asegúrate que el baudrate en Python (9600) coincide con el del Arduino
- Caracteres extraños: Agrega
.strip()al leer la línea serie
Consigue tu Arduino Uno R3 SMD con cable USB en Especificar.cl. Envíos a todo Chile con Chilexpress y Starken.