Чи знаєте ви, що можете керувати платою 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 або Nano.
- Кабель 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 цілком можливо, доступно і навіть цікаво. Від світлодіодного освітлення до впровадження складних систем із датчиками та комп’ютерним зором – можливості безмежні. Python діє як потужний інтерфейс, який дозволяє вивести ваші проекти Arduino на новий рівень. Якщо ви шукаєте практичний спосіб застосувати свої навички програмування або дати своїм платам Arduino друге життя, ця комбінація безперечно стане вашим вибором.