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

Comunicación de placa a placa

En esta práctica de laboratorio, establecerá canales de comunicación basados ​​en UART entre las placas Pi 4 y HiFive 1.

Parte 0:Configurar las conexiones UART (para TA)

En esta parte, conectaremos las placas HiFive1 y Raspberry Pi 4 a través de dos canales UART.

(Tenga en cuenta que este paso lo realizarán los asistentes auxiliares).

El Pi 4 tiene 4 UART y usaremos dos de ellos (uart2 y uart3). Agregue la siguiente línea al final del archivo /boot/config.txt para habilitar uart2 y uart3.

dtoverlay =uart2,115200 dtoverlay =uart3,115200

Después de reiniciar el sistema, se crearán / dev / ttyAMA1 y / dev / ttyAMA2.

Conecte el UART1 RX de HiFive (pin 7) al UART2 TX de Raspberry Pi 4 (pin 27). Esta es la línea de comunicación principal entre el Pi 4 y el HiFive1. Desde Pi 4, puede acceder al canal a través de / dev / ttyAMA1.

Para depurar HiFive 1, conecte UART0 TX (pin1) de HiFive1 a UART3 RX de Pi 4 (pin 29). Desde Pi 4, se puede acceder a través de / dev / ttyAMA2.

En resumen, podrá acceder a los siguientes dos archivos desde Pi 4.

/ dev / ttyAMA1 Pi 4 → HiFive1:Envía el ángulo de dirección a HiFive1 (uart1).

/ dev / ttyAMA2 HiFive1 → Pi 4:Recibe la salida de la consola de HiFive1 (uart0)

Parte 1:Programación del HiFive1

En esta parte del laboratorio, programará el HiFive1 para recibir datos del Pi 4.

En tu PC (no Pi 4), descargue el esqueleto del proyecto de la siguiente manera.

$ Cd ~ / Documentos / PlatformIO

$ Wget https://ittc.ku.edu/~heechul/courses/eecs388/l10-comm.tar.gz

$ Tar zxvf l10-comm.tar.gz

Agregue la carpeta l10-interrupt en el espacio de trabajo de VSCode.

Su tarea es recibir los datos del canal UART1 de HiFive1 y enviar los datos recibidos al canal UART0. El siguiente es un pseudocódigo aproximado de la tarea.

while (1) {

si (¿está listo UART1?) {data =read from UART1. imprimir datos en UART0.

}

} Para implementar la tarea, es posible que deba utilizar la API en serie proporcionada que se muestra a continuación. Tenga en cuenta que devid es 0 para acceder a UART0, mientras que es 1 para acceder a UART1.

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);

En particular, es posible que deba usar la función ser_isready () para verificar si un canal UART dado tiene datos pendientes para leer. Para comprender mejor qué están haciendo las funciones, consulte los archivos eecs388_lib.hy eecs388_lib.c.

int ser_isready (int devid)

{

uint32_t regval =* (volátil uint32_t *) (UART_ADDR (devid) + UART_IP); return regval;

}

Una vez que termine de programar el HiFive1, cambie a Raspberry Pi 4 y abra dos terminales:uno para enviar datos al HiFive1 y otro para ver la salida del mensaje de depuración del HiFive1.

Terminal del remitente (término1)

$ Screen / dev / ttyAMA1 115200

Terminal de depuración (término2)

$ Screen / dev / ttyAMA2 115200

Ahora, escriba cualquier cadena en el "término1".

Si programó correctamente su HiFive 1, debería ver el mensaje que sale de la terminal "term2".

Parte 2:Programación de Raspberry Pi 4.

En lugar de usar terminales, ahora ejecuta un programa de Python en el Pi 4 para comunicarse con el HiFive1. Su tarea es extender el archivo dnn.py de la práctica de laboratorio anterior para poder enviar la salida de dirección al canal serial / dev / ttyAMA1. El siguiente pseudocódigo proporciona una idea general de las modificaciones que deberá realizar en dnn.py:

Abra conexiones seriales a / dev / ttyAMA1 y / dev / ttyAMA2 mientras es verdadero:

image =camera.read ()

angle =dnn_inference (imagen) Escribe "ángulo" en / dev / ttyAMA1 Wait_till_next_period ()

Cerrar conexiones seriales

Para lograr la funcionalidad anterior, debe usar la API pySerial de Python, que se puede usar importando el paquete en serie:

importar serial

Con él, debe crear dos canales seriales separados, uno para escribir en el HiFive1 sobre

/ dev / ttyAMA1 y otro para depurar sobre / dev / ttyAMA2. Tenga en cuenta que ambos canales deben abrirse con la velocidad en baudios de 115200 bps.

ser1 =serial.Serial (…) ser2 =serial.Serial (…)

Los ángulos recibidos del DNN a medida que procesa las tramas se pueden enviar al HiFive1 mediante la función de escritura en serie ():

ser1.write (…)

Sin embargo, write () requiere un valor de byte mientras que el ángulo producido por el DNN es un valor float32, por lo que tendrá que convertir los datos del ángulo para enviarlos al HiFive1. Finalmente, después de que se procesan todos los marcos, las conexiones seriales se pueden cerrar invocando la función serial close ():

ser1.close () ser2.close ()

Apéndice


Mapeo GPIO de Pi 4.

Configuración de pines Raspberry Pi 4

La Raspberry Pi 4 no solo está repleta de nuevas características de hardware, sino que también hay algunas funciones GPIO adicionales para hacer la vida un poco más fácil, lo que permite a los usuarios expandir sus periféricos a sus proyectos sin requerir hardware adicional. Interfaces I2C, UART y SPI que se pueden utilizar en Raspberry Pi 4.

Pinouts GPIO

Puede encontrar una lista completa de pines GPIO en la Raspberry PI 4, simplemente vaya a la línea de comando y escriba pinout .

A continuación se muestra una lista de todas las nuevas características de asignación de pines adicionales de Raspberry Pi 4:

GPIO - Pines de salida de entrada de uso general

Estos pines digitales se pueden programar para recibir entradas digitales o emitir una señal digital. La Raspberry Pi usa una lógica 3V3 en cada pin GPIO, lo que significa que 3V3 es un 1 digital (ENCENDIDO) y 0V es un 0 digital (APAGADO). Por lo tanto, puede conectar un componente digital a la Raspberry Pi y proporcionarle una señal 3V3 (ON) o recibir una señal digital 3V3 siempre que la corriente no sea superior a 16 mA.

I2C - Circuito interintegrado

Este es un tipo de comunicación bastante común entre dispositivos, funciona teniendo un maestro y un esclavo. El maestro en este caso es la propia Raspberry Pi y los dispositivos esclavos son periféricos de hardware que normalmente extenderían la funcionalidad de sus proyectos. Lo bueno de I2C es que puede conectar cientos de dispositivos al mismo maestro utilizando la misma interfaz de dos cables, siempre que cada dispositivo tenga una dirección I2C diferente. Puede acceder a la interfaz y ver qué dispositivos están conectados mediante el siguiente comando de Linux:

sudo i2cdetect -y 1

Donde "1" es la interfaz maestra. La Raspberry Pi 4 tiene 6 en total.

SPI:interfaz de periféricos en serie

SPI es otro tipo de protocolo de comunicación para comunicarse entre dispositivos. También utiliza una configuración maestro / esclavo, pero se usa principalmente en distancias cortas entre un controlador principal (maestro) y dispositivos periféricos (esclavos) como sensores. SPI generalmente usa 3 cables para comunicarse con la Raspberry Pi; SCLK, MOSI y MISO. Antes de usar SPI, debe habilitarlo dentro del menú de configuración de Raspberry Pi:

UART - Receptor / transmisor asíncrono universal

A diferencia de I2c y SPI, UART no es un protocolo. UART (Serie) es un circuito físico diseñado para transmitir y recibir datos en serie. UART no requiere una señal de reloj, por eso es asincrónico. Esto minimiza los cables necesarios para enviar y recibir datos, pero también requiere que se envíen algunos datos adicionales con los paquetes para la verificación de errores, como un bit de inicio y un bit de parada. Por lo general, con respecto a la Raspberry Pi, UART se usa en una configuración sin cabeza, lo que significa que no hay GUI u otra interfaz. En su lugar, puede conectar la Raspberry Pi a su computadora de escritorio / computadora portátil u otro dispositivo y comunicarse con él a través de UART utilizando la interfaz de línea de comandos. Este método es para los usuarios más avanzados, ya que requiere un poco más de conocimientos para configurarlo.

Otra aplicación, que es típica entre los usuarios de Raspberry Pi, es conectar una placa Arduino UNO a la Raspberry Pi, ya que la Pi tiene una funcionalidad analógica limitada.


Proceso de manufactura

  1. Introducción a la comunicación digital
  2. Flujo de datos
  3. Comunicación de datos ópticos
  4. Consideraciones prácticas - Comunicación digital
  5. Alcance de comunicación inalámbrica
  6. Comprender el UART
  7. Comunicación MQTT entre NodeMCU y Raspberry Pi 3 B +
  8. La integración de los datos del sensor con el microprocesador Raspberry Pi
  9. Comunicación de Arduino I2C con Raspi 2 WIOT
  10. M2M o comunicación máquina a máquina, ¿qué es?
  11. Un amplificador único podría cambiar la comunicación óptica