Используйте дисплейные модули Nextion для отображения текста и изображений, анимаций, кнопок, переключателей, стрелочных индикаторов, прогресс баров и графиков. Многостраничность позволяет организовывать меню с выпадающими списками и даже интерактивные игры!
Всё это становится возможным благодаря мощному 32-х разрядному процессору и визуальной среде разработки Nextion Editor. С внешним миром дисплей взаимодействует с помощью резистивного сенсора касаний с собственным контроллером и интерфейса UART. Панель подключается всего по четырём проводам (два из которых — питание). Для обновления прошивки дисплея, помимо UART, предусмотрен разъем для microSD карты.
В зависимости от версии дисплеи оснащаются большим объемом памяти, часами реального времени и даже собственными пинами GPIO, что позволяет использовать дисплей для управления устройствами такими как реле и т.д.
Видеообзор
Подключение и настройка
В комплекте с дисплеями Nextion идёт четырёхпроводной шлейф и плата-модуль USB to 2 pin connector
.
Установка среды Nextion Editor
Для работы с дисплеем необходимо установить и настроить среду разработки «Nextion Editor»
Для этого перейдите на официальный сайт дисплейных модулей «Nextion». Скачайте и установите последнюю версию среды.
Создание нового проекта в Nextion Editor
- Запустите среду «Nextion Editor»
- Создайте новый проект:FileNEW, напишите название будущего проекта и нажмите кнопку
Сохранить
. Откроется окноSetting
, с двумя вкладками:Device
иDisplay
. - Во вкладке
Device
выберите линейку и модель дисплея. В качестве примера выберем дисплей из линейкиBasic
моделиNX3224T024_011R
- Во вкладке
Display
выберите ориентацию дисплея и кодировку.Для поддержки кириллицы выбирайте кодировку
iso-8859-5
- После всех манипуляций нажимайте кнопку
OK
. Перед вами откроется графическое окно разработки. Рассмотрим его элементы.
- 1 — Главное меню.
- 2 — Меню управления выравниванием и порядком элементов.
- 3 — Библиотека элементов.
- 4 — Область отображения.
- 5 — Список страниц проекта
- 6 — Библиотека изображений /Библиотека шрифтов.
- 7 — Окно вывода результатов компиляции.
- 8 — Окно для ввода кода, выполняемого при возникновении события.
- 9 — Зона редактирования атрибутов выбранного элемента.
Добавление изображений
- Нажмите в окне «библиотека изображений» на иконку
- Выберите интересующее вас изображение на ПК и нажмите кнопку
Открыть
.В окне «библиотека изображений» появиться загруженное изображение. - Выделите область отображение дисплея.
- В окне «зона редактирование атрибутов» в пункте
sta
измените полеsolid color
наimage
. - В поле
pic
выберите интересующую вас картинку из «библиотеки изображений» и нажмите кнопкуOK
Если вы всё сделали правильно, в окне «область отображение дисплея» вы увидите вашу картинку.
Это значит всё получилось и можно смело переходить к прошивки дисплея.
Прошивка дисплейных модулей
Компиляция проекта
Перед прошивкой проект необходимо проверить не наличие ошибок — скомпилировать. Для этого нажмите кнопку Compile
. В окне «вывода результатов компиляции» вы должны увидеть сообщение об успешной компиляции. Дисплейные модули Nextion поддерживают два вида прошивки:
- Через последовательный порт UART
- С помощью карты microSD.
Рассмотрим их подробнее.
Прошивка через UART
Для прошивки дисплея через UART понадобиться USB-Serial адаптер.
- Создайте и откомпилируйте ваш проект в «Nextion Editor»
- Подключите дисплей к USB-Serial адаптеру следующим образом:
- Питание дисплея
+5V
— к питанию USB-Serial адаптера - Земля дисплея
GND
— к питанию USB-Serial адаптера -
TX
дисплея — вRX
USB-Serial адаптера -
RX
дисплея — вTX
USB-Serial адаптера
- Питание дисплея
- Прошейте ваш дисплей нажав на кнопку После окончания прошивки, загружаемый проект будет выполняться и отображаться на дисплейном модуле.
Прошивка через microSD
Прошивка через UART занимает достаточно долгое время и требует дополнительного UART-преобразователя. В связи с этим существует альтернативный способ прошивки дисплеев Nextion с помощью microSD карты.
- Создайте и откомпилируйте ваш проект в «Nextion Editor»
- Откройте папку с компилированными проектами:FileOpen builder folder
- Скопируйте файл с именем вашего проекта на microSD карту.
- Извлеките microSD-карту из вашего ПК и вставьте её в дисплей.
- Подключите питание на дисплей.
- Дождитесь окончания прошивки.
- Извлеките microSD-карту.
После всех выполненных действий, загружаемый проект будет выполняться и отображаться на дисплейном модуле.
Примеры работы
Для старта воспользуйтесь нашим примером: Игра на Nextion дисплее «Убей крота».
Линейка Nextion Enhanced
Модель | Wiki | Диагональ | Разрешение | Тач панель | Кол-во цветов | Процессор | Flash (MB) |
---|---|---|---|---|---|---|---|
NX3224K024 | Click | 2.4” | 320×240 | Резистивная | 65536 | ARM 7 48Mhz | 16 |
NX3224K028 | Click | 2.8” | 320×240 | Резистивная | 65536 | ARM 7 48Mhz | 16 |
NX4024K032 | Click | 3.2” | 400×240 | Резистивная | 65536 | ARM 7 48Mhz | 16 |
NX4832K035 | Click | 3.5” | 480×320 | Резистивная | 65536 | ARM 7 108Mhz | 32 |
NX4827K043 | Click | 4.3” | 480*272 | Резистивная | 65536 | ARM 7 108Mhz | 32 |
NX8048K050 | Click | 5.0” | 800×480 | Резистивная | 65536 | ARM 7 108Mhz | 32 |
NX8048K070 | Click | 7.0” | 800×480 | Резистивная | 65536 | ARM 7 108Mhz | 32 |
Ресурсы
- Цена: 25$ + доставка
Продолжаю разбираться с экраном и его работой с Arduino, на этот раз буду измерять напряжение на аккумуляторе вольт-амперметром и выводить данные на экран с простейшей анимацией оставшейся емкости. Собственно тут будут обозреваться сразу два устройства экран и модуль INA219, который измеряет напряжение 0 — 26В и ток 3.2А Мне нужно было выводить на экран напряжение аккумулятора 3х18650 в качестве индикации его состояния, насколько оно проседает при подключении нагрузки, ну и оставшуюся емкость на глазок измерять по напряжению, а так как я решил наконец нормально понять, как работать с этими экранами, то сделаю все на нем, как минимум в качестве рабочей модели. Первым шагом делаем форму отображения информации для экрана, чтобы получить наглядное отображение измеряемой величины. Все что нужно для решения подобной задачи — это покопаться в яндекс картинках и вытащить изображение с батарейкой.Так будет выглядеть готовая формаВместо полей Newtxt мы будем записывать показания с вольтметра и в зависимости от них рассчитывать оставшуюся емкость аккумулятора По мере заряда/разряда показания будут изменяться, а значит изменяться будет и наше изображение, примерно вот так: Зеленым будет заполняться изображение, которое я скачал и чутка подредактировал Исходя из обилия материала в свободном доступе, можно сделать в десятки раз лучше, этот вариант для «ленивых» и на скорую руку, ниже будет эволюция этого примера, но если показать сразу итог будет не так понятно.Как делалась примитивная форма для отображения уровня заряда аккумулятораТеперь с чего начинать: Запускаем Nextion Editor Создаем новый документ Создаем новый шрифт (в моем случае Tahoma 24 размер шрифта) Вытаскиваем из интернета понравившееся изображение подгоняем его под разрешение экрана (400х240 в моем случае), получается примерно так (все делал в пэйнте, с фотошопом не знаком и это дает о себе знать): Это изображение будет фоном рабочей области, т.е. добавляем изображение, кликаем по пустому пространству и в поле Атрибуты указываем наш фон (у меня это 6 изображение, т.к. я продолжаю документ из прошлой части) Далее я добавил пять инструментов текст и инструмент Прогресс бар, с ним самый сложный момент, поскольку его необходимо аккурасно вписать внутрь батарейки, не задевая края и настроить атрибуты следующим образом: В данный момент важен только один параметр — прогресс бар должен быть вертикальным, оставшиеся параметры, выделенные зеленым это цвет и процент заполнения, я выбрал белый и зеленый. Собственно на этом все, для проверки можете поиграть значением val у прогресс бара, чтобы проверить как он работает, но на этом этапе работу с экраном мы закончили. Добавлю только один момент, если у вас несколько страниц, переход с одной на другую осуществляется через нажатие на область для которой в редакторе прописана команда page page1 где page1 — страница на которую вы хотите перейти. К примеру я продолжил проект, в котором делал анимацию, для перехода на вторую страницу я написал эту команду для этой самой анимацииВольт-амперметр INA219Так выглядит сам модуль Если верить надписям на самом модуле, то его характеристики такие Измеряемое напряжение 0-26В Измеряемый ток до 3.2А Подключается по I2C Выводы Vin+ и Vin- подключаются в РАЗРЫВ!!! цепи, а не параллельно как вольтметр, хотя казалось бы… Короче один модуль умер убившись об лабораторный блок питания 5А у меня на работе, потом я резко начал искать и читать инструкцию, благо такие есть.adafruit-ina219-current-sensor-breakoutina219 Теперь по библиотекам, их быстрее искать через среду разработки
Я пользовался библиотекой от adafruit ina219, но вторая тоже рабочая, но рассчитана на более вдумчивое использование. Пример из библиотеки adafruit из разряда тех, которые загрузил и получаешь данные на выходе в терминале Немного о подключении: 1. Обязательна общая земля относительно измеряемого напряжения 2. Чтобы измерять напряжение, достаточно подключить один контакт Vin+ или Vin- 3. Повторюсь, для измерения тока, подключать в разрыв цепи, иначе будет кз через шунт 0,1Ом И на сладкое, башковитые люди могут расширить измеряемый диапазон заменив шунт и откалибровав чип под новые реалии. Вот результаты работы скетча, как видите напряжение измеряет прекрасно, по току сейчас идут паразитные значения, поскольку второй провод никуда не подключен. Не забудьте выставить скорость 115200 в терминале. Vcc модуля на 5В ардуино GND на GND SCL на SCL SDA на SDA Vin+ подключен на 5В ардуины BusVoltage — напряжение между GND и V- ShuntVoltage — напряжение между V- и V+ (на шунте) Current — ток, рассчитанный по закону Ома относительно напряжения на шунте Вот такой первый взгляд на модуль, дальше будет его применение с экраномВывод значений от INA219 на экранЗдесь придется скрестить два примера из разных библиотек Если смотреть по мере написания кода, то первым появился этот вариант Как итог: значение напряжения выводятся, прогресс бар заполняется. Из минусов библиотеки: нумерация текстовых полей сквозная для всех страниц, т.е. если на разных страницах есть два текстовых поля t0, то писать значение вы будете сразу в оба поля на обоих страницах. Минус условный, поскольку изменить номер инструмента вам никто не запрещает, более того в чем-то это даже полезно. Далее если применять вольтметр для аккумуляторов 18650 нужно смотреть кривые разряда, чтобы написать зависимость напряжения от емкости, я этого делать не стал, по крайней мере на данном этапе, и сделал линейную зависимость. 4.25В = 100% 2.6В = 0% Таким образом дельта в 1.65 В это наши 100%, 1%=0.0165 В, следовательно если напряжение лежит в заданных пределах, то 1% будет высчитываться по формуле: v=((busvoltage-2.6)/0.0165)*N, где N количество аккумуляторов в сборке Исходя из этого можно написать программу для 1s-2s-3s-4s сборок, так что если вам будет любопытно когда же зарядится аккумулятор вашего прибора/игрушки вы сможете это сделать, другое дело что использовать дисплей только для этого слишком мелко, разве что как одна из функций состояния.Это код для одного аккумулятора 18650 Вот предварительный результат, програсс бар заполняется по циклу, напряжение замеряется на выходе 3.3В ардуины.Эволюция кода А теперь, когда принцип в целом понятен, удаляем к чертовой матери всю эту графику и делаем все более-менее нормально и применимо к реальным задачамИсходные изображенияОтсюда взято изображение батарейки в обоих примерах Делаем фон по размеру экрана. Индикация заряда батареи в верхнем правом углу — классика жанра, для наглядности Продублировал индикацию крупно, естественно в последствии я либо перенесу его на отдельную страницу либо удалю. Эти два изображения одинаковые по размерам и предназначены для прогресс бара. Если до этого мы пользовались сплошными цветами, то сейчас зеленая картинка будет соответствовать полностью заряженному аккумулятору, черная — пустому Заметьте, все на черном фоне, так на мой взгляд все намного проще и вместе с тем отлично смотрится. Как уже упоминал, в итоге останется только индикатор батареи в верхнем углу, все остальное не более чем баловство. Подобным образом можно изобразить индикатор уровня сигнала и прочее и прочее. Иными словами статус панель делается без особых проблем. Вот итоговая форма для вывода информации:Программная и железная часть Ссылки:Первая часть обзораПрошивка экрана первый вариантПрошивка экрана второй вариантОписание библиотеки экранаБиблиотека экрана туториалNextion_Instruction_Set Ложка дегтя, сейчас столкнулся с проблемой получения посылок от экрана, чем больше код, тем чаще нажатия «теряются», скорее всего проблема программная. + Нашел шикарнейший видео обзор на экран В качестве резюме: 1. Напряжение можно измерять посредством самой ардуины, сделав из нее вольтметр, причем если вам не будет хватать возможностей компаратора всегда можно воспользоваться делителем напряжения, так что модуль INA219 удобен, поскольку будет точнее измерять напряжения больше 5В, но не обязателен. 2. В экране можно разбираться очень долго, но конечный результат того стоит.- Цена: 25$ + доставка
Более месяца назад доехали до меня экраны и только на выходных дошли до них руки. Хотел ознакомиться с чужим творчеством, но… Одним словом мне нужно, чтобы все было расписано досконально, для полных чайников и я решил сделать нечто подобное. Попробовал несколько библиотек, пробежался по мануалу с набором инструкций, подцепил ардуину и сделал пару простейших действий. Сделал не все, что хотел, поэтому это будет часть 1, однако своими идеями и примерами могу поделиться уже сейчас. По традиции немного общей информации, с которой многие не равнодушные давно знакомы, поэтому она под спойлером. Внешний вид и цена вопросаВот стоимость покупки на официальном сайте за два экрана, покупал не только их, но и еще кучку всего для знакомого, но и себя не обидел, так что посылка была большая. В итоге здесь 2 или 3 заказа. За упаковку можете не переживать, доставку посылка переживает отлично, а поскольку пришла она уже давно, дополнительные фото сделать нет возможности
- http://wiki.amperka.ru/продукты:nextion
- https://mysku.me/blog/china-stores/44193.html
- https://mysku.ru/blog/china-stores/44108.html