Asus RT-G32 + OpenWrt + 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у. (винтики спрятаны под резиновыми опорами)

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


распиновка Asus RT-G32

ардуина 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


Подробнее об управлении ардуиной читайте здесь.


На этом всё.

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


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


  • +126
  • 50999
Поддержать автора


Telegram-чат istarik

Задать вопрос по статье
Telegram-канал istarik

Известит Вас о новых публикациях






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

0
Даже и не знаю, что сказать…
  • avatar
  • stD
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.