TP-LINK TL-MR3020 + Mega 2560

TP-LINK TL-MR3020 + Mega 2560

Сообщение nemesis » 27 июн 2013, 11:23

Помогите кто нить имеется TP-LINK TL-MR3020 с OpenWRT и Arduino mega 2560, Как их уговорить общаться между собой??? хоть по юсб хоть по юарт??? желательно поподробнее про настройку соединения если по usb? или хотя бы команды чтоб с роутера послать в юарт данные и команда чтоб получить данные пришедшие по юарт??? заранее спасибо за ответы:)))
nemesis
 
Сообщения: 9
Зарегистрирован: 27 авг 2012, 16:38
programming: pascal, visual basic

Re: TP-LINK TL-MR3020 + Mega 2560

Сообщение noonv » 28 июн 2013, 06:30

начнём по порядку :)
подключать Arduino к роутеру через USB пробовали?
устройство /dev/ttyUSB0 появляется?

если появляется, то пол дела сделано.
прогружаем в дуину тестовый скетч, например такой:
Код: Выделить всё
int ledPin = 13;               

void setup()                   
{
  pinMode(ledPin, OUTPUT);     
  Serial.begin(9600);     // инициализация работы с COM-портом
}

void loop()                     
{
  digitalWrite(ledPin, HIGH);   
  Serial.print("H");      // светодиод горит – пишем H
  delay(1000);                 
  digitalWrite(ledPin, LOW);   
  Serial.println("L");    // светодиод погасили – пишем L
  delay(1000);                 
}

подключаем к роутеру и смотрим, чтобы на дуине начал мигать светодиод L.
убеждаемся, что устройство определилось (в противном случае - смотрим выдачу команды dmesg)
выставляет нужную скорость
Код: Выделить всё
stty -F /dev/ttyUSB0 9600

проверяем, что скорость установилась:
Код: Выделить всё
stty -F /dev/ttyUSB0

а теперь просто смотрим, что нам приходит:
Код: Выделить всё
cat /dev/ttyUSB0


должны наблюдать последовательность HL
Изображение

посылать команды для дуины можно совершенно аналогично.
например,
Код: Выделить всё
echo -n "A" > /dev/ttyUSB0

а на дуине реализовывать стандартный
Код: Выделить всё
void setup()
{
  Serial.begin(9600);
}

void loop(){
  if (Serial.available() > 0)
  {
    int mak = Serial.read();
    // здесь проверяем код пришедшего символа
  }
}

только обратите внимание, что вы отправляете символ (char), а считываете его численное значение (int)
'A' == 41
'\n' == 10 // перевод строки

см. Программа для управления портами Arduino/CraftDuino
Аватара пользователя
noonv
Администратор
 
Сообщения: 550
Зарегистрирован: 05 май 2011, 15:44
Откуда: Калининград
programming: С++

Re: TP-LINK TL-MR3020 + Mega 2560

Сообщение nemesis » 28 июн 2013, 11:05

Вот в том то и проблемма что немогу соеденить их никак дуня вот такая http://robocraft.ru/shop/index.php?rout ... uct_id=147 бралась тут же, роутер уже описал какой, подскажите если не трудно как дровинку поставить в роутер и какую, буду премного благодарен))) если устроит могу заказик сразу оформить чтоб не просто за спасибо помогали)))
nemesis
 
Сообщения: 9
Зарегистрирован: 27 авг 2012, 16:38
programming: pascal, visual basic

Re: TP-LINK TL-MR3020 + Mega 2560

Сообщение noonv » 28 июн 2013, 12:08

понятно.
дело в том, что на этих новых версия ардуино вместо FTDI используется МК atmega8u2 (r3 на atmega16u2), которая, разумеется, использует другой драйвер, которого пока нету в прошивке.
поэтому, более простой вариант - подключаться к UART-пинам роутера
только не забывайте про согласование уровней (на роутере 3.3V, а дуина - 5V)
см. Logic Level Converter
Аватара пользователя
noonv
Администратор
 
Сообщения: 550
Зарегистрирован: 05 май 2011, 15:44
Откуда: Калининград
programming: С++

Re: TP-LINK TL-MR3020 + Mega 2560

Сообщение Zoltberg » 28 июн 2013, 12:59

Ну такой модулёк это хорошо но долго ждать.
Можно резисторным делителем обойтись, или оптронами или на диодах 5в погасить.
сон разума рождает чудовищ
Аватара пользователя
Zoltberg
Администратор
 
Сообщения: 290
Зарегистрирован: 05 май 2011, 20:36
Откуда: Калининград

Re: TP-LINK TL-MR3020 + Mega 2560

Сообщение nemesis » 28 июн 2013, 14:13

Ну можно и по юарту, теперь если можно поподробнее про резисторный делитель или про светодиоды и команды для роутера для посылки и приёма данных если можно, и как инициализировать железный юарт на роутере? или может проще CraftDuinо взять и не париться с мегой пока??? если да то на базе какой атмеги брать чтоб опять запарки не получилось???
nemesis
 
Сообщения: 9
Зарегистрирован: 27 авг 2012, 16:38
programming: pascal, visual basic

Re: TP-LINK TL-MR3020 + Mega 2560

Сообщение noonv » 28 июн 2013, 15:48

для работы с UART-ом используются те же самые команды, что и для USB, только вместо /dev/ttyUSB0, нужно писать /dev/ttyATH0.
кстати - другой вариант - можно взять другой переходник USB2UART (3.3V) на микросхемах, драйвера для которых уже есть в прошивке OR-WRT:
* Silicon Labs CP210x
* Prolific PL-2303
* FTDI
И подключить его вывод к UART-у Arduino.
Аватара пользователя
noonv
Администратор
 
Сообщения: 550
Зарегистрирован: 05 май 2011, 15:44
Откуда: Калининград
programming: С++

Re: TP-LINK TL-MR3020 + Mega 2560

Сообщение nemesis » 01 июл 2013, 08:39

Всем спасибо за подсказки, соединился по железному юарту, просто припояв светодиод))) проверил тюда сюда идут данные)))
Но теперь новый вопрос, при нажатии клавиш в стандартной веб морде посылаются данные в сериал порт, а какой командой их послать в железный юарт???
nemesis
 
Сообщения: 9
Зарегистрирован: 27 авг 2012, 16:38
programming: pascal, visual basic

Re: TP-LINK TL-MR3020 + Mega 2560

Сообщение noonv » 01 июл 2013, 09:21

см. Запуск своих CGI на Wi-Fi-роутере TP-LINK TL-MR3020

за вебморду отвечает файл
/www/index.html
в котором есть js-функция
Код: Выделить всё
 function keyPressed(e)
        {
                var keynum
                var keychar
                var numcheck

                if(window.event) // IE
                {
                keynum = e.keyCode
                }
                else if(e.which) // Netscape/Firefox/Opera
                {
                keynum = e.which
                }
                keychar = String.fromCharCode(keynum);
                if(keychar == "w" || keychar == "Ж" || keychar == "W" || keychar == "ж") submitUART("DrvLR=100,100");
                if(keychar == "a" || keychar == "Т" || keychar == "A" || keychar == "т") submitUART("DrvLR=-100,100");
                if(keychar == "s" || keychar == "Ш" || keychar == "S" || keychar == "ш") submitUART("DrvLR=-100,-100");
                if(keychar == "d" || keychar == "Б" || keychar == "D" || keychar == "б") submitUART("DrvLR=100,-100");
                return true;
        };

т.е. при нажатии клавиш вызывается функция submitUART:
Код: Выделить всё
function submitUART(uartString)
        {
            document.getElementById('serialData').value=uartString+"\n";
            document.getElementById('serialForm').submit()
        };

которая просто отправляет форму, у которой прописан обработчик...
Код: Выделить всё
<form id="serialForm" action="/cgi-bin/serial.cgi" method="POST" target="hidden">

т.е. просто вызывается cgi-скрипт /cgi-bin/serial.cgi:
Код: Выделить всё
#!/usr/bin/awk -f
function unescape(s)
{
        gsub(/\+/," ",s)
        res = ""
        do {
          p = match(s,/%[0-9a-fA-F]{2}/)
          if(p>0) {
                res = res substr(s,0,p-1) sprintf("%c",0+("0x" substr(s,p+1,2)))
                s = substr(s,p+3)
          }
        } while(p>0)
        return res s
}

BEGIN {
        RS = "&"
        FS = "="
}
{
        if($1 == "SERIAL_DATA" ) print unescape($2) > "/dev/ttyUSB0"
}
END
{
        print "202"
}

т.о. в /cgi-bin/serial.cgi нужно просто заменить /dev/ttyUSB0 на /dev/ttyATH0,
а в /www/index.html поправить отправляемые сообщения.
Аватара пользователя
noonv
Администратор
 
Сообщения: 550
Зарегистрирован: 05 май 2011, 15:44
Откуда: Калининград
programming: С++

Re: TP-LINK TL-MR3020 + Mega 2560

Сообщение nemesis » 01 июл 2013, 10:08

Вот ещё раз огромное спасибо
nemesis
 
Сообщения: 9
Зарегистрирован: 27 авг 2012, 16:38
programming: pascal, visual basic

Re: TP-LINK TL-MR3020 + Mega 2560

Сообщение OlegEX » 31 июл 2013, 14:15

есть проблемка с выводом на серийный порт. правда железо немного другое 703N и arduino nano.

если забирать данные с серийника командой cat /dev/ttyUSB0, то через некоторое время данные перестают выводится, и перезапуска команды, перетыкание usb не помогают. только reset 703N

если же делать периодически cat /dev/ttyUSB0|head -2|tail -2, то данные могу забирать долго. Т.е. данные через серийный порт идут.

не пойму почему порт отваливается при использовании cat без ограничений по кол-ву строк?
OlegEX
 
Сообщения: 8
Зарегистрирован: 03 янв 2013, 01:26
programming: java

Re: TP-LINK TL-MR3020 + Mega 2560

Сообщение noonv » 31 июл 2013, 19:41

непонятно :)
а dmesg после этого ничего не говорит?
возможно, имеет смысл использовать самописную программу - чтобы контролировать, что происходит :)
Аватара пользователя
noonv
Администратор
 
Сообщения: 550
Зарегистрирован: 05 май 2011, 15:44
Откуда: Калининград
programming: С++

Re: TP-LINK TL-MR3020 + Mega 2560

Сообщение Arailym » 12 май 2014, 09:21

Здравствуйте!
а если устройство /dev/ttyUSB0 не появляется? что делать?
Arailym
 
Сообщения: 2
Зарегистрирован: 12 май 2014, 09:16
programming: java

Re: TP-LINK TL-MR3020 + Mega 2560

Сообщение noonv » 12 май 2014, 09:28

Arailym писал(а):а если устройство /dev/ttyUSB0 не появляется? что делать?

попробуйте сначала подключить к ПК, чтобы проверить работу контроллера и кабеля. Если на ПК всё работает - смотрите что показывает dmesg - возможно нет нужных драйверов (что странно и может быть если у вас, например - uno).
Аватара пользователя
noonv
Администратор
 
Сообщения: 550
Зарегистрирован: 05 май 2011, 15:44
Откуда: Калининград
programming: С++

Re: TP-LINK TL-MR3020 + Mega 2560

Сообщение Arailym » 13 май 2014, 14:08

Спасибо за быстрый ответ.Веб камера подключается и работает отлично.
Посмотрела dmesg вот кусочек :
[ 10.860000] usb 1-1: new high-speed USB device number 2 using ehci-platform
[ 10.880000] usbcore: registered new interface driver usbserial
[ 10.880000] USB Serial support registered for generic
[ 11.010000] usbcore: registered new interface driver usbserial_generic
[ 11.020000] usbserial: USB Serial Driver core
[ 11.100000] Linux video capture interface: v2.00
[ 11.170000] USB Serial support registered for GSM modem (1-port)
[ 11.170000] usbcore: registered new interface driver option
[ 11.180000] option: v0.7.2:USB Driver for GSM modems
[ 11.310000] usbcore: registered new interface driver uvcvideo
[ 11.310000] USB Video Class driver (1.1.1)
[ 15.190000] device eth0 entered promiscuous mode

Но самого ttyUSB0 нету :cry_ing:
Arailym
 
Сообщения: 2
Зарегистрирован: 12 май 2014, 09:16
programming: java

След.

Вернуться в Коммуникации

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0

cron
© 2009-2017 |  О проекте  |  Политика Конфиденциальности  |