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ć
- Arduino UNO z kablem USB
- Python zainstalowany na komputerze (zalecana wersja 3.x)
- Zainstalowane Arduino IDE
- 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");
}
}
}
- Otwórz Arduino IDE.
- Wklej powyższy kod do edytora.
- Wybierz poprawne Tablica I Port pod Narzędzia menu.
- 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ę
- Podłącz Arduino do komputera za pomocą USB.
- 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
).
- Zaktualizować
port
Wartość w skrypcie Pythona, aby pasować do portu Arduino. - Uruchom skrypt Python za pomocą polecenia:
python your_script_name.py
- Obserwuj komunikację między Pythonem i Arduino w monitor terminalu i szeregowego.
Zastosowania komunikacji Python-Orduino
- Automatyzacja zadań sprzętowych (np. Włączanie diod LED, sterowanie silnikami)
- Dane czujnika rejestrowania do pliku lub bazy danych
- Tworzenie niestandardowych GUIS dla projektów Arduino przy użyciu bibliotek Python, takich jak Tkinter lub Pyqt
- 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).
- Dodaj opóźnienie po otwarciu połączenia szeregowego (
-
UnicodedeCodeError:
- Sprawdź kodowanie wysyłanych/odbieranych danych. Używać
.decode(errors='ignore')
w razie potrzeby.
- Sprawdź kodowanie wysyłanych/odbieranych danych. Używać
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!