В прошлом месяце приехало весьма интересное устройство — дисплей с контроллером, встроенной памятью и UART интерфейсом.
Про то как их использовать написано уже много, поэтому я только в общих чертах расскажу, что это за зверь и с чем его едят.
Состоит устройство (язык не поворачивается называть его дисплеем) из
Микроконтроллера GD32F103R8T6;
SDRAM Winbond W9864G6KH-6 (8 МБ);
Флеш памяти Winbond W25Q256FG (32 МБ, 100 000 циклов перезаписи);
ПЛИС Altera MAX II EPM570T144C5N;
Дисплея 480*272 пикселя с резистивным сенсором нажатий (не касаний!).
Аккуратно собранных вот в таком виде:
Судя по тому, что дорожки от МК, ОЗУ и экрана ведут к ПЛИС, можно предположить, что все данные из ОЗУ на экран проходят через неё, а МК занимается более полезными задачами.
Наружу выведены:
Разъём GPIO под шлейф (гребёнки 2.54 мм нет, что плохо). Сразу скажу, что это не то же самое, что GPIO у Arduino или Raspberry pi. Тут оно заточено на подключение кнопок и индикаторов.
Разъём с четырьмя контактами: питание (GND и +5V) и UART (RX, TX), провод в комплекте.
Разъём для SD карты. Теоретически, когда устройство будет далеко от компа, через неё можно будет обновлять прошивку.
Expansion Board к нему — это плата с 6-ю кнопками, светодиодом, пищалкой и шлёйфом. Выглядит так:
В принципе, это почти всё, что вам понадобится в работе.
Из полезного есть ещё Nextion user manual
Теперь ответим себе на вопрос: «Зачем это устройство создано?».
Экран 480*272=130560 пикселя. Умножим на 2 байта на пиксель и получим размер полноэкранного изображения ровно в 255 кБ.
Флеш памяти у нас 32 МБ. Этого хватит на 128 полноэкранных картинки. Много это или мало? Для видео однозначно мало, а для всяких красивостей фона и элементов управления более чем достаточно.
UART может работать на скорости максимум 115200 бод. Это значит что наша картинка будет передаваться не менее чем за 255*1024*8/115200=18.1 секунды. Так что не то что видео, а даже картинки через него передавать не вариант.
Девайс предназначен для другого. Он предназначен чтобы взаимодействовать с человеком посредством обработки нажатий (да-да — он сам обрабатывает нажатия, для этого не нужен внешний контроллер!) и отображения заранее запрограммированных в него элементов!
К внешнему контроллеру при этом предъявляются очень низкие требования — отправлять и принимать команды (из Nextion Instruction Set) по UART на скорости от 2400 до 115200 бод. С этим может справиться даже какой-нибудь ATtiny24A с 2 кб флеша и 128 байтами ОЗУ без кварца, а пользователю при этом будет отрисовываться многомегабайтный интерфейс со всякими красивостями.
Устройство предназначено для взаимодействия внешнего контроллера с человеком. Попробовал сделать пример взаимодействия и настройки хотя бы того что есть в самом устройстве и плате расширения. Вот что получилось (обратите внимание, что внешний контроллер при этом не используется, всё реализовано средствами самого «дисплея»):
HMI файл работа которого показана на видео
Внешнему контроллеру при этом можно отправлять по UART короткие посылки.
К сожалению, качество видео очень плохое. Для оценки качества экрана сделал две фотографии:
Достоинства:
Прост и изучении. За пару часов можно с нуля разобраться.
Быстрая разработка, есть визуальный редактор.
Качественные компоненты. Например, флеш память на 100 000 циклов перезаписи.
Отладчик. Можно вначале поиграться, а потом решить покупать или нет.
Резистивный сенсор. Можно нажимать ногтём или любым стилусом.
Экран матовый.
Недостатки:
Цена. $55 — это много за такое устройство (с Expansion Board).
Весьма скудная библиотека компонентов. Встроенный язык тоже не очень. Вот пример очень неудачного ограничения:
When configure a GPIO to input binding mode, only components in current page can be bind. It is recommended to put the instruction in the preinitialize event, because binding event wont not be triggered after page refreshing or switching.
Т.е. перебиндить аппаратные кнопки после перехода на другую страницу не получится.
Мерцание при обновлении стандартных компонентов. Замечено у Gauge и Waveform.
Не нашёл поддержки картинок с прозрачностью.
Требователен к источнику питания: 4.75-7 В и средний ток 250 мА. При просадке напряжения, дисплей начинает мигать.
Только UART. Могли бы сделать общение с ним ещё по SPI и I²C.
Вывод GPIO только под шлейф (гребёнку 2,54 мм можно впаять только в Expansion Board), нет АЦП.
Хотя последние два пункта — это из серии «хотелось бы иметь».
В целом, создалось впечатление весьма качественно сделанного устройства с рядом мелких недоработок.
Рекомендовать этот девайс могу только тем, для кого быстрая разработка и качество важнее цены.
Планирую купить+10Добавить в избранноеОбзор понравился+3
+14
Я не понял, zo.val это же не картинка, а значение. j0- не знаю что. Вы их выводите в какие-то перекрывающиеся текстовые поля, которые налагаются ещё и на фоновую картинку? Тогда да, не получится.
z0 — это компонент Gauge с дефолтной зелёной стрелкой. Он квадратный
j0 — Progress bar
Если бы была реализована прозрачность, то для z0 можно было бы сделать фон прозрачный в районе j0 и мерцания j0 можно было бы избежать.
Другой вариант — реализовать «глубину», чтобы j0 был всегда поверх z0, но этого тоже нет.
Так сам Некстион не собирает данные с датчиков, а только получает их по UART для отображения. Приделать к UART ардуину и можно получать данные хоть по SPI, хоть по I2C. По-моему так дешевле будет. Ну или ESP-шку или блютуз, если хочется.
На случай когда у этой ардуины единственный UART задействован под другие цели, могли бы вывести ещё SPI. Прям не верится, что они все ресурсы МК там использовали.
Наверняка не все. Но это устройство продается как панель оператора для отображения данных, а не универсальный комбайн. К банкомату никто ж не предъявляет претензий что он только деньги выдаёт, хотя в нём стоит обычная матплата с Интеловским процессором, которая может много другого делать.
Интересно, но для себя не применения не вижу. Если мне понадобится устройство с маленьким экранчиком, я лучше куплю готовое изделие. Старею, наверное.
Но за обзор плюс.
Если нужно устройство с экранчиком, покупайте устройство с экранчиком.
А если нужен экранчик в своё устройство, то это один из вариантов.
Ещё хороший вариант из тех, что я пробовал — дисплей Nokia 5110, но это совсем другого класса экраны.
Для такого устройства, дорого. Максимум 10$
За 50 доларов, можно взять андройд телефон/планшет и реализовать все функции на программном уровне. При этом дисплей будет получше и отзывчивость устройства, думаю тоже.
Да, цена — это недостаток. Старый планшет с дохлым аккумулятором (если не нужна автономная работа) можно дешевле купить. Только придётся повозиться с подключением, если проводами. Ну или по Bluetooth с ним общаться.
Только придётся повозиться с подключением, если проводами
Повозится придется с программированием, а подключить можно многими способами, otg тоже никто не отменял.
Собственно все минусы именно в программировании. Выгнать наружу с процессора, можно по свободным портам, только мелкую логику нужно допаять.
Шрифт можно другой выбрать.
Предложенный вами вариант интересен своей ценой, но это не есть аналог рассматриваемого устройства. Тут в качестве замены больше планшет/телефон на Android подойдёт.
Давайте я расскажу о своих наблюдениях, а вы поправите, если что. Шрифт, конечно, можно выбрать другой. Декларируется, что вообще любой из системных. С одной стороны это, конечно, так. С другой — генератор шрифта там очень оригинальный.
У меня, к примеру, возникло ощущение, что он переводит векторный (или как там его) шрифт в растр, причем делает это с далеко не лучшим качеством. В итоге даже если выбрать красивый шрифт, то генератор шрифта Itead превратит его в нечто убогое (причем чем меньше целевой размер, тем хуже).
Поэтому если хочется красоты, то вариант, по сути, один — использовать графику.
Ограничение обходится своим генератором шрифтов. Пусть в нем будет, скажем, всего три шрифта, но пусть они хотя бы нормально выглядят. А не как китайские вариации на тему Courier с пляшущими символами и прочим непотребством.
Мне, к примеру, хватило бы, может и двух — нормального Arial и Times.
Потому что если речь идет о приемлемой визуализации, то Nextion с такими шрифтами никаких быстрых результатов не даст. Или ужас-ужас, или тратим уйму времени, чтобы все, что можно, показывать графикой.
Интересно, а куда денется растр при разрешении 480*272?
Загрубление будет в любом случае, и думаю, на этот экран никто долго и пристально не смотрит, считать показания, ткнуть несколько раз в экран и всё. Читаемость в даннном случае важнее красоты,
В крайнем случае можно создать свой шрифт и отдать генератору. Думаю после нескольких попыток всё равно всё упрётся в разрешение.
Если сильно хочется можно шрифт сделать не конвертацией, а прямо двочным файлом. Конечно, если знать как. Редактор их тоже выкинуть можно вместе и микрокодом. И использовать просто как STM32 + всё что там есть. Но тогда нет смысла тратить 50$, а проще взять 7" с резистивной за 30$ (или за 35$ с емкостной панелью) и нормальным STM32. Или применить мощь андроида за 30-40$. В общем вещь специфическая — по п.18 ещё пойдёт, а за деньги — сильно сомневаюсь. Была бы opensource, ещё как то можно использовать. Я себе взял 32F746GDISCOVERY за 49$ — как то удобнее получилось.
есть экранчики с тач.скрином 7" от gps навигаторов жалко лежат мертвым грузом контроллер не могу найти к ним. 40 pin шлейф. Может кто встречал? не дорого естественно ))
есть конечно от Adafruit RA8875 Driver Board for 40-pin TFT Touch Displays но ценник $34.95 вообще не реален лучше за 1500р. на том же али купить все в сборе.
Производитель его называет Human-machine interface (HMI). По-русски это можно назвать Операторской панелью или пультом оператора.
Например, можно было бы сделать
Но не получится т.к. всё будет мерцать при обновлении.
При обновлении z0.val в данном случае j0 вообще скроется.
j0 — Progress bar
Если бы была реализована прозрачность, то для z0 можно было бы сделать фон прозрачный в районе j0 и мерцания j0 можно было бы избежать.
Другой вариант — реализовать «глубину», чтобы j0 был всегда поверх z0, но этого тоже нет.
Но за обзор плюс.
А если нужен экранчик в своё устройство, то это один из вариантов.
Ещё хороший вариант из тех, что я пробовал — дисплей Nokia 5110, но это совсем другого класса экраны.
За 50 доларов, можно взять андройд телефон/планшет и реализовать все функции на программном уровне. При этом дисплей будет получше и отзывчивость устройства, думаю тоже.
Собственно все минусы именно в программировании. Выгнать наружу с процессора, можно по свободным портам, только мелкую логику нужно допаять.
Предложенный вами вариант интересен своей ценой, но это не есть аналог рассматриваемого устройства. Тут в качестве замены больше планшет/телефон на Android подойдёт.
У меня, к примеру, возникло ощущение, что он переводит векторный (или как там его) шрифт в растр, причем делает это с далеко не лучшим качеством. В итоге даже если выбрать красивый шрифт, то генератор шрифта Itead превратит его в нечто убогое (причем чем меньше целевой размер, тем хуже).
Поэтому если хочется красоты, то вариант, по сути, один — использовать графику.
Мне, к примеру, хватило бы, может и двух — нормального Arial и Times.
Потому что если речь идет о приемлемой визуализации, то Nextion с такими шрифтами никаких быстрых результатов не даст. Или ужас-ужас, или тратим уйму времени, чтобы все, что можно, показывать графикой.
Загрубление будет в любом случае, и думаю, на этот экран никто долго и пристально не смотрит, считать показания, ткнуть несколько раз в экран и всё. Читаемость в даннном случае важнее красоты,
В крайнем случае можно создать свой шрифт и отдать генератору. Думаю после нескольких попыток всё равно всё упрётся в разрешение.
есть конечно от Adafruit RA8875 Driver Board for 40-pin TFT Touch Displays но ценник $34.95 вообще не реален лучше за 1500р. на том же али купить все в сборе.