Перехват UART между двумя устройствами
- Войдите на сайт для отправки комментариев
Добрый день!
Столкнулся с задачей, дано:
Контроллер электромотора для велосипеда у которого есть UART к которому можно присоединить Bluetooth адаптер.
Есть BT адаптер
Есть китайский софт (приложение под Ios/Android), который коннектится через BT к контроллеру и снимает показания (скорость, заряд батареи и тп и тд), а так же при необходимости изменяет настройки контроллера.
Я не хочу пользоваться BT адаптером, а хочу подсоединить контроллер мотора к Ардуино. Подсоединить UART не сложно и тут вопросов не возникает проблема, которую китайские производители по какой-то причине не хотят/ не могут помочь мне решить - это как "приложение" общается с контроллером, какие пакеты передает/принимает, какие команды использует ((((
В связи с чем возникла у меня идея, может быть можно взять DUE или MEGA (с несколькими UART), на один посадить контроллер, на другой BT адаптер. Ардуино будет просто транслировать все данные с одного UART на другой попутно логируя все что происходит.
Как вы думаете, сработает? И если да, то как лучше всего организовать ретрансляцию с одного UART на другой, хватит ли банального:
if(Serial1.available()) Serial2.print((char)Serial1.read()); else if(Serial2.available()) Serial1.print((char)Serial2.read());
Заранее всем благодарен за помощь.
Так попробуй и нам расскажешь.
В вашем примере надо, как минимум, использовать не print а write.
Не понятно зачем транслировать, если можно просто читать - что передается по RX и TX не влияя на передаваемые данные?
В вашем примере надо, как минимум, использовать не print а write.
Не понятно зачем транслировать, если можно просто читать - что передается по RX и TX не влияя на передаваемые данные?
Не подскажите как ?
хватит ли банального:
Заранее всем благодарен за помощь.
А какой в этом смысл? Где логирование?
Ну, опять же, не print, а write.
И читать можно прямо в параллель - без всякой трансляции.
В общем, непонятно, зачем все эти сложности.
хватит ли банального:
Заранее всем благодарен за помощь.
А какой в этом смысл? Где логирование?
Ну, опять же, не print, а write.
И читать можно прямо в параллель - без всякой трансляции.
В общем, непонятно, зачем все эти сложности.
Ну, в коде я не описывал логирование - так как этот процесс для меня более менее ясен.
И я не большой профессионал в ардуино, поэтому если вам будет не сложно, могли бы вы более подробно описать как читать прямо в параллель ?
спасибо
Некоторые размышления.
Первым делом надо будет определить скорость передачи 9600 или .....
В случае трансляции - тут более понятно. Если "велосипед" правильно реагирует на команды и дает адекватные ответы, значит скорость угадали. Но теоретически возможно и что нибудь испортить работая на не правильной скорости.
Если просто перехватывать передаваемые данные, то как узнать, что скорость выбрана правильная - так сразу не скажу. Но зато почти наверняка не навредим.
И я не большой профессионал в ардуино, поэтому если вам будет не сложно, могли бы вы более подробно описать как читать прямо в параллель ?
А какое именно из двух слов непонятно: "читать" или "в параллель"?
Соединяете контроллер велосипеда с Bluetooth по UART и подсоединяете дополнительно один контакт разъема UART к RX1 (например) а второй к RX2 вашей ардуино. (и не забыть соединить GND). Т.е на вашей ардуино должно быть три COM порта, два для слушанья, и один для связи с компом.
Соединяете контроллер велосипеда с Bluetooth по UART и подсоединяете дополнительно один контакт разъема UART к RX1 (например) а второй к RX2 вашей ардуино. (и не забыть соединить GND). Т.е на вашей ардуино должно быть три COM порта, два для слушанья, и один для связи с компом.
О! Теперь пазлики сошлись у меня в голове.
Спасибо огромное. Буду пробовать