Форум обсуждения систем  

Вернуться   Форум обсуждения систем "Умный дом", проектов Ардуино, OpenWRT и других DIY устройств > Форум умного дома > Сделай сам > OpenWRT/LEDE

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 23.10.2014, 02:04   #1
borey
Member
 
Регистрация: 25.10.2013
Сообщений: 80
Вес репутации: 0
borey is an unknown quantity at this point
По умолчанию Одновременные чтение/запись в/из Arduino на /dev/ttyUSB

Здравствуйте,

Подскажите, плз, куда копать. Задача - Arduino подключен к /dev/ttyUSB0.

В скетче сказано, что периодически (по таймеру или по событиям) arduino должен вывести в Serial некие строки с данными.

Эти данные нужно получить в OpenWRT и передать на сервер (пока смотрю на обычный wget, в будущем, наверное, буду отправлять через MQTT pub).

Кроме этого, периодически получая задания с сервера (сейчас - wget, потом - MQTT sub), "демон" на OpenWRT должен передавать их на arduino (в /dev/ttyUSB0).

Почему-то не работает ((

Делаю так:

1. "слушатель" (arduino -> openwrt), пока - просто debug-версия (выводит на экран SSH все, что получил):

Код:
#!/bin/sh
stty -F /dev/ttyUSB0 raw speed 9600 -hupcl
while read i; do
        echo "LINE:$i"
done </dev/ttyUSB0
При запуске, сразу вываливает в консоль приветственную строку INIT от arduino-скетча, иногда выдает еще пару-тройку строк по таймеру от него же, но потом почему-то зависает (отваливается или засыпает?)..

2. для тестирования отправки что-нибудь на arduino я использую такой тест-скрипт:

Код:
#!/bin/sh
stty -F /dev/ttyUSB0 raw speed 9600 -hupcl
echo "test string in a special format" > /dev/ttyUSB0
В ответ на строку "test string in a special format" arduino должен ответить (отвечает при работе с монитором порта в arduino IDE), но тут почему-то молчит..

Что я не так делаю?
Может, есть у кого успешный опыт в реализации подобной задачи? Как делали?

Заранее благодарю.
borey вне форума   Ответить с цитированием
Старый 23.10.2014, 05:03   #2
stD
Senior Member
 
Аватар для stD
 
Регистрация: 02.04.2012
Адрес: Питер
Сообщений: 1,125
Вес репутации: 1311
stD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant future
По умолчанию Re: Одновременные чтение/запись в/из Arduino на /dev/ttyUSB

не плохо бы и скетч показать.
stD вне форума   Ответить с цитированием
Старый 23.10.2014, 12:10   #3
borey
Member
 
Регистрация: 25.10.2013
Сообщений: 80
Вес репутации: 0
borey is an unknown quantity at this point
По умолчанию Re: Одновременные чтение/запись в/из Arduino на /dev/ttyUSB

Так, не в скетче дело - на компьютер-то вываливает/принимает без проблем (тем же мониторингом порта из IDE или putty).

Скетч большой и вывод там "без приблуд" - стандартным Serial.print
borey вне форума   Ответить с цитированием
Старый 23.10.2014, 17:30   #4
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9821
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Re: Одновременные чтение/запись в/из Arduino на /dev/ttyUSB

socat или ser2net не подойдут?
Admin вне форума   Ответить с цитированием
Старый 23.10.2014, 18:18   #5
borey
Member
 
Регистрация: 25.10.2013
Сообщений: 80
Вес репутации: 0
borey is an unknown quantity at this point
По умолчанию Re: Одновременные чтение/запись в/из Arduino на /dev/ttyUSB

Admin, спасибо за отклик.

Насколько я понял, ser2net пробрасывает порт, что не совсем то - т.к. по планам сервер просто складывает данные, приходящие в формате некого API.

Преобразование (из формата arduino-устройства в формат этого API) должно производиться openwrt.

Да и вообще, ser2net, думаю, хорош для удаленного руления железкой в формате точка-точка ("один к одному"), а тут речь о "многие к одному".. Или я неправильно понял суть ser2net?

По поводу socat - не имел еще с ним дела... А он сможет работать с HTTP-GET?

Если я правильно понимаю, то socat - отличное решение, если нужно завести ввод/выод arduino на MQTT-pub/sub.

Пойду, покурю маны на socat..

Спасибо!
borey вне форума   Ответить с цитированием
Старый 23.10.2014, 19:39   #6
stD
Senior Member
 
Аватар для stD
 
Регистрация: 02.04.2012
Адрес: Питер
Сообщений: 1,125
Вес репутации: 1311
stD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant future
По умолчанию Re: Одновременные чтение/запись в/из Arduino на /dev/ttyUSB

Цитата:
В скетче сказано, что периодически (по таймеру или по событиям) arduino должен вывести в Serial
Правильнее будет сделать, чтоб не ардуина самостоятельно выдавала данные, а запрашивать эти данные у неё.
Запускайте ser2net, и в скрипте (который на роутере) запрашивайте данные у ардуины и читайте ответ.
Я у себя замечал такую штуку, что если открывать порт напрямую из скрипта (например раза три в секунду), то через некоторое время порт начинет подвисать (может что-то с буфером или с памятью), а если через ser2net делать, то всё робит.

Последний раз редактировалось stD; 23.10.2014 в 19:47.
stD вне форума   Ответить с цитированием
Старый 23.10.2014, 19:45   #7
stD
Senior Member
 
Аватар для stD
 
Регистрация: 02.04.2012
Адрес: Питер
Сообщений: 1,125
Вес репутации: 1311
stD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant futurestD has a brilliant future
По умолчанию Re: Одновременные чтение/запись в/из Arduino на /dev/ttyUSB

Скрипт можно зациклить или по крону запускать.
Как на баше скрипт писать я не знаю, у меня на пхп.
stD вне форума   Ответить с цитированием
Старый 24.10.2014, 14:51   #8
borey
Member
 
Регистрация: 25.10.2013
Сообщений: 80
Вес репутации: 0
borey is an unknown quantity at this point
По умолчанию Re: Одновременные чтение/запись в/из Arduino на /dev/ttyUSB

mebitek, огромное спасибо за дельные советы

"init" у меня - просто первое сообщение, которое ардуина вываодит в serial, "говоря", мол, "запустилась".

Что касается "запрашивать из OpenWRT данные периодически у Arduino" - боюсь, не подойдет, т.к. на arduino могут (и должны) возникать асинхронные события, сведения о которых нужно сразу передать на сервер, используя OpenWRT, как организатор HTTP/MQTT-канал.

На ПХП мне тоже было бы проще (я на нем как-то привык уже писать), но на пых мне не хватило места (принципиально отказался в свое время от подключения USB-drive, т.к. он иногда отваливался / не монтировался и все становилось очень печально).
borey вне форума   Ответить с цитированием
Старый 24.10.2014, 14:54   #9
borey
Member
 
Регистрация: 25.10.2013
Сообщений: 80
Вес репутации: 0
borey is an unknown quantity at this point
По умолчанию Re: Одновременные чтение/запись в/из Arduino на /dev/ttyUSB

Цитата:
Сообщение от mebitek Посмотреть сообщение
Правильнее будет сделать, чтоб не ардуина самостоятельно выдавала данные, а запрашивать эти данные у неё.
Запускайте ser2net, и в скрипте (который на роутере) запрашивайте данные у ардуины и читайте ответ.
Я у себя замечал такую штуку, что если открывать порт напрямую из скрипта (например раза три в секунду), то через некоторое время порт начинет подвисать (может что-то с буфером или с памятью), а если через ser2net делать, то всё робит.
Правильно я понимаю, что ser2net в данном случае пробрасывает USB-COM (/dev/ttyUSBx, где ардуино) на некий сервер в интернет по TCP? Мне-то нужно преобразовать данные от arduino в стандартный HTTP-пакет для удаленного веб-сервера.
borey вне форума   Ответить с цитированием
Старый 24.10.2014, 14:56   #10
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,616
Вес репутации: 9821
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Re: Одновременные чтение/запись в/из Arduino на /dev/ttyUSB

В модуле "Modbus" подсмотрите как реализовано
Модуль работает на Sh скриптах
Admin вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 21:22. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Яндекс.Метрика