Python – sériová komunikácia s Arduinom
Poznámka
Sériová komunikácia (UART) umožňuje Pythonu na Raspberry Pi/PC vymieňať si dáta s Arduinom cez USB kábel – ideálne na kombinovanie senzorov z Arduina s výpočtami alebo zobrazením v Pythone.
Knižnica pyserial
pip3 install pyserial # inštalácia knižniceNájdenie sériového portu
ls /dev/tty* # Linux - hľadaj /dev/ttyUSB0 alebo /dev/ttyACM0Tip
Port sa môže meniť podľa poradia pripojenia USB zariadení. Ak nie si istý, odpoj Arduino, spusti príkaz znova, pripoj ho a porovnaj rozdiel v zozname.
Strana Arduino – odosielanie dát
void setup() {
Serial.begin(9600); // rovnaká rýchlosť (baud rate) na obidvoch stranách
}
void loop() {
int hodnota = analogRead(A0);
Serial.println(hodnota); // odošli hodnotu a nový riadok
delay(500);
}Strana Python – čítanie dát
import serial
import time
port = serial.Serial('/dev/ttyACM0', 9600, timeout=1)
time.sleep(2) # počkaj, kým sa Arduino po pripojení reštartuje
while True:
riadok = port.readline().decode('utf-8').strip()
if riadok:
print("Prijaté:", riadok)Upozornenie
Rýchlosť komunikácie (baud rate, napr. 9600) musí byť rovnaká na strane Arduina aj Pythonu – inak budú prijaté dáta nezmyselné znaky.
Odosielanie dát z Pythonu do Arduina
port.write(b'1') # odošli jeden byte (znak '1')void loop() {
if (Serial.available() > 0) {
char prikaz = Serial.read();
if (prikaz == '1') {
digitalWrite(LED_BUILTIN, HIGH);
}
}
}Mini-úlohy – sériová komunikácia
- Pripoj Arduino a zisti jeho sériový port príkazom
ls /dev/tty*. - Naprogramuj Arduino, aby každú sekundu odoslalo hodnotu z
analogRead(A0). - V Pythone prijaté hodnoty vypisuj a ukladaj do zoznamu (list).
- Rozšír projekt: keď Python zistí hodnotu nad určitý prah, odošle Arduinu príkaz na rozsvietenie LED.
Cheat sheet – rýchla referencia
import serial
port = serial.Serial('/dev/ttyACM0', 9600, timeout=1) # otvor port
port.readline() # prečítaj riadok (bytes)
port.write(b'text') # odošli dáta (bytes)
port.close() # zatvor port po skončeníPostup sa ukladá iba v tomto prehliadači.