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

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

    Similar posts

    Comments 42

      +9
      На экран правильней еще было бы выводить уровень 3g сигнала.
        +1
        Хм, надо попробовать
          +6
          AT+CSQ в помощь :)
        +3
        О, тёплый ламповый SprintLayout. А я думал я один такой остался.
          +1
          А можете подсказать достойную альтернативу? Всегда пользовался Sprint Layout, как привычка, наверное, уже. Поэтому другого и не искал.
            0
            DipTrace. Мне, как новичку в электронике, он показался достаточно интуитивным, есть бесплатная версия, и его можно использовать для серьёзных разработок (многослойные платы, есть автороутер и т.д.)
              +1
              Для домашних поделок пользую KiCAD, но он скорее замена P-CAD.
                +2
                А если с рассчётом на профессиональное применение, то Altium designer. Он достаточно прост в освоении (в отличии от p-cad, ki-cad и прочих)
                  +1
                  Возможно, меня сейчас опалят в лучах ненависти определенные группы людей, но попробуйте связку Eagle + TopoR.
                0
                А как вы такое ровное и аккуратное отверстие прорезали?
                +3
                Да, мод кульный.
                А еще проще «тащится» c ебея тот же 1.3-1.8'' TFT модуль с уже готовым SPI интерфейсам и сажается на резюки R11, R12, R13 и R14 и ничего мудрить с платой, прошивкой и протоколом больше не нужно. Работаете с GPIO на самом Atheros'e.
                  0
                  А как из под openwrt долезть до GPIO? В /dev не нашёл
                    +4
                    А его в /dev нет :-)
                    К сожалению, на память не припомню, но примерно так:

                    1) добавляем порт 17 (нога на резисторе R14) в экспорт:
                    echo 17 > /sys/class/gpio/export

                    2) конфигурим направление порта (in — вход, out — выход):
                    echo in > /sys/class/gpio/gpio17/direction

                    3) получаем значение на порту 17:
                    cat /sys/class/gpio/gpio17/value

                      +1
                      Так вот же.
                        0
                        опередили…
                        0
                        А дайте, пожалуйста, ссылку на пример такого TFT модуля.
                        0
                        Но внешний МК можно юзать еще как дополнительные GPIO.
                        –2
                        Раз уж упомянули DIR-320, может быть кто-то подскажет, что можно сделать с впавшим в кому NRU (N 150)? При включении и любом ресете постоянно светятся индикаторы питания и 2, 3, 4 LAN, и пц, нигде не виден, ни на что не реагирует. И второй вопрос — что гигабитное лучше приобрести вместо этого дерьма?
                          +2
                          Попробуйте подключиться к UART`у, при загрузке через терминал можно зайти в режим восстановления и по tftp залить прошивку. У меня так окирпичившийся dir-300 nru удалось восстановить
                            +2
                            Да, товарищ SerzhoZ прав, я так вывел из комы WRTSL54GS, он тупо висел на загрузке бутлоадера.
                              0
                              У меня сейчас подобная проблема с WR703N, только вот с уарта одни кракозябры идут. Уже все бодрейты перепробовал, никак не могу понять, в чем проблема.
                                +1
                                Попробую скапитанить:
                                Используете чистый RS232 или через PL2303 (аналог)? Если через RS232, то надо согласование уровней сделать через MAX232 (или аналог).
                                Так же поиграться со скоростями, 115200 8n1
                                На D-Link помимо этого надо сделать инверсию на HCF4049UBE или аналоге.
                                  0
                                  Вы к компу подключаете или к МК, еслик МК, то может у вас у неё питание 5в?
                              0
                              А как Вы разъем прикрепили? Просто на клей посадили? С нижней стороны платы у Вас вроде никаких отверстий не видно.
                                +1
                                с двух сторон крайние штырьки разъема припаяны к фольге, соединенной с землей
                                +1
                                Шикарная работа! :)
                                  +13
                                  Отлично. До чтения поста взглянув на картинку, я подумал, что этот роутер так и выглядит, а мод в заголовке — это, наверное, какое-нибудь чисто программное дополнение ;)
                                    0
                                    как удалось люси и 3г модем засунуть в 4м прошивку? По моему опыту влазит или то или другое
                                      0
                                      Со старыми прошивками я легко ставил Люси, 3г и Йоту, а поставил на днях новую, так после люси уже места фактически не остается :(
                                      0
                                      Подсветку лучше не просто выключать, а ШИМовать — удобнее будет. Ну и команда вида !b60 — включить подсветку на 60%. Плюс можно сделать «кнопочку» из куска фольги/печатной платы и емкостного датчика — как раз «будить» выключенную подсветку и переключать режимы, если не влезает вся инфа
                                        +1
                                        DL и UP — это я так понял Download и Upload. Если да, то надо было не UP писать, а UL: DownLoad, UpLoad.
                                          0
                                          А можно прикрутить Matrix Orbital протокол и выводить все подряд с помощью проги… проги… Хм. Пойду поищу прогу…

                                          LCDSmartie!

                                          ветка на wl500.info
                                            0
                                            Как оказалось, вот те самые монохромные алфавитно-цифровые ЖК матрицы дороже, чем предложенный цветной TFT модуль с SPI и I2C интерфейсами!
                                              0
                                              дык я тебе не про это. У тебя сейчас роутер плюет три команды в атмегу. Сделай так, чтобы АТмега понимала матриксОрбитал и все. А как она работает с дисплеем и с каким — твое личное дело!

                                          Only users with full accounts can post comments. Log in, please.