Asus RT-G32 + OpenWrt + Arduino
Полезное применение для старого девайса
Asus RT-G32 считается не очень удачным, однако если установить на него прошивку OpenWrt, то он становится не только вполне работоспособным, но ещё и может превратиться в подобие «умного дома» если к нему подключить ардуину.
Итак, если Вы являетесь владельцем такого девайса и хотите найти ему расширенное применение, то эта статья для Вас.
Прошивка
Скачиваем прошивку (RT-G32C1.bin).
Если кто-то захочет собрать её самостоятельно, то сможет воспользоваться инструкцией с сайта OpenWrt.
Далее нам понадобится TFTP-сервер.
Пользователи Linux могут с лёгкостью установить его вот так: (скорее всего он уже есть)
sudo apt-get install tftp
А владельцы Win скачают его здесь.
Теперь подготовим компьютер и роутер. В сетевых настройках укажите статический IP-адрес — 192.168.1.10 и маску — 255.255.255.0, а шлюз и DNS оставьте пустыми.
Справедливо для всех ОС.
Соедините сетевым кабелем компьютер и любой из LAN-портов роутера
На обесточенном роутере зажмите кнопку Reset, включите питание (не отпуская кнопки), досчитайте до десяти и отпустите ресет. Роутер будет «длинно» мигать лампочкой
Для 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
Подробнее об управлении ардуиной читайте здесь.
На этом всё.
По причине малого объёма памяти и отсутствия возможности подключить флешку, управление через веб-интерфейс не получится.
Телеграм-чат istarik
- +126
- stD
50999
Поддержать автора
Комментарии (2)