Вопросы взаимодействия с ардуино по COM порту.

itjunky
Offline
Зарегистрирован: 15.09.2014

Приветсвую вас, ардуино-поклонники ;) Сам не так давно примкнул к вашим рядам. По большей части инфа легко находится в сети. Но иногда всё-таки возникают вопросы, которые не всегда имеют очевидное решение.

 

Я заметил странное при подключении к работающей ардуинке по COM порту. Обычно инициализация соединениея вызывает процесс схожий с ресетом контроллера. То есть начинают неистово моргать лампочки, а релюшки вдруг сбрасываются в дефолтное положение(надо бы ещё провести эксперимент со счётчиками, может они тоже сбрасываются в этот момент).

Такое поведение очень не желательно в режиме наблюдения или контроля за беспрерывными процессами, таким как рост растений. Для них включение света посреди ночи или его отключение посреди дня, является стрессом. И в случае, когда я хочу раз в минуту запрашивать данные с контроллера в комп, но при этом не хочу держать постоянно открытым соединение, я получаю ежеминутное моргание релюшек, а как следствие и света. 

Кто знает как избежать такого эффекта? Возможно необходимо как-то иначе проводить инициализацию ком-порта или есть другие меры?

 

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

NeiroN
NeiroN аватар
Offline
Зарегистрирован: 15.06.2013

Да это верно - ресет подключен к DTR выводу порта(для удобства прошивки).  Вам необходимо разрезать дорожку в специальном месте, може даже припаять туда контакты для установки перемычки - для прошивки понадобится восстановить дорожку или жать ресет в нужный момент.

itjunky
Offline
Зарегистрирован: 15.09.2014

Уххх, блин... А можно же, наверное, вывести эту перемычку на GPIO Raspberry pi чтобы ресетить только в момент перепрошивки?

JollyBiber
JollyBiber аватар
Offline
Зарегистрирован: 08.05.2012

Разницы чем замыкать дорожку никакой.

У Вас шьтся Дуня в автоматическом режиме? В чем прикол подключать к малине?

itjunky
Offline
Зарегистрирован: 15.09.2014

Малина выступает в качестве сервера для опроса датчиков, сохранения этой и другой инфы(например фотки с веб-камеры), а так же для дальнейшей трансляции собранного в интернетики и для удалённого управления. Поскольку проект ещё на стадии разработки, то прошивать дуню надо с завидной регулярностью, а приезжать каждый раз в место дислокации, когда возникла новая идея о том как и на что реагировать,  как-то накладно. Хочется сделать узел полностью автономным, даже на случай потери связи по сети, но это уже есть бай дизайн, а вот обновление ПО и выгрузка статистических данных пока не автоматизированы до такой степени, эту проблему и пытаюсь сейчяас решить.

Кстати, о сборе данных на комп. Заметил шнягу шняжную =( говноокна номер семь ведут себя крайне не стабильно при соединении по COM-порту. В частности у меня букафки прилетали в монитор порта не более часа. После чего утройтво приходилось вынимать из USB чтобы комп вновь начинал его видеть. Полнейший бред =( И ладно бы это было на всех ОС. Но довольно просто проверить, что с линуксами любых мастей связь вообще не теряется! На работе себе тоже завёл набор из ардуинки, пачки диодов и резисторов, и другой мелочи. Собрал читалку температуры и времени, подключил к компу и сижу мониторю порт... уже 3-ью неделю... ни единого разрыва...

Ну как такое назвать? Что будет если я захочу в процессинг перманентно читать данные с ардуины? На винде такие проекты вообще не существуют чтоли? Я, конечно, рад что в серверных и надёжных операционках общение с ком-портом тоже надёжно. Но хочется ещё и какой-нить умный дом с простым интерфейсом под вантус.... Хотя пока пишу это понимаю, что на вантусе только банкоматы с терминалами оплаты живут, а умный дом можно и на той же малинке сделать с линуксовой прошивкой. Получается над виндузоидами можно только посмеяться или посочувствовать не возможности сделать проект с длительным взаимодействием ардуинки с писюком...

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Блин, сколько много малосвязаных слов. Вот он какой, словесный понос.

gena
Offline
Зарегистрирован: 04.11.2012

  Не надо резать дорожку идущую на  RESET. Попробуйте между выводом RESET и GND устанавливать электролитический конденсатор на 10 мкФ. Он должен блокировать сигнал RESET. При заливке скетча в плату, конденсатор отключать.

leshak
Offline
Зарегистрирован: 29.09.2011

"Ох уж эти хирурги, все-бы им резать да резать..."

Взять любую плату на 32u4. Leonardo, pro micro и т.п. - они не ребутаются при подключении открытии ком.порта.

Да и с обычными платами - тоже можно.

Просто пользоваться не дефолтными терминалами в ArduinoIDE, а поискать более продвинутую терминальную программу. У которой можно в настройках выставить не трогать DTR линию при открытии ком.порта.

 

 

JollyBiber
JollyBiber аватар
Offline
Зарегистрирован: 08.05.2012

itjunky пишет:

Малина выступает в качестве сервера для опроса датчиков, сохранения этой и другой инфы(например фотки с веб-камеры), а так же для дальнейшей трансляции собранного в интернетики и для удалённого управления.

А зачем тогда Дуня???

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

JollyBiber пишет:

А зачем тогда Дуня???


ну ты и вопросы задаешь. Помягче с пациентами. Ты бы еще спросил зачем во всей этой связке компьютер.
А голова у ТС для того чтобы в нее есть.

itjunky
Offline
Зарегистрирован: 15.09.2014

Я использую не дефолтные терминал ардуино, а библиотеку pyserial для распберри. Кроме того есть ещё всякие терминалы никсовые типа minicom во всех поведеение одинаковое. И нигде я не видел ничего про "не трогать DTR линию"

itjunky
Offline
Зарегистрирован: 15.09.2014

JollyBiber пишет:

itjunky пишет:

Малина выступает в качестве сервера для опроса датчиков, сохранения этой и другой инфы(например фотки с веб-камеры), а так же для дальнейшей трансляции собранного в интернетики и для удалённого управления.

А зачем тогда Дуня???

К крдуино подключены сенсоры и релейный шилд. Оно в конечном итоге должно жить самостоятельно. Но пока ничего не натроиено и производится отладка, необходимо логгировать все показания, а затем анализировать. Кроме того при появлении новых идей нужно менять код прошивки ардуины. Но ставить для этого целый комп или ноутбук, глупо. А вот малинка для этого подходит идеально. На момент разработки системы она логгирует и предоставляет интерфейс к ардуино. По завершении этого процесса, вероятно будет куплен какой-нить EEPROM или слот для sd карты, куда будет логгироваться только то что необходимо для принятия решений, а прошивать новое в ардуинку уже не надо будет.

JollyBiber
JollyBiber аватар
Offline
Зарегистрирован: 08.05.2012

А почему просто малину не оставить? Разницы в цене нет практически, может больше.

itjunky
Offline
Зарегистрирован: 15.09.2014

Да, я думал над этим. Но есть более просты проекты, которые буду делать на одной ардуинке. А конкретно этот возможно и переведу на GPIO. Но пока хочу закончить его в таком виде.

В том же умном доме практически всегда есть сам контроллер датчиков и ИУ, а так же что-то вроде планшета или миниписюка для того чтобы обеспечивать человечный интерфейс управления.

KBSH
Offline
Зарегистрирован: 21.05.2014

leshak пишет:

Взять любую плату на 32u4. Leonardo, pro micro и т.п. - они не ребутаются при подключении открытии ком.порта.

Просто пользоваться не дефолтными терминалами в ArduinoIDE, а поискать более продвинутую терминальную программу. У которой можно в настройках выставить не трогать DTR линию при открытии ком.порта.

 

Подскажите как правильно заливать скетч на Pro Micro, а то везде по-разному говорят (то один раз reset, то два раза надо). Я пробовал залить простой скетч мигания индикатора: нажимаю сначала в проге "Загрузить" и сразу зажимаю Reset (не отпуская его!). Идет компиляция, когда появляется надпись "загрузка" отпускаю Reset. В диспетчере устройств вижу появившийся новый Сом-порт, потом программа сообщает что все загрузилось. Но! Индикатор не мигает, а горят оба постоянно.

sandr4
sandr4 аватар
Offline
Зарегистрирован: 11.02.2015

KBSH пишет:

leshak пишет:

Взять любую плату на 32u4. Leonardo, pro micro и т.п. - они не ребутаются при подключении открытии ком.порта.

Просто пользоваться не дефолтными терминалами в ArduinoIDE, а поискать более продвинутую терминальную программу. У которой можно в настройках выставить не трогать DTR линию при открытии ком.порта.

 

Подскажите как правильно заливать скетч на Pro Micro, а то везде по-разному говорят (то один раз reset, то два раза надо). Я пробовал залить простой скетч мигания индикатора: нажимаю сначала в проге "Загрузить" и сразу зажимаю Reset (не отпуская его!). Идет компиляция, когда появляется надпись "загрузка" отпускаю Reset. В диспетчере устройств вижу появившийся новый Сом-порт, потом программа сообщает что все загрузилось. Но! Индикатор не мигает, а горят оба постоянно.

   При заливке скетча, как только начнут мигать светики RX TX на USB-TTl через который шьете, жмите RESET один раз, и все зальется.