
Sabies que pots controlar una placa Arduino usant simplement Python? Encara que el llenguatge nadiu d'Arduino està basat en C++, hi ha una manera força accessible de programar i comunicar els teus projectes Arduino usant Python, grà cies a l'ús de biblioteques especialitzades com PySerial. Aquesta combinació entre tots dos mons resulta no només interessant, sinó també molt potent, especialment per als que busquen integrar electrònica amb processament de dades, visió artificial o fins i tot intel·ligència artificial. Si vols aprofundir més en aquest tema, pots consultar la nostra guia prà ctica.
En aquest article t'expliquem què necessites, com fer la connexió entre Arduino i Python, i et mostrem diversos exemples prà ctics que pots seguir pas a pas per començar a controlar la teva placa usant scripts a Python. Tot plegat explicat de forma clara i amb una estructura pensada tant per a principiants com per als qui ja tenen certa base en programació i electrònica.
Es pot programar Arduino directament amb Python?
SÃ, encara que amb matisos. De forma nativa, Arduino es programa mitjançant el seu propi entorn de desenvolupament (Arduino IDE), que utilitza un llenguatge basat en C++. grà cies a l'ús de biblioteques com PySerial i altres alternatives com Snek o MicroPython (encara que amb limitacions de maquinari), és possible establir una comunicació entre Python i Arduino per controlar la placa o interactuar amb els seus perifèrics. Per a més informació sobre MicroPython, pots llegir el nostre article sobre les novetats de MicroPython.
El més habitual és fer servir Python per enviar dades a Arduino a través del port sèrie, i que la placa els interpreti per executar accions fÃsiques (com encendre LEDs o llegir sensors). També podem fer el contrari: que Arduino enviï dades a Python i que aquest les mostri, processi o emmagatzemi.
Eines necessà ries per començar
Abans d'embrutar-nos les mans amb cables i codi, necessites tenir llestos alguns elements bà sics:
- Una placa Arduino: qualsevol model serveix, encara que els més comuns són el Arduino UNO o el Nano.
- Cable USB per connectar el teu Arduino a l'ordinador.
- Python instal·lat al teu equip. Pots obtenir-ho des de la web oficial de Python.
- Instal·lació de PySerial, la biblioteca que permet la comunicació sèrie entre Arduino i Python. Pots instal·lar-la executant a la terminal:
pip install pyserial
PySerial és la peça clau que ens permet enviar ordres des de Python i rebre respostes d'Arduino com si estiguéssim xatejant amb un robot electrònic.
Primer pas: comunicar Arduino amb Python a través del port sèrie
Una de les formes més comunes d'interacció consisteix a enviar dades des d'un script a Python a l'Arduino per encendre o apagar un LED. Vegem com fer-ho pas a pas.
1. Carregar un programa bà sic a Arduino
Aquest codi es carrega des de l'Arduino IDE i estarà encarregat de controlar el LED integrat al pin 13, depenent de la dada rebuda via port sèrie:
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);
}
}
}
Aquest sketch interpreta les dades rebudes pel port sèrie. Si rebeu un '1', encén el LED; si rep un '0', ho apaga. Per a més exemples de projectes amb Arduino, visita el nostre article sobre com crear uns escacs amb Arduino.
2. Enviar les ordres des de Python
Quan el codi estigui carregat a la placa, creem un script a Python que s'encarregueu d'enviar les ordres:
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()
Tingues en compte que has de substituir 'COM3' pel port corresponent al vostre sistema operatiu. Al Windows sol ser COM3 o COM4; a Linux, com /dev/ttyUSB0.
Llegir dades des de sensors connectats a Arduino
A més d'enviar instruccions, podem fer servir Python per llegir dades enviades per Arduino, per exemple des d'un sensor de temperatura. Per a una guia sobre com utilitzar diferents sensors, us recomanem aquest article sobre el sensor DPS310.
1. Codi a Arduino per llegir un sensor
La rutina següent llegeix un valor analògic (com la sortida d'un sensor LM35) i l'envia a través del port sèrie:
int sensorPin = A0;
void setup() {
Serial.begin(9600);
}
void loop() {
int sensorValue = analogRead(sensorPin);
Serial.println(sensorValue);
delay(1000);
}
2. Script a Python per llegir els valors
Des de Python podem llegir aquestes dades i mostrar-les per 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)
Aquest simple bucle ens permet visualitzar els valors mesurats directament al nostre terminal.
Enviar dades des de Python a Arduino amb exemples prà ctics
Vegem un altre exemple en què enviem un número de l'1 al 9 des de Python, i Arduino fa parpellejar el LED aquest nombre de vegades:
Sketch a 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 per enviar el valor
import serial
import time
arduino = serial.Serial("COM4", 9600)
time.sleep(2)
arduino.write(b'5') # Parpadea 5 veces
arduino.close()
Aquest tipus d'interacció és ideal per crear interfÃcies d'usuari a Python, i que aquestes controlin de forma intuïtiva dispositius fÃsics. En aquest context, també podeu explorar més sobre com utilitzar pantalles electròniques amb Arduino.
Exemple avançat: detecció amb visió artificial
Un projecte més avançat que demostra el poder de combinar Arduino amb Python és fer servir visió artificial amb OpenCV i MediaPipe per detectar si una persona porta mascareta, i controlar LEDs a Arduino en funció de la detecció.
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 amb OpenCV i MediaPipe
Al codi Python s'analitza la imatge de la cà mera, detectant cares, i segons es determini si porten o no mascareta, s'envia el valor corresponent:
# fragmento clave
if LABELS] == "Con_mascarilla":
ser.write(b'P')
else:
ser.write(b'N')
Aquest exemple demostra com pot ser de potent la combinació de Python i Arduino, ja que permet unir el món fÃsic amb algoritmes sofisticats com ara el reconeixement facial o la detecció d'objectes.
Programar Arduino amb Python és completament possible, accessible i fins i tot divertit. Des d'encendre un LED fins a implementar sistemes complexos amb sensors i visió per ordinador, les possibilitats són enormes. Python actua com una interfÃcie poderosa que permet portar els teus projectes d'Arduino a un altre nivell. Si cerques una forma prà ctica d'aplicar els teus coneixements de programació o donar-los una segona vida a les plaques Arduino, aquesta combinació és sens dubte el camà a seguir.