Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Establecer Comunicación UART entre Raspberry Pi 4 y Placas HiFive1

En este laboratorio configurarás enlaces UART fiables entre una Raspberry Pi 4 y una HiFive1, programarás la HiFive1 para hacer eco de los datos recibidos, y crearás un script Python en la Pi para reenviar ángulos de dirección a la placa.

Parte 0: Habilitar UART en la Raspberry Pi 4

La Pi 4 viene con cuatro controladores UART. Para este ejercicio usaremos uart2 y uart3. Añade la siguiente línea a /boot/config.txt y reinicia:

dtoverlay=uart2,115200
dtoverlay=uart3,115200

Tras reiniciar, los nodos de dispositivo /dev/ttyAMA1 (uart2) y /dev/ttyAMA2 (uart3) estarán disponibles.

Conecta las placas de la siguiente forma:

Desde la Pi puedes acceder a estos canales vía /dev/ttyAMA1 (enviar a HiFive1) y /dev/ttyAMA2 (recibir consola HiFive1).

Parte 1: Programar la HiFive1

En tu PC (no en la Pi), descarga el proyecto esqueleto:

$ cd ~/Documents/PlatformIO
$ wget https://ittc.ku.edu/~heechul/courses/eecs388/l10-comm.tar.gz
$ tar zxvf l10-comm.tar.gz

Añade la carpeta l10-interrupt a tu workspace de VSCode. El objetivo es leer datos de UART1, hacer eco en UART0, e imprimir el resultado en consola.

Aquí tienes un algoritmo conciso:

while (1) {
    if (ser_isready(1)) {
        char data = ser_read(1);
        ser_write(0, data);
        ser_printline(0, "Received: ");
        /* ajustar formato según necesidad */
    }
}

La API serial está definida en eecs388_lib.h/c:

void ser_setup(int devid);
int ser_isready(int devid);
void ser_write(int devid, char c);
void ser_printline(int devid, char *str);
char ser_read(int devid);
int ser_readline(int devid, int n, char *str);

Recuerda que devid = 0 selecciona UART0 y devid = 1 selecciona UART1. La función ser_isready comprueba el registro IP de UART para datos pendientes:

int ser_isready(int devid) {
    uint32_t regval = *(volatile uint32_t *)(UART_ADDR(devid) + UART_IP);
    return regval;
}

Tras compilar y flashear, cambia a la Pi y abre dos terminales:

Escribe cualquier cadena en la terminal remitente; la misma cadena debería aparecer en la terminal de depuración, confirmando operación correcta.

Parte 2: Script Python en la Raspberry Pi 4

En lugar de terminales manuales, escribe un programa Python que:

Esqueleto de ejemplo usando pySerial:

import serial
import time
import cv2  # o tu interfaz de cámara

# Abrir puertos seriales
ser1 = serial.Serial('/dev/ttyAMA1', 115200, timeout=1)
ser2 = serial.Serial('/dev/ttyAMA2', 115200, timeout=1)

while True:
    # Capturar frame
    frame = cv2.imread('frame.jpg')  # reemplazar con lectura real de cámara
    # Ejecutar inferencia DNN
    angle = dnn_inference(frame)  # float32
    # Convertir float a representación de 4 bytes
    angle_bytes = angle.to_bytes(4, byteorder='little', signed=True)
    ser1.write(angle_bytes)
    # Opcional: leer salida de depuración
    debug = ser2.readline().decode().strip()
    if debug:
        print('HiFive1:', debug)
    # Control de tiempo (ej. 30 fps)
    time.sleep(1/30)

# Limpieza
ser1.close()
ser2.close()

Nota: Convierte el float a bytes antes de enviar, y usa el mismo orden de bytes en la HiFive1 al interpretar el valor.

Apéndice: Visión General de GPIO y Periféricos de Raspberry Pi 4

La Pi 4 ofrece interfaces I²C, SPI y UART expandidas más allá de los modelos Pi originales. Usa el comando pinout para ver todos los pines:

pinout

Periféricos clave:

Para configuración detallada, consulta la documentación oficial de Raspberry Pi: Guía Config-txt.

Proceso de manufactura

  1. Integración MQTT fluida: sensores NodeMCU DHT22 con Raspberry Pi 3 B+ como broker
  2. Integración de datos de sensores en Raspberry Pi: Guía práctica
  3. Integración I2C Fluida entre Arduino y Raspberry Pi 2 para Proyectos IoT con Sensores
  4. Comunicación M2M (Machine-to-Machine): Qué Es y Por Qué Importa
  5. Fundamentos de Comunicación Digital: De la Teoría a la Implementación Práctica
  6. Entendiendo el Flujo de Datos: De Simplex a Comunicación Full-Duplex
  7. Comunicación Óptica de Datos: Aprovechando la Luz para Transmisión de Alto Ancho de Banda Libre de Interferencias
  8. Determinismo y Tolerancia a Fallos: Principios Esenciales de Diseño para Redes de Control Industrial
  9. Dominando UART: el receptor/transmisor asíncrono universal explicado
  10. Amplificador óptico compacto revolucionario promete comunicaciones espaciales y de fibra sin ruido
  11. Dominando el alcance de comunicación inalámbrica: Cómo potencia, tasa de datos e interferencia moldean la conectividad