Рождение идеи
Я всегда проходил мимо разных экранов под всякие Duino. По большей части мне казалось, что это слишком сложно с очень сомнительным выхлопом для самоделок.
Но недавно я подписался на один проект, который заключается в том, что бы переделать панель управления на одном аппарате из обычных кнопок и ручек в управление полностью на сенсорном экране. Я начал смотреть разные экраны, типы подключения, а потом уже нашёл всяческие графические библиотеки, которые очень сильно упрощают разработку под эти экраны.
И тут Остапа понесло. Мне вдруг стали интересны разные графические дисплеи с подключением к микроконтроллерам.
Например, на днях надо было запилить небольшой класс для детей, на котором хотел показать несколько разных сенсоров. Очень хотелось избежать подключение компьютеров и вообще уменьшить количество проводов. Тут совершенно кстати на помощь приходят варианты модулей микроконтроллеров со встроенными дисплеями.
Об одном из таких и будет речь в этом небольшом обзоре.
Герой обзора
При беглом поиске интернетов я нашёл много разных предложений законченных модулей с микроконтроллером и экраном на борту. Мне хотелось что-то на ESP32 или RP2040, так как я с ними особенно хорошо знаком. Рассматривал варианты на STM32, но сами экраны там были очень грустные или цены выходили за рамки моего бюджета.
Конечно, я вспомнил про достаточно известную компанию LILYGO, у которой всегда в ассортименте есть вкусные варианты. Таким образом я наткнулся на LILYGO T-Display AMOLED на базе ESP32-S3 и компактным AMOLED дисплеем с высоким разрешением.
Распаковка
Доставка приехала довольно быстро, заняло примерно полторы недели или около того.
Сама плата приехала аккуратно сложенная в небольшой пластиковой коробке.
На коробке уместили код вроде как с MicroPython’а. Код не без ошибок, но если учесть, что он тут для красоты, а не как руководство, то это мелочи.
Внутри лежит сам модуль в защитном мягком поролоне. Снизу лежит провод для подключения аккумулятора для автономного питания. На этой фотографии на экране до сих пор есть защитная плёнка. После этого я её удалил.
На проводе уже установлен разьём JST GH (1,25 мм шаг). Подсоединяется один элемент 3,7 Вольта. Кстати, на модуле уже есть схема зарядки по USB или внешнего источника питания на 5 Вольт.
Сам модуль выглядит аккуратным и чистым. На мой вкус пайка качественная, без следов флюса и прочего безобразия.
Интересный ход с акриловой панелью, которая закрывает кнопки и делает их более удобными в использовании. То есть, не обязательно нажимать ровно на центр, достаточно нажать на угол или с краю.
Кроме обычной кнопки Boot (IO0) есть кнопка на IO21 для пользовательских фантазий.
Так выглядит плата снизу:
Отдельное спасибо за скруглённые углы печатной платы. Это со стороны USB разъёма:
Выводы GPIO подписаны шелкографией. Стоит 3D антенна, Flash выполнен в виде 25Q32 в корпусе SOIC-8 если вдруг кому надо увеличить объём.
Рядом с разъёмом аккумулятора есть индикатор заряда аккумулятора. Зарядка выполнена на TP4065. Можно считывать напряжение аккумулятора через ADC на IO4.
Так же есть возможность подсоединения Qwiic периферии через JST SH. Конечно, туда можно запрограммировать что-то другое при необходимости.
Общие ТТХ
Основные параметры модуля:
Параметр | Значение |
MCU | ESP32-S3R8 Dual-core |
Беспроводная связь | 2.4 GHz Wi-Fi & Bluetooth 5 (LE) |
Антенна | 3D антенна на плате и возможность подключения внешней |
Flash | 16MB (W25Q128) |
PSRAM | 8MB (встроено в ESP32) |
Напряжение батареи | IO04 |
Кнопки | Boot (IO00) + Reset + IO21 |
Разъём для аккумулятора | JST GH 1,25 мм, стоит предохранитель |
Заряд Lipo | TP4065, ток заряда 500 мА, есть индикатор |
Дополнительно | Qwiic (IO43, IO44), JST SH 1,00 мм |
Встроенный LED | IO38 |
GPIO | 18 GPIO для общего использования |
Подключение | 2 ряда по 14 пин, 2,54 мм шаг |
USB | Type-C |
Параметры экрана:
Параметр | Значение |
Диагональ | 1,91 дюймов (4,85 см) |
Активная область | 19.8*44.22 мм (примерно 22:10) |
Тип экрана | AMOLED (не сенсорный) |
Разрешение | 240*536 точек |
Чип управления | RM67162 |
Интерфейс | Quad SPI (QSPI) или SPI (выставляется резисторами) |
Немного про Qwiic
Интерфейс Qwiic был разработан SparkFun. Фактически это обычный I2C, но с возможностью соединять устройства в цепь друг за другом. Таким образом можно добавлять-убавлять устройства без пайки и в некоторых случаях сократить количество проводов.
Впрочем, Qwiic разьём на T-Display модуле просто выводит GPIO43 и GPIO44, которые можно назначить на что угодно, не обязательно I2C. Эти же IO пины так же выведены на обычной гребёнке.
Интерфейс QSPI
Часто такого типа экраны имеют подключение по шине SPI. Это последовательная шина, которая очень популярна среди простых экранов. Преимущество в небольшом количестве проводов (и задействованных GPIO) и неплохой скорости. По производительности SPI как раз стоит между I2C и параллельной шиной. Но для параллельной шине нужно намного больше GPIO и поэтому не везде есть такая возможность. То есть, SPI шина на небольших экранах даёт достаточную производительность.
Есть вариации SPI – например, Dual SPI и Quad SPI. В случае с Dual SPI последовательная шина становиться 2-битной, а на Quad SPI шина уже 4 бита. Что дает некий прирост производительности при небольшом увеличении использованных GPIO.
RM67162 поддерживает обычный SPI и QSPI. Модуль T-Display AMOLED отконфигурирован на режим QSPI, но можно переключить на обычный SPI перепаиванием двух резистором на плате. Не знаю зачем есть такая возможность, так как эти освободившиеся GPIO никуда не выведены. Разве что только для облегчения написания программы управления, но это очень сомнительная выгода на мой взгляд. Если у кого есть идеи, то пишите в коментариях.
Кстати, в документации по RM67162 указаны SPI и Dual-SPI (есть ещё 8-битный 8080 и MIPI, но они нам не доступны). Но на странице конфигурации интерфейса IM[1:0] есть вариант SPI/Quad-SPI, а Dual-SPI нет. Ох уж эти сочинители даташитов.
Тестирование
При включении появляется лого LILYGO и потом модуль пытается подсоединиться на какую-то WiFi точку явно где-то в Китае. От меня не достаёт. Впрочем, это и к лучшему.
Для проверки модуля я выбрал библиотеку LVGL. Это популярная и очень продвинутая графическая библиотека, которая может много фишек. Она перекрывает все мои хотелки на сегодняшний день и имеет достаточно простой API.
Драйвер дисплея для этого проекта является Arduino_GFX, которые имеет поддержку RM67162. Так же Lilygo предлагает свой драйвер для этого чипа, но Arduino_GFX мне просто удалось подключить быстрее.
На удивлении (впрочем, предсказуемо) было сложно передать качество картинки экрана обычным телефоном. Мне даже пришлось сдуть пыль со своей старой зеркалки, что бы хоть как-то передать это. Но даже с зеркалкой получилось не очень, хотя и намного лучше телефона.
Могу только добавить, что фото не передаёт той красочности и яркости изображения, которая на самом деле. При умеренно ярком свете картинка остаётся чёткой и читаемой.
Разрешение AMOLED экрана особенно на высоте. На расстоянии 20 см я не могу различить пиксели на экране.
Углы обзора шикарны, как и следовало ожидать на таком типе дисплея. Цвета не меняются, яркость не падает.
Производительность
Так как я работаю с LVGL, то и тесты будут через LVGL.
В библиотеке LVGL есть несколько демок и бенчмарк. Все тесты запускались на 16bpp и в режиме QSPI. Не вижу смысла проверять в режиме SPI.
Скорости могут зависят от ориентации дисплея. По этой причине привожу оба варианта.
| Portrait | Landscape |
lv_demo_benchmark | 63 FPS | 66 FPS |
lv_demo_music | 19 FPS | 23 FPS |
Снял видео для YouTube с демкой lv_demo_music. Правда, качество дисплея тут не видно вообще. На камере телефона даже видны волны от сканирования строчек из-за выдержки камеры, но в реальной жизни этих полос нет, конечно.
youtu.be/07cB_kKWtzI
Исходный код
Если кому интересно, то выкладываю код, который использовал для тестирования:
github.com/nochkin/t-display
В коде поддержка T-Display AMOLED (гвоздь обзора) и другого модуля T-Display на ESP32. Если будет интересно, то могу сделать обзор на второй модуль. Он намного дешевле, но может почти то же самое.
LILYGO имеет свой репозиторий кода для этого модуля со своими примерами. Там же можно найти полную принципиальную схему устройства и прочую полезную информацию:
github.com/Xinyuan-LilyGO/T-Display-S3-AMOLED
Выводы
Мне лично этот модуль очень понравился. Экран красивый и приятный. Думаю сделать на базе этого модуля KaRadio32, по идее он должен хорошо вписаться с такими параметрами.
Скидка
Если надо вкуснее, то есть купон на 5% скидку: LILYGO5. Действует на все товары.
P.S.: если кто предпочитает Aliexpress, то у LILYGO там есть продавец:
lilygo.aliexpress.com/store/1101195566
Товар для написания обзора предоставлен магазином. Обзор опубликован в соответствии с п.18 Правил сайта.
lilygo.aliexpress.com/store/1101195566
www.youtube.com/watch?v=UABtfKg0ATY
https://aliexpress.ru/item/item/1005004928000937.html
Интрига.
в таблице IPS
Но надо, всё-таки, написать правильно, так как шутку могут не воспринять. Исправил, спасибо.
И не нужно уводить тему в сторону.
Мы же не обсуждали сравнение популярности Lilygo с популярностью Samsung или Sony.
Речь шла про то, что предисловие написано языком продавцов таймшера или пылесосов Кирби.
Но тогда и не пишите про джинсу, если в ваш кругозор что-то не входит.
Ведь верно?
Ибо Lilygo действительно известная контора.
А если искать к чему придраться — то найти можно будет всегда. Предисловие как предисловие — если интересен сам товар и его свойства — зачем вообще на ненужное внимание обращать?
Если п18 вызывает отвращение — так не заходите в обзоры с ним, а то мазохизм какой-то себе устраиваете и начинаете донкихотничать в комментах)
P.S. На одной из технических конф один известный (в узких кругах) докладчик сказал так: "Не будете расширять свой кругозор сами — вам вместо него расширят ваше окно овертона насильно!" :)
Есть притензии к чему-то из их ассортимента или это просто вброс такой?
Товар, который мне не нравится, обозревать скучно.
Ну, казалось бы, обзорщик не получает процент от продажи этого товара — так будь объективен, пиши, как оно есть. И такие объективные и честные промообзорщики тут тоже есть, хотя и в меньшинстве.
Так откуда же берутся вот такие «выковырянные из носа» вымученные предисловия, в искренность которых веришь даже меньше, чем рекламе от продажных российских киноактёров?
Иначе так можно говорить про все п.18.
1. Как его купить находясь в России? Если никак — то зачем тут вообще этот обзор на предмет, который нельзя приобрести.
2. На сайте написано IPS AMOLED, что конечно говорит об общем уровне компетентности производителя и его сотрудников. Но как же дело обстоит на самом деле? Визуально отличить IPS от AMOLED не представляет особого труда. Может автор укажет, что же реально стоит на его экземпляре платы?
https://aliexpress.ru/item/item/1005004496543314.html
https://aliexpress.com/item/item/1005005416973021.html
https://aliexpress.com/item/item/1005005542538382.html
2. Думал оставить как прикол, но решил исправить. Это AMOLED. Спасибо.
Не знаю, могут ли «корабль Belarus» )) но в Россию обещают доставить. Только ценник конский ($34) и доставка не бесплатная. На Али есть дешевле, ссылки выше в комментах.
Очень ждём результатов с созданием Вами темы :-) Имеющийся экранчик на моём Ka-Radio без очков рассмотреть не получается :-)
Вопрос — найти посредника по оплате.
Желающих получить мои рубли с карты (условно) Мир и оплатить мою покупку с зарубежной долларовой карты чё'т как-то не так и много…
Возможно, у вас в BY с этим и попроще…
Выбирайте по отзывам самый удобный вам и вперед.
Из известных (что не говорит об их качестве) boxberry / сдэк / бандеролька.
Мало того, товары этого брэнда можно найти на али. Не все, но многие.
Что, где,
когдапочОм…А то в поиске попадается хня или хня напечатанная давно.
pochtoy.com/
www.shipito.com/
Цены есть на сайте.
А тут, оказывается, про шоппинг в США.
Китая хватит, без США))
LILYGO — это не «шоппинг в США», кстати. Они присылают из того же Китая, так как это довольно большая китайская контора, которая разрабатывает и производит свои вещи.
Для обозора посредников нужна отдельная статья. К сожалению, у меня слишком мало опыта и информации для этого. Идея интересная и востребованная, я бы тоже почитал. Есть желание попробовать?
Если бы было 16МВ флеша, то стояла бы W25Q128
Спасибо за уточнение, исправил.
DWIN хорош для совсем слабых микроконтроллеров, но тут ведь не 8-битная атмега.
Мы всё ещё только по GUI, верно? Всё переписывать я не планирую. В этом случае проще с нуля сделать своё
Volos, кстати, обожает почти все платы с экранчиками. У меня сейчас такая же стадия, я его хорошо понимаю.
родилось вот это habr.com/ru/articles/748818/
visualgdb.com/UsbDriverTool/
Тот же WT32-SC01 Plus имеет два порта. Очень удобно. Один для консоли, а другой для отладки и прошивки.
там вообще как бы не чистый libusb а libusb -winusb, причем без подписи и не самый свежий, но может для Win7 (а мне надо 7ку как бы) это и к лучшему
zadiq делает тоже самое, но делает подпись драйвера
но и драйвер от expressif по сути — тоже самое только другой версии
я по быстрому прообовал: натуральный libusb через zadig похоже не видит opencd, вот winusb — видит… как то так
НО замечу что через USB esp32S3 дает два интерфейса и суть моих исследований в том что там еще и com порт для консоли, а serial лучше использовать для чего нить более интересного
похоже что разбирательство с этими usb потянет на отдельную статью
Я тут дебажил HID эмулятор на ESP32-S3, то ещё развлечение.
И это у меня два USB-C было. Один напрямую в MCU, а другой через USB-Serial чип.
openocd кстати тоже многократно обновилось так что может оно и лучьше щас
Твоими бы устами да мёд пить :-)
а если нет то придется сперва озадачиться как прикрутить к этой плате arduino и экран
можно взять любую понраившийся проект на arduino… и возможно только пару циферок поменять (номера входов)
Популярные датчики в arduino хорошо проработаны в готовые библиотеки, и в теории — в две строки добавляются
да и экраны, если простые тоже как бы несложно
Если нужно обойтить без сложного программирования(ну почти, как по мне проще чем с нуля писать прошивку под ардуину или platformio), то я бы смотрел на ESPHome — это конструктор прошивок, в основном чтобы делать всякие девайсы для умного дома, но в общем-то можно и автономные девайсы делать. Этот чип там уже поддерживается(типа ещё в состоянии разработки, могут быть какие-то мелкие проблемы, но работать должно). Экраны и датчики поддерживаются практически любые «из коробки».
Если разбираться с нуля, конечно, придется потратить выходные(возможно не одни), но в целом гораздо проще, чем разобраться в более сложных фреймворках и писать всё самому.
Вот как пример конфига для платки TTGO-T1 со встроенным экраном, которая у меня включала-отключала котёл. К ней был прицеплен датчик температуры/влажности и реле(просто сухой контакт чтобы управлять термостатным входом котла), всё это прицеплено к HomeAssistant — вся логика была внутри него.
По сути тут просто описывается какие устройства висят на каких GPIO и какие драйвера для них использовать, единственное место где есть кусочек какого-то программного кода — это отрисовка данных с датчика температуры на экранчике — просто показометр чтобы экран как-то задействовать, так то я его для дела не использовал.
Нашёл вот такое: github.com/e2002/yoradio Это оно?
www.ozon.ru/product/smartfon-rombica-myphone-jet-2-16-gb-chernyy-1077984079
www.ozon.ru/product/smartfon-itel-a25-l5002-1-16-gb-goluboy-859191324
Про датчики выше уже сказали, это довольно важно для метеостанции в случае подключения оных напрямую.
И это мы ещё не начинали про технические моменты типа скорости загрузки, тормозов и прочего ненужного безобразия.
во первых к ним продают готовый корпус и вероятно есть модель для распечатки
судя по коментам этот дисплей покупают для занятной штуки под названием NerdSoloMiner v2 — заявлена, представьте себе, лотерея на биткоины. в архиве есть и бинарники amoled и isp и модели корпуса
но первая версия была майнером биткоина, и эта похоже тоже.
далее оказалось что к ESP32 подключают ASIC BM1397 который устарели и продают по дешевке, и на нем делают уже настоящий майнинг
Уж лучше сделать что-то своё.
Устаревшие ASIC'ы обычно выгодны при бесплатном электричестве.
Обычно на недорогих платах ESP32 стоит PCB антенна, которая выполнена в виде дорожки на плате. Это самый дешёвый вариант, но и занимает больше всего места.
Ещё есть вариан с керамической антенной, где роль антенны выполняет специальный компонент, который фактически является проводником, который запечён внутри керамики. За счёт этого она занимает меньше места и обычно используется на маленьких ESP32 платах.