Знаете ли, че можете да управлявате дъска Arduino само с Python? Въпреки че родният език на Arduino е базиран на C++, има доста достъпен начин да програмирате и комуникирате вашите Arduino проекти с помощта на Python, благодарение на специализирани библиотеки като PySerial. Тази комбинация от два свята е не само интересна, но и много мощна, особено за онези, които искат да интегрират електрониката с обработка на данни, компютърно зрение или дори изкуствен интелект. Ако искате да се задълбочите в тази тема, можете да се консултирате с нашия практическо ръководство.
В тази статия обясняваме от какво имате нужда, как да свържете Arduino към Python и ви показваме няколко практически примера. които можете да следвате стъпка по стъпка, за да започнете да контролирате вашата дъска с помощта на скриптове на Python. Всичко това е обяснено ясно и със структура, предназначена както за начинаещи, така и за тези, които вече имат известен опит в програмирането и електрониката.
Може ли Arduino да се програмира директно с Python?
Да, макар и с нюанси. Arduino се програмира естествено с помощта на собствена среда за разработка (Arduino IDE), която използва базиран на C++ език. обаче благодарение на използването на библиотеки като PySerial и други алтернативи като Snek или MicroPython (макар и с хардуерни ограничения), е възможно да се установи комуникация между Python и Arduino за управление на платката или взаимодействие с нейните периферни устройства. За повече информация относно MicroPython можете да прочетете нашата статия за Какво е новото в MicroPython.
Най-често срещаният начин за изпращане на данни към Arduino е използването на Python. през серийния порт и платката ги интерпретира за извършване на физически действия (като включване на светодиоди или сензори за четене). Можем да направим и обратното: да накараме Arduino да изпраща данни на Python и той да ги показва, обработва или съхранява.
Необходими инструменти, за да започнете
Преди да си изцапаме ръцете с кабели и код, ще трябва да подготвите няколко основни елемента:
- Дъска Arduino: Всеки модел ще свърши работа, въпреки че най-често срещаните са Arduino UNO или Нано.
- Кабел USB за да свържете вашия Arduino към вашия компютър.
- Python е инсталиран на вашия компютър. Можете да го получите от официалния уебсайт на Python.
- Инсталиране на PySerial, библиотеката, която позволява серийна комуникация между Arduino и Python. Можете да го инсталирате, като стартирате в терминала:
pip install pyserial
PySerial е ключовата част което ни позволява да изпращаме команди от Python и да получаваме отговори от Arduino, сякаш разговаряме с електронен робот.
Стъпка 1: Свържете Arduino към Python чрез сериен порт
Една от най-често срещаните форми на взаимодействие е да изпратите данни от скрипт на Python към Arduino, за да включите или изключите светодиод.. Нека видим как да го направим стъпка по стъпка.
1. Качете основна програма в Arduino
Този код се зарежда от Arduino IDE и ще отговаря за управлението на светодиода, интегриран на пин 13, в зависимост от данните, получени през сериен порт:
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);
}
}
}
Тази скица интерпретира данните, получени от серийния порт. Ако получи '1', той включва светодиода; Ако получи '0', той го изключва. За повече примери за проекти на Arduino, посетете нашата статия за Как да създадете комплект за шах с Arduino.
2. Изпращайте команди от Python
След като кодът се зареди на дъската, ние създаваме Python скрипт, който отговаря за изпращането на командите:
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()
Моля, обърнете внимание, че трябва да замените „COM3“ със съответния порт на вашата операционна система. В Windows обикновено е COM3 или COM4; на Linux, нещо като /dev/ttyUSB0.
Четене на данни от сензори, свързани към Arduino
В допълнение към изпращането на инструкции, можем да използваме Python за четене на данни, изпратени от Arduino, например от температурен датчик. За ръководство как да използвате различни сензори, препоръчваме Тази статия за сензора DPS310.
1. Arduino код за четене на сензор
Следната програма чете аналогова стойност (като изхода на сензор LM35) и я изпраща през серийния порт:
int sensorPin = A0;
void setup() {
Serial.begin(9600);
}
void loop() {
int sensorValue = analogRead(sensorPin);
Serial.println(sensorValue);
delay(1000);
}
2. Python скрипт за четене на стойностите
От Python можем да прочетем тези данни и да ги покажем на екрана:
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)
Този прост цикъл ни позволява да показваме измерените стойности директно на нашия терминал.
Изпращане на данни от Python към Arduino с практически примери
Нека да разгледаме друг пример, при който изпращаме число от 1 до 9 от Python и Arduino мига светодиода толкова пъти:
Скица в 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);
}
}
}
}
Python скрипт за изпращане на стойността
import serial
import time
arduino = serial.Serial("COM4", 9600)
time.sleep(2)
arduino.write(b'5') # Parpadea 5 veces
arduino.close()
Този тип взаимодействие е идеален за създаване на потребителски интерфейси в Python.и че интуитивно управляват физическите устройства. В този контекст можете също да проучите повече за Как да използвате електронни дисплеи с Arduino.
Разширен пример: откриване с компютърно зрение
По-напреднал проект, който демонстрира силата на комбинирането на Arduino с Python, трябва да се използва Компютърно зрение с OpenCV и MediaPipe за откриване дали човек носи маска и управление на светодиодите на Arduino въз основа на откриването.
Arduino: управление на два светодиода
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 с OpenCV и MediaPipe
В кода на Python изображението от камерата се анализира, засича лица и в зависимост от това дали носят маска или не, се изпраща съответната стойност:
# fragmento clave
if LABELS] == "Con_mascarilla":
ser.write(b'P')
else:
ser.write(b'N')
Този пример демонстрира колко мощна е комбинацията от Python и Arduino., тъй като позволява физическият свят да бъде свързан със сложни алгоритми като лицево разпознаване или откриване на обекти.
Програмирането на Arduino с Python е напълно възможно, достъпно и дори забавно. От осветяване на LED до внедряване на сложни системи със сензори и компютърно зрение, възможностите са безкрайни. Python действа като мощен интерфейс, който ви позволява да пренесете вашите Arduino проекти на следващото ниво. Ако търсите практичен начин да приложите уменията си за програмиране или да дадете втори живот на платките си Arduino, тази комбинация определено е правилният начин.