Имею роутер TP-Link MR3020 с прошивкой OR-WRT 0.76 и соединенный с ним CraftDuino через USB-порт роутера. Пытаюсь наладить общение с контроллером через последовательный порт. Роутер контроллер видит и устройство /dev/ttyUSB0 появляется. Делаю как в этой статье: http://robocraft.ru/forum/viewtopic.php ... 69&start=0. Загружаю скетч с миганием и отправкой символов в порт. Светодиод мигает, зеленый индикатор TX помаргивает. Вызываю команду
- Код: Выделить всё • Развернуть
cat /dev/ttyUSB0
Приходит "H", затем "L" и всё останавливается. Зеленый индикатор мигать перестает, а светодиод продолжает мигать! Перемычку "Auto Reset" снимал, не помогло. Чувствую недостаток понимания как работает COM-порт... RTFM?
И сразу второй вопрос. Вот такой вот код в контроллере:
- Код: Выделить всё • Развернуть
int led = 13;
void setup() {
pinMode(led, OUTPUT);
Serial.begin(9600);
}
void loop() {
char incomingByte;
if (Serial.available() > 0)
{
incomingByte = Serial.read();
if (incomingByte=='h')
{
digitalWrite(led, HIGH);
Serial.println("Led is ON");
}
else
if (incomingByte=='l')
{
digitalWrite(led, LOW);
Serial.println("Led is OFF");
}
else
{
Serial.print("Unexpected command: ");
Serial.println(incomingByte);
}
}
delay(2000);
}
должен зажигать светодиод при получении символа "h" из порта. И в терминале из Windows это работает.
Однако, вот такая команда из OR-WRT:
- Код: Выделить всё • Развернуть
echo -n "h" > /dev/ttyUSB0
ничего не дает.
Пробовал инициализировать порт командой (из этой http://playground.arduino.cc//Interfacing/LinuxTTY статьи)
- Код: Выделить всё • Развернуть
stty -F /dev/ttyUSB0 cs8 9600 ignbrk -brkint -icrnl -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts
Ничего не дает.
Как вообще правильно организовывать обмен командами межу роутером и ардуино?