Обмен данными (Arduino Uno и TP LINK TL MR3020)
- Войдите на сайт для отправки комментариев
Пнд, 26/08/2013 - 22:02
Строю робота телеприсутствия по этой теме: http://habrahabr.ru/post/153017/
Возникла проблема в передаче данных по UART (От веб-интерфейса роутера к ардуинке)
Через "монитор порта" скетч работает, но данные не передаются через UART роутера (подключен правильно)
Помогите настроить передачу данных, где то читал что это можно осуществить и через USB, но нужно морочиться с библиотеками.
Скорость правильную выставляете???
Скорость в скетче была 9600, залил скетч со скоростью 115200 (стандартная скорость uart роутера, так указано тут:
http://roboforum.ru/wiki/OR-WRT#.D0.92.D1.81.D1.82.D1.80.D0.BE.D0.B5.D0.BD.D0.BD.D1.8B.D0.B9_UART
Веб-интерфейс и передача данных по-прежнему не работает.
С подключенным роутером к ардуино запускаю монитор порта, отправляю туда любые данные и порт не отображает ничего
а через консоль прорверяли связь с ардуино?
отправить в ардуино echo 1 > /dev/ttyATH0
Прочитать от ардуино cat /dev/ttyATH0
консоль у роутера есть? попробуйте из нее(echo "test">>/dev/ttyS0) , поменяйте Tx Rx, и посмотрите осцилографом(подключите USB-RS232) - вобщем разберитесь. Может вы чтонибудь коротнули и у вас порт тупо сдох.
Через консоль пишет нот фаунд
Порт сдох? На роутере или на ардуине? Как это проверить?
На uno один порт uart и он используется когда подключена дуина к ПК через usb. Как вы проверяете что ничего не передается между роутером и дуиной?
Питание uart роутера 3.3В, если vcc не используете, по крайней мере земля должна быть общая.
И вобще сложно чегото советовать не видя ни схемы, ни скетча.
Вот так подлючил ардуину к роутеру, делал так как в статье.
Скетч проверял через монитор порта, все ок
#include <AFMotor.h> // Подключаем библиотеку для управления двигателями AF_DCMotor motor1(1); //создаем мотор №1 (Вперед/Назад) AF_DCMotor motor2(2); //создаем мотор №2 (Лево/Право) int led = 13; //встроенный светодиод (Будет мигать как только Ардуино получит данные с роутера) boolean laight = 0; //освещение пути для машинки (Включать будем кнопкой "L") int incomingByte = 0; //в этой переменной храним поступившие данные int speedgo = 0; //переменная для хранения скорости движения void setup() { Serial.begin(115200); //включаем передачу данных на скорости 9600 бит/c pinMode(13, OUTPUT); //указываем выход на пин 13 (Светодиод, индикатор данных) pinMode(2, OUTPUT); //указываем выход на пин 2 (Освещение для машинки) pinMode(11, OUTPUT); //Выход для двигателя №1 (Скорость и направление) pinMode(3, OUTPUT); //Выход для двигателя №2 (Скорость и направление) pinMode(0, INPUT); //RX pinMode(1, INPUT);//TX motor1.setSpeed(255); //Скорость движка №1 motor2.setSpeed(150); //Скорость движка №2 } void loop() { if(Serial.available() > 0) //Если есть доступные данные, то считываем их { incomingByte = Serial.read(); //Присваиваем переменной incomingByte наши считанные данные digitalWrite(13, HIGH); //Зажигаем встроенный светодиод, так как пошло считывание данных //--- Делаем соответствующее действие --- if(incomingByte == 119) //Нажали кнопку W { motor1.run(FORWARD); //движемся вперед delay(250); //Включаем на 250 милисек Serial.println("Vpered"); //Печатает данные в порт } if(incomingByte == 115) //Нажали кнопку S { motor1.run(BACKWARD); //движемся назад delay(250); //Включаем на 250 милисек Serial.println("Nazad"); //Печатает данные в порт } if(incomingByte == 97) //Нажали кнопку A { motor2.run(FORWARD); //Повернем влево Serial.println("Vlevo"); //Печатает данные в порт } if(incomingByte == 100) //Нажали кнопку D { motor2.run(BACKWARD); //Повернем вправо Serial.println("Vpravo"); //Печатает данные в порт } if(incomingByte == 108) //Нажали кнопку L { laight=!laight; //Инвертируем переменную } digitalWrite(2, laight); //Включаем или выключаем свет digitalWrite(13, LOW); //Тушим светодиод, так как чтение данных закончилось //--- Мониторим присланные данные --- Serial.print("Dannie: "); Serial.println(incomingByte, DEC); //Пишем данные которые приняли в порт } }Вы на один порт посадили два устройства, причём с разными напряжениями питания и разными логическими уровнями.
И на роутер вместо 3.3 вольт подали 5.
Можно популярнее? Что мне делать, кроме того что поменять питание uart
Отключить от компьютера.
Подключиться к роутеру телнетом по WiFi и пробовать посылать как сказано в 3 сообщении.
Подключиться через PuTTY по телнету не могу, закрывает консоль и все. Могу только через SSH
Ну по ssh какая разница.
Кстати внешнее питание ардуине нужно естественно (не через usb).
На echo 1 > /dev/ttyATH0 реагирует, мигает светодиод на 13 ноге при отправлении.
На cat/dev/ttyATH0 пишет нот фаунд. Веб-интерфейс все еще не работает. Буду думать дальше
cat[пробел]/dev/ttyATH0
Блин, все заработало. Данные после cat /dev/ttyATH0 передаются в консоль и отображаются циклично.
Выходит одна проблема, в веб-интерфейсе.
Вот так подлючил ардуину к роутеру, делал так как в статье.
Скетч проверял через монитор порта, все ок
я дико извиняюсь, а будут камни, ежели дуинку не прямо подключать, а через Bluetooth линк?
Аналогичная проблема, ардуино уно к3 такойже роутер, из веб морды тоже не але, как решили проблему то?
Так и не решил, испортил два роутера, но в итоге ничего...
Что то всетаки автор с хабра утаил, на форум писали что вроде нужен преобразователь уровней на 2 или 3 тразисторах, получаеться что на роутере напряжение на UART 3,3в, а на ардуино 5в.
(как то не хочеться спалить роутер)
А роутеры что сгорели? или UART порт запален?
Роутеры не сгорели, UART цел, на первом слетел бутлоадер (а из-за ровности рук я не смог прошить флеш)
На втором роутере просто стоит or wrt с нерабочим веб-сервером
http://robocraft.ru/forum/viewtopic.php?f=13&t=569
а вот как раз о конверторе, нужно будет его ссобрать и попробовать.https://www.sparkfun.com/products/8745
У меня проблема почти разрешилась, ток есть дикие задержики в исполнении команд моторами, задержки до 15-30секнуд
скеч от ардуины другой.
Собственно оно живет, катаеться почти как у автора, НО, у меня задержки так и остались в управлении.
нужно что то другое найти.
помогите! сделал по статье
все подключил. заменил файлы на роутере. веб интерфейс не работает. нажимаю кнопки , машинка молчит. как проверить есть ли вообще связь роутер -ардуино по юарт?
выше пишут
отправить в ардуино echo 1 > /dev/ttyATH0
Прочитать от ардуино cat /dev/ttyATH0
как и где это надо писать? в командной строке пишет нет такого пути!
в консоли роутера, теость открываем путти цепляемся по SSH протоколу (естевенно роутер должен быть в сети и пинговаться)к роутеру и там вводим)
можно через RS232, тем же Putty подключиться.
за одно раскажите будут ли у вас задержик в отправке данных.
отправить в ардуино echo 1 > /dev/ttyATH0
ничего не происходит
однако на команду
ls /dev/tty*
выходит
/dev/tty /dev/ttyATH0 /dev/ttyS0
тоесть подключено через юарт?
так почему тогда не работают кнопки??
странно, а как было подключение? через SSH или RS232?
отправить в ардуино echo 1 > /dev/ttyATH0
Прочитать от ардуино cat /dev/ttyATH0
пробовали прочитаь?