42. Tema 2.3: PY RS232-Instalación de la Librería

 

Tutorial: Instalación y Configuración de PySerial para Comunicación RS232

1. Introducción a PySerial

PySerial es una librería Python que permite la comunicación serial (RS232/RS485) con dispositivos como:

  • Puertos serie tradicionales (COM1, COM2)

  • Conversores USB a Serial

  • Dispositivos industriales con interfaz RS232

  • Equipos de medición y control

2. Prerrequisitos

Antes de comenzar, asegúrate de tener:

  • Python 3.6 o superior instalado

  • Acceso a terminal/consola (CMD, PowerShell, Terminal)

  • Conexión a internet para descargar la librería

3. Métodos de Instalación

Método 1: Usando pip (Recomendado)

bash
# Instalación básica
pip install pyserial

# Instalación específica de versión
pip install pyserial==3.5

# Si tienes múltiples versiones de Python
python -m pip install pyserial
pip3 install pyserial

# Actualizar a la última versión
pip install --upgrade pyserial

Método 2: Usando conda

bash
conda install -c conda-forge pyserial

Método 3: Instalación manual

bash
# 1. Descargar desde PyPI
https://pypi.org/project/pyserial/

# 2. Instalar desde archivo .whl
pip install pyserial-3.5-py2.py3-none-any.whl

# 3. O desde el código fuente
python setup.py install

4. Verificación de la Instalación

Verificar que se instaló correctamente:

python
# En la consola de Python
import serial
print(serial.__version__)

# O desde la terminal
python -c "import serial; print(serial.__version__)"

Listar puertos disponibles:

python
import serial.tools.list_ports

# Listar todos los puertos
ports = serial.tools.list_ports.comports()
for port, desc, hwid in sorted(ports):
    print(f"{port}: {desc} [{hwid}]")

5. Primer Programa de Prueba

Código básico de conexión:

python
import serial
import time

try:
    # Configurar conexión serial
    ser = serial.Serial(
        port='COM3',        # Puerto (Windows)
        # port='/dev/ttyUSB0', # Puerto (Linux)
        # port='/dev/ttyACM0', # Puerto (Mac)
        baudrate=9600,      # Velocidad en baudios
        bytesize=8,         # Bits de datos
        parity='N',         # Paridad (N=none, E=even, O=odd)
        stopbits=1,         # Bits de parada
        timeout=1           # Timeout en segundos
    )
    
    print(f"Conexión establecida en {ser.port}")
    
    # Enviar datos
    ser.write(b'Hello RS232!\n')
    print("Datos enviados")
    
    # Leer respuesta (si existe)
    time.sleep(0.1)
    if ser.in_waiting:
        response = ser.readline()
        print(f"Respuesta recibida: {response.decode('utf-8').strip()}")
    
    # Cerrar conexión
    ser.close()
    print("Conexión cerrada")
    
except serial.SerialException as e:
    print(f"Error: {e}")

6. Solución de Problemas Comunes

Problema 1: "ModuleNotFoundError: No module named 'serial'"

Solución:

bash
# Asegúrate de que pip está actualizado
python -m pip install --upgrade pip

# Reinstalar PySerial
pip uninstall pyserial
pip install pyserial

Problema 2: Puerto no encontrado

Solución:

python
# Detectar puertos automáticamente
import serial.tools.list_ports

available_ports = []
ports = list(serial.tools.list_ports.comports())
for p in ports:
    available_ports.append(p.device)

print("Puertos disponibles:", available_ports)

Problema 3: Permisos en Linux/Mac

Solución:

bash
# Agregar usuario al grupo dialout
sudo usermod -a -G dialout $USER

# O cambiar permisos del puerto
sudo chmod 666 /dev/ttyUSB0

# Reiniciar sesión para aplicar cambios

7. Configuración Avanzada

Configuración de timeouts:

python
ser = serial.Serial(
    port='COM3',
    baudrate=115200,
    timeout=0.5,        # Timeout de lectura
    write_timeout=0.5,  # Timeout de escritura
    inter_byte_timeout=0.1  # Timeout entre bytes
)

Configuración de control de flujo:

python
ser = serial.Serial(
    port='COM3',
    baudrate=9600,
    rtscts=True,    # Hardware flow control
    dsrdtr=True     # Data Set Ready/Data Terminal Ready
)

8. Ejemplo Completo - Monitor Serial

python
import serial
import threading
import time

class SerialMonitor:
    def __init__(self, port, baudrate=9600):
        self.ser = serial.Serial(port, baudrate, timeout=1)
        self.running = True
        self.thread = threading.Thread(target=self.read_serial)
        
    def start(self):
        print(f"Iniciando monitor en {self.ser.port}")
        self.thread.start()
        
    def read_serial(self):
        while self.running:
            if self.ser.in_waiting:
                data = self.ser.read(self.ser.in_waiting)
                print(f"RX: {data.hex()} | ASCII: {data.decode('ascii', errors='ignore')}")
            time.sleep(0.01)
            
    def send_data(self, data):
        if isinstance(data, str):
            data = data.encode()
        self.ser.write(data)
        print(f"TX: {data.hex()}")
        
    def stop(self):
        self.running = False
        self.thread.join()
        self.ser.close()
        print("Monitor detenido")

# Uso del monitor
if __name__ == "__main__":
    monitor = SerialMonitor('COM3', 9600)
    monitor.start()
    
    try:
        while True:
            monitor.send_data("PING\n")
            time.sleep(2)
    except KeyboardInterrupt:
        monitor.stop()

9. Recursos Adicionales

Documentación oficial:

Instalación de controladores:

  • Windows: Detecta automáticamente la mayoría de conversores USB-Serial

  • Linux: Generalmente incluidos en el kernel

  • Mac: Instalar desde FTDI VCP Drivers

Herramientas útiles:

  • Putty (Windows) - Cliente serial genérico

  • screen (Linux/Mac) - screen /dev/ttyUSB0 9600

  • Arduino IDE - Incluye monitor serial

10. Próximos Pasos

  1. Probar con dispositivos reales (Arduino, PLC, etc.)

  2. Implementar protocolos específicos (Modbus, NMEA, etc.)

  3. Crear interfaz gráfica con Tkinter o PyQt

  4. Implementar logging de datos


Nota: Recuerda siempre cerrar las conexiones seriales con .close() para liberar el puerto y evitar conflictos. ¡Feliz programación serial! 🚀

Python + PySerial: Domina la Comunicación Serial RS232/USB para IoT

https://images.unsplash.com/photo-1555066931-4365d14bab8c?auto=format&fit=crop&w=1200&h=400&q=80

🚀 Captura y Envío de Datos por Puerto Serial

¡Hola comunidad! Hoy exploraremos uno de los superpoderes de Python: la comunicación serial con dispositivos a través de puertos RS232 y USB.

📌 ¿Qué vamos a lograr?

  • Capturar datos desde dispositivos seriales

  • Enviar comandos a equipos conectados

  • Crear un puente entre hardware y software

  • Prepararnos para proyectos de IoT y robótica

🤔 ¿Por qué Python es el rey para esto?

Python ha tenido un auge espectacular en los últimos años, y no es casualidad:

  • ✅ Sencillez extrema: Sintaxis clara y legible

  • ✅ Desarrollo rápido: Scripts funcionales en minutos

  • ✅ Versatilidad: Desde IoT hasta inteligencia artificial

  • ✅ Comunidad enorme: Soluciones para todo

"Python se ganó un lugar privilegiado en el Internet de las Cosas (IoT) gracias a su facilidad para comunicarse con cualquier dispositivo"

🔌 Conectando Mundos: Hardware + Software

La magia ocurre cuando Python habla con dispositivos físicos:

  • Ordenadores ↔ Arduinos

  • Tablets ↔ Sensores industriales

  • Smartphones ↔ Sistemas de control

Y lo hace a través de:

  • 🔗 Conexiones alámbricas (RS232, USB)

  • 📡 Inalámbricas (Bluetooth, WiFi)

  • 🌐 Internet (para control remoto mundial)

🛠️ El Secreto: PySerial

Para que Python reconozca y comunique con puertos seriales, necesitamos instalar PySerial, una librería poderosa y sencilla.

📥 Instalación Paso a Paso

Opción 1: La más común

bash
pip install pyserial

Opción 2: Con Python 3 específico

bash
pip3 install pyserial

Opción 3: Desde Anaconda (PowerShell)

bash
python -m pip install pyserial

⚠️ Solución de Problemas Comunes

Si encuentras errores, prueba estas alternativas:

bash
# Si no reconoce 'pip'
python -m pip install --upgrade pip

# Instalación específica desde Anaconda Prompt
conda install -c conda-forge pyserial

# Versión específica (más estable)
pip install pyserial==3.5

🎯 Configuración Correcta del Entorno

Para usuarios de Anaconda:

  1. Abre Anaconda Navigator

  2. Busca y abre Anaconda PowerShell Prompt

  3. Instala con: pip install pyserial

  4. Ejecuta Spyder desde Anaconda Navigator

💡 Consejo Importante:

Instala Python en inglés - Los mensajes de error en inglés son más fáciles de buscar en foros y documentación.

🔍 Verificación de Instalación

python
# Código de verificación
import serial
print("¡PySerial instalado correctamente!")
print(f"Versión: {serial.__version__}")

🌉 ¿Por qué RS232 sigue siendo relevante?

A pesar de ser una tecnología "antigua", RS232 sigue siendo vital en:

  • 🏭 Industria: Control de máquinas

  • 🏥 Medicina: Equipos de diagnóstico

  • 🔬 Laboratorios: Instrumentos de medición

  • 🎛️ Electrónica: Programación de microcontroladores

🚦 Primeros Pasos Prácticos

Una vez instalado PySerial, estarás listo para:

  1. Leer datos de sensores conectados

  2. Enviar comandos a dispositivos

  3. Automatizar procesos industriales

  4. Crear dashboards en tiempo real

📈 Aplicaciones Reales

  • Monitoreo ambiental con sensores seriales

  • Control de robots industriales

  • Adquisición de datos en laboratorios

  • Sistemas de seguridad con comunicación serial

  • IoT empresarial con legacy equipment

🎓 Próximos Pasos en el Tutorial

En las siguientes entregas cubriremos:

  • 🔧 Configuración avanzada de puertos seriales

  • 📊 Procesamiento de datos en tiempo real

  • 🌐 Integración con APIs web

  • 📱 Interfaz gráfica para control serial


💬 ¿Tienes dudas sobre la instalación?

¡Comenta abajo! Comparte:

  • ¿Qué versión de Python usas?

  • ¿En qué SO estás trabajando?

  • ¿Qué dispositivo serial quieres conectar?

📢 ¡Comparte este conocimiento!

Si encuentras útil esta guía, compártela con compañeros que trabajen con:

  • Automatización industrial

  • Proyectos de robótica

  • Sistemas embebidos

  • IoT y smart devices


Tags: #Python #PySerial #RS232 #IoT #Robótica #Automatización #Programación #Hardware #TutorialPython #ComunicaciónSerial

Nivel: Principiante/Intermedio
Tiempo de lectura: 3 min
Próximo tema: "Primer script de comunicación serial con Arduino"


¿Listo para conectar Python con el mundo físico? ¡La revolución IoT comienza con una simple línea de código! 🐍⚡


Comentarios

Entradas populares de este blog

¿Qué es el Modelo OSI?

bit -El codigo ASCII

38. Tema 1: Protocolos de comunicación.