Ali ste vedeli, da lahko krmilite ploščo Arduino samo s Pythonom? Čeprav Arduinov materni jezik temelji na C++, obstaja dokaj dostopen način za programiranje in komuniciranje vaših Arduino projektov z uporabo Pythona, zahvaljujoč specializiranim knjižnicam, kot je PySerial. Ta kombinacija obeh svetov ni le zanimiva, ampak tudi zelo močna, zlasti za tiste, ki želijo integrirati elektroniko z obdelavo podatkov, računalniškim vidom ali celo umetno inteligenco. Če se želite poglobiti v to temo, se lahko posvetujete z našimi praktični vodnik.
V tem članku razložimo, kaj potrebujete, kako povezati Arduino s Pythonom in vam pokažemo več praktičnih primerov. ki jim lahko sledite korak za korakom, da začnete nadzorovati svojo ploščo s skripti Python. Vse to je razloženo jasno in s strukturo, zasnovano tako za začetnike kot za tiste, ki že imajo nekaj izkušenj s programiranjem in elektroniko.
Ali je mogoče Arduino programirati neposredno s Pythonom?
Da, čeprav z odtenki. Arduino je izvorno programiran z lastnim razvojnim okoljem (Arduino IDE), ki uporablja jezik, ki temelji na C++. vendar zahvaljujoč uporabi knjižnic, kot je PySerial in druge alternative, kot sta Snek ali MicroPython (čeprav z omejitvami strojne opreme), je možno vzpostaviti komunikacijo med Pythonom in Arduinom za nadzor plošče ali interakcijo z njenimi zunanjimi napravami. Za več informacij o MicroPythonu si lahko preberete naš članek o Kaj je novega v MicroPythonu.
Najpogostejši način pošiljanja podatkov v Arduino je uporaba Pythona. prek serijskih vrat, plošča pa jih interpretira za izvajanje fizičnih dejanj (kot je vklop LED ali senzorjev za branje). Lahko naredimo tudi nasprotno: Arduino naj pošlje podatke v Python in naj jih prikaže, obdela ali shrani.
Orodja, potrebna za začetek
Preden si umažemo roke s kabli in kodo, boste morali pripraviti nekaj osnovnih predmetov:
- Tabla Arduino: Primeren bo vsak model, čeprav so najpogostejši modeli Arduino UNO ali Nano.
- Kabel USB za povezavo Arduina z računalnikom.
- Python nameščen na vašem računalniku. Lahko ga dobite pri uradno spletno mesto Python.
- Namestitev PySerial, knjižnica, ki omogoča serijsko komunikacijo med Arduinom in Pythonom. Namestite ga lahko tako, da v terminalu zaženete:
pip install pyserial
PySerial je ključni del ki nam omogoča pošiljanje ukazov iz Pythona in prejemanje odgovorov iz Arduina, kot da bi klepetali z elektronskim robotom.
1. korak: povežite Arduino s Pythonom prek serijskih vrat
Ena najpogostejših oblik interakcije je pošiljanje podatkov iz skripta Python v Arduino za vklop ali izklop LED.. Poglejmo, kako to narediti korak za korakom.
1. Naložite osnovni program v Arduino
Ta koda se naloži iz Arduino IDE in bo odgovorna za krmiljenje LED, ki je integrirana na pin 13, odvisno od podatkov, prejetih prek serijskih vrat:
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);
}
}
}
Ta skica interpretira podatke, ki jih prejmejo serijska vrata. Če prejme '1', vklopi LED; Če prejme '0', ga izklopi. Za več primerov projektov Arduino obiščite naš članek o Kako ustvariti šahovski komplet z Arduinom.
2. Pošljite ukaze iz Pythona
Ko je koda naložena na ploščo, ustvarimo skript Python, ki je odgovoren za pošiljanje ukazov:
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()
Upoštevajte, da morate 'COM3' zamenjati z ustreznimi vrati na vašem operacijskem sistemu. V sistemu Windows je običajno COM3 ali COM4; v Linuxu nekaj podobnega /dev/ttyUSB0.
Branje podatkov s senzorjev, povezanih z Arduinom
Poleg pošiljanja navodil lahko Python uporabljamo za branje podatkov, ki jih pošilja Arduino, na primer iz temperaturnega senzorja. Za vodnik o uporabi različnih senzorjev priporočamo Ta članek o senzorju DPS310.
1. Koda Arduino za branje senzorja
Naslednja rutina prebere analogno vrednost (kot je izhod senzorja LM35) in jo pošlje skozi serijska vrata:
int sensorPin = A0;
void setup() {
Serial.begin(9600);
}
void loop() {
int sensorValue = analogRead(sensorPin);
Serial.println(sensorValue);
delay(1000);
}
2. Skript Python za branje vrednosti
Iz Pythona lahko preberemo te podatke in jih prikažemo na zaslonu:
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)
Ta preprosta zanka nam omogoča prikaz izmerjenih vrednosti neposredno na našem terminalu.
Pošiljanje podatkov iz Pythona v Arduino s praktičnimi primeri
Poglejmo še en primer, kjer iz Pythona pošljemo številko od 1 do 9, Arduino pa utripne LED tolikokrat:
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);
}
}
}
}
Skript Python za pošiljanje vrednosti
import serial
import time
arduino = serial.Serial("COM4", 9600)
time.sleep(2)
arduino.write(b'5') # Parpadea 5 veces
arduino.close()
Ta vrsta interakcije je idealna za ustvarjanje uporabniških vmesnikov v Pythonu., in da intuitivno nadzorujejo fizične naprave. V tem kontekstu lahko raziščete tudi več o Kako uporabljati elektronske zaslone z Arduinom.
Napreden primer: zaznavanje z računalniškim vidom
Uporabite naprednejši projekt, ki prikazuje moč združevanja Arduina s Pythonom Računalniški vid z OpenCV in MediaPipe za zaznavanje, ali oseba nosi masko, in krmiljenje LED na Arduinu na podlagi zaznave.
Arduino: krmiljenje dveh 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 z OpenCV in MediaPipe
V kodi Python se slika kamere analizira, zazna obraze in glede na to, ali nosijo masko ali ne, se pošlje ustrezna vrednost:
# fragmento clave
if LABELS] == "Con_mascarilla":
ser.write(b'P')
else:
ser.write(b'N')
Ta primer prikazuje, kako močna je kombinacija Pythona in Arduina., saj omogoča povezavo fizičnega sveta s sofisticiranimi algoritmi, kot sta prepoznavanje obraza ali zaznavanje predmetov.
Programiranje Arduina s Pythonom je povsem možno, dostopno in celo zabavno. Možnosti so neskončne, od osvetlitve LED do implementacije kompleksnih sistemov s senzorji in računalniškim vidom. Python deluje kot zmogljiv vmesnik, ki vam omogoča, da svoje projekte Arduino dvignete na naslednjo raven. Če iščete praktičen način za uporabo svojih veščin programiranja ali dajte svojim ploščam Arduino drugo življenje, je ta kombinacija zagotovo prava pot.