Подключение Ардуино к роутеру TL-MR3020

1
Arduino TL-MR3020

Удалённое управление Arduino через Web-интерфейс...



Предполагается, что на роутере установлена OpenWrt и система перенесена на флешку. Как это сделать я подробно описал здесь.

Если OpenWrt установлена, тогда переходим к основной задаче.

Существуют два способа подключения, первый — к UART роутера, второй — через USB.

Оба варианта работают одинаково, однако первый требует разбора роутера и подпаивания контактов:




Второй вариант проще, но придётся ипользовать usb-хаб.



Я опишу оба способа подключения и покажу как сделать простой веб-интерфейс для управления.

Кто будет подключать по usb, может сразу перейти сюда.



Вариант с UART


Вскрываем роутер. Крышка у него приклеена, поэтому берём что-то типа ножа и ковыряем по всему периметру. Пластик достаточно прочный, так что можно не боятся повредить.

Достаём плату и припаиваем три контакта RX, TX и GND, четвёртый контакт — это плюс (3,3V), он нам не нужен.




Теперь зальём в ардуину простенький скетч для проверки.


int led = 13; 

void setup()  
{   
  Serial.begin(57600);   
  pinMode(led, OUTPUT);       
}  

void loop()  
{  
  if (Serial.available())  
  {  
    byte insim = Serial.read();  
    switch (insim)  
    {  
        case 'a':  
        digitalWrite(led, HIGH);  
        break;  
        
        case 'b':  
        digitalWrite(led, LOW);  
        break;  
    }          
  }  
}

Будем посылать в ардуину символы a и b в ответ на которые будет зажигаться и гаснуть D13.


Подключаем ардуину как на рисунке:



Ардуина TXRX Роутера (синий)
Роутер TXRX Ардуина (зелёный)
CNDCND

Не смотря на то, что чип роутера питается от 3,3V, а ардуина от 5V, никаких проблем не возникает, посему нет необходимости согласовывать уровни.


Подключаем сетевой кабель (или не подключаем если Вы соединяетесь по WIFI) и подаём питание на роутер и ардуину.



Заходим на роутер по ssh (на всякий случай)

Ради интереса смотрим существующие устройства:

ls /dev/tty*

В списке будет присутствовать ttyATH0, это и есть UART.


Обновляем репозиторий…

opkg update


Установим утилиту для настройки порта:

opkg install coreutils-stty




Настроим порт командой…

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



Проверяем…

echo 'a' > /dev/ttyATH0

D13 загорелась.

echo 'b' > /dev/ttyATH0

D13 погасла.

Должно работать, если нет, то возвращаемся и проверяем что не так.


Доведём до ума:

Если у Вас не установлен редактор nano, то исправим ситуацию...

opkg install nano


Добавим в автозагрузку настройку порта:

nano /etc/rc.local

В конец файла (перед exit 0) добавим строчку:

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

подсказка nano

Сохранить______Выйти


Перегружаем роутер и проверяем…

reboot


echo 'a' > /dev/ttyATH0
echo 'b' > /dev/ttyATH0




Поскольку при загрузке (да и в процессе работы) в консоль прилетают различные символы, нам надо их отфильтровывать, а также сделать обратную связь, чтоб в ответ на команду ардуина сообщала о выполнении.

Залейте в ардуину этот скетч: Не забывайте отсоединять провода RX,TX во время прошивки.



int led = 13; 
byte descript[5];

void setup()  
{   
  Serial.begin(57600);   
  pinMode(led, OUTPUT);       
}  

void loop()  
{  
 if (Serial.available()>4) // ждём дескриптор и нужный символ
 {
  if (Serial.read()=='Y') // проверяем первый символ, если это 'Y', то продолжаем принимать, если нет, то выходим из цикла чтения 
   {
    for (byte i=0; i < 5; i++)
      {
         descript[i] = Serial.read();    
      } 
        
 if((descript[0] =='+') && (descript[1] =='=') && (descript[2] =='Z')) 
  {
   switch (descript[3])
    {
      case 'a':
      digitalWrite(led, HIGH);
      Serial.println("OK vkl"); // ответ
      break;
      
      case 'b':
      digitalWrite(led, LOW);
      Serial.println("OK otkl"); // ответ
      break;
    
     }
   }
   
  else
    {
      for(byte i=0; i < 255; i++)
       {
         Serial.read();    
       } 
    } 
   }// конец if (Serial.read()=='Y')
  } // конец чтение порта 
}



Перед управляющим символом (a,b) будем отправлять четыре символа служащие дескриптором Y+=Z, благодоря этому всё что не нужно отфильтруется и не будет случайных срабатываний.

Открываем параллельно ещё одну ssh-сессию и вводим там команду:

cat /dev/ttyATH0

Здесь будет ответ ардуины.

Проверяем...

echo 'Y+=Za' > /dev/ttyATH0
echo 'Y+=Zb' > /dev/ttyATH0


И последнее, надо отвязать UART от отладочной консоли. Для этого надо в файле /etc/inittab закомментировать последнюю строчку:

nano /etc/inittab


Вот так:

::sysinit:/etc/init.d/rcS S boot
::shutdown:/etc/init.d/rcS K shutdown
#ttyATH0::askfirst:/bin/ash --login


Сохраняем, перегружаем.


Если что-то не работает, то возвращаемся к началу и проверяем что сделали не так.


С первым вариантом покончено, если подключение по usb не интересно, то переходите ниже...




Вариант с USB


Зальём в ардуину проверочный скетч:


int led = 13; 

void setup()  
{   
  Serial.begin(57600);   
  pinMode(led, OUTPUT);       
}  

void loop()  
{  
  if (Serial.available())  
  {  
    byte insim = Serial.read();  
    switch (insim)  
    {  
        case 'a':  
        digitalWrite(led, HIGH);  
        break;  
        
        case 'b':  
        digitalWrite(led, LOW);  
        break;  
    }          
  }  
}

Будем посылать в ардуину символы a и b в ответ на которые будет зажигаться и гаснуть D13.


Подключаем к роутеру хаб и втыкаем в него флешку и ардуину. Включаем.

Желательно чтобы хаб был с отдельным питанием. Некоторые хабы работают некорректно.


Заходим на роутер по ssh (на всякий случай)

Обновляем репозиторий…

opkg update


Установим драйвера для всех существующих ардуин и утилиту для настройки порта stty:

opkg install kmod-usb-serial-ftdi kmod-usb-acm kmod-usb-serial-pl2303 kmod-usb-serial-cp210x libftdi coreutils-stty


reboot


Можно не перегружать, по идее устройство должно появиться сразу.

Проверим… если нет, тогда перегрузите.

ls /dev/tty*




У Вас может быть /dev/ttyACM0, тогда его и используйте в дальнейших командах и настройках.


Настроим порт командой…

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



Проверяем…

echo 'a' > /dev/ttyUSB0

D13 загорелась.

echo 'b' > /dev/ttyUSB0

D13 погасла.


Если при посылке пакета ардуина перегружается (диоды моргают, но D13 не горит), тогда нужно поставить электролитический косденсатор 5-10мкФ между Reset и GND.
Не забудьте отключать его когда заливаете скетч.



Далее сделаем защиту от случайных срабатываний и обратную связь, чтоб в ответ на команду ардуина сообщала о выполнении.

Если редактор nano отсутствует, то установим...

opkg install nano


Добавим в автозагрузку настройку порта:

nano /etc/rc.local

В конец файла (перед exit 0) добавим строчку:

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

подсказка nano

Сохранить______Выйти

Перегружаем…

reboot


… и проверяем…

echo 'a' > /dev/ttyUSB0
echo 'b' > /dev/ttyUSB0



Теперь выключаем роутер и прошиваем в ардуину этот скетч:



int led = 13; 
byte descript[5];

void setup()  
{   
  Serial.begin(57600);   
  pinMode(led, OUTPUT);       
}  

void loop()  
{  
 if (Serial.available()>4) // ждём дескриптор и нужный символ
 {
  if (Serial.read()=='Y') // проверяем первый символ, если это 'Y', то продолжаем принимать, если нет, то выходим из цикла чтения 
   {
    for (byte i=0; i < 5; i++)
      {
         descript[i] = Serial.read();    
      } 
        
 if((descript[0] =='+') && (descript[1] =='=') && (descript[2] =='Z')) 
  {
   switch (descript[3])
    {
      case 'a':
      digitalWrite(led, HIGH);
      Serial.println("OK vkl"); // ответ
      break;
      
      case 'b':
      digitalWrite(led, LOW);
      Serial.println("OK otkl"); // ответ
      break;
    
     }
   }
   
  else
    {
      for(byte i=0; i < 255; i++)
       {
         Serial.read();    
       } 
    } 
   }// конец if (Serial.read()=='Y')
  } // конец чтение порта 
}

Перед управляющим символом (a,b) будем отправлять четыре символа служащие дескриптором Y+=Z, таким образом отфильтруется случайный мусор и не будет случайных срабатываний.
После обработки команды, ардуина будет отправлять ответ.



Возвращаем ардуину в хаб и включаем роутер.


Открываем две параллельные ssh-сессии, в первой водим команду:

cat /dev/ttyUSB0

Здесь будет ответ ардуины.

Во второй пробуем…

echo 'Y+=Za' > /dev/ttyUSB0
echo 'Y+=Zb' > /dev/ttyUSB0



Всё должно работать, если нет, то возвращаемся и внимательно проверяем.

Если всё получилось, то можно переходить к следующей части.




Интерфейс

Сделаем простой веб-интерфейс для управления двумя лампочками.

Выглядеть будет вот такМожно понажимать.


Скачайте архив и распакуйте его в рабочую папку сервера, чтоб было так сервер/primer/.

Здесь подробная инструкция по установке сервера Lighttpd на OpenWrt.

Проверьте, чтоб в файле /etc/php.ini всё было так, как написано здесь!

Если Вы пользуете Win, то отключите всякие файрволы/антивирусы!


Установим и настроим небольшой прокси-сервер ser2net, он создаёт соединение между сокетом и устройством (/dev/ttyUSB0).
Как показала практика, через ser2net, php-файл работает лучше, нежели обращаясь к устройству напрямую.

opkg update

opkg install ser2net


Редактируем файл конфигурации:

nano /etc/ser2net.conf

Закомментируйте всё строчки в конце и сохраните.


Добавим ser2net в автозагрузку:

nano /etc/rc.local

Добавьте в конец файла вот эту строку:

ser2net -C "3002:raw:0:/dev/ttyUSB0:57600 NONE 1STOPBIT 8DATABITS -XONXOFF -LOCAL -RTSCTS"


Должно получится так:


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

ser2net -C "3002:raw:0:/dev/ttyUSB0:57600 NONE 1STOPBIT 8DATABITS -XONXOFF -LOCAL -RTSCTS"

exit 0

В примере используется устройство /dev/ttyUSB0, у Вас может быть другое! (ttyATH0 — консоль, ttyACM0 — мега)

Внимание! Строки инициализации должны быть записаны одной строкой (без переноса).




Прошейте в ардуину этот скетч:


int descript[5];
int R1 = 0; // флаг первой лампы D12
int R2 = 0; // флаг второй лампы D13

void setup()  
{   
  Serial.begin(57600);   
  pinMode(12, OUTPUT); 
  pinMode(13, OUTPUT);  
}  

void loop()  
{  
 if (Serial.available()>4) // ждём дескриптор и нужный символ
 {
  if (Serial.read()=='Y') // проверяем первый символ, если это 'Y', то продолжаем принимать, если нет, то выходим из цикла чтения 
   {
    for (byte i=0; i < 5; i++)
      {
         descript[i] = Serial.read(); // добавляем символы в массив   
      } 
        
 if((descript[0] =='+') && (descript[1] =='=') && (descript[2] =='Z')) // проверяем символы
  {
   switch (descript[3]) 
    {
      case 'o': // обновление
      glavnaia(); // отправка ответа
      break;
      
      case 'A':
      digitalWrite(12, HIGH);
      R1 = 1; // ставим флаг в единицу (вкл)
      glavnaia();
      break;
      
      case 'a':
      digitalWrite(12, LOW);
      R1 = 0; // ставим флаг в ноль (откл)
      glavnaia();
      break;
      
      case 'B':
      digitalWrite(13, HIGH);
      R2 = 1;
      glavnaia();
      break;
      
      case 'b':
      digitalWrite(13, LOW);
      R2 = 0;
      glavnaia();
      break;
    
     }
   }
   
  else
    {
      for(byte i=0; i < 255; i++) 
       {
         Serial.read();    
       } 
    } 
   }// конец if (Serial.read()=='Y')
  } // конец чтение порта 
}

void glavnaia() // отправка ответа
 {
      Serial.print(R1); // отсылаем флаг 
      Serial.print(",");  // запятая для парсинга строки
      Serial.println(R2);  // отсылаем флаг !!!последняя строчка должна быть println!!!
 }

Добавлены функции для второй лампочки и обновления. (к D12 подключите светодиод через резистор 200-1000 Ом)


Включаем/перегружаем роутер и в браузере заходим по аресу ваш_роутер/primer/

Должно получится так:



Если надпись stD серая, это значит что связь с ардуиной установлена, если красная, то связи нет.



Работа заключается в следующем:

index.html раз в три секунды (интервал можно изменить) запрашивает данные у ардуины (отправляя ей символ о) с помощью функции ajax (ajax позволяет не перегружать страницу).


...
function show() /* функция обновления */
          {  
            $.ajax({ 
                type: "GET",
	        url: "box2.php?df=o", 
                timeout:400, /* если до роутера "длиные пинги" то этот параметр нужно увеличивать  */         
                cache: false,
                success: function(data)
                       {                        
                        var vars = data.split(","); /* разбор строки принятой от ардуино */
                         if(vars.length == dlina) /* проверка длины данных (количество блоков разделённых запятой) */
                            {
                               $('#std').html("<v2>stD</v2>"); /* если данные приняты правильно, то надпись stD будет серой */ 
                               /* lampR1 */
                               /* если принята единица, то рисуем жёлтую лампочку. Переменной присваевается символ, который будет отослан при следующем нажатии */
			       if(vars[0]==1)  $('#lampR1').html('<img src="images/onlamp.png">'),(r1 = 'a');  
			       /* если принят ноль, то рисуем серую лампочку. Переменной присваевается символ, который будет отослан при следующем нажатии */
                               else if(vars[0]==0)  $('#lampR1').html('<img src="images/offlamp.png">'),(r1 = 'A');  
                               
                               /* lampR2 */  
                               if(vars[1]==1)  $('#lampR2').html('<img src="images/onlamp.png">'),(r2 = 'b');  
                               else if(vars[1]==0)  $('#lampR2').html('<img src="images/offlamp.png">'),(r2 = 'B');
                            }
                         else 
                             {
                               $('#std').html("<v>stD</v>"); /* если данные приняты НЕправильно, то надпись stD будет красной */
                             }  
                        }
                   });  
          }

$(document).ready(function()
          {  
            show();  
            setInterval('show()',3000);  /* частота обновления */
          });
...



Запрос передаётся php-файлу (box2.php) находящемуся на сервере, который в свою очередь обращается к ардуине через сокет ser2net.


<?php
if($fp = fsockopen("localhost", 3002, $errno, $errstr, 1)) // открываем порт, в качестве посредника между роутером и ардуиной выступает ser2net
   { 
      fwrite($fp, 'Y+=Z'); // отправляем в порт дескриптор Y+=Z
      fwrite($fp, $_GET['df']); // отправляем в порт символ полученый от html странички
      stream_set_timeout($fp, 0, 150000); // полезный таймаут, если ответа нет, то поток закроется через 150 мс
      $bufft = fgets($fp); // получаем ответ от ардуины
      fclose($fp); // закрываем порт
      echo $bufft; // отправляем ответ клиенту 
   } 

else
   { 
      usleep(70000);
      $fp = fsockopen("localhost", 3002, $errno, $errstr, 1);
      fwrite($fp, 'Y+=Z'); 
      fwrite($fp, $_GET['df']);
      stream_set_timeout($fp, 0, 150000);
      $bufft = fgets($fp);
      fclose($fp);
      echo $bufft;
   }
?> 



Ардуина получает команду, обрабатывает её и отправляет ответ, который по той же цепочке возвращается html-страничке (index.html).


...
switch (server[3]) // simvol
          {
            case 'o':  // obnovlenie
            glavnaia();
            break; 
...
void glavnaia() // отправка ответа
 {
      Serial.print(R1); // отсылаем флаг 
      Serial.print(",");  // запятая для парсинга строки
      Serial.println(R2);  // отсылаем флаг !!!последняя строчка должна быть println!!!
 }



Html-страничка разбирает ответ и выводит значения на экран.


...
success: function(data)
                       {                        
                        var vars = data.split(","); /* разбор строки принятой от ардуино */
                         if(vars.length == dlina) /* проверка длины данных (количество блоков разделённых запятой) */
                            {
                               $('#std').html("<v2>stD</v2>"); /* если данные приняты правильно, то надпись stD будет серой */ 
                               /* lampR1 */
                               /* если принята единица, то рисуем жёлтую лампочку. Переменной присваевается символ, который будет отослан при следующем нажатии */
			                   if(vars[0]==1)  $('#lampR1').html('<img src="images/onlamp.png">'),(r1 = 'a');  
			                   /* если принят ноль, то рисуем серую лампочку. Переменной присваевается символ, который будет отослан при следующем нажатии */
                               else if(vars[0]==0)  $('#lampR1').html('<img src="images/offlamp.png">'),(r1 = 'A');  
...


Если открыть ещё одну страничку (или зайти с другого устройства) и включить лампочку, то на первой страничке (в течении 3 сек.) тоже включится лампочка.

Для этого и нужно обновление.




Нажатие на лампочку работает так же как и «обновление», в ардуину отсылается символ включения или отключения (в зависимости от состояния лампочки), ардуина выполняет действие и посылает в ответ строку с флагами состояния (единица или ноль). Ответ разбирается в html-странице и в зависимости от флагов выводит картинку включённой или отключённой лампочки.

Для лучшего понимания откройте файл index.html из архива, и посмотрите комментарии.

Внимание! Если Вы редактируете файл на роутере, то удалите все комментарии, в противном случае могут возникнуть проблемы с русской кодировкой.

Если редактируете файлы на виндовс-машине, то пользуйтесь редактором Notepad++.



Если что-то не так, то возвращаемся и проверяем всё с удвоенным вниманием. Проверяем права на файлы, правильность путей и устройств.


В следующей части — «умный дом» на основе ардуино.

Вот тут можно скачать библиотеку для разгона Arduino.


Обсудить на форуме...


  • 0
  • 27365

Комментарии (40)

0
У меня отсутствует ttyATH0. Какой командой я могу посмотреть, на коком устройстве сидит мой порт консоли?

ls /dev/tty*

/dev/tty /dev/ttyS10 /dev/ttyS13 /dev/ttyS2 /dev/ttyS5 /dev/ttyS8
/dev/ttyS0 /dev/ttyS11 /dev/ttyS14 /dev/ttyS3 /dev/ttyS6 /dev/ttyS9
/dev/ttyS1 /dev/ttyS12 /dev/ttyS15 /dev/ttyS4 /dev/ttyS7

PS. Роутер у меня TP-Link TL-WR842ND с OpenWrt AA 12.09 на борту.
0
Скорее всего /dev/ttyS0

Дайте вот такую команду
ls -l /dev/tty*

И выложете сюда вывод.
0
root@OpenWrt:~# ls -l /dev/tty*
crw-rw-rw-    1 root     root        5,   0 Jan  1  1970 /dev/tty
crw-rw-rw-    1 root     root        4,  64 Jan  1  1970 /dev/ttyS0
crw-rw-rw-    1 root     root        4,  65 Jan  1  1970 /dev/ttyS1
crw-rw-rw-    1 root     root        4,  74 Jan  1  1970 /dev/ttyS10
crw-rw-rw-    1 root     root        4,  75 Jan  1  1970 /dev/ttyS11
crw-rw-rw-    1 root     root        4,  76 Jan  1  1970 /dev/ttyS12
crw-rw-rw-    1 root     root        4,  77 Jan  1  1970 /dev/ttyS13
crw-rw-rw-    1 root     root        4,  78 Jan  1  1970 /dev/ttyS14
crw-rw-rw-    1 root     root        4,  79 Jan  1  1970 /dev/ttyS15
crw-rw-rw-    1 root     root        4,  66 Jan  1  1970 /dev/ttyS2
crw-rw-rw-    1 root     root        4,  67 Jan  1  1970 /dev/ttyS3
crw-rw-rw-    1 root     root        4,  68 Jan  1  1970 /dev/ttyS4
crw-rw-rw-    1 root     root        4,  69 Jan  1  1970 /dev/ttyS5
crw-rw-rw-    1 root     root        4,  70 Jan  1  1970 /dev/ttyS6
crw-rw-rw-    1 root     root        4,  71 Jan  1  1970 /dev/ttyS7
crw-rw-rw-    1 root     root        4,  72 Jan  1  1970 /dev/ttyS8
crw-rw-rw-    1 root     root        4,  73 Jan  1  1970 /dev/ttyS9
0
Странно, его как будто нет. А покажите содержимое файла /etc/inittab
0
::sysinit:/etc/init.d/rcS S boot
::shutdown:/etc/init.d/rcS K shutdown
ttyS0::askfirst:/bin/ash --login


Но на ttyS0 тишина…
0
Это она и есть. Закомментируйте последнюю строчку и попробуйте.


::sysinit:/etc/init.d/rcS S boot
::shutdown:/etc/init.d/rcS K shutdown
#ttyS0::askfirst:/bin/ash --login
0
Чтоб проверить UART, подключите ардуину как на картинке:

istarik.ru/uploads/images/00/00/01/2015/04/24/93ab06.png

Замкните на ардуине RST и GND, включите её в компьютер, откройте Serial Monitor (115200) и перегрузите роутер. Вы должны увидеть лог загрузки. Если его нет, поменяйте местами rx-tx.
0
Очень подробно, спасибо!
Не могу понять, для чего в PHP скрипте используется условный оператор, который в обоих случаях делает то же самое, но только во втором с задержкой. Для чего?
0
Здравствуйте.
Задержка сделана на тот случай, если в данный момент сокет занят другим клиентом.

Я Вам рекомендую попробовать вот это, без пхп.
0
Да, я видел тот вариант, но судя по исходникам принимающей программы идет жесткая привязка к данным, отсылаемым ардуиной, а я хочу передавать свои данные :) Да и вообще, вариант с РНР мне как то больше нравится.
0
Дело хозяйское...)
комментарий был удален
комментарий был удален
0
мне бы в этом шарить
0
В общем все настроил, сделал веб-интерфейс, дошло дело до установки в щиток всего добра и тут я понял, что очень не хватает… возможности удаленной прошивки Ардуино через роутер. В сети видел варианты прошивки ардуино, подключенной через USB, а вот через UART не нашел. Не занимались ли вы данной темой? Или это в принципе невозможно?
0
Вопрос: Экспериментировал с прошивками, потом пытылся откатить все.
После того как светодиод начал быстро моргать, выполнил команду mount_rootЮ а затем mtd -r erase rootfs_data. Что при этом восстанавливается? по крайней мере доступ по 192.168.0.254 не восстановился.
0
telnet 192.168.1.1
0
помогите. при попытке обновить репоз. выходит ошибка
root@OpenWrt:~# opkg update
Downloading istarik.ru/packages/mr3020/packages//Packages.gz.
wget: bad address 'istarik.ru'
Collected errors:
* opkg_download: Failed to download istarik.ru/packages/mr3020/packages//Packages.gz, wget returned 1.
в чем дело?
0
Дело в Вашей невнимательности. Покажите файл /etc/opkg.conf
0
вот открыл нотепад +
внутри написано
src/gz attitude_adjustment istarik.ru/packages/mr3020/packages/
dest root /
dest ram /tmp
lists_dir ext /var/opkg-lists
option overlay_root /overlay
0
просто дело в том что собрал робота по ссылке
дошел до управления через веб. при этом на нажатия ws ad робот не реагирует… я думаю проблема в связи- юарт роутера-ардуино…
вот хотел проверить вашим простым примером… а тут оказывается столько всего надо сделать…
поэтому вопрос непонятно почему автор ничего такого не делал, а у него все работает…
0
Внимательно сравните Вашу строку — src/gz attitude_adjustment istarik.ru/packages/mr3020/packages/
… и то, что написано у меня.
0
… вобщем добавьте http://
0
http:// там стоит. криво скопировалось сюда просто.
0
Покажите вывод:
cat /etc/opkg.conf


Впрочем это не важно, у Вас другая прошивка и часть программ не установятся, тем более ядерные модули.
0
А есть разница какая прошивка? или автор в статье все разрабатывал именно на ту прошивку?
если все сделаю по вашей инструкции и с вашей прошивкой может будет работать?
0
Что, будет работать?
0
робот будет отвечать на кнопки WSAD с веб интерфейса И ехать прямо назад итд
0
Понятия не имею.
0
если закрыть монитор порта, веб интерфейс не работает, светодиод подключенный к ардуино начинает токо мигать, в чем причина может быть такого поведени?
0
Что, как и куда у Вас подключено?
0
к ПК на линуксе с установленным ПО Arduino IDE подключен по USB ардуино. С открытом моинтором порта в Arduino IDE все норм работает, если закрыть монитор то начинает токо мигать с интервалом 3 сек
0
Вот эту команду давали?
stty -F /dev/ttyUSB0 cs8 57600 ignbrk -brkint -icrnl -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts -hupcl
0
Через sudo
sudo stty -F /dev/ttyUSB0 cs8 57600 ignbrk -brkint -icrnl -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts -hupcl
0
Здравствуйте! Помогите пожалуйста.
Делаю всё по инструкции для usb.
После загрузки ардуины первой тестовой программой подключаю её к роутеру через активный usb-хаб
ввожу в консоль:
echo 'a' > /dev/ttyUSB0
или
echo 'b' > /dev/ttyUSB0
И на любую из этих команд ардуина реагирует сиюсекундным разовым морганием светодиода, после чего светодиод погасает.
Что можно попробовать сделать? Очень хочется разобраться. Спасибо заранее =)
0
Поставьте между «землёй» и пином «Reset» электролитический конденсатор ~10 микрофарад, 10-16 вольт. (при загрузке скетча его надо снимать)
Происходит это, потому-что давая команду echo 'a' > /dev/ttyUSB0 открывается устройство и ардуина перегружается (как при подключении к компьютеру). Эта проблема решалась командой stty -F /dev/ttyUSB0 cs8 57600 ... с соответствующими параметрами, но она не работает с ардуинами, у которых в качестве usb-моста используется микросхема ch34x (которая у вас скорее всего стоит).
0
А вот такой конденсатор подойдёт?
Спасибо.
0
Не подойдёт.
0
Добрый день! Подскажите, сделал всё по инструкции… До установки ser2net всё работало идеально, но после… не могу понять в чем дело всё виснет… тестовая страница очень долго грузится, по нажатию на иконку светодиод загорается, но иконка ещё долгое время не меняет своё состояние. Управление ардуинкой осуществляется, но уж очень тормозно. Подскажите в чем может быть дело?
0
Рекомендую Вам, делать всё по этой статье.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.