Как организовать обмен данными между Ардуино и ПК

R3EZ
Offline
Зарегистрирован: 15.11.2018

     Имеется поворотное устройство антенны, использующее резистивный датчик угла (азимута). Выходное напряжение  датчика аппаратно преобразуется в импульсы, частота которых изменяется в зависимости от угла поворота. Этот сигнал обрабатывается программой на компьютере. Программа отображает текущий азимут, а также выдает команды на двигатель для вращения в ту или или иную сторону. Так задумано автором программы. Программа взаимодействует с поворотным устройством через небольшую плату управления по интерфейсу RS-232. Такое преобразование можно сделать и на Ардуино, встроив его внутрь поворотного устройства и обмениваться данными/командами по USB, используя виртуальный COM порт. Но возникает проблема двусторонней передачи данных. Дело в том, что программа использует только сигналы DTR, RTS, CTS и GND. Сигналы RXD и TXD не используются вообще. Используется полный RS-232. Обычные переходники USB-COM здесь бессильны - это выяснилось притестировании аппаратной части на ноутбуке. На стационарном компьютере с COM портом с полным кабелем все работает.  

Существует ли решение такой задачи?

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

 

 

b707
Offline
Зарегистрирован: 26.05.2017

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

R3EZ
Offline
Зарегистрирован: 15.11.2018

b707 пишет:

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

Переписать не получится, автора уже нет в живых. Однако существует другой, универсальный контроллер , разработанный американским радиолюбителем. Управляет любым поворотным устройством не только по азимуту, но и по элевации. Схемотехника базового вариана простая - контроллер, 4 кнопки управления вращением и 4 ключа для подключения реле плюс выход для управления скоростью вращения. Работает на платформах от Nano до MEGA в зависимости от хотелок (потенциометр, энкодер, цифровой компас, часы реального времени, тип дисплея и еще куча возможностей). Скетч соответствующего размера плюс библиотеки. Каждый выбирает нужное для себя, остальное в комменты. Так что буду потихоньку разбираться.

ata3d
Offline
Зарегистрирован: 24.05.2017

сигналы DTR, RTS, CTS управляющие, а информация идет по RXD и TXD.  Тут есть пример как соединить порты, а DTR, RTS, CTS на мой взгляд не так сложно управлять програмно, пример.

R3EZ
Offline
Зарегистрирован: 15.11.2018

ata3d пишет:

сигналы DTR, RTS, CTS управляющие, а информация идет по RXD и TXD.  Тут есть пример как соединить порты, а DTR, RTS, CTS на мой взгляд не так сложно управлять програмно, пример.

Все это известно, но чтобы не вводить в заблуждение даю ссылку на описание http://logger32.qrz.ru/gs232v/

Автор данного девайса не использовал сигналы RXD и TXD, а функция передачи данных Ардуино Serial использует только их и не поддерживает никаких других сигналов. В этом и заключается вся проблема. Программу автора, на которую сослался, переделать под USB уже невозможно. Поэтому придется заняться другой конструкцией, правда скетч занимает объем более 500 кбайт, а с библиотеками более 800. И надо будет все подстраивать под свои желания и возможности  железа (то есть включать только те части скетча, которые мне нужны).

ata3d
Offline
Зарегистрирован: 24.05.2017

Если не используются сигналы RXD и TXD, то это не RS232, а некий самопальный интерфейс с неизвестным протоколом. Тут только анализ с помощью логического анализатора и разгадка протокола. Проще все переделать по новому, я думаю.  

ps поторопился я с ответом, изучу ссылку.

 

R3EZ
Offline
Зарегистрирован: 15.11.2018

ata3d пишет:

Если не используются сигналы RXD и TXD, то это не RS232, а некий самопальный интерфейс с неизвестным протоколом. Тут только анализ с помощью логического анализатора и разгадка протокола. Проще все переделать по новому, я думаю.  

Вот тут Вы   абсолютно правы. Это действительно самопал. Поэтому и решил переключиться на этот проект: https://github.com/k3ng/k3ng_rotator_controller

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