
Věděli jste, že desku Arduino můžete ovládat pouze pomocí Pythonu? Přestože je rodný jazyk Arduina založen na C++, existuje poměrně přístupný způsob, jak programovat a komunikovat své projekty Arduino pomocí Pythonu, a to díky specializovaným knihovnám, jako je PySerial. Tato kombinace obou světů je nejen zajímavá, ale také velmi výkonná, zejména pro ty, kteří chtějí integrovat elektroniku se zpracováním dat, počítačovým viděním nebo dokonce umělou inteligencí. Pokud se chcete tomuto tématu věnovat hlouběji, můžete se obrátit na naše praktický průvodce.
V tomto článku vysvětlíme, co potřebujete, jak připojit Arduino k Pythonu, a ukážeme vám několik praktických příkladů. které můžete postupovat krok za krokem a začít ovládat svou desku pomocí skriptů Python. To vše je vysvětleno srozumitelně a strukturou navrženou jak pro začátečníky, tak pro ty, kteří již mají nějaké znalosti v oblasti programování a elektroniky.
Lze Arduino naprogramovat přímo pomocí Pythonu?
Ano, i když s nuancemi. Arduino je nativně naprogramováno pomocí vlastního vývojového prostředí (Arduino IDE), které používá jazyk založený na C++. Však, díky použití knihoven jako PySerial a dalších alternativ, jako je Snek nebo MicroPython (i když s hardwarovými omezeními), je možné navázat komunikaci mezi Pythonem a Arduinem pro ovládání desky nebo interakci s jejími periferiemi. Pro více informací o MicroPythonu si můžete přečíst náš článek o Co je nového v MicroPythonu.
Nejběžnějším způsobem odesílání dat do Arduina je použití Pythonu. přes sériový port a deska je interpretuje k provádění fyzických akcí (jako je rozsvícení LED nebo čtení senzorů). Můžeme to udělat i naopak: nechat Arduino poslat data do Pythonu a nechat je zobrazit, zpracovat nebo uložit.
Nástroje potřebné pro začátek
Než si ušpiníme ruce kabely a kódem, budete si muset připravit několik základních věcí:
- Deska Arduino: Postačí jakýkoli model, i když nejběžnější jsou Arduino UNO nebo Nano.
- Kabel USB pro připojení Arduina k počítači.
- Python nainstalovaný na vašem počítači. Můžete to získat od oficiální stránky Pythonu.
- Instalace PySerial, knihovna, která umožňuje sériovou komunikaci mezi Arduinem a Pythonem. Můžete jej nainstalovat spuštěním v terminálu:
pip install pyserial
Klíčovým prvkem je PySerial což nám umožňuje odesílat příkazy z Pythonu a přijímat odpovědi z Arduina, jako bychom chatovali s elektronickým robotem.
Krok 1: Připojte Arduino k Pythonu přes sériový port
Jednou z nejběžnějších forem interakce je odesílání dat ze skriptu Python do Arduina, aby se rozsvítila nebo zhasla LED.. Podívejme se, jak to udělat krok za krokem.
1. Nahrajte základní program do Arduina
Tento kód je načten z Arduino IDE a bude zodpovědný za ovládání LED integrované na pinu 13 v závislosti na datech přijatých přes sériový port:
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);
}
}
}
Tato skica interpretuje data přijatá sériovým portem. Pokud obdrží '1', rozsvítí LED; Pokud obdrží '0', vypne se. Další příklady projektů Arduino najdete v našem článku na Jak vytvořit šachovou sadu pomocí Arduina.
2. Odešlete příkazy z Pythonu
Jakmile je kód načten na desku, vytvoříme skript Python, který je zodpovědný za odesílání příkazů:
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()
Vezměte prosím na vědomí, že musíte nahradit „COM3“ odpovídajícím portem na vašem operačním systému. Ve Windows je to obvykle COM3 nebo COM4; na Linuxu něco jako /dev/ttyUSB0.
Čtení dat ze senzorů připojených k Arduinu
Kromě odesílání instrukcí můžeme pomocí Pythonu číst data odesílaná Arduinemnapříklad z teplotního čidla. Pro návod, jak používat různé senzory, doporučujeme Tento článek o senzoru DPS310.
1. Arduino kód pro čtení senzoru
Následující rutina načte analogovou hodnotu (jako je výstup senzoru LM35) a odešle ji přes sériový port:
int sensorPin = A0;
void setup() {
Serial.begin(9600);
}
void loop() {
int sensorValue = analogRead(sensorPin);
Serial.println(sensorValue);
delay(1000);
}
2. Python skript pro čtení hodnot
Z Pythonu můžeme tato data číst a zobrazovat je na obrazovce:
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)
Tato jednoduchá smyčka nám umožňuje zobrazovat naměřené hodnoty přímo na našem terminálu.
Odesílání dat z Pythonu do Arduina s praktickými příklady
Podívejme se na další příklad, kdy odešleme číslo od 1 do 9 z Pythonu a Arduino zabliká LED tolikrát:
Skica v Arduinu
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);
}
}
}
}
Python skript pro odeslání hodnoty
import serial
import time
arduino = serial.Serial("COM4", 9600)
time.sleep(2)
arduino.write(b'5') # Parpadea 5 veces
arduino.close()
Tento typ interakce je ideální pro vytváření uživatelských rozhraní v Pythonu.a že intuitivně ovládají fyzická zařízení. V této souvislosti můžete také prozkoumat více o Jak používat elektronické displeje s Arduinem.
Pokročilý příklad: detekce pomocí počítačového vidění
Pokročilejší projekt, který demonstruje sílu kombinace Arduina s Pythonem, je použití Počítačové vidění s OpenCV a MediaPipe zjistit, zda má osoba masku, a na základě detekce ovládat LED diody na Arduinu.
Arduino: ovládání dvou LED
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 s OpenCV a MediaPipe
V kódu Python se analyzuje obraz kamery, detekuje obličeje a v závislosti na tom, zda mají masku nebo ne, je odeslána odpovídající hodnota:
# fragmento clave
if LABELS] == "Con_mascarilla":
ser.write(b'P')
else:
ser.write(b'N')
Tento příklad ukazuje, jak výkonná je kombinace Pythonu a Arduina., protože umožňuje propojení fyzického světa se sofistikovanými algoritmy, jako je rozpoznávání obličeje nebo detekce objektů.
Programování Arduina s Pythonem je zcela možné, přístupné a dokonce zábavné. Od osvětlení LED až po implementaci komplexních systémů se senzory a počítačovým viděním, možnosti jsou nekonečné. Python funguje jako výkonné rozhraní, které vám umožní posunout vaše Arduino projekty na další úroveň. Pokud hledáte praktický způsob, jak uplatnit své programátorské dovednosti nebo dát vašim deskám Arduino druhý život, toto kombo je rozhodně tou správnou cestou.