Для подключения к роутеру я использовал arduino UNO, как оказалось она имеет не стандартный ftdi чип для com порта, а чип atmega16u2. Поэтому для него необходим другой драйвер на openwrt. Для данного эксперимента я использовал роутер wr703n, в принципе подойдет любой другой с прошивкой openwrt.
Итак на роутере с прошивкой openwrt делаем следующие
1. Устанавливем драйвер для usb2com arduino UNO R3 на чипе atmega16u2
opkg install kmod-usb-acm
2. Подключаем arduino UNO R3 в USB порт роутера. Проверяем определилась ли ардуина
Должно вывести строку
3. Устанавливаем и настраиваем пакeт stty, который устанавливает определенные характеристики терминального ввода/вывода для устройства:
opkg install coreutils-stty
Запускаем stty с параметрами
Для того что бы stty запускался во время загрузки роутера прописываем его в автозагрузку
вставляем текст
START=10
STOP=15
start(){
stty -F /dev/ttyACM0 cs8 115200 ignbrk -brkint -icrnl -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts -hupcl
}
stop(){
echo "nothing to do"
}
Делаем скрипт исполняемым, включаем автозагрузку и стартуем его
/etc/init.d/stty enable
/etc/init.d/stty start
На этом настройка arduino UNO R3 в openwrt закончена.
4. Проверка работоспособности на тестовом примере.
Подключем ардуину к компьютеру и заливаем в нее тестовый скетч, который при посылке на ардуину единицы включает светодиод на плате, а при отправке нуля выключает.
void setup()
{
Serial.begin(115200);
pinMode(ledPin, OUTPUT);
}
void loop()
{
if (Serial.available() > 0)
{
byte inByte = Serial.read();
switch (inByte)
{
case 49:
digitalWrite(ledPin, HIGH);
Serial.println("ON!");
break;
case 48:
digitalWrite(ledPin, LOW);
Serial.println("OFF");
break;
}
}
}
Подключаем arduino к роутеру
Зажигаем светодиод
Тушим светодид
Читаем данные с ком порта
Скорее всего, что в таком виде светодиод у вас не заработает. По крайней мере у меня не заработал на моей arduino UNO R3. Что бы заработало нужно открыть второе терминальное окно и в нем запустить команду чтения с com порта.
В первом терминальном окне запускаем команды на зажигание и отключения светодиода.
Данная проблема описана на форумах ардуины. Для ее решения нужно отключить auto reset. Для разных версий платы ардуины она решается по разному. Для arduino UNO R3 я использовал способ подключения конденсатора 10мФ между Gnd и Reset.
После данного мода отсылать команды на ардуину можно без постоянно запущенного окна на чтение ком порта.