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

Рядом с 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
(Осторожно! Исходный код прошивки может вызвать приступы паники, страха и различных болей.)
ссылка на оригинал статьи http://habrahabr.ru/post/178661/

Добавить комментарий