Как подключить ардуино к роутеру

Шаблон интерфейса для «умного дома» на Ардуино

Время на прочтение
8 мин

Количество просмотров 24K

Здравствуйте. Целью написания данной статьи является желание поделиться с общественностью накопленной информацией и, конечно же, узнать что-то новое. Я опишу, как подключить ардуину к роутеру и как сделать шаблон веб-интерфейса для управления ардуиной, а точнее, для дискретного «дёрганья ножками».

image

Как это выглядит «вживую», можно посмотреть здесь.

Повествование будет вестись на основе популярного нынче роутера TL-MR3020 и Arduino Nano.

image

Подключаться ардуина будет к USB, вариант с UARTом хоть и проще, но всё же трудней. Такая вот суперпозиция )

Я предполагаю что у заинтересованных лиц уже есть роутер прошитый OpenWrt и установлен сервер (Lighttpd), поддерживающий PHP. Ну, или просто компьютер image

Если то — истина, тогда follow my way image

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

Прошиваем пробный скетч

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 'a':
      digitalWrite(led, LOW);
      Serial.println("OK otkl"); // ответ
      break;
     }
   }
   
  else // если символ был не 'Y', то очищаем буфер
    {
      for(byte i=0; i < 255; i++)
       {
         Serial.read();    
       } 
    } 
   } // конец if (Serial.read()=='Y')
  } // конец чтение порта 
}

Будем отправлять в ардуину запрос состоящий из дескриптора (Y+=Z) и управляющего символа (например, ‘А‘- вкл d13). Дескриптор позволит отфильтровать возможный мусор и исключит случайные срабатывания.

Ардуина обрабатывает управляющий символ внутри функции switch (например, включает светодиод) и рапортует о выполнении.

Подключаем ардуину к роутерувключаем в розеткуустанавливаем необходимые пакеты.

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

Драйвера для всех существующих ардуин, утилиту для настройки порта stty и ser2net (о нём ниже):
Тот, кто разбирается, сам выберет необходимый драйвер.

opkg update

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

Если действия производятся на «большом компьютере», то достаточно:

apt-get install ser2net

Проверим, как подцепилось устройство: Может быть, придётся перегрузить.

ls /dev/tty*

Как-то так…

image

Настроим порт утилитой stty:

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

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

cat /dev/ttyUSB0

Тут будет ответ.

В первой консоли испытываем:

echo 'Y+=ZA' > /dev/ttyUSB0

D13 загорелась

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

D13 погасла.

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

Не забудьте отключать его, когда заливаете скетч.

Существуют трудности у ардуин с мостом ch341

image
Если всё работает, то идём дальше.

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

nano /etc/ser2net.conf

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

Добавьте stty и ser2net в автозагрузку:

nano /etc/rc.local

Вот так нужно сделать:

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

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

Перегрузите и проверьте.

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

Теперь залейте в ардуину новый скетч:

byte d2 = 0; // флаги
byte d3 = 0;
byte d4 = 0;
byte d5 = 0;
byte d6 = 0;
byte d7 = 0;
byte d8 = 0;
byte d9 = 0;
byte d10 = 0;
byte d11 = 0;
byte d12 = 0;
byte d13 = 0;

byte descript[5]; // массив

void setup() 
{
  Serial.begin(57600);
  pinMode(2, OUTPUT); 
  pinMode(3, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(10, OUTPUT);
  pinMode(11, OUTPUT);
  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': // d2 вкл
         digitalWrite(2, HIGH); // вкл d2
         d2 = 1; // ставим флаг в единицу (вкл)
         glavnaia(); // отправка ответа
         break;
         
         case 'a': // d2 откл
         digitalWrite(2, LOW); // откл d2
         d2 = 0; // ставим флаг в ноль (откл)
         glavnaia(); // отправка ответа
         break; 
 
         case 'B': // d3
         digitalWrite(3, HIGH);
         d3 = 1;
         glavnaia();
         break;
         
         case 'b': // d3
         digitalWrite(3, LOW);
         d3 = 0;
         glavnaia();
         break;          
  
         case 'C': // d4
         digitalWrite(4, HIGH);
         d4 = 1;
         glavnaia();
         break;
         
         case 'c': // d4
         digitalWrite(4, LOW);
         d4 = 0;
         glavnaia();
         break;   
  
         case 'D': // d5
         digitalWrite(5, HIGH);
         d5 = 1;
         glavnaia();
         break;
         
         case 'd': // d5
         digitalWrite(5, LOW);
         d5 = 0;
         glavnaia();
         break;  
  
         case 'E': // d6
         digitalWrite(6, HIGH);
         d6 = 1;
         glavnaia();
         break;
         
         case 'e': // d6
         digitalWrite(6, LOW);
         d6 = 0;
         glavnaia();
         break;   
  
         case 'F': // d7
         digitalWrite(7, HIGH);
         d7 = 1;
         glavnaia();
         break;
         
         case 'f': // d7
         digitalWrite(7, LOW);
         d7 = 0;
         glavnaia();
         break;  
 
         case 'G': // d8
         digitalWrite(8, HIGH);
         d8 = 1;
         glavnaia();
         break;
         
         case 'g': // d8
         digitalWrite(8, LOW);
         d8 = 0;
         glavnaia();
         break;  
 
         case 'H': // d9
         digitalWrite(9, HIGH);
         d9 = 1;
         glavnaia();
         break;
         
         case 'h': // d9
         digitalWrite(9, LOW);
         d9 = 0;
         glavnaia();
         break; 
         
         case 'I': // d10
         digitalWrite(10, HIGH);
         d10 = 1;
         glavnaia();
         break;
         
         case 'i': // d10
         digitalWrite(10, LOW);
         d10 = 0;
         glavnaia();
         break;         
 
         case 'J': // d11
         digitalWrite(11, HIGH);
         d11 = 1;
         glavnaia();
         break;
         
         case 'j': // d11
         digitalWrite(11, LOW);
         d11 = 0;
         glavnaia();
         break;  
        
         case 'K': // d12
         digitalWrite(12, HIGH);
         d12 = 1;
         glavnaia();
         break;
         
         case 'k': // d12
         digitalWrite(12, LOW);
         d12 = 0;
         glavnaia();
         break;         
      
         case 'M': // d13
         digitalWrite(13, HIGH);
         d13 = 1;
         glavnaia();
         break;
         
         case 'm': // d13
         digitalWrite(13, LOW);
         d13 = 0;
         glavnaia();
         break;
 
         default:
         glavnaia();
       }
     }
   
    else // если дескриптор ложный, то очищаем буфер
      {
        for(byte i=0; i < 255; i++) 
         {
           Serial.read();    
         } 
      } 
     }    // конец if (Serial.read()=='Y')
   }    // конец чтение порта
 
} // конец loop


void glavnaia() // отправка данных
 {
      Serial.print(d2);//0
      Serial.print(","); // по запятой будем парсить 
      Serial.print(d3);//1
      Serial.print(",");
      Serial.print(d4);//2
      Serial.print(",");
      Serial.print(d5);//3
      Serial.print(",");
      Serial.print(d6);//4
      Serial.print(",");
      Serial.print(d7);//5
      Serial.print(",");
      Serial.print(d8);//6
      Serial.print(",");
      Serial.print(d9);//7 
      Serial.print(",");
      Serial.print(d10);//8
      Serial.print(",");
      Serial.print(d11);//9
      Serial.print(",");
      Serial.print(d12);//10
      Serial.print(",");
      Serial.println(d13);//11 // отсылается 12 значений разделённых запятой
 }

Роутер отправляет в ардуину запрос от клиента состоящий из дескриптора (Y+=Z) и управляющего символа (например ‘А‘- вкл d2).Ардуина обрабатывает управляющий символ и отправляет ответ роутеру, который в свою очередь отдаст его клиенту. Работа с клиентом описана ниже.

Скачайте архив и распакуйте его в рабочую папку сервера (по умолчанию это /var/www), вот так – /var/www/knopki (у вас может быть своя папка).

В браузере зайдите по адресу ваш_роутер/knopki/. Если связь установлена, то вы увидите это:

image

Нажмите на D13 — загорится светодиод на ардуине и кнопка подсветится.

Суть работы

Обновление страницы:

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

/*обновление*/
show();
setInterval(show,3000);  /* частота обновления в миллисекундах */

function show(){  /* функция обновления */
 
            $.ajax({ 
                type: "GET",
                url: "box2.php?df=o", /* отправка символа о */
                timeout:300,           
                cache: false,       
                success: function(data){ 
...

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

ser2net

ser2net — это крохотный прокси-серверок создающий соединение между сокетом и устройством (/dev/tty*).

Как показала практика, через сокет php-файл работает лучше, нежели обращаясь к устройству напрямую.

То есть, если пхп-файл открывает устройство вот так ( fopen(‘/dev/tty*’, …) ), то через некоторое время (несколько часов) всё зависает, а если так ( fsockopen(«localhost», 3002, $errno, $errstr, 1); ), то никаких проблем.

Мне кажется, что это как-то связано с переполнением буфера. И исходя из вышесказанного, хотелось бы услышать на этот счёт мнение Умных людей.

<?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 (descript[3])
       {
         case 'o': // обновление
         glavnaia(); // отправка ответа
         break;
...
void glavnaia() // отправка данных
 {
      Serial.print(d2);//0
      Serial.print(",");
      Serial.print(d3);//1
...

Html-страничка разбирает ответ и выводит на экран нужную кнопку.


...
 success: function(data){   
                                          
                           var vars = data.split(","); /* разбор строки принятой от ардуино */
                           if(vars.length == dlina){ /* проверка длины данных (количество блоков разделённых запятой) */
                               
                               /*d2*/
                               if(vars[0] == 1) { $(".d2otkl").show(); $(".d2vkl").hide(); }  /* в зависимости от принятого флага скрывает/показывает кнопку вкл или откл */
                               else if(vars[0] == 0) { $(".d2otkl").hide(); $(".d2vkl").show(); } 
...

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

Нажатие на кнопку:

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

Ответ разбирается в html-странице и в зависимости от флагов выводит на экран нужную кнопку.

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


Если связи между ардуиной и роутером нет, то будет только красная надпись stDэто индикатор работы, когда связь установлена, надпись становится серой.

image

Подождите минуту и пообновляйте страницу. Если связь не устанавливается, то проверьте настройки роутера.
Проверьте права на файлы, правильность путей и устройств.


Внешний вид

Названия кнопок меняются в конце файла index.html

...
<div class="knop d2vkl">D2</div> <!-- здесь менять названия кнопок -->
<div class="knop d2otkl">D2</div> <!-- чтобы убрать кнопку удалите оба блока -->
...

Позиция и размер кнопок задаются в файле knopki.css

...
.d2vkl{
top: 20px; /*координаты кнопок*/
left: 20px; /*координаты кнопок*/
box-shadow: 0 0 10px 3px rgba(0,0,0,0.3); /*цвет и размер тени кнопки*/
-webkit-transition-duration: 0.6s; /*плавность появления*/
-o-transition-duration: 0.6s;
-moz-transition-duration: 0.6s;
transition-duration: 0.6s;
}

.d2vkl:hover{ /*наведение мыши на кнопку*/
box-shadow: 0 0 2px 1px rgba(0,0,0,0.3);
}
...

...
.knop {
position: absolute;
width: 200px; /*ширина для всех кнопок*/
height: 100px; /*высота для всех кнопок*/
display: none;
cursor: pointer; 
font-size: 30px; /*размер текста на кнопках*/
font-weight: 600; /*ширина текста на кнопках*/
font-family: Arial, Helvetica, sans-serif; /*шрифт*/
color: #161616; /*цвет текста на кнопках*/
text-shadow: 0px 1px 2px #7c7c7c; /*цвет и размер тени кнопок*/
text-align: center;
line-height: 3.2;
}

Цвет фона меняется в файле style.css

body {
background:#202020; /* цвет фона */
}
...

На этом, пожалуй, стоит закончить. Спасибо тем, кто потратил своё драгоценное. Если где-то допустил неточность, то прошу поправить меня.

«Дизаин» несколько мрачноват, но это пока всего лишь шаблон для демонстрации функций.

Статья писалась под великолепную музыку «Nirvana».

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.

Телеграм-чат istarik

Arduino — это платформа для разработки электронных проектов, которая позволяет создавать умные устройства и решения. Однако, чтобы воспользоваться всеми возможностями Arduino, необходимо настроить соединение с интернетом. В данной статье мы расскажем, как подключить Arduino к роутеру и начать сбор данных, управление и мониторинг удаленных устройств.

Перед тем, как начать подключение Arduino к роутеру, убедитесь, что у вас имеются следующие компоненты: сама плата Arduino, роутер с доступом в Интернет, Ethernet-кабель, компьютер или ноутбук.

Первый шаг — подключение Ethernet-кабеля к Arduino и роутеру. Вот подробная инструкция: возьмите Ethernet-кабель и вставьте один конец его в разъем Ethernet на Arduino, а другой конец подключите к порту Ethernet на роутере. Убедитесь, что оба конца кабеля надежно подсоединены.

После того, как вы подключили кабель, перейдите ко второму шагу — настройке программного обеспечения Arduino. Подключите Arduino к компьютеру с помощью USB-кабеля и запустите среду разработки Arduino на своем компьютере. В среде разработки выберите правильную модель платы Arduino и порт, к которому она подключена. Это необходимо для обеспечения связи между компьютером и платой Arduino.

Содержание

  1. Подготовка оборудования
  2. Установка Arduino IDE
  3. Подключение Arduino к компьютеру
  4. Скачивание и установка нужных библиотек
  5. Подключение Arduino к роутеру
  6. Настройка и проверка подключения
  7. Пример программы для работы с роутером

Подготовка оборудования

Перед подключением Arduino к роутеру необходимо убедиться, что у вас есть все необходимое оборудование:

  1. Arduino — миниатюрная электронная платформа, которую мы будем использовать для подключения к роутеру.
  2. USB-кабель — кабель, который позволит подключить Arduino к компьютеру.
  3. Роутер — устройство, которое обеспечивает подключение к интернету.
  4. Компьютер — устройство, на котором будем выполнять настройки и подключение.
  5. Интернет-провайдер — ваш поставщик интернет-услуг.

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

Установка Arduino IDE

Перед тем, как приступить к подключению Arduino к роутеру, необходимо установить программную среду разработки Arduino IDE на ваш компьютер. Следуйте этим шагам для установки Arduino IDE:

  1. Перейдите на официальный сайт Arduino по адресу www.arduino.cc.
  2. Выберите вкладку «Software» (программное обеспечение) в верхней панели.
  3. Нажмите кнопку «Downloads» (загрузки).
  4. На странице загрузок Arduino IDE выберите подходящую версию для вашей операционной системы.
  5. Следуйте инструкциям на экране для завершения установки программы.

После успешной установки Arduino IDE вы будете готовы приступить к работе с Arduino и подключению его к роутеру.

Подключение Arduino к компьютеру

Чтобы начать работу с Arduino, необходимо подключить ее к компьютеру. Для этого выполните следующие шаги:

  1. Получите кабель USB-A к USB-B, который используется для подключения Arduino к компьютеру.
  2. Одним концом кабеля подключите USB-A к порту компьютера.
  3. Другим концом кабеля подключите USB-B к порту Arduino, который называется «USB».
  4. Убедитесь, что Arduino подключена к компьютеру и включена.
  5. При успешном подключении компьютер должен распознать Arduino и установить драйверы, если требуется.
  6. Откройте Arduino IDE на компьютере, если он установлен.
  7. Выберите порт, к которому подключена Arduino, в меню «Инструменты» -> «Порт».

После выполнения этих шагов Arduino будет успешно подключена к компьютеру и вы будете готовы начать разработку и программирование используя Arduino IDE.

Скачивание и установка нужных библиотек

Перед подключением Arduino к роутеру вам может понадобиться установить дополнительные библиотеки. Данные библиотеки расширят функциональность Arduino и предоставят доступ к необходимым инструментам и функциям.

Скачать библиотеки вы можете с официального сайта Arduino или из других источников, таких как репозиторий GitHub. После скачивания вам нужно будет установить их в Arduino IDE.

Вот шаги для скачивания и установки библиотек:

Шаг Описание
Шаг 1 Откройте Arduino IDE на вашем компьютере.
Шаг 2 Нажмите на вкладку «Скетч» в меню Arduino IDE и выберите пункт «Включить библиотеку».
Шаг 3 В появившемся меню выберите «Управление библиотеками».
Шаг 4 Появится окно «Управление библиотеками», в котором вы можете найти все доступные библиотеки для установки.
Шаг 5 Введите название нужной вам библиотеки в поле поиска и нажмите кнопку «Установить».
Шаг 6 Подождите, пока Arduino IDE загрузит и установит библиотеку. Затем закройте окно «Управление библиотеками».
Шаг 7 Библиотека будет автоматически добавлена в Arduino IDE и готова к использованию.

Повторите эти шаги для каждой нужной вам библиотеки. После установки всех необходимых библиотек вы будете готовы к подключению Arduino к роутеру.

Подключение Arduino к роутеру

Шаги по подключению Arduino к роутеру:

  1. Подготовьте необходимые компоненты: Arduino, роутер, Ethernet-кабель RJ45.
  2. Подключите Ethernet-кабель к Arduino с одной стороны и к свободному порту на роутере с другой стороны.
  3. Создайте новый проект в Arduino IDE и откройте его.
  4. Добавьте библиотеку Ethernet к проекту, используя меню «Скетч» > «Подключить библиотеку» > «Ethernet».
  5. Определите IP-адрес для Arduino. IP-адрес должен быть в том же подсети, что и ваш роутер.
  6. Инициализируйте объект Ethernet с указанным IP-адресом и MAC-адресом (который можно найти под основной платой Arduino).
  7. Подключитесь к роутеру, вызвав функцию begin().
  8. Проверьте подключение, используя функцию connected().
  9. Теперь вы можете использовать Arduino для управления подключенными устройствами через роутер.

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

Настройка и проверка подключения

После успешного подключения Arduino к роутеру, необходимо выполнить несколько шагов настройки и проверить работоспособность соединения:

  1. Откройте Arduino IDE на вашем компьютере и выберите правильную платформу для вашей Arduino.
  2. В меню «Инструменты» выберите порт, к которому подключена Arduino.
  3. Создайте новый проект и загрузите его на Arduino.
  4. Откройте монитор порта в Arduino IDE, чтобы проверить подключение.
  5. Введите команду «AT» и нажмите Enter. Если все настроено правильно, вы должны увидеть «OK» в ответ.
  6. Попробуйте отправить другие команды, такие как «AT+CWMODE=1» для установки режима работы Wi-Fi модуля.
  7. Если все команды выполняются без ошибок, значит подключение работает корректно.

Проверьте работу подключения, используя простые примеры проектов, такие как управление светодиодом через Wi-Fi или отправка данных на сервер.

Пример программы для работы с роутером

Для подключения Arduino к роутеру и использования его функционала, мы можем использовать библиотеку Ethernet, которая позволяет установить соединение по протоколу TCP/IP.

Вот пример программы, демонстрирующей подключение к роутеру и отправку GET-запроса на указанный сервер:

#include <SPI.h>
#include <Ethernet.h>
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; // MAC-адрес Arduino
IPAddress ip(192, 168, 1, 10); // IP-адрес Arduino
IPAddress server(192, 168, 1, 1); // IP-адрес роутера
EthernetClient client;
void setup() {
Ethernet.begin(mac, ip);
Serial.begin(9600);
delay(1000);
Serial.println("Connecting...");
if (client.connect(server, 80)) {
Serial.println("Connected");
client.println("GET / HTTP/1.0");
client.println("Host: 192.168.1.1");
client.println("Connection: close");
client.println();
} else {
Serial.println("Connection failed");
}
}
void loop() {
if (client.available()) {
char c = client.read();
Serial.print(c);
}
if (!client.connected()) {
Serial.println();
Serial.println("Disconnecting");
client.stop();
while(true);
}
}

В данной программе мы сначала подключаем библиотеки SPI и Ethernet, а затем объявляем необходимые переменные. В функции setup() инициализируем подключение к сети и роутеру с помощью Ethernet.begin() и client.connect(). Кроме того, отправляем GET-запрос на указанный сервер и выводим сообщения о статусе подключения в Serial Monitor.

В функции loop() мы проверяем доступность данных от сервера с помощью client.available(), а также проверяем активность соединения клиента с роутером с помощью client.connected(). Если соединение разорвано, мы останавливаем клиента с помощью client.stop().

Это всего лишь простой пример программы для работы с роутером на Arduino. Вы можете модифицировать его для своих нужд или использовать другие функции библиотеки Ethernet для установления более сложных соединений и отправки команд.

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

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

Для того чтобы подключить Arduino к роутеру, необходимо выполнить несколько простых шагов. Во-первых, убедитесь, что ваш Arduino оснащен модулем Wi-Fi. Если нет, то вам необходимо приобрести модуль Wi-Fi и установить его на Arduino.

Далее, вам необходимо настроить Wi-Fi соединение на Arduino. Для этого в Arduino IDE откройте пример «WiFi» и запустите его на своей плате Arduino. Во время выполнения кода, Arduino будет искать доступные Wi-Fi сети и пытаться подключиться к ним. Вам нужно будет ввести имя и пароль вашей домашней Wi-Fi сети.

Содержание

  1. Подключение Arduino к роутеру: полезные советы
  2. 1. Подготовка Arduino
  3. 2. Подключение Arduino к компьютеру
  4. 3. Подготовка роутера
  5. 4. Подключение Arduino к роутеру
  6. 5. Настройка Arduino IDE
  7. 6. Загрузка программы на Arduino
  8. 7. Проверка подключения
  9. Выбираем подходящий модуль

Подключение Arduino к роутеру может быть полезным для создания сетевых устройств, которые могут контролироваться из интернета или могут взаимодействовать с другими устройствами в сети. Если вы новичок в программировании и работе с Arduino, это может показаться сложным, но соблюдение нескольких простых шагов поможет вам успешно подключить Arduino к роутеру.

1. Подготовка Arduino

Перед подключением Arduino к роутеру убедитесь, что у вас есть:

  • Arduino плата;
  • USB-кабель для подключения Arduino к компьютеру;
  • Arduino IDE, которая позволяет загружать программы на плату Arduino.

2. Подключение Arduino к компьютеру

Соедините Arduino с компьютером с помощью USB-кабеля. Убедитесь, что Arduino плата правильно определяется и подключается к компьютеру. Проверьте, что правильно установлены драйверы для Arduino.

3. Подготовка роутера

Перед подключением Arduino к роутеру убедитесь, что ваш роутер имеет поддержку Ethernet соединений. Установите необходимое оборудование и убедитесь, что роутер подключен к интернету.

4. Подключение Arduino к роутеру

Для подключения Arduino к роутеру вам понадобится Ethernet Shield или плата, которая поддерживает Ethernet. Подключите Ethernet Shield к Arduino плате с помощью штекера и провода. Затем соедините Ethernet кабель с Ethernet Shield и роутером.

5. Настройка Arduino IDE

Откройте Arduino IDE на вашем компьютере и выберите правильную плату Arduino и порт в меню «Инструменты». Установите настройки соединения с роутером, используя IP-адрес роутера, который можно найти в настройках роутера или с помощью команды ipconfig.

6. Загрузка программы на Arduino

Напишите программу для Arduino, которая будет выполнять нужные вам действия с роутером или сетевыми устройствами. Сохраните программу и загрузите ее на Arduino плату, используя кнопку «Загрузить» в Arduino IDE.

7. Проверка подключения

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

Теперь вы знаете, как подключить Arduino к роутеру! Следуя этим советам, вы сможете успешно создавать сетевые устройства и контролировать их через интернет!

Выбираем подходящий модуль

При выборе модуля для подключения Arduino к роутеру, необходимо учитывать несколько факторов:

  • Тип подключения: обычно Arduino подключается к роутеру через Wi-Fi или Ethernet. В зависимости от ваших потребностей и возможностей, выберите соответствующий модуль.
  • Скорость передачи данных: если вам нужна высокая скорость передачи данных, убедитесь, что выбранный модуль поддерживает необходимую скорость. Некоторые модули могут иметь ограничения по скорости передачи данных.
  • Совместимость: убедитесь, что выбранный модуль совместим с вашей Arduino-платой. Проверьте документацию модуля и сравните его характеристики с требованиями вашей платы.

Используйте эту информацию для выбора подходящего модуля для подключения вашей Arduino к роутеру. Обратите внимание на то, какие возможности и функции вам требуются, а также на доступность и цену модуля.

Arduino – это платформа для прототипирования систем автоматизации и контроля. Одной из ключевых возможностей Arduino является возможность управления устройствами через интернет. Для этого необходимо настроить плату Arduino и подключить ее к вашему домашнему роутеру.

В этом подробном руководстве мы рассмотрим все этапы настройки Arduino для управления через роутер. Вы узнаете, как установить необходимые библиотеки, настроить Wi-Fi соединение и отправлять команды на плату Arduino из любой точки мира.

Перед началом работы вам понадобятся компьютер с установленной Arduino IDE и плата Arduino с Wi-Fi модулем. Также необходимо иметь доступ к интернету и настроенный домашний роутер.

Чтобы начать, откройте Arduino IDE и создайте новый проект. Включите поддержку Wi-Fi модулей и укажите SSID (имя) вашего домашнего Wi-Fi сети и пароль для подключения. Подключите вашу плату Arduino к компьютеру с помощью USB-кабеля и загрузите прошивку на плату.

Содержание

  1. Как управлять Arduino через роутер: полное руководство
  2. Шаг 1: Подготовка Arduino
  3. Шаг 2: Подключение Arduino к роутеру
  4. Шаг 3: Настройка IP-адреса Arduino
  5. Шаг 4: Управление Arduino через роутер
  6. Соединение Arduino с роутером: шаг за шагом
  7. Настройка роутера для работы с Arduino
  8. Программирование Arduino для управления через роутер
  9. Установка необходимых библиотек и драйверов
  10. 1. Установка библиотеки Ethernet
  11. 2. Установка драйвера CH340
  12. 3. Проверка установки
  13. Подключение Arduino к локальной сети через роутер

Как управлять Arduino через роутер: полное руководство

Шаг 1: Подготовка Arduino

Прежде чем начать управление Arduino через роутер, вам нужно подготовить вашу Arduino. Вам понадобится Arduino плата, кабель USB и компьютер.

  1. Подключите Arduino к компьютеру при помощи кабеля USB.
  2. Загрузите код на вашу Arduino, которая будет отвечать на команды сети. Например, вы можете загрузить простую программу, которая будет переключать светодиод.

Шаг 2: Подключение Arduino к роутеру

Для того, чтобы управлять Arduino через роутер, вам необходимо подключить Arduino к вашему локальному Wi-Fi роутеру.

  1. Подключите Ethernet Shield к вашей Arduino.
  2. Подключите Ethernet Shield к роутеру при помощи Ethernet-кабеля.

Шаг 3: Настройка IP-адреса Arduino

После того, как Arduino подключена к роутеру, вам нужно настроить IP-адрес Arduino, чтобы обеспечить уникальность соединения.

  1. Откройте Arduino IDE на вашем компьютере.
  2. Откройте пример кода из библиотеки Ethernet. Например, пример «WebServer».
  3. Замените строки, в которых указан IP-адрес, на IP-адрес вашего роутера.
  4. Загрузите измененный код на вашу Arduino.

Шаг 4: Управление Arduino через роутер

Теперь, когда ваша Arduino подключена к роутеру и настроена, вы можете управлять ею через вашу сеть Wi-Fi.

  1. Выясните IP-адрес вашей Arduino. Вы можете найти его в настройках вашего роутера.
  2. Откройте веб-браузер на вашем компьютере или устройстве.
  3. Введите IP-адрес вашей Arduino в адресную строку браузера.
  4. Вы должны увидеть веб-интерфейс вашей Arduino.
  5. Теперь вы можете управлять вашей Arduino, выполняя различные действия через веб-интерфейс. Например, вы можете использовать кнопки для управления светодиодами или изменять параметры других подключенных устройств.

Вот и все! Теперь вы знаете, как управлять Arduino через роутер. Вы можете использовать это руководство, чтобы создать удаленное управление любыми проектами на Arduino и легко взаимодействовать с вашими устройствами.

Соединение Arduino с роутером: шаг за шагом

Чтобы управлять Arduino через роутер, необходимо настроить соединение между ними. В этом руководстве мы покажем вам, как это сделать шаг за шагом.

Шаг 1: Подключение Ethernet-модуля к Arduino

Первым делом подключите Ethernet-модуль к вашей Arduino. Для этого вставьте один конец Ethernet-кабеля в разъем Ethernet-модуля, а другой конец — в разъем Ethernet-порта на вашем роутере.

Шаг 2: Подключение Arduino к компьютеру

Далее подключите Arduino к компьютеру с помощью USB-кабеля. Убедитесь, что Arduino правильно подключена и обнаружена компьютером.

Шаг 3: Загрузка кода на Arduino

Откройте Arduino IDE и загрузите код на вашу Arduino. Этот код позволит Arduino работать как веб-сервер и связываться с роутером.

Шаг 4: Получение IP-адреса роутера

Чтобы соединить Arduino с роутером, вам необходимо знать IP-адрес роутера. В большинстве случаев вы можете найти его на задней панели роутера или в его руководстве пользователя. Запишите IP-адрес роутера, так как он понадобится вам в следующем шаге.

Шаг 5: Настройка соединения на Arduino

В коде Arduino, который вы загрузили на шаге 3, найдите строку с IP-адресом роутера и замените ее на IP-адрес вашего роутера. Сохраните изменения и перезагрузите код на Arduino.

Шаг 6: Проверка соединения

После перезагрузки кода на Arduino, убедитесь, что она успешно подключена к роутеру. Выполните запрос к IP-адресу Arduino через веб-браузер. Если все настроено правильно, вы должны увидеть веб-страницу Arduino, которую вы можете использовать для управления устройствами, подключенными к Arduino.

Теперь у вас есть все необходимые инструкции для соединения Arduino с роутером. Пользуйтесь этим руководством и наслаждайтесь управлением Arduino через веб-интерфейс!

Настройка роутера для работы с Arduino

Для управления Arduino через роутер необходимо правильно настроить роутер и открыть доступ к портам, которые использует Arduino. В этом разделе мы рассмотрим необходимые шаги для настройки роутера.

1. Войдите в интерфейс управления роутером. Для этого откройте веб-браузер и в адресной строке введите IP-адрес роутера. Обычно адрес указан на корпусе роутера или в его документации.

2. Войдите в настройки роутера, введя имя пользователя и пароль. Если вы не знаете эти данные, проверьте документацию к роутеру или обратитесь к поставщику интернет-услуг.

3. Найдите раздел настройки «Переадресация портов» или «Правила портов». В разных моделях роутеров это может называться по-разному. Откройте этот раздел.

4. Настройте переадресацию портов для Arduino. Для этого создайте новое правило с указанием следующих параметров:

Имя правила Внешний порт Протокол IP-адрес Внутренний порт
Arduino Внешний порт, через который будет доступна Arduino TCP или UDP IP-адрес Arduino в локальной сети Внутренний порт, на котором работает Arduino

5. Сохраните настройки роутера.

Теперь ваш роутер настроен для работы с Arduino. Вы можете управлять Arduino из любой точки сети, используя внешний IP-адрес роутера и указанный внешний порт.

Обратите внимание, что процедура настройки роутера может варьироваться в зависимости от модели и производителя. Если у вас возникли проблемы с настройкой роутера, обратитесь к документации или поддержке поставщика интернет-услуг.

Программирование Arduino для управления через роутер

Для управления Arduino через роутер необходимо написать скетч (программу) на языке Arduino. Этот скетч будет выполнять задачи подключения к роутеру, отправки и приема данных через интернет.

Перед написанием скетча необходимо установить библиотеку Ethernet, которая позволяет устанавливать соединение с сетью через Ethernet-кабель. Библиотека Arduino Ethernet уже содержит все необходимые функции для этой цели.

После установки библиотеки Ethernet и ее подключения в программе, можно приступать к написанию скетча.

Основные шаги программирования Arduino для управления через роутер:

  1. Подключить необходимые библиотеки:
    • #include <SPI.h>
    • #include <Ethernet.h>
  2. Задать константы для MAC-адреса Arduino и IP-адреса:
    • byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
    • IPAddress ip(192, 168, 1, 177);
  3. Создать объект EthernetClient для установления соединения с роутером:
    • EthernetClient client;
  4. В функции setup() выполнить инициализацию Ethernet и подключение к роутеру с использованием функции Ethernet.begin(mac, ip):
    • Ethernet.begin(mac, ip);
  5. В функции loop() проверять наличие соединения с роутером:
    • if (client.connect(server, 80)) { /* соединение установлено */ }
    • else { /* ошибка соединения */ }
  6. Опрашивать роутер и отправлять данные:
    • client.print(«GET /data?value=10 HTTP/1.1»);
    • client.print(«Host: «);
    • client.println(server);
    • client.println();
  7. Ожидать ответа от роутера:
    • while (client.available()) { /* получение данных */ }
  8. Обрабатывать полученные данные и выполнять требуемые действия.

Описанные выше шаги являются базовыми для программирования Arduino для управления через роутер. В зависимости от поставленной задачи, могут быть добавлены дополнительные функции и настройки.

Установка необходимых библиотек и драйверов

Для успешного управления Arduino через роутер, необходимо установить определенные библиотеки и драйверы. В этом разделе мы рассмотрим, как правильно выполнить данную процедуру.

1. Установка библиотеки Ethernet

Первой необходимой библиотекой для работы с Ethernet-портом Arduino является библиотека Ethernet. Для ее установки необходимо выполнить следующие действия:

  1. Зайдите в меню «Скетч» в Arduino IDE (интегрированной среде разработки Arduino).
  2. Выберите пункт «Библиотеки» и затем «Управление библиотеками».
  3. В поисковой строке введите «Ethernet» и найдите библиотеку Ethernet.
  4. Нажмите на кнопку «Установить» рядом с библиотекой, чтобы начать процесс установки.
  5. После завершения установки библиотеки Ethernet, вы сможете использовать ее в своих проектах.

2. Установка драйвера CH340

Драйвер CH340 – это драйвер, который необходим для работы Arduino с USB портом на вашем компьютере. Чтобы установить драйвер CH340, выполните следующие шаги:

  1. Подключите Arduino к вашему компьютеру с помощью USB-кабеля.
  2. Перейдите на официальный сайт производителя и найдите раздел загрузок/поддержка.
  3. Загрузите драйвер CH340 для операционной системы, которую вы используете.
  4. Запустите установочный пакет драйвера и следуйте инструкциям на экране для завершения процесса установки.
  5. После завершения установки драйвера CH340, вы сможете успешно подключить Arduino к компьютеру.

3. Проверка установки

Чтобы убедиться, что необходимые библиотеки и драйверы были успешно установлены, вы можете выполнить следующую проверку:

  1. Откройте Arduino IDE и выберите пункт «Файл» -> «Примеры» -> «Ethernet» -> «WebServer».
  2. Скомпилируйте и загрузите этот пример на вашу Arduino.
  3. Если загрузка прошла успешно, это означает, что библиотека Ethernet и драйвер CH340 были правильно установлены.

Теперь вы готовы к управлению Arduino через роутер!

Подключение Arduino к локальной сети через роутер

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

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

Перейдите в настройки вашего роутера и найдите секцию «Подключения» или «Сеть». Затем найдите кнопку «Добавить устройство» или «Резервация DHCP». Нажмите на нее и укажите MAC-адрес вашей Arduino. MAC-адрес можно найти в настройках самой Arduino или в документации к ней.

После добавления MAC-адреса Arduino в список устройств роутера, необходимо присвоить ей статический IP-адрес. Введите IP-адрес, который будет использоваться для подключения к Arduino в локальной сети. Также установите маску подсети и шлюз по умолчанию.

Сохранив настройки, перезагрузите роутер и Arduino. После перезагрузки Arduino будет подключена к локальной сети с новым статическим IP-адресом.

Теперь можно установить соединение с Arduino через Интернет, используя ее статический IP-адрес. Для этого откройте браузер на компьютере, подключенном к другой сети, и введите IP-адрес Arduino в адресной строке браузера. Откроется веб-интерфейс Arduino, который можно использовать для управления платой.

Обратите внимание, что для удаленного управления Arduino через роутер нужно настроить перенаправление портов. Подробнее о настройке портов роутера можно найти в его инструкции.

Шаги подключения Arduino к локальной сети:
1. Подключите Arduino к компьютеру с помощью USB-кабеля и установите драйверы.
2. Найдите настройки роутера и добавьте MAC-адрес Arduino в список подключенных устройств.
3. Присвойте Arduino статический IP-адрес и настройте маску подсети и шлюз по умолчанию.
4. Перезагрузите роутер и Arduino.
5. Откройте браузер на компьютере, подключенном к другой сети, и введите статический IP-адрес Arduino для управления платой.

Другие наши интересноые статьи:

  • Как подключить антенну усилитель интернета к роутеру
  • Как подключить антенну телевизора к роутеру
  • Как подключить антенну к роутеру теле2
  • Как подключить антенну рэмо к роутеру
  • Как подключить антенну к роутеру ростелеком

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии