¿Sabías que puedes controlar una placa Arduino usando simplemente Python? Aunque el lenguaje nativo de Arduino está basado en C++, existe una forma bastante accesible de programar y comunicar tus proyectos Arduino usando Python, gracias al uso de bibliotecas especializadas como PySerial. Esta combinación entre ambos mundos resulta no solo interesante, sino también muy potente, en especial para quienes buscan integrar electrónica con procesamiento de datos, visión artificial o incluso inteligencia artificial. Si deseas profundizar más en este tema, puedes consultar nuestra guía práctica.
En este artículo te explicamos qué necesitas, cómo realizar la conexión entre Arduino y Python, y te mostramos varios ejemplos prácticos que puedes seguir paso a paso para comenzar a controlar tu placa usando scripts en Python. Todo ello explicado de forma clara y con una estructura pensada tanto para principiantes como para quienes ya tienen cierta base en programación y electrónica.
¿Se puede programar Arduino directamente con Python?
Sí, aunque con matices. De forma nativa, Arduino se programa mediante su propio entorno de desarrollo (Arduino IDE), que emplea un lenguaje basado en C++. Sin embargo, gracias al uso de bibliotecas como PySerial y otras alternativas como Snek o MicroPython (aunque con limitaciones de hardware), es posible establecer una comunicación entre Python y Arduino para controlar la placa o interactuar con sus periféricos. Para más información sobre MicroPython, puedes leer nuestro artículo sobre las novedades de MicroPython.
Lo más habitual es usar Python para enviar datos a Arduino a través del puerto serie, y que la placa los interprete para ejecutar acciones físicas (como encender LEDs o leer sensores). También podemos hacer lo contrario: que Arduino envíe datos a Python y que este los muestre, procese o almacene.
Herramientas necesarias para empezar
Antes de ensuciarnos las manos con cables y código, necesitas tener listos algunos elementos básicos:
- Una placa Arduino: cualquier modelo sirve, aunque los más comunes son el Arduino UNO o el Nano.
- Cable USB para conectar tu Arduino al ordenador.
- Python instalado en tu equipo. Puedes obtenerlo desde la web oficial de Python.
- Instalación de PySerial, la biblioteca que permite la comunicación serie entre Arduino y Python. Puedes instalarla ejecutando en la terminal:
pip install pyserial
PySerial es la pieza clave que nos permite enviar comandos desde Python y recibir respuestas de Arduino como si estuviéramos chateando con un robot electrónico.
Primer paso: comunicar Arduino con Python a través del puerto serie
Una de las formas más comunes de interacción consiste en enviar datos desde un script en Python al Arduino para encender o apagar un LED. Veamos cómo hacerlo paso a paso.
1. Cargar un programa básico en Arduino
Este código se carga desde el Arduino IDE y estará encargado de controlar el LED integrado en el pin 13, dependiendo del dato recibido vía puerto serie:
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 sketch interpreta los datos recibidos por el puerto serie. Si recibe un ‘1’, enciende el LED; si recibe un ‘0’, lo apaga. Para más ejemplos de proyectos con Arduino, visita nuestro artículo sobre cómo crear un ajedrez con Arduino.
2. Enviar los comandos desde Python
Una vez que el código esté cargado en la placa, creamos un script en Python que se encargue de enviar los comandos:
import serial
import time
# Inicializa la conexión
arduino = serial.Serial('COM3', 9600)
time.sleep(2)
# Enciende el LED
arduino.write(b'1')
print("LED encendido")
time.sleep(2)
# Apaga el LED
arduino.write(b'0')
print("LED apagado")
# Cierra la conexión
arduino.close()
Ten en cuenta que debes sustituir ‘COM3’ por el puerto correspondiente en tu sistema operativo. En Windows suele ser COM3 o COM4; en Linux, algo como /dev/ttyUSB0.
Leer datos desde sensores conectados a Arduino
Además de enviar instrucciones, podemos usar Python para leer datos enviados por Arduino, por ejemplo desde un sensor de temperatura. Para una guía sobre cómo usar diferentes sensores, te recomendamos este artículo sobre el sensor DPS310.
1. Código en Arduino para leer un sensor
La siguiente rutina lee un valor analógico (como la salida de un sensor LM35) y lo envía a través del puerto serie:
int sensorPin = A0;
void setup() {
Serial.begin(9600);
}
void loop() {
int sensorValue = analogRead(sensorPin);
Serial.println(sensorValue);
delay(1000);
}
2. Script en Python para leer los valores
Desde Python podemos leer esos datos y mostrarlos por pantalla:
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}")
time.sleep(1)
Este simple bucle nos permite visualizar los valores medidos directamente en nuestro terminal.
Enviar datos desde Python a Arduino con ejemplos prácticos
Veamos otro ejemplo en el que enviamos un número del 1 al 9 desde Python, y Arduino hace parpadear el LED ese número de veces:
Sketch en Arduino
const int pinLED = 13;
void setup() {
Serial.begin(9600);
pinMode(pinLED, OUTPUT);
}
void loop() {
if (Serial.available() > 0) {
char option = Serial.read();
if (option >= '1' && option <= '9') {
option -= '0';
for (int i = 0; i < option; i++) {
digitalWrite(pinLED, HIGH);
delay(100);
digitalWrite(pinLED, LOW);
delay(200);
}
}
}
}
Script Python para enviar el valor
import serial
import time
arduino = serial.Serial("COM4", 9600)
time.sleep(2)
arduino.write(b'5') # Parpadea 5 veces
arduino.close()
Este tipo de interacción es ideal para crear interfaces de usuario en Python, y que estas controlen de forma intuitiva dispositivos físicos. En este contexto, también puedes explorar más sobre cómo usar pantallas electrónicas con Arduino.
Ejemplo avanzado: detección con visión artificial
Un proyecto más avanzado que demuestra el poder de combinar Arduino con Python es usar visión artificial con OpenCV y MediaPipe para detectar si una persona lleva mascarilla, y controlar LEDs en Arduino en función de la detección.
Arduino: control de dos LEDs
int led1 = 50;
int led2 = 51;
int option;
void setup() {
Serial.begin(9600);
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
}
void loop() {
if (Serial.available() > 0){
option = Serial.read();
if(option == 'P'){
digitalWrite(led1, HIGH);
digitalWrite(led2, LOW);
}
if(option == 'N'){
digitalWrite(led1, LOW);
digitalWrite(led2, HIGH);
}
}
}
Python con OpenCV y MediaPipe
En el código Python se analiza la imagen de la cámara, detectando rostros, y según se determine si llevan o no mascarilla, se envía el valor correspondiente:
# fragmento clave
if LABELS] == "Con_mascarilla":
ser.write(b'P')
else:
ser.write(b'N')
Este ejemplo demuestra lo potente que es la combinación de Python y Arduino, ya que permite unir el mundo físico con algoritmos sofisticados como el reconocimiento facial o la detección de objetos.
Programar Arduino con Python es completamente posible, accesible e incluso divertido. Desde encender un LED hasta implementar sistemas complejos con sensores y visión por computadora, las posibilidades son enormes. Python actúa como una interfaz poderosa que permite llevar tus proyectos de Arduino a otro nivel. Si estás buscando una forma práctica de aplicar tus conocimientos de programación o darles una segunda vida a tus placas Arduino, esta combinación es sin duda el camino a seguir.