Pull to refresh

TP-Link TL-WR703N. Небольшой, но полезный мод

Reading time 3 min
Views 208K
Миниатюрный роутер TP-Link TL-WR703N стал эдаким преемником знаменитого D-Link DIR-320 — в сети можно найти немало конструкций на базе этого девайса, вроде роботов с веб-камерой и управлением через веб-интерфейс, приемников интернет-радиостанций и т.д. Я же заказывал его для использования именно по прямому назначению, но руки все равно зачесались внести какое-нибудь изменение в конструкцию — так и родилась идея встроить в корпус дисплей для вывода системной информации. Под катом — мало текста и много фотографий)




Разбираем роутер самым подходящим для этого инструментом — старой кредитной карточкой, вынимаем плату.



Рядом с ethernet разъемом есть свободный участок, здесь разместим разъем, на который выведем UART с пинов TP_IN и TP_OUT, +5 и +3.3 вольт для дисплея, и землю.



По схеме роутера легко найти, откуда запитаться.



Вот и сам дисплей, на Ebay ищется по запросу «Nokia 5110 LCD Module».



Но даже такой маленький дисплей в корпус просто так не влезет. Часть платы вместе с двумя из четырех светодиодами подсветки придется отрезать.



Примеряем в корпусе…



… и вырезаем в крышке окно под дисплей, а заодно проверяем его работоспособность



Дисплей мы будем подключать к контроллеру ATmega48p, а уже он будет читать символы с UART роутера. Принципиальную схему приводить не вижу смысла из-за ее крайней простоты. Порт и пины, к которым подключается дисплей, можно посмотреть в файле lcd_nokia3310pin.h из архива в конце статьи. Сама библиотека взята отсюда.

Печатная плата.



Прошиваем контроллер…



… и припаиваем плату с обратной стороный дисплея.



Соединяем с роутером. Штырьки разъема загнуты — иначе дисплей не влезет.



Все в сборе. Можно собирать.
Дисплей прижимается к usb-разъему на плате крышкой, не очень сильно, но достаточно, чтобы он оказался зафиксированным.



Дисплей с контроллером понимают всего три команды:
!s00Test^ — выводим «Test» на первой строке, начиная с первого символа;
!c — очищаем дисплей;
!b — включаем/выключаем подсветку.
Роутер достаточно долго загружается, и до тех пор, пока по UART не придет первая строка, на дисплее заполняется бутафорный текстовый прогрессбар.



Прошивка роутера — естесственно, OpenWRT, правда пришлось воспользоваться слегка модифицированной сборкой, в которой удалось завести модем Huawei E3276. Добавим новое UMTS/GPRS/EV-DO подключение («MTS» в моем случае)



А в удобной нам директории создадим скрипт, который будет слать в последовательный порт (/dev/ATH0) текущее время, uptime, количество подключенных по Wi-Fi клиентов, статистику по трафику созданного нами подключения и load average. Для установки скорости порта (9600 бод) придется доустановить пакет stty, т.к. на стандартной скорости 115200 контроллер ни в какую не хотел принимать данные.
текст скрипта
#!/bin/sh

port="/dev/ttyATH0"
speed="9600"

stty -F /dev/ttyATH0 raw speed $speed -crtscts cs8 -parenb -cstopb

lcdwrite() {
  echo "!s0${1}$2^" > $port
}

while [ : ]
do
  s=`date | tail -c 18 | head -c 12`
  lcdwrite 0 "$s"
  sleep 1

  s=`uptime`
  s=`expr "$s" : '.*up.\(.*\),  l'`
  lcdwrite 1 "uptime: $s"
  sleep 1

  s=`iw dev wlan0 station dump | grep Station | wc -l`
  lcdwrite 2 "wifi cl: $s"
  sleep 1

  s=`ifconfig 3g-mts`
  s=`expr "$s" : '.*(\(.*\)).'`
  lcdwrite 3 "DL: $s"
  sleep 1

  s=`ifconfig 3g-mts`
  s=`expr "$s" : '.*(\(.*\))'`
  lcdwrite 4 "UP: $s"
  sleep 1

  s=`uptime | tail -c 17 | head -c 10`
  lcdwrite 5 "LA: $s"
  sleep 1
done

Делаем скрипт исполняемым и добавляем в автозагрузку в разделе System > Startup > Local Startup, перезагружаем роутер и получаем результат, показанный на первой фотографии)

Архив с прошивкой, файлом печатной платы и скриптом — rghost.ru/45733310
(Осторожно! Исходный код прошивки может вызвать приступы паники, страха и различных болей.)
Tags:
Hubs:
+123
Comments 42
Comments Comments 42

Articles