La comunicazione tra Python e Arduino Uno su Serial consente di controllare l'hardware usando gli script di Python o inviare dati da Arduino a Python per l'elaborazione. Questo tutorial ti guiderà attraverso l'impostazione e l'utilizzo di Python per comunicare con un Arduino Uno su una connessione seriale.
Cosa avrai bisogno
- Arduino Uno con cavo USB
- Python installato sul tuo computer (versione 3.x consigliato)
- Arduino IDE installato
- Una biblioteca per la comunicazione seriale Python (ad es.,
pyserial
)
Passaggio 1: installare il software richiesto
1. Installa Python
Se non hai installato Python, scaricalo da pithon.org e seguire le istruzioni di installazione.
2. Installa l'IDE Arduino
Scarica e installa l'IDE Arduino da Arduino.cc.
3. Installa la libreria pyserial
Pyserial è necessario per Python di comunicare rispetto alle porte seriali. Installalo utilizzando il seguente comando:
pip install pyserial
Passaggio 2: scrivere e caricare il codice Arduino
Arduino invierà e riceverà dati sulla porta seriale. Di seguito è riportato uno schizzo di esempio:
Codice 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");
}
}
}
- Apri l'IDE Arduino.
- Incolla il codice sopra nell'editor.
- Seleziona il corretto Asse E Porta sotto il Utensili menu.
- Clic Caricamento Per caricare il codice su Arduino Uno.
Passaggio 3: scrivi il codice Python
Di seguito è riportato uno script di Python ad esempio per comunicare con l'Arduino:
Codice Python
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()
Passaggio 4: testare l'installazione
- Collega l'Arduino al tuo computer tramite USB.
- Trova il porto di Arduino:
- Su Windows: controllare la porta nel gestore dei dispositivi (ad es. Com3).
- Su macOS/Linux: usa il
ls /dev/tty.*
comanda per trovare la porta corretta (ad es./dev/ttyUSB0
).
- Aggiorna il
port
Valuta nello script Python per abbinare la porta del tuo Arduino. - Esegui lo script Python usando il comando:
python your_script_name.py
- Osservare la comunicazione tra Python e Arduino nel monitor terminale e seriale.
Applicazioni di comunicazione Python-Arduino
- Automazione delle attività hardware (ad es. Accensione dei LED, controllo dei motori)
- Registrazione dei dati del sensore in un file o un database
- Creazione di GUI personalizzate per progetti Arduino utilizzando librerie Python come Tkinter o Pyqt
- Integrazione di Arduino con piattaforme IoT
Risoluzione dei problemi
-
Nessuna connessione ad Arduino:
- Assicurarsi che la porta corretta sia specificata nello script Python.
- Verificare che il tasso di baud corrisponda allo schizzo Arduino.
-
Nessuna risposta da Arduino:
- Aggiungi un ritardo dopo l'apertura della connessione seriale (
time.sleep(2)
). - Assicurarsi che Arduino non venga utilizzato da un altro programma (ad esempio, monitor seriale nell'IDE Arduino).
- Aggiungi un ritardo dopo l'apertura della connessione seriale (
-
UnicodeDecodeError:
- Controllare la codifica dei dati inviati/ricevuti. Utilizzo
.decode(errors='ignore')
se necessario.
- Controllare la codifica dei dati inviati/ricevuti. Utilizzo
Conclusione
Hai impostato con successo la comunicazione tra Python e Arduino Uno su seriale. Questo apre infiniti possibilità per l'integrazione delle potenti librerie di Python con le capacità hardware di Arduino. Sperimenta ulteriormente aggiungendo sensori, motori o creando GUI a base di Python per i tuoi progetti!