Миниатюрный роутер 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
(Осторожно! Исходный код прошивки может вызвать приступы паники, страха и различных болей.)
Автор: SerzhoZ