Подключение VFD дисплея Futaba GP1183A01B к Raspberry Pi



Для подключения дисплея 16x2 символов к своей Raspberry Pi я выбрал VFD Futaba GP1183A01B. Чем он хорош? Во-первых, это вымирающий вид, дающий «теплый ламповый» люминесцентный свет приятного зеленого цвета (он правда зеленый, это что-то фотоаппарат врет). Во-вторых, для коммуникации он использует последовательный протокол, а значит его можно подключить всего тремя проводами, без использования каких-либо дополнительных приспособлений, а коммуникация с ним будет идти через /dev/tty. В-третьих, питания ему надо как раз 5 вольт, которые уже есть (и даже хватает, правда не всегда).

Я его подключил два года назад, но статью сел писать сейчас — отвалился от дисплея сигнальный провод и я заодно решил рассказать про этот дисплей. Все-таки двольно легко подключается. И они еще продаются!

Подключение к Raspberry



Подключаемся через пины GPIO, расположенные слева вверху платы. Нас интересует верхний ряд — первый пин (+5V), третий (GND) и четвертый (TX). По стандартной нумерации это 2, 6 и 8 пины.
Мощности на пине +5V хватает впритык. Если на Raspberry Pi использовать видео, а не HDMI, то VFD не включится. Можно подвести +5V отдельно, например от USB-хаба от которого питается «малинка» — взять красный и черный (GND) провода (обрезать ненужный USB-кабель), не забыв замкнуть черный с GND от GPIO. У меня сейчас так и сделано.

Подключение к VFD



Сверху у дисплея есть ряд контактных отверстий для пайки. Нас интересуют левые три в правом блоке из шести отверстий. Первое (+5V), второе (RX), третье (GND). Припаеваем!

Настройка VFD



На обратной стороне дисплея имеется четыре перемычки, позволяющие настроить скорость и режим работы. Замыкаем перемычку J1 для того, чтобы скорость была 9600 Бод. В принципе он тянет и 115200, но там начинают пробиваться помехи.

Настройка ядра

На используемый нами пин идет вывод сообщений ядра при загрузке (сюрприз!). Чтобы их было видно, надо настроить скорость последовательной консоли — в файле /boot/cmdline.txt надо определить параметр console=ttyAMA0,9600. Файл может быть таким:

dwc_otg.lpm_enable=0 console=ttyAMA0,9600 kgdboc=ttyAMA0,9600 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait


Настройка userland

Чтобы после загрузки ничего не выводилось на VFD без нашего участия в файле /etc/inittab надо закомментировать последнюю строчку:

#T0:23:respawn:/sbin/getty -L ttyAMA0 9600 vt100


Фан

Для вывода на экран можно использовать команду echo, например:

echo "Privet, Habrahabr!" > /dev/ttyAMA0


Возможности экрана довольно велики, можно почитать спецификацию (поискать в Гугле), но я приведу некоторые команды, которыми сам пользуюсь:

очистить экран и поместить курсор в левый верхний угол
echo -en "\x0C" > /dev/ttyAMA0


от минимальной до максимальной яркости
echo -en "\x1F\x58\x01" > /dev/ttyAMA0
echo -en "\x1F\x58\x02" > /dev/ttyAMA0
echo -en "\x1F\x58\x03" > /dev/ttyAMA0
...
echo -en "\x1F\x58\x08" > /dev/ttyAMA0


выключить дисплей
echo -en "\x1F\x28\x61\x40\x00" > /dev/ttyAMA0


включить дисплей
echo -en "\x1F\x28\x61\x40\x01" > /dev/ttyAMA0


Еще Фан

Можно использовать LCDProc для вывода на этот экранчик всяческой информации, например, RaspBMC может через LCDProc выводить на него информацию о текущем пункте меню, состояние воспроизведения. Настройка на RaspBMC потребовала написания драйвера для LCDProc, но это было совсем нетрудно (было удалено четыре строки, рисующие рамку из стандартного драйвера text) если будет возможность, напишу об этом потом.



[update] добавил видео с RaspBMC


К сожалению, руки пока не дошли до русского языка, но он там есть (CP866)!
Поделиться публикацией

Комментарии 21

  • НЛО прилетело и опубликовало эту надпись здесь
      0
      я, когда экспериментировал с разной скоростью коммуникации и замыкал перемычки по-другому, нечаянно капнул большую каплю припоя на плату дисплея, а отсоса у меня тогда еще не было. вот следы канифолью залил. и да, это был мой второй опыт пайки ;) первый был за десять лет до этого. сейчас уже, кажется, лучше получается.
        +2
        Такие вещи хорошо медной оплёткой от коаксиального кабеля убирать (она впитывает припой как губка). Продается уже готовая, или можно самому снять, с антенного кабеля, например. В Гугле вбейте «оплетка для снятия припоя», поймете сразу.
          0
          спасибо, я это уже знаю, у меня это уже есть… этот дисплей был моим вторым опытом пайки — это все почти три года назад было
            0
            Не прошло и трех лет как вы дописали статью ?)
              +1
              статью я решил написать вчера, так как отвалился белый провод от дисплейчика, припаянный тогда.
            0
            На крайний случай можно распотрошить любой медный провод и свернуть из жилок некое подобие тряпочки, тоже заменит оплётку, так в своё время кусочком МГТФ снимал соплю из труднодоступного места платы.
            ЗЫ: Кусок ваты и растворитель дают +10 к внешнему виду платы и -10 к атмосфере комнаты.
        +1
        А что у вас в коробочке ниже, со светодиодиками? Корпус дисплею просится!
        Вот только цена его печалит… тем, кто хочет подобного, но чуть дешевле — советую поискать дисплеи покупателя, они на похожей технологии, только знакосинтрезирующие, их ценник от 500 руб по объявлениям… Но и н них можно свои символы программировать… даже целую кодовую таблицу.
          0
          в коробоче сама Raspberry Pi, это корпус Built-to-spec.com. корпус дисплею да, нужен, но пока на брусочке деревянном держится.

          цена, да. я, когда покупал было дешевле, около 1000 рублей.
          0
          А где видео с бегущей строкой? ))
            +1
            добавил ;)
              +1
              Крутяк. Отличный олдскульный индикатор, спасибо за видео.
            0
            www.digole.com/index.php?productID=555
            оставлю это тут. тоже через uart работает, рекомендую.
            • НЛО прилетело и опубликовало эту надпись здесь
                +1
                Ну прямо сейчас он выводит температуру за окном, время и дату (собираем с ребенком статистику по изменению температуры на улице — она пишется в файл, но очень удобно и на экран). Когда работает XBMC — выводится, например, проиграно/осталось и имя файла, я выводил на него айпишник, когда получал его по dhcp, а экрана не было. По читаемости на расстоянии LCD рядом не стояло. А еще на этот экранчик можно выводить графику, я с этим не разбирался.
                • НЛО прилетело и опубликовало эту надпись здесь
                    0
                    на видео как раз пример как он переключается между разными виртуальными экранами, отображающими разное (это LCDProc делает)
                –3
                Может быть я чего-то не понимаю, но зачем Вы вообще все это сделали?
                  +4
                  не вдаваясь в подробности — захотелось и сделал. расширил кругозор, как минимум.
                  +1
                  К сожалению, руки пока не дошли до русского языка, но он там есть (CP866)!

                  Не знаю, актуально ли до сих пор, но на этом пути вас может ждать бааальшой сюрприз — рудимент времен приставки xbox с перекодированием кириллицы.
                  trac.xbmc.org/ticket/10324
                  Т.к. баг не пофиксили а проставили «устаревший» статус, есть вероятность что он будет радовать долго.

                  p.s. В свое время насношался от души с кириллицей и usb-фоторамкой. Подводные камни буквально на каждом шагу. Например, кодировка utf8 при появлении кириллицы ломала все что только можно, т.к. считало два бита, а отображало один символ, поэтому тексты сползали.
                    0
                    спасибо за ценную инфу

                  Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                  Самое читаемое