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

Межплатное общение

В этой лабораторной работе вы установите каналы связи на основе UART между платами Pi 4 и HiFive 1.

Часть 0:Настройка соединений UART (для ТА)

В этой части мы подключим платы HiFive1 и Raspberry Pi 4 через два канала UART.

(Обратите внимание, что этот шаг будет выполнен техническими специалистами.)

Pi 4 имеет 4 UART, и мы будем использовать два из них (uart2 и uart3). Добавьте следующую строку в конец файла /boot/config.txt, чтобы включить uart2 и uart3.

dtoverlay =uart2,115200 dtoverlay =uart3,115200

После перезагрузки системы будут созданы / dev / ttyAMA1 и / dev / ttyAMA2.

Подключите HiFive UART1 RX (контакт 7) к Raspberry Pi 4 UART2 TX (контакт 27). Это основная линия связи между Pi 4 и HiFive1. С Pi 4 вы можете получить доступ к каналу через / dev / ttyAMA1.

Для отладки HiFive 1 подключите HiFive1 UART0 TX (контакт 1) к UART3 RX Pi 4 (контакт 29). С Pi 4 к нему можно получить доступ через / dev / ttyAMA2.

Таким образом, вы сможете получить доступ к следующим двум файлам с Pi 4.

/ dev / ttyAMA1 Pi 4 → HiFive1:отправить угол поворота в HiFive1 (uart1).

/ dev / ttyAMA2 HiFive1 → Pi 4:получение вывода консоли HiFive1 (uart0)

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

В этой части лабораторной работы вы запрограммируете HiFive1 на получение данных от Pi 4.

На вашем компьютере (не Pi 4), загрузите скелет проекта следующим образом.

$ Cd ~ / Documents / PlatformIO

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

$ Tar zxvf l10-comm.tar.gz

Добавьте папку прерывания l10 в рабочее пространство VSCode.

Ваша задача - получить данные из канала UART1 HiFive1 и отправить полученные данные в канал UART0. Ниже приводится примерный псевдокод . задачи.

в то время как (1) {

if (готов ли UART1?) {данные =считываются из UART1. распечатать данные в UART0.

}

} Для реализации задачи вам может потребоваться использовать предоставленный последовательный API, показанный ниже. Обратите внимание, что для доступа к UART0 значение devid равно 0, а для доступа к UART1 - 1.

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

В частности, вам может потребоваться использовать функцию ser_isready (), чтобы проверить, есть ли на данном канале UART ожидающие чтения данные. Чтобы лучше понять, что делают функции, проверьте файлы eecs388_lib.h и eecs388_lib.c.

int ser_isready (int devid)

{

uint32_t regval =* (изменчивый uint32_t *) (UART_ADDR (devid) + UART_IP); return regval;

}

Закончив программировать HiFive1, переключитесь на Raspberry Pi 4 . и откройте два терминала:один для отправки данных на HiFive1, а другой для просмотра вывода отладочного сообщения с HiFive1.

Терминал отправителя (term1)

$ Screen / dev / ttyAMA1 115200

Терминал отладки (term2)

$ Screen / dev / ttyAMA2 115200

Теперь введите любые строки в "term1".

Если вы правильно запрограммировали HiFive 1, вы должны увидеть сообщение, исходящее от терминала «term2».

Часть 2:Программирование Raspberry Pi 4.

Вместо использования терминалов вы теперь запускаете программу Python на Pi 4 для связи с HiFive1. Ваша задача - расширить dnn.py из предыдущей лабораторной работы, чтобы иметь возможность отправлять выходные данные управления на последовательный канал / dev / ttyAMA1. Следующий псевдокод дает общее представление об изменениях, которые вам необходимо внести в dnn.py:

Открытие последовательных подключений к / dev / ttyAMA1 и / dev / ttyAMA2 пока True:

image =camera.read ()

angle =dnn_inference (изображение) Запишите «угол» в / dev / ttyAMA1 Wait_till_next_period ()

Закройте последовательные соединения

Чтобы реализовать описанные выше функции, вам необходимо использовать Python pySerial API, который можно использовать, импортировав последовательный пакет:

импортный серийный

С его помощью вы должны создать два отдельных последовательных канала, один для записи на HiFive1 через

/ dev / ttyAMA1 и еще один для отладки через / dev / ttyAMA2. Обратите внимание, что оба канала должны быть открыты со скоростью 115200 бит / с.

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

Углы, полученные от DNN, когда он обрабатывает кадры, затем могут быть отправлены на HiFive1 с помощью функции последовательной записи ():

ser1.write (…)

Однако для write () требуется байтовое значение, в то время как угол, создаваемый DNN, является значением float32, поэтому вам придется преобразовать данные угла, чтобы отправить их в HiFive1. Наконец, после того, как все кадры обработаны, последовательные соединения можно закрыть, вызвав функцию serial close ():

ser1.close () ser2.close ()

Приложение


Отображение GPIO для Pi 4.

Распиновка Raspberry Pi 4

Мало того, что Raspberry Pi 4 наполняется новыми аппаратными функциями, под капотом есть некоторые дополнительные функции GPIO, которые немного облегчают жизнь, позволяя пользователям расширять свои периферийные устройства для своих проектов без необходимости в дополнительном оборудовании. Интерфейсы I2C, UART и SPI, которые можно использовать на Raspberry Pi 4.

Распиновка GPIO

Вы можете найти полный список выводов GPIO на самом Raspberry PI 4, просто перейдите в командную строку и введите pinout .

Ниже приведен список всех новых дополнительных функций распиновки Raspberry Pi 4:

GPIO - контакты ввода-вывода общего назначения

Эти цифровые выводы можно запрограммировать для приема цифровых входов или вывода цифрового сигнала. Raspberry Pi использует логику 3V3 на каждом выводе GPIO, что означает, что 3V3 - это цифровая 1 (ВКЛ), а 0V - это цифровой 0 (ВЫКЛ). Поэтому вы можете подключить цифровой компонент к Raspberry Pi и либо подать на него сигнал 3V3 (ВКЛ), либо получить цифровой сигнал 3V3 при условии, что ток не превышает 16 мА.

I2C - Межинтегральная схема

Это довольно распространенный тип связи между устройствами, он работает при наличии ведущего и ведомого. В этом случае ведущим устройством является сам Raspberry Pi, а ведомыми устройствами - это аппаратная периферия, которая обычно расширяет функциональность ваших проектов. В I2C замечательно то, что вы можете подключать сотни устройств к одному и тому же мастеру, используя один и тот же двухпроводной интерфейс, при условии, что каждое устройство имеет свой адрес I2C. Вы можете получить доступ к интерфейсу и посмотреть, какие устройства подключены, используя следующую команду Linux:

sudo i2cdetect -y 1

Где «1» - это главный интерфейс. Всего у Raspberry Pi 4 их шесть.

SPI - последовательный периферийный интерфейс

SPI - это еще один тип протокола связи между устройствами. Он также использует настройку ведущий / ведомый, но в основном используется на небольших расстояниях между основным (ведущим) контроллером и периферийными устройствами (ведомыми), такими как датчики. SPI обычно использует 3 провода для связи с Raspberry Pi; SCLK, MOSI и MISO. Перед использованием SPI вам необходимо включить его в меню конфигурации Raspberry Pi:

UART - универсальный асинхронный приемник / передатчик

В отличие от I2c и SPI, UART не является протоколом. UART (последовательный) - это физическая схема, предназначенная для передачи и приема последовательных данных. UART не требует тактового сигнала, поэтому он асинхронный. Это сводит к минимуму количество необходимых проводов для отправки и получения данных, но также требует, чтобы некоторые дополнительные данные отправлялись с пакетами для проверки ошибок, такие как стартовый бит и стоповый бит. Как правило, что касается Raspberry Pi, UART используется в автономной настройке, что означает отсутствие графического интерфейса или другого интерфейса. Вместо этого вы можете подключить Raspberry Pi к своему настольному / портативному компьютеру или другому устройству и общаться с ним через UART с помощью интерфейса командной строки. Этот метод предназначен для более опытных пользователей, поскольку для его настройки требуется немного больше знаний.

Еще одно типичное приложение для пользователей Raspberry Pi - подключение платы Arduino UNO к Raspberry Pi, поскольку аналоговая функциональность Pi ограничена.


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

  1. Введение в цифровую коммуникацию
  2. Поток данных
  3. Оптическая передача данных
  4. Практические соображения - цифровая коммуникация
  5. Диапазон беспроводной связи
  6. Связь MQTT между NodeMCU и Raspberry Pi 3 B +
  7. Интеграция данных датчика с микропроцессором Raspberry Pi
  8. Связь Arduino I2C с Raspi 2 WIOT
  9. M2M или межмашинное взаимодействие, что это такое?
  10. Уникальный усилитель может изменить оптическую связь