Jak używać Pythona do komunikowania się z Arduino Uno nad serialem

How to Use Python to Communicate with an Arduino Uno Over Serial

Komunikowanie się między Pythonem i Arduino Uno nad serialem pozwala kontrolować sprzęt za pomocą skryptów Python lub wysyłać dane z Arduino do Pythona w celu przetwarzania. Ten samouczek poprowadzi Cię przez konfigurowanie i użycie Pythona do komunikowania się z Arduino UNO w związku z serialowym połączeniem.


Czego będziesz potrzebować

  1. Arduino UNO z kablem USB
  2. Python zainstalowany na komputerze (zalecana wersja 3.x)
  3. Zainstalowane Arduino IDE
  4. Biblioteka komunikacji seryjnej Python (np. pyserial)

Krok 1: Zainstaluj wymagane oprogramowanie

1. Zainstaluj Python

Jeśli nie masz zainstalowanego Pythona, pobierz go z Python.org i postępuj zgodnie z instrukcjami instalacji.

2. Zainstaluj Arduino IDE

Pobierz i zainstaluj Arduino IDE z Arduino.cc.

3. Zainstaluj bibliotekę Pyserial

Pyserial jest wymagany, aby Python komunikował się w portach szeregowych. Zainstaluj go za pomocą następującego polecenia:

pip install pyserial

Krok 2: Napisz i prześlij kod Arduino

Arduino wyśle ​​i odbiera dane w porcie szeregowym. Poniżej znajduje się przykład szkicu:

Kod Arduino

void setup() {
  Serial.begin(9600); // Start serial communication at 9600 baud
  while (!Serial);    // Wait for the serial port to connect
  Serial.println("Arduino is ready!");
}

void loop() {
  // Check if data is available on the serial port
  if (Serial.available()) {
    String data = Serial.readString(); // Read the incoming data
    Serial.print("Received: ");
    Serial.println(data); // Echo the data back

    // Optional: Respond based on the received data
    if (data.trim() == "LED_ON") {
      Serial.println("Turning LED on");
    } else if (data.trim() == "LED_OFF") {
      Serial.println("Turning LED off");
    }
  }
}
  1. Otwórz Arduino IDE.
  2. Wklej powyższy kod do edytora.
  3. Wybierz poprawne Tablica I Port pod Narzędzia menu.
  4. Trzask Wgrywać Aby przesłać kod do Arduino Uno.

Krok 3: Napisz kod Pythona

Poniżej znajduje się przykład skryptu Pythona do komunikowania się z Arduino:

Kod Pythona

import serial
import time

# Configure the serial connection
arduino = serial.Serial(port='COM3', baudrate=9600, timeout=1) # Replace 'COM3' with your Arduino's port

def send_data(data):
    print(f"Sending: {data}")
    arduino.write(f"{data}\n".encode()) # Send data to Arduino
    time.sleep(0.1)

    response = arduino.readline().decode().strip() # Read response from Arduino
    if response:
        print(f"Arduino responded: {response}")

if __name__ == "__main__":
    time.sleep(2)  # Wait for Arduino to initialize
    print("Connected to Arduino")

    # Example: Send commands to Arduino
    send_data("LED_ON")
    time.sleep(2)
    send_data("LED_OFF")

    # Close the serial connection
    arduino.close()

Krok 4: Przetestuj konfigurację

  1. Podłącz Arduino do komputera za pomocą USB.
  2. Znajdź port Arduino:
    • W systemie Windows: Sprawdź port w menedżerze urządzeń (np. COM3).
    • Na macOS/Linux: Użyj ls /dev/tty.* polecenie do znalezienia odpowiedniego portu (np. /dev/ttyUSB0).
  3. Zaktualizować port Wartość w skrypcie Pythona, aby pasować do portu Arduino.
  4. Uruchom skrypt Python za pomocą polecenia:
python your_script_name.py
  1. Obserwuj komunikację między Pythonem i Arduino w monitor terminalu i szeregowego.

Zastosowania komunikacji Python-Orduino

  1. Automatyzacja zadań sprzętowych (np. Włączanie diod LED, sterowanie silnikami)
  2. Dane czujnika rejestrowania do pliku lub bazy danych
  3. Tworzenie niestandardowych GUIS dla projektów Arduino przy użyciu bibliotek Python, takich jak Tkinter lub Pyqt
  4. Integracja Arduino z platformami IoT

Rozwiązywanie problemów

  • Brak połączenia z Arduino:

    • Upewnij się, że prawidłowy port jest określony w skrypcie Python.
    • Sprawdź, czy wskaźnik transmisji pasuje do szkicu Arduino.
  • Brak odpowiedzi Arduino:

    • Dodaj opóźnienie po otwarciu połączenia szeregowego (time.sleep(2)).
    • Upewnij się, że Arduino nie jest używane przez inny program (np. Monitor szeregowy w Arduino IDE).
  • UnicodedeCodeError:

    • Sprawdź kodowanie wysyłanych/odbieranych danych. Używać .decode(errors='ignore') w razie potrzeby.

Wniosek

Z powodzeniem skonfigurowałeś komunikację między Pythonem i Arduino Uno nad serą. Otwiera to niekończące się możliwości integracji potężnych bibliotek Pythona z możliwościami sprzętowymi Arduino. Eksperymentuj dalej, dodając czujniki, silniki lub tworząc GUI oparte na Python dla twoich projektów!

Zostaw komentarz

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.