Как организовать обмен данными между Ардуино и ПК
- Войдите на сайт для отправки комментариев
Имеется поворотное устройство антенны, использующее резистивный датчик угла (азимута). Выходное напряжение датчика аппаратно преобразуется в импульсы, частота которых изменяется в зависимости от угла поворота. Этот сигнал обрабатывается программой на компьютере. Программа отображает текущий азимут, а также выдает команды на двигатель для вращения в ту или или иную сторону. Так задумано автором программы. Программа взаимодействует с поворотным устройством через небольшую плату управления по интерфейсу RS-232. Такое преобразование можно сделать и на Ардуино, встроив его внутрь поворотного устройства и обмениваться данными/командами по USB, используя виртуальный COM порт. Но возникает проблема двусторонней передачи данных. Дело в том, что программа использует только сигналы DTR, RTS, CTS и GND. Сигналы RXD и TXD не используются вообще. Используется полный RS-232. Обычные переходники USB-COM здесь бессильны - это выяснилось притестировании аппаратной части на ноутбуке. На стационарном компьютере с COM портом с полным кабелем все работает.
Существует ли решение такой задачи?
PS. Сама программа, в свою очередь, взаимодействует с программой аппаратного журнала, используя виртуальную пару COM портов, соединенных виртуальным нуль-модемным кабелем.
на мой взгляд. самый прямой (хотя и не простой) путь - это полностью переписать программу с железного компорта на USB. Если она делает только то, что вы написали - снимает показания угла поворотаи управляет двигателем - она не должна быть сложной.
на мой взгляд. самый прямой (хотя и не простой) путь - это полностью переписать программу с железного компорта на USB. Если она делает только то, что вы написали - снимает показания угла поворотаи управляет двигателем - она не должна быть сложной.
Переписать не получится, автора уже нет в живых. Однако существует другой, универсальный контроллер , разработанный американским радиолюбителем. Управляет любым поворотным устройством не только по азимуту, но и по элевации. Схемотехника базового вариана простая - контроллер, 4 кнопки управления вращением и 4 ключа для подключения реле плюс выход для управления скоростью вращения. Работает на платформах от Nano до MEGA в зависимости от хотелок (потенциометр, энкодер, цифровой компас, часы реального времени, тип дисплея и еще куча возможностей). Скетч соответствующего размера плюс библиотеки. Каждый выбирает нужное для себя, остальное в комменты. Так что буду потихоньку разбираться.
сигналы DTR, RTS, CTS управляющие, а информация идет по RXD и TXD. Тут есть пример как соединить порты, а DTR, RTS, CTS на мой взгляд не так сложно управлять програмно, пример.
сигналы DTR, RTS, CTS управляющие, а информация идет по RXD и TXD. Тут есть пример как соединить порты, а DTR, RTS, CTS на мой взгляд не так сложно управлять програмно, пример.
Все это известно, но чтобы не вводить в заблуждение даю ссылку на описание http://logger32.qrz.ru/gs232v/
Автор данного девайса не использовал сигналы RXD и TXD, а функция передачи данных Ардуино Serial использует только их и не поддерживает никаких других сигналов. В этом и заключается вся проблема. Программу автора, на которую сослался, переделать под USB уже невозможно. Поэтому придется заняться другой конструкцией, правда скетч занимает объем более 500 кбайт, а с библиотеками более 800. И надо будет все подстраивать под свои желания и возможности железа (то есть включать только те части скетча, которые мне нужны).
Если не используются сигналы RXD и TXD, то это не RS232, а некий самопальный интерфейс с неизвестным протоколом. Тут только анализ с помощью логического анализатора и разгадка протокола. Проще все переделать по новому, я думаю.
ps поторопился я с ответом, изучу ссылку.
Если не используются сигналы RXD и TXD, то это не RS232, а некий самопальный интерфейс с неизвестным протоколом. Тут только анализ с помощью логического анализатора и разгадка протокола. Проще все переделать по новому, я думаю.
Вот тут Вы абсолютно правы. Это действительно самопал. Поэтому и решил переключиться на этот проект: https://github.com/k3ng/k3ng_rotator_controller
Скетч как бы универсален для всех описанных возможностей контроллера. В нем собрано все в одном месте и надо включать только те части программы, которые нужны, ну и исходя из возможностей аппаратной части (типа поворотного устройства, дисплея, задатчика и т.п.).