Вы находитесь на странице: 1из 6

Asus RT­G32 + OpenWrt + Arduino

Arduino

Полезное применение для старого девайса 

Asus RT­G32 считается не очень удачным, однако если установить на него прошивку OpenWrt, то он становится не
только вполне работоспособным, но ещё и может превратиться в подобие «умного дома» если к нему подключить
ардуину. 

Итак, если Вы являетесь владельцем такого девайса и хотите найти ему расширенное применение, то эта статья
для Вас. 

Прошивка

Скачиваем прошивку (RT­G32C1.bin). Внимание! Прошивка для версии C1.  
Если кто­то захочет собрать её самостоятельно, то сможет воспользоваться инструкцией с сайта OpenWrt. 

Далее нам понадобится TFTP­сервер.  

Пользователи Linux могут с лёгкостью установить его вот так: (скорее всего он уже есть) 

sudo apt­get install tftp

А владельцы Win скачают его здесь. 

Теперь подготовим компьютер и роутер. В сетевых настройках укажите статический IP­адрес — 192.168.1.10 и маску
— 255.255.255.0, а шлюз и DNS оставьте пустыми.  
Справедливо для всех ОС. 

Соедините сетевым кабелем компьютер и любой из LAN­портов роутера (жёлтенькие). 

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

Обратите внимание, после прошивки у роутера не будет web­интерфейса, а неудачная прошивка приведёт к
«окирпичиванию».

Для Win: 

Отключите антивирусы и прочие файрволы. 

Запустите tftpd32(64).exe от имени администратора и выберите вкладку «Tftp Client».  
В поле «Server Interface» введите IP­адрес 192.168.1.10.  
В поле «Host» введите IP­адрес роутера — 192.168.1.1.  
В поле «Local File» выберите скачанную прошивку — RT­G32C1.bin и нажмите кнопку «Put».  

Второй вариант — из командной строки скомандовать:) 

cd \
tftp ­i 192.168.1.1 put RT­G32C1.bin
Предварительно поместив файл RT­G32C1.bin на диск С:\. 

Для Linux: 

Скопируйте прошивку в домашнюю папку и в терминале наберите по очереди: 

tftp 192.168.1.1
tftp>binary
tftp>put /home/user/RT­G32C1.bin

После обновления дождитесь пока роутер перезагрузится (минуты три) и ничего не трогайте до завершения. 

В сетевых настройках компьютера включите автоматическое получение IP­адреса и перегрузите роутер. 

Теперь нужно зайти на роутер по telnet и активировать ssh. Как это сделать я подробно описал здесь. 

После всех процедур Вы увидите такую картину. 

Ардуина

Суть всей затеи заключается в том, что подключаясь к роутеру по ssh можно взаимодействовать с ардуиной
через UART. 

В качестве примера к роутеру будет подключена ардуина с датчиком влажности и температуры — DHT22, однако
ничто не мешает добавить функционала в эту конструкцию.  

Потребуется библиотека DHTsensor.  

Залейте скетч: 
#include "DHT.h" 
#define DHTPIN 9     
#define DHTTYPE DHT22  
DHT dht(DHTPIN, DHTTYPE);

int hum = 100; // влажность 
int thum = 0; // температура  
int count = 0; // счётчик ­ просто для того чтоб было видно, что программа работает  

void setup() 
{
  Serial.begin(9600);
  dht.begin();
}
   
void loop() 

  thum = dht.readTemperature(); 
  hum = dht.readHumidity();
  count++;
  if(count > 10) count=0;
  delay(1000);
  Serial.print("Count: ");
  Serial.println(count);  
  Serial.print("Temp: "); 
  Serial.println(thum);
  Serial.print("Vlaga: ");
  Serial.println(hum); 
  Serial.println("­­­­­­­­­­­­­­­");
}

Ардуина раз в три секунды отсылает данные в уарт.

Пришло время разобрать роутер и подключиться к UARTу. (винтики спрятаны под резиновыми опорами) 

Подключите всё по следующей схеме. 

ардуина RX <­> TX роутер 
ардуина TX <­> RX роутер 
GND <­> GND 

Подайте питание на роутер и ардуину, зайдите на роутер и дайте команду чтения из устройства: 

cat /dev/ttyS1

В терминале появится желаемое… 

На тот случай если Вы захотите поуправлять чем­либо, то достаточно будет залить в ардуину этот код: 

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. 

В терминале дать команды: 

echo 'a' > /dev/ttyS1

echo 'b' > /dev/ttyS1
Подробнее об управлении ардуиной читайте здесь. 

На этом всё.  

По причине малого объёма памяти и отсутствия возможности подключить флешку, управление через веб­
интерфейс не получится. 

Поболтать о статье на форуме... 

Asus RT­G32, OpenWrt, Arduino

0 28 июня 2015, 18:54 stD  5492

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.

Вам также может понравиться