Вставка себя в серийную связь

Мне поручен проект, связанный с Arduino и Raspbery PI. У меня большой опыт работы с Arduino и 0 с Raspbery или Linux. Человек, который работает, уволился, и есть некоторые проблемы, которые мне нужно начать отлаживать.

Проект включает в себя управление вводом и выводом с помощью Arduino, а также сенсорный экран и приложение SMS в Raspbery. Они подключаются к стандартному последовательному порту через USB.

Я хочу прочитать это сообщение на моем ПК-терминале. Какой самый простой способ вставить себя, ничего не изменяя в Raspbery?

, 👍1

Обсуждение

Что за Ардуино?, @Majenko

Непонятно, кто ведет речь. Только то, что связь осуществляется через USB. Итак, самый простой ответ - использовать анализатор протокола шины USB. Большинство из них стоят сотни долларов., @st2000

Если вы используете Arduino без встроенной поддержки USB, вы можете использовать контакты RX и TX, которые подключены к последовательному чипу USB (некоторые платы Arduino имеют несколько последовательных интерфейсов, поэтому вам нужно подключиться к правильному)., @chrisl

@Маженко Ардуино Мега2560, @Affaltar

@st2000 Raspbery отправляет команды и ожидает на них ответ, а Arduino регулярно (каждые 300 мс) отправляет отчет о состоянии, @Affaltar

@chrisl Могу ли я просто добавить еще одну пару проводов к используемым контактам RX и TX и читать их без перерыва?, @Affaltar


3 ответа


Лучший ответ:

0

Как указано в комментариях st2000, подключение к USB — сложная задача и, конечно, не лучший вариант.

Возможно, есть программа для Raspbian, которая передает последовательные данные в 2 программы одновременно. (Я не знаю ни одного, и это было бы не по теме здесь)

Поэтому лучше всего использовать последовательную (UART) связь между чипом USB-Serial (который преобразует USB в реальный последовательный UART) и Atmega2560 (основной чип Arduino Mega). Чтение серийного номера (UART) — полностью пассивное действие. Вы не нарушаете общение с ним; только если вы попытаетесь отправить что-то со своего прослушивающего устройства. Mega использует первый последовательный интерфейс для связи через USB, а это означает, что вам нужно подключить контакты 0 и 1 (помеченные TX и RX).

Теперь о прослушивающем устройстве: здесь у вас есть несколько возможностей. Вы можете использовать контакты RX двух других ардуино или двух адаптеров USB-UART. Но я бы предложил сразу купить логический анализатор. Это небольшое USB-устройство, которое позволяет отображать цифровые сигналы (например, последовательную связь) на вашем ПК. Я использую один с программным обеспечением Pulseview. Он также может анализировать цифровой сигнал для различных протоколов связи, например UART. С помощью логического анализатора вы достигнете своей цели — прослушивания последовательной связи, но у вас также будет очень мощный инструмент для ваших будущих проектов Arduino (с его помощью вы сможете анализировать все виды цифровых сигналов). Они довольно дешевы (у меня есть один с небольшими зажимами, чтобы прикрепить его к цепи примерно за 15 евро).

В конце концов, вам решать, каким путем вы хотите пойти и что вы хотите купить.

,

1

Если все, что вы хотите сделать, это следить за тем, что происходит, вы можете взять пару адаптеров USB-UART и подключить контакт RX каждого к Arduino — один к контакту RX, чтобы увидеть, что получает Arduino, и один к контакту TX, чтобы увидеть, что передает Arduino.

Затем вам нужно открыть оба COM-порта в отдельных приложениях (если только вы не найдете приложение, позволяющее открывать оба вместе), чтобы увидеть, что проходит через каждый канал.

,

2

Возможно, вы сможете прослушивать сообщения от самого Raspberry Pi, без дополнительного оборудования. Предполагая, что программа на Pi может быть настроена использовать последовательный порт отличный от /dev/ttyACM0, программа могла создать пару псевдотерминалов, затем переслать данные обратно и между /dev/ttyACM0 и главным псевдотерминалом, а протоколирование всего. Если вы укажете свое приложение Pi на подчиненное устройство псевдо-терминал, у вас есть регистратор «человек посередине»:

Arduino --(/dev/ttyACM0)-- logger --(pseudo-tty)-- application

Что интересно в ведомом псевдотерминале, так это то, что касается приложения, оно ведет себя точно как обычный серийный порт.

Кажется, у этой идеи довольно много реализаций. См. ответы на эти другие вопросы по обмену стеками:

  • Как я могу отслеживать трафик последовательного порта?
  • Прослушивание последовательного порта в Linux

Например, файл README interceptty указывает:

interceptty предназначен для размещения между последовательным портом (или другим терминальное устройство, или программа, или сокет, или что-то связанное с файловый дескриптор) и программа, которая взаимодействует с этим устройство, записывая все, что происходит между ними. Он делает это, открывая реальное устройство, создавая псевдотерминал, а затем пересылает все, что находится между ними, записывая все, что видит.

,