Покупал дисплей (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-UART тоже будет работать судя по описанию выше. По умолчанию включен режим «работать через UART». Другие режимы перемычками ставятся.
Сзади виден резистор, покрутив который можно изменить яркость свечения. На моем экране голубая пленка была приклеена немного криво. Косячек.
Кривая пленка:
Подключаем к компу к 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 "BL\x00\x0D" > /dev/ttyATH0
echo -e -n "STCR\x10\x02\x80\xC0\x94\xD4\x0D" > /dev/ttyATH0
sleep 5
echo -e -n "CS\x00\x0D" > /dev/ttyATH0
echo -e -n "SOO\x00\x0D" > /dev/ttyATH0
echo -e -n "BL\x01\x0D" > /dev/ttyATH0
echo -e -n "CL\x0D" > /dev/ttyATH0
echo -e -n "TP\x00\x00\x0D" > /dev/ttyATH0
echo -e -n "TT OPENWRT\x0D" > /dev/ttyATH0
echo -e -n "TP\x00\x01\x0D" > /dev/ttyATH0
echo -e -n "TTINTRERNET PLAYER\x0D" > /dev/ttyATH0
echo -e -n "BL\x01\x0D" > /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 "BL\x00\x0D" > /dev/ttyATH0
echo -e -n "STCR\x10\x02\x80\xC0\x94\xD4\x0D" > /dev/ttyATH0
sleep 5
echo -e -n "CS\x00\x0D" > /dev/ttyATH0
echo -e -n "SOO\x00\x0D" > /dev/ttyATH0
echo -e -n "BL\x01\x0D" > /dev/ttyATH0
echo -e -n "CL\x0D" > /dev/ttyATH0
echo -e -n "TP\x00\x00\x0D" > /dev/ttyATH0
echo -e -n "TT OPENWRT\x0D" > /dev/ttyATH0
echo -e -n "TP\x00\x01\x0D" > /dev/ttyATH0
echo -e -n "TTINTRERNET PLAYER\x0D" > /dev/ttyATH0
echo -e -n "BL\x01\x0D" > /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 "TP\x00\x00\x0D" > /dev/ttyATH0
echo -e -n "TT$LCD_line1\x00" > /dev/ttyATH0
COUNTER=`echo ${#LCD_line1}`
while [ $COUNTER -le 15 ]; do
echo -e -n "TT\x20\x00" > /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 "TP\x00\x01\x0D" > /dev/ttyATH0
echo -e -n "TT$LCD_line2\x00" > /dev/ttyATH0
COUNTER=`echo ${#LCD_line2}`
while [ $COUNTER -le 15 ]; do
echo -e -n "TT\x20\x00" > /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
и любуемся надписями на экране. Русский нужно — прошивайте шрифты. Мне это не нужно.
Спасибо за внимание.
P.S.: aliexpress.com/item/1602-16x2-HD44780-Character-LCD-w-IIC-I2C-Serial-Interface-Adapter-Module/2028071847.html
плюс
aliexpress.com/item/Free-Shipping-1pcs-lot-ATMEGA328P-Pro-Mini-328-Mini-ATMEGA328-5V-16MHz-for-Arduino/32340811597.html
Я буквально сегодня взял в розницу с бесплатной доставкой на Али lcd1602 за 1,7$ и ардуино Nano за 1,8$.
Этот комплект подешевле будет, правда паять полюбому придется.
Но, как вы и сказали, у всех разная стадия прокачки.
контроллер
нужно паять
у Вас кстати не bash, а busybox ash
интересно минус за коммент воткнул любитель кривых костылей? :)
вместо:
и быстрей и красивей )
а то вон там появился обзор часов из Индии…
на
если я верно понял…
и девайс в переменную
aliexpress.com/store/product/1602-16x2-HD44780-Character-LCD-w-IIC-I2C-Serial-Interface-Adapter-Module/110055_2029815610.html
Только I2C без UART. Работает со всеми AVR/ESP и т.д.
Полной русификации у них нет, но можно несколько своих символов можно загрузить и выдавать слово «ТЕМПЕРАТУРА» добавив «П» и «У»
ATtiny13 должен справиться или на худой конец Arduino Pro Mini за $1.75
По 2 бакса я бы их много купил :)
Для лучшего понимания о чем я.
Вот я ищу такой, но на 1602, с нормальным контроллером и по вменяемой цене.
каким образом, интересно, учитывая «Communication signal can work on 3.3V and 5.0V TTL»? в компах стандартный rs232 с двуполярными сигналами.
В УАРТ 1 это 5 Вольт, а в RS232 это -9...15
В УАРТ 0 это 0 Вольт, а в RS232 это 9...15
Потому иногда простым делителем не обойдешься, хоть RS323 часто и нормально реагирует на 0/5 Вольт.
В данном случае это ключевое, работать не будет.
cat /overlay/scripts/LCD-monitor.sh
проверьте плиз
Где видео работы? Что он там вам показывает? И какой смысл в этом был?
В обзоре ни слова о характеристиках товара, только сплошные коды))
cyber-place.ru/showthread.php?t=363&page=4
кстати, на их сайте цена дешевле. я через сайт заказывал свои 4 шт разных.