Comunicar entre Python y Arduino Uno Over Serial le permite controlar el hardware utilizando scripts de Python o enviar datos del Arduino a Python para su procesamiento. Este tutorial lo guiará a través de la configuración y el uso de Python para comunicarse con un Arduino Uno sobre una conexión serie.
Lo que necesitarás
- Arduino Uno con cable USB
- Python instalado en su computadora (recomendado la versión 3.x)
- Arduino IDE instalado
- Una biblioteca para la comunicación en serie de Python (por ejemplo,
pyserial
)
Paso 1: Instale el software requerido
1. Instale Python
Si no tiene Python instalado, descargue desde python.org y siga las instrucciones de instalación.
2. Instale el Arduino IDE
Descargue e instale el Arduino IDE desde arduino.cc.
3. Instale la biblioteca pyserial
Se requiere piserial para que Python se comunique a través de puertos serie. Instálelo usando el siguiente comando:
pip install pyserial
Paso 2: Escribe y sube el código Arduino
El Arduino enviará y recibirá datos a través del puerto serie. A continuación se muestra un boceto de ejemplo:
Código 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");
}
}
}
- Abra el IDE Arduino.
- Pegue el código anterior en el editor.
- Seleccione el correcto Junta y Puerto bajo el Herramientas menú.
- Hacer clic Subir Para subir el código al Arduino Uno.
Paso 3: Escribe el código de Python
A continuación se muestra un ejemplo de script de Python para comunicarse con el Arduino:
Código de 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()
Paso 4: prueba la configuración
- Conecte el Arduino a su computadora a través de USB.
- Encuentra el puerto de Arduino:
- En Windows: verifique el puerto en el Administrador de dispositivos (por ejemplo, COM3).
- En macOS/Linux: use el
ls /dev/tty.*
comando encontrar el puerto correcto (por ejemplo,/dev/ttyUSB0
).
- Actualizar el
port
Value en el script de Python para que coincida con el puerto de su Arduino. - Ejecute el script Python usando el comando:
python your_script_name.py
- Observe la comunicación entre Python y Arduino en el monitor terminal y en serie.
Aplicaciones de la comunicación de Python-Arduino
- Automatizar tareas de hardware (por ejemplo, encender LED, controlar motores)
- Registro de datos del sensor en un archivo o base de datos
- Creación de GUI personalizadas para proyectos Arduino utilizando bibliotecas de Python como Tkinter o Pyqt
- Integrando Arduino con plataformas IoT
Solución de problemas
-
No hay conexión con Arduino:
- Asegúrese de especificar el puerto correcto en el script de Python.
- Verifique que la tasa de baudios coincida con el boceto Arduino.
-
Sin respuesta de Arduino:
- Agregue un retraso después de abrir la conexión en serie (
time.sleep(2)
). - Asegúrese de que el Arduino no esté siendo utilizado por otro programa (por ejemplo, monitor en serie en el IDE Arduino).
- Agregue un retraso después de abrir la conexión en serie (
-
UnicodeDecodeError:
- Verifique la codificación de los datos que se envían/reciben. Usar
.decode(errors='ignore')
si es necesario.
- Verifique la codificación de los datos que se envían/reciben. Usar
Conclusión
Has establecido con éxito la comunicación entre Python y Arduino Uno sobre Serial. Esto abre infinitos posibilidades para integrar las poderosas bibliotecas de Python con las capacidades de hardware de Arduino. ¡Experimente más al agregar sensores, motores o creando GUI basadas en Python para sus proyectos!