1

Тема: Arduino и Keenetic

Если никто не против, буду тут записывать результаты своих экспериментов с Arduino и кинетиком, может еще кому будет интересно.

В первую очередь для того, чтобы наладить обмен информацией с ардуинкой, необходимо установить параметры tty, делается это командой stty. Она входит в состав busybox, надо только включить ее. Команда настройки такая:

stty -F /dev/ttyUSB0 cs8 9600 ignbrk -brkint -icrnl -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts -hupcl

Она нужна для того, чтоб установить скорость передачи данных, битность, отключить flowcontrol, буферизацию, а так же отключить автосброс Arduino.
Естественно надо проверить, на каком порту Arduino висит у вас и при необходимости заменить /dev/ttyUSB0 на то что надо, и скорость обмена 9600 - это то что у в скетче указано при инициализации Serial.begin(9600);
После этого можно посылать информацию ардуинке через echo "Hello Arduino" > /dev/ttyUSB0 и принимать через tail -f /dev/ttyUSB0.
Например при загруженном скетче, дублирующем данные из serial в lcd так можно вывести текущее время на кинетике на lcd:

echo -e  "Time is:         "\\n`date +%H:%M:%S` "         " > /dev/ttyUSB0

Пробелы нужны для того, чтоб затирать старую информацию на LCD.
https://lh3.googleusercontent.com/-xF2bHpLLn7Q/Tq8lyGS3HAI/AAAAAAAAItk/hXfM7ckPQIU/s720/%2525D1%252584%2525D0%2525BE%2525D1%252582%2525D0%2525BE%2525D0%2525B3%2525D1%252580%2525D0%2525B0%2525D1%252584%2525D0%2525B8%2525D1%25258F.JPG

2

Re: Arduino и Keenetic

Никак не разберусь, Как в баш скрипте организовать получение информации от ардуины...
Нужна помощь

3

Re: Arduino и Keenetic

Здравствуйте! Скажите пожалуйста как узнать на каком порту находится подключенная Arduino если в первое USB гнездо вставлен жесткий диск с opkg а во второе гнездо вставлена сама Arduino. И куда прописывать упомянутые настройки скорости передачи чтобы они не пропали после перезапуска. Спасибо!

4

Re: Arduino и Keenetic

Спасибо за оперативный ответ wink Разобрался на зарубежных форумах. Для начала установим usbutils

opkg install usbutils

Вопрос: как узнать адрес нашего подключенного арудино?
Ответ: Перед тем как подсоединить устройство пишем в консоле

ls /dev | grep tty*

Затем подсоединяем нашу ардуину и повторяем прошлую команду, сравниваем результаты.
У меня появилось /dev/ttyACM0 - это и есть ардуина.

На устройство загружен скетч:

int ledPin = 13;
int val;

void setup() {
    pinMode(ledPin, OUTPUT);  
    Serial.begin(9600);
}

void loop()
{
  if (Serial.available() > 0) {
  val = Serial.read();
    if (val == 1) {
      digitalWrite(ledPin, HIGH);
      delay(3000);
      digitalWrite(ledPin, LOW);
    }    
  }
}

А на самом Кинетике установлен lighttpd + php.
Код пхп скрипта для "зажигания" диода:

<?php
$fp = fopen("/dev/ttyACM0", "w+"); 
fwrite($fp, chr(1));
fclose($fp);
?>

При ручном запуске из браузера диод судорожно мигал три раза но никак не три секунды как должен по программе. Долгое блуждание по интернетам показало что ардуина экстренно перезагружаться при выполнении команды fopen. Единственное быстрое решение данный проблемы является использование конденсатора, у меня был только на 100мф, который необходимо подсоединить к выходу RESET и GRD.

В итоге судороги прекратились и скетч заработал на УРА!

Внимание вопрос знатокам! -Подскажите пожалуйста как грамотно сделать так чтобы:

1) Страница запуска скрипта была видна из интернета по стандартному 80 порту (lighttpd запущен под 81 портом)
2) Интерфейс управления кинетиком (192.168.1.1 - панель администратора под 80 портом) была доступна в локалке как обычно
3) Все связанные с работой демоны не были подвержены влиянию из вне (чтобы хацкеры не взломали)

Есть зарегистрированное доменное имя на бесплатном сервисе no-ip. Функционал использования доступен на стандартной странице управления.

Попытки вручную пробросить порты в iptables не увенчались успехом. Прошу, Вас, гуру линукса не остаться равнодушными. Помогите советом. Спасибо!

5

Re: Arduino и Keenetic

Демонстрация - http://youtu.be/0dS8I5DilIM

6

Re: Arduino и Keenetic

MuxauJI, чтобы не сбрасывалась ардуинка надо настроить ком-порт (команда stty в первом посте).
Чтоб не пропадали при перезагрузке - вписывать в /etc/rc.local или создать скрипт в /etc/init.d (могу ошибаться с наличием этих файлов и папок на кинетике, его нет под рукой, но в линуксе это делается так)

7

Re: Arduino и Keenetic

viperet :

MuxauJI, чтобы не сбрасывалась ардуинка надо настроить ком-порт (команда stty в первом посте).
Чтоб не пропадали при перезагрузке - вписывать в /etc/rc.local или создать скрипт в /etc/init.d (могу ошибаться с наличием этих файлов и папок на кинетике, его нет под рукой, но в линуксе это делается так)

Спасибо большое за рекомендации. Посоветуйте пожалуйста как обезопасить от влияния из вне кинетик так, чтобы был виден только lighttpd т.е. страница с кнопкой включения лампочки, а доступ по ssh, transmission и панель управления роутером не "виделись" из интернета. Спасибо еще раз!

8

Re: Arduino и Keenetic

Доброго времини суток

никак не могу добиться нормальной работы Arduino (Uno R3). Уходит в перезагрузку и всё тут.

команда из первого поста не помогает
настраиваю порт (он уже идет в перезагрузку)
stty -F /dev/ttyACM0 cs8 9600 ignbrk -brkint -icrnl -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts -hupcl
проверяю:
echo "L111" > /dev/ttyACM0  (перезагрузка)

Как я понял, я уже второй, кому подобная настройка порта не помогает.

Отредактировано kyo (2013-09-07 07:49:13)

9

Re: Arduino и Keenetic

Добрый день, уважаемые форумчане. Помогите в решении следующей проблемы.
Собственно имеется Keenetic 2, установил модифицированную прошивку v1.1 с установкой opkg.
Известно из логов, что установлен Linux version 2.6.22.15.
Так вот, подключении Arduino к USB в логах следующие строки:
12 дек 20:31:22    kernel    usb 2-1: new full speed USB device using rt3xxx-ohci and address 2
12 дек 20:31:22    kernel    usb 2-1: configuration #1 chosen from 1 choice
12 дек 20:31:22    kernel    cdc_acm 2-1:1.0: ttyACM0: USB ACM device
12 дек 20:31:29    kernel    usb 2-1: USB disconnect, address 2
12 дек 20:31:30    kernel    usb 2-1: new full speed USB device using rt3xxx-ohci and address 3
12 дек 20:31:30    kernel    usb 2-1: configuration #1 chosen from 1 choice
Из логов видно, что вроде как сначала подключается девайс, распознается, именуется  ttyACM0, и тут же отключается.
Подскажите, что не так? Может кто сталкивался с подобной проблемой? Есть решение этой проблемы?