Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Настройка UART-коммуникации между Raspberry Pi 4 и HiFive1

В этой лабораторной работе вы настроите надежные UART-линки между Raspberry Pi 4 и HiFive1, запрограммируете HiFive1 на эхо принятых данных и создадите Python-скрипт на Pi для передачи углов руления на плату.

Часть 0: Включение UART на Raspberry Pi 4

Pi 4 имеет четыре UART-контроллера. Для упражнения используем uart2 и uart3. Добавьте в /boot/config.txt и перезагрузите:

dtoverlay=uart2,115200
dtoverlay=uart3,115200

После перезагрузки будут доступны устройства /dev/ttyAMA1 (uart2) и /dev/ttyAMA2 (uart3).

Подключите платы так:

С Pi доступ к этим каналам через /dev/ttyAMA1 (отправка на HiFive1) и /dev/ttyAMA2 (прием консоли HiFive1).

Часть 1: Программирование HiFive1

На вашем ПК (не на Pi) скачайте скелет проекта:

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

Добавьте папку l10-interrupt в рабочее пространство VSCode. Цель: читать данные из UART1, эхать на UART0 и печатать результат в консоль.

Краткий алгоритм:

while (1) {
  if (ser_isready(1)) {
    char data = ser_read(1);
    ser_write(0, data);
    ser_printline(0, "Received: "); /* скорректируйте форматирование */
  }
}

Serial API определен в 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);

Помните: devid = 0 выбирает UART0, devid = 1 — UART1. Функция ser_isready проверяет регистр UART IP на наличие ожидающих данных:

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

После компиляции и прошивки переключитесь на Pi и откройте два терминала:

Введите любую строку в терминале отправителя; та же строка должна появиться в терминале отладки, подтверждая корректную работу.

Часть 2: Python-скрипт на Raspberry Pi 4

Вместо ручных терминалов напишите Python-программу, которая:

Пример скелета с pySerial:

import serial
import time
import cv2 # или ваш камерный интерфейс

# Открытие последовательных портов
ser1 = serial.Serial('/dev/ttyAMA1', 115200, timeout=1)
ser2 = serial.Serial('/dev/ttyAMA2', 115200, timeout=1)

while True:
  # Захват кадра
  frame = cv2.imread('frame.jpg') # замените на реальное чтение камеры
  # DNN-инференс
  angle = dnn_inference(frame) # float32
  # Конвертация float в 4-байтовое представление
  angle_bytes = angle.to_bytes(4, byteorder='little', signed=True)
  ser1.write(angle_bytes)
  # Опционально: чтение отладочного вывода
  debug = ser2.readline().decode().strip()
  if debug:
    print('HiFive1:', debug)
  # Контроль тайминга (например, 30 fps)
  time.sleep(1/30)

# Очистка
ser1.close()
ser2.close()

Примечание: конвертируйте float в байты перед отправкой и используйте тот же порядок байтов на HiFive1 при интерпретации значения.

Приложение: Обзор GPIO и периферии Raspberry Pi 4

Pi 4 предлагает расширенные интерфейсы I²C, SPI и UART по сравнению с оригинальными моделями Pi. Используйте команду pinout для просмотра всех пинов:

pinout

Ключевые периферийные интерфейсы:

Для детальной конфигурации обратитесь к официальной документации Raspberry Pi: Config‑txt Guide.

Производственный процесс

  1. Основы цифровой связи: от теории к практической реализации
  2. Понимание направлений передачи данных: от симплекса к полнодуплексной связи
  3. Оптическая передача данных: использование света для высокопропускной, помехонепроницаемой передачи
  4. Детерминизм и отказоустойчивость: ключевые принципы проектирования промышленных сетей управления
  5. Мастерство дальности беспроводной связи: как мощность, скорость данных и интерференции формируют связность
  6. Бесшовная MQTT интеграция: NodeMCU DHT22 сенсоры с Raspberry Pi 3 B+ как брокер
  7. Интеграция данных сенсоров в Raspberry Pi: практическое руководство
  8. Бесшовная I2C-интеграция Arduino и Raspberry Pi 2 для IoT-проектов с датчиками
  9. M2M (Machine-to-Machine) коммуникация: что это и почему это важно
  10. Революционный компактный оптический усилитель обещает бесшумовую космическую и волоконную связь