Jak programować Arduino za pomocą Pythona: kompletny przewodnik i przykłady

  • Biblioteka PySerial umożliwia bezproblemową komunikację między Arduino i Pythonem przez port szeregowy.
  • Możliwe jest łatwe wysyłanie poleceń i odbieranie danych pomiędzy płytkami Arduino i skryptami Python.
  • Integracja z przetwarzaniem obrazu za pomocą OpenCV rozszerza możliwości Arduino.
  • Zadania elektroniczne można zautomatyzować poprzez połączenie języka Python, czujników i siłowników Arduino.

Pythona Arduino

Czy wiesz, że możesz sterować płytką Arduino używając tylko Pythona? Mimo że natywnym językiem Arduino jest C++, istnieje dość przystępny sposób programowania i komunikowania się z projektami Arduino za pomocą języka Python, dzięki specjalistycznym bibliotekom, takim jak PySerial. Takie połączenie obu światów jest nie tylko interesujące, ale i bardzo potężne, zwłaszcza dla tych, którzy chcą zintegrować elektronikę z przetwarzaniem danych, komputerowym przetwarzaniem obrazu, a nawet sztuczną inteligencją. Jeśli chcesz zagłębić się w ten temat, możesz zapoznać się z naszą praktyczny przewodnik.

W tym artykule wyjaśnimy, czego potrzebujesz, jak połączyć Arduino z Pythonem i pokażemy kilka praktycznych przykładów. które możesz wykonać krok po kroku, aby zacząć sterować swoją płytą za pomocą skryptów Pythona. Wszystko to jest jasno wytłumaczone i dostosowane do struktury zarówno dla początkujących, jak i dla tych, którzy mają już pewne doświadczenie w programowaniu i elektronice.

Czy Arduino można programować bezpośrednio za pomocą Pythona?

Tak, choć z pewnymi niuansami. Arduino jest programowane natywnie przy użyciu własnego środowiska programistycznego (Arduino IDE), które wykorzystuje język bazujący na C++. Jednakże, dzięki wykorzystaniu bibliotek takich jak PySerial i innych alternatywach, takich jak Snek lub MicroPython (choć z ograniczeniami sprzętowymi), możliwe jest nawiązanie komunikacji między Pythonem i Arduino w celu sterowania płytką lub interakcji z jej urządzeniami peryferyjnymi. Aby uzyskać więcej informacji na temat MicroPython, możesz przeczytać nasz artykuł na ten temat Co nowego w MicroPythonie.

Najpopularniejszym sposobem przesyłania danych do Arduino jest wykorzystanie języka Python. poprzez port szeregowy, a płytka interpretuje je w celu wykonania akcji fizycznych (takich jak włączanie diod LED lub odczytywanie czujników). Możemy też zrobić odwrotnie: pozwolić Arduino wysyłać dane do Pythona, a następnie wyświetlać, przetwarzać i przechowywać je.

Narzędzia potrzebne do rozpoczęcia

Zanim zabierzemy się za kable i kodowanie, musisz przygotować kilka podstawowych rzeczy:

  • Płyta Arduino:Każdy model będzie odpowiedni, choć najpopularniejsze są Arduino UNO lub Nano.
  • Kabel USB aby podłączyć Arduino do komputera.
  • Python zainstalowany na twoim komputerze. Możesz to dostać z oficjalna strona internetowa Pythona.
  • Instalowanie PySerial, biblioteka umożliwiająca komunikację szeregową pomiędzy Arduino i Pythonem. Możesz zainstalować go, uruchamiając w terminalu:
pip install pyserial

PySerial jest kluczowym elementem co pozwala nam wysyłać polecenia z poziomu Pythona i odbierać odpowiedzi z Arduino, tak jakbyśmy rozmawiali z elektronicznym robotem.

Krok 1: Podłącz Arduino do Pythona przez port szeregowy

Jedną z najczęstszych form interakcji jest wysyłanie danych ze skryptu Pythona do Arduino w celu włączenia lub wyłączenia diody LED.. Zobaczmy, jak to zrobić krok po kroku.

1. Prześlij podstawowy program do Arduino

Ten kod jest ładowany z Arduino IDE i będzie odpowiedzialny za sterowanie diodą LED zintegrowaną na pinie 13, w zależności od danych otrzymanych przez port szeregowy:

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);
    }
  }
}

Ten szkic interpretuje dane otrzymane przez port szeregowy. Jeżeli otrzyma „1”, włącza diodę LED; Jeżeli otrzyma „0”, wyłącza urządzenie. Więcej przykładów projektów Arduino znajdziesz w naszym artykule na temat Jak stworzyć zestaw szachowy z Arduino.

2. Wysyłaj polecenia z Pythona

Po załadowaniu kodu na płytkę tworzymy skrypt Pythona, który odpowiada za wysyłanie poleceń:

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()

Należy pamiętać, że należy zastąpić „COM3” odpowiednim portem w Twoim systemie operacyjnym. W systemie Windows jest to zwykle COM3 lub COM4; w systemie Linux coś takiego jak /dev/ttyUSB0.

Odczyt danych z czujników podłączonych do Arduino

Oprócz wysyłania instrukcji możemy użyć Pythona do odczytu danych wysyłanych przez Arduinona przykład z czujnika temperatury. Aby uzyskać wskazówki dotyczące korzystania z różnych czujników, zalecamy W tym artykule o czujniku DPS310.

1. Kod Arduino do odczytu czujnika

Poniższa procedura odczytuje wartość analogową (na przykład sygnał wyjściowy czujnika LM35) i wysyła ją przez port szeregowy:

int sensorPin = A0;

void setup() {
  Serial.begin(9600);
}

void loop() {
  int sensorValue = analogRead(sensorPin);
  Serial.println(sensorValue);
  delay(1000);
}

2. Skrypt Pythona do odczytu wartości

Z poziomu Pythona możemy odczytać te dane i wyświetlić je na ekranie:

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 prosta pętla umożliwia nam wyświetlanie zmierzonych wartości bezpośrednio na naszym terminalu.

Wysyłanie danych z Pythona do Arduino z praktycznymi przykładami

Przyjrzyjmy się innemu przykładowi, w którym wysyłamy liczbę od 1 do 9 z Pythona, a Arduino mruga diodą LED taką liczbę razy:

Szkic w 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);
      }
    }
  }
}

Skrypt Pythona do wysyłania wartości

import serial
import time

arduino = serial.Serial("COM4", 9600)
time.sleep(2)

arduino.write(b'5')  # Parpadea 5 veces
arduino.close()

Ten typ interakcji idealnie nadaje się do tworzenia interfejsów użytkownika w Pythonie.i że intuicyjnie kontrolują urządzenia fizyczne. W tym kontekście możesz również dowiedzieć się więcej na temat Jak używać wyświetlaczy elektronicznych z Arduino.

Zaawansowany przykład: wykrywanie za pomocą wizji komputerowej

Bardziej zaawansowanym projektem, który pokazuje możliwości połączenia Arduino z Pythonem, jest użycie Wizja komputerowa z OpenCV i MediaPipe do wykrywania, czy dana osoba nosi maskę, oraz sterowania diodami LED w Arduino na podstawie tego wykrycia.

Arduino: sterowanie dwoma diodami 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 i MediaPipe

W kodzie Pythona analizowany jest obraz z kamery, wykrywane są twarze i w zależności od tego, czy osoby te mają założoną maskę, czy nie, wysyłana jest odpowiednia wartość:

# fragmento clave
if LABELS] == "Con_mascarilla":
    ser.write(b'P')
else:
    ser.write(b'N')

Ten przykład pokazuje, jak potężne jest połączenie Pythona i Arduino.ponieważ umożliwia połączenie świata fizycznego ze złożonymi algorytmami, takimi jak rozpoznawanie twarzy lub wykrywanie obiektów.

Programowanie Arduino za pomocą Pythona jest całkowicie możliwe, dostępne i nawet przyjemne. Od oświetlenia diodą LED po wdrażanie złożonych systemów z czujnikami i komputerowym przetwarzaniem obrazu, możliwości są nieograniczone. Python działa jak zaawansowany interfejs, który pozwala przenieść projekty Arduino na wyższy poziom. Jeśli szukasz praktycznego sposobu na wykorzystanie swoich umiejętności programistycznych lub chcesz dać swoim płytkom Arduino drugie życie, to ten zestaw jest zdecydowanie dla Ciebie.