- PVSM.RU - https://www.pvsm.ru -

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Автор: SerzhoZ

Источник [7]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/diy/33571

Ссылки в тексте:

[1] схеме роутера: http://squonk42.github.io/TL-WR703N/

[2] отсюда.: http://chipenable.ru/index.php/how-connection/item/22-podklyuchenie-lcd-ot-telefona-nokia3310.html

[3] OpenWRT: http://wiki.openwrt.org/toh/tp-link/tl-wr703n

[4] сборкой: http://whirlpool.net.au/wiki/router_openwrt

[5] Image: http://habrastorage.org/storage2/8d0/b6d/84a/8d0b6d84a536c91b6b517e5119f905eb.png

[6] rghost.ru/45733310: http://rghost.ru/45733310

[7] Источник: http://habrahabr.ru/post/178661/