LCD дисплей 16 символов на две строчки с подключением по UART/I2C/SPI. Подключаем к Windows и OpenWRT

Опубликовал | 02.09.2015

Покупал дисплей (16 символов в две строчки) для подключения к роутеру Gl.iNet 6416A. В обзоре опишу, как подключал к компьютеру под Windows и к роутеру.


Решил купить именно эту модель дисплея. Так как дисплеи с USB подключением типа дисплеев SURE ELECTONICS тык! стоили дороже, по габариту не подходи и у меня есть уже один такой :-).

Характеристики:

Power Supply: 4.75V to 5.5V
Power consumption: <23mA (@ Backlight on)
Communication mode: UART/I2C/SPI, detect your setting automatically
Receiving buffer: 64 bytes
Work with all microcontroller and microprocessor
Communication signal can work on 3.3V and 5.0V TTL

Screen size: 62x13mm
Product size: (WxHxD):80x36x15mm
Simple command sets, easy to remember
Simple graphic engine integrated
Default setting: UART baud 9600bps, I2C 0x27 address
UART baud (bps): 300, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600, 115200

Опытным путем проверено — соответствуют действительности. Документация тут — ПЭДЭФ. Есть библиотеки для Arduino и прочее — см страничку товара на ебее. Мы же будем подключаться к ком-порту — самым простым способом. На контроллере есть и другие модели дисплеев — даже графические. Но они или не подходили по габаритам или сложно программировать их. Кому интересно см пдэф+ебай

Другие дисплеи на этом контроллере

К дисплею подключен преобразователь USB-COM (можно на прямую к компорту его подклячать — если ком-порт в компе есть — у меня есть :-) — но влом было в материнку лезть ) тоже будет работать судя по описанию выше. По умолчанию включен режим «работать через com-порт». Другие режимы перемычками ставятся.


Сзади виден резистор, покрутив который можно изменить яркость свечения. На моем экране голубая пленка была приклеена немного криво. Косячек.

Подключаем к компу к USB — появляется новый com-порт

А экранчик пишет

Команды под windows можно давать через программу putty выбрав режим com-порт, указав номер ком-порта и скорость отправки данных (9600). Только давать команды лучше всего две — очистить экран «CL» и написать что_то «TTbebebebe……» . Другие команды требуют посылки управляющих байт — а в putty это трудно сделать. Я пытался играть с разрешением экрана — экран начал глючить и в итоге потом долго мучался все привести в первоначальное состояние.

Для посылки норм команд надо писать программу на любом языке, который умеет в ком-порты данные слать. Но мне это было влом. Поэтому юзаем программу с громким названием terminal.

Настраиваем параметры ком-порта. Прога умеет слать произв команды в компорт (байты биты и проч). Кнопка «Set Macro» и опред. команды. Жмем кнопку M1 (M2,M3, etc…..) — команда отправляется в терминал. Вуаля!!!

У меня опред. так — М1-норм дисплей, M2-текст печатает, M3 экран очищает — остальное не помню.

Наигравшись, подключаю к роутеру с OpenWRT. На роутере Gl.iNet 6416A компорт выведен уже — правый угол внизу- serial пишут-

Подключаем — питание 5 В, TX роутера к DX дисплея, земля. После загрузки отправляем команды к ком-порт (первая команда устанавливает параметры передачи данных в ком порт. Сначала установите пакет работы с ком-портом opkg update; opkg install coreutils-stty):

  stty 9600 -F /dev/ttyATH0  echo -e -n "BLx00x0D" > /dev/ttyATH0  echo -e -n "STCRx10x02x80xC0x94xD4x0D" > /dev/ttyATH0  sleep 5  echo -e -n "CSx00x0D" > /dev/ttyATH0  echo -e -n "SOOx00x0D" > /dev/ttyATH0  echo -e -n "BLx01x0D" > /dev/ttyATH0  echo -e -n "CLx0D" > /dev/ttyATH0  echo -e -n "TPx00x00x0D" >  /dev/ttyATH0  echo -e -n "TT    OPENWRTx0D" >  /dev/ttyATH0  echo -e -n "TPx00x01x0D" >  /dev/ttyATH0  echo -e -n "TTINTRERNET PLAYERx0D" >  /dev/ttyATH0  echo -e -n "BLx01x0D" > /dev/ttyATH0  

Отмечу, что при загрузке роутера на экране будет всякая бяка иногда — это роутер передает в диагностический компорт информацию — а дисплей пытается ее отобразить, но не может.

Для удобства юзанья экрана написал два скрипта. У меня скрипты самопальные в /overlay/scripts/ находятся. Сорри за быдлокод ;-)

  root> cat /overlay/scripts/LCD-monitor.sh    #!/bin/sh -e  #  #LCD-monitor.sh    #------- BEGIN LCD SETUP ----------------  stty 9600 -F /dev/ttyATH0  echo -e -n "BLx00x0D" > /dev/ttyATH0  echo -e -n "STCRx10x02x80xC0x94xD4x0D" > /dev/ttyATH0  sleep 5  echo -e -n "CSx00x0D" > /dev/ttyATH0  echo -e -n "SOOx00x0D" > /dev/ttyATH0  echo -e -n "BLx01x0D" > /dev/ttyATH0  echo -e -n "CLx0D" > /dev/ttyATH0  echo -e -n "TPx00x00x0D" >  /dev/ttyATH0  echo -e -n "TT    OPENWRTx0D" >  /dev/ttyATH0  echo -e -n "TPx00x01x0D" >  /dev/ttyATH0  echo -e -n "TTINTRERNET PLAYERx0D" >  /dev/ttyATH0  echo -e -n "BLx01x0D" > /dev/ttyATH0    INTERVAL_CHECK=1  # Seconds between checks      #---- BEGIN MAIN  ---------    while sleep $INTERVAL_CHECK;  do    # Строка 1    if test -f "/tmp/LCD_line1"; then LCD_line1=`cat /tmp/LCD_line1` ;else echo "..." > /tmp/LCD_line1 ;fi  LCD_line1=`echo $LCD_line1| tr -s ' '`  LCD_line1=`echo ${LCD_line1:0:16}`    echo -e -n "TPx00x00x0D" > /dev/ttyATH0  echo -e -n "TT$LCD_line1x00" > /dev/ttyATH0  COUNTER=`echo ${#LCD_line1}`           while [  $COUNTER -le 15 ]; do               echo -e -n "TTx20x00" > /dev/ttyATH0               let COUNTER=COUNTER+1           done    # Строка 2    if test -f "/tmp/LCD_line2"; then LCD_line2=`cat /tmp/LCD_line2` ;else echo "###" > /tmp/LCD_line2 ;fi  LCD_line2=`echo $LCD_line2| tr -s ' '`  LCD_line2=`echo ${LCD_line2:0:16}`    echo -e -n "TPx00x01x0D" > /dev/ttyATH0  echo -e -n "TT$LCD_line2x00" > /dev/ttyATH0  COUNTER=`echo ${#LCD_line2}`           while [  $COUNTER -le 15 ]; do               echo -e -n "TTx20x00" > /dev/ttyATH0               let COUNTER=COUNTER+1           done    done    

и скрипт запуска первого скрипта как демона

    root> cat /etc/init.d/LCD-monitor    #!/bin/sh /etc/rc.common  # Copyright © 2010 OpenWrt.org    START=99  STOP=10    IGMP_OPTS=""  IGMP_BIN="/overlay/scripts/LCD-monitor.sh"  PID_F="/var/run/LCD-monitor.pid"    start() {          echo "Starting LCD-monitor"          start-stop-daemon -S -x $IGMP_BIN -p $PID_F -b -m -- $IGMP_OPTS  }    stop() {          echo "Stopping LCD-monitor"          start-stop-daemon -K -p /var/run/LCD-monitor.pid -q  }    

оба скрипта — права на выполнение:

  chmod 755 /etc/init.d/LCD-monitor  chmod 755 /overlay/scripts/LCD-monitor.sh  

Запускаем

  /etc/init.d/LCD-monitor enable  /etc/init.d/LCD-monitor start  

Далее посылаем из наших скриптов команды вида

  echo "BeBeBeBe"> /tmp/LCD_line1  echo "PukPukPuk"> /tmp/LCD_line2  

и любуемся надписями на экране. Русский нужно — прошивайте шрифты. Мне это не нужно.

Спасибо за внимание.

(c) 2015 Источник материала.

Рекламные ссылки