Пост содержит инструкцию как подключить TFT-LCD дисплей на популярном контроллере ILI9341 к одноплатному компьютеру на ОС Armbian с помощью дерева устройств (Device Tree overlays) без танцев с бубном. В сети Интернет много материала как подключать различные LCD экраны к Raspberry Pi. Но что если у вас нет Raspberry Pi, а хочется подключить недорогой LCD экран на SPI интерфейсе? Все что вам необходимо, это любая плата с поддержкой ОС Armbian. В каталог поддерживаемых плат ОС Armbian входят платы: Asus, Pine64, Hardkernel, Orange Pi, Banana Pi, и т.д. На данный момент в каталоге более 114 моделей плат, объявлена поддержка различного оборудования из коробки. Доступны для подключения: 4G/LTE модемы, USB Wi-Fi, USB Bluetooth, USB Ethernet, сканеры DVB-тюнеры и т.д. К всем этим платам можно легко подключить SPI LCD дисплей ILI9341, как это реализовать прошу под кат.
Многие одноплатные компьютеры снабжены HDMI выходом, но подключение полноценного дисплея с поддержкой HDMI входа достаточно дорогое удовольствие для небольшого проекта. В особенности, если необходимо реализовать минимальный функционал взаимодействия с пользователем, терминал распечатки документов, вывод текущего статуса работающего приложения. Для подобных задач можно использовать символьные дисплеи LCD HD44780 на интерфейсе I2C, они достаточно дешевы и удобны. Но в тоже время сильно ограничены в функциональности, на эти экраны невозможно вывести консоль Linux и нативный UI приложения, вдобавок площадь LCD экрана нельзя использовать как панель ввода информации. Для решения этих задач прекрасно подойдут LCD экраны на SPI интерфейсе, дисплей диагональю 3.5 дюйма с резистивным слоем можно приобрести за 9.57$ (включая доставку). На LCD экран можно выводить консоль Linux и подсистему X11. Таким образом, использование SPI LCD является лучшим вариантом по соотношению функциональности к стоимости.
Контроллер ILI9341 предназначен для управления TFT панелью. Под контроллер ILI9341 поставляются панели диагональю от 2.2 до 3.2 дюймов, разрешение 240×320, к некоторым LCD добавляют резистивный слой.
К одноплатному компьютеру Banana Pi BPI-M64 будем подключать модуль SPI LCD ILI9341 диагональю 2.4 дюйма без резистивного слоя.
Рассмотрим характеристики и распиновку SPI LCD ILI9341 2.4 inch
Контакты подключения LCD
Number | Pin Label | Description |
1 | VCC | 5V/3. 3V power input |
2 | GND | Ground |
3 | CS | LCD chip select signal, low level enable |
4 | RESET | LCD reset signal, low level reset |
5 | DC/RS | LCD register / data selection signal,high level: register, low level: data |
6 | SDI(MOSI) | SPI bus write data signal |
7 | SCK | SPI bus clock signal |
8 | LED | Backlight control, high level lighting,if not controlled, connect 3.3V always bright |
9 | SDO(MISO) | SPI bus read data signal, if you do not need to the read function, you can not connect it |
Для управления подсветки используется контакт номер 8 — LED. Максимальное напряжение 3.3V соответствует максимальной яркости от общего питания VCC. Если необходимо задать 50% яркости экрана, то на LED необходимо подать напряжение в 1.65V. Для программного управления яркости подсветки необходимо контакт LED подключать к аналоговому выходу GPIO на одноплатном компьютере. В случае наличия только цифровых выходов, доступна лишь возможности включить или полностью выключить подсветку экрана.
Исходя из характеристик LCD экрана предъявляются следующие требования к одноплатному компьютеру:
На странице armbian.com/download представлено большое количество разнообразных одноплатных компьютеров. С точки зрения удобства подключения, лучше выбирать плату с 40-контактным разъемом GPIO совместимым с Raspberry Pi 3. Например, если подключать SPI LCD ILI9341 2.4 inch к плате Banana Pi BPI-M64 и Orange Pi PC, то номера физически подключаемых контактов GPIO будут совпадать (не путать с названиями контактов процессора, они будут различны, далее потребуется для конфигурирования). В случае если одноплатный компьютер будет построена не на процессоре Allwinner, то возможно потребуется изменять больше параметров в файле: sun50i-a64-spi-ili9341-led-always-on.dts (будет далее по тексту).
Armbian — это самый популярный дистрибутив Linux, предназначенный для одноплатных компьютеров построенных на ARM процессоре, список поддерживаемых плат огромен: Orange Pi, Banana Pi, Odroid, Olimex, Cubieboard, Roseapple Pi, Pine64, NanoPi и др. Дистрибутив Armbain основан на Debian и Ubuntu.
После явления миру Raspberry Pi, китайские производители решили тоже влиться в движение Open Hardware Source, и сделали много разнообразных плат. Но программная поддержка была крайне слабой, для решения данной проблемы зародился проект Armbian. На данный момент Armbian уже исполнилось 7 лет, поддерживается 114 моделей плат, объявлена поддержка различного оборудования из коробки. Доступны для подключения: 4G/LTE модемы, USB Wi-Fi, USB Bluetooth, USB Ethernet, сканеры DVB-тюнеры и т.д.
Для запуска Armbian на одноплатном компьютере необходимо загрузить образ с сайта, затем скопировать его на microSD карту, с которой в последствие нужно будет загрузиться. Если на плате размещена eMMC память достаточного объема, то через утилиту armbian-config, операционная система легко переносится с microSD карты на eMMC память вместе с загрузчиком.
Создание IoT-проекта с использованием Armbian в отличие от Raspberry Pi, позволяет выбирать платы различающие по производительности, и набора периферии. Например, на всех версиях Raspberry Pi размещен только один Ethernet порт. Но если требуется сделать маршрутизатор с несколькими Ethernet портами, то из списка поддерживаемых плат Armbian подойдут модели: Helios64, Espressobin, Bananapi R2, и т.
Поддерживаемые SoC
SPI интерфейс LCD экрана подключаем к SPI1 на Banana Pi BPI-M64. Контакты CS, RESET, DC/RS можно подключать к любым цифровым выводам.
Таблица контактов подключения:
Номер LCD | Метка LCD | Номер контакта на Banana Pi BPI-M64 (порт GPIO Raspberry Pi 3) |
1 | VCC | 1 или 2 (если необходима максимальная яркость, то контакт №2 на 5V) |
2 | GND | 39, или любой другой Ground |
3 | CS | 24 |
4 | RESET | 18 |
5 | DC/RS | 22 |
6 | SDI(MOSI) | 19 |
7 | SCK | 23 |
8 | LED | 1 или любой свободный GPIO на 3. 3V |
9 | SDO(MISO) | 21 |
Если контакт LED подключать к цифровому выводу GPIO, то для включения подсветки вручную потребуется подавать логическую «1» — для включения или «0» — для выключения экрана.
Схема подключения SPI LCD ILI9341:
Banana Pi BPI-M64 — это 64-битный четырехъядерный мини-одноплатный компьютер, поставляемый как решение с открытым исходном кодом. Ядром системы является процессор Allwinner A64 с 4-мя ядрами Cortex-A53 с частотой 1.2 ГГц. На плате размещено 2 ГБ DDR3 SDRAM 733МГц оперативной памяти и 8 ГБ eMMC.
Самое главное для успешного подключения SPI LCD необходимо знать название контактов для SPI интерфейса, их номер и название зависит от модели процессора. Для решения этой задачи необходим Allwinner A64 Datasheet.
На Wiki-странице Banana Pi BPI-M64 представлена распиновка 40-контактного разъема GPIO, из которого мы узнаем название контактов: PD2, PD3, и т.д.40 PIN GPIO of Banana pi BPI-M64 | |||
GPIO Pin Name | Default Function | Function2:GPIO | Function3 |
CON2-P18 | PD4 | PD4 | |
CON2-P19 | SPI1-MOSI | PD2 | UART4-TX |
CON2-P21 | SPI1-MISO | PD3 | UART4-RX |
CON2-P22 | PC0 | PC0 | |
CON2-P23 | SPI1-CLK | PD1 | UART3-RX |
CON2-P24 | SPI1-CS | PD0 | UART3-TX |
Помимо название контакта, необходимо узнать порядковый номер этого контакта на ножке процессора, легко вычисляется по формуле: (позиция буквы в алфавите — 1) * 32 + позиция вывода. Рассчитаем номер ножки для контакта PD2. Первая буква не учитывается т.к. P — PORT, позиция буквы D в алфавите = 4, получаем (4-1) * 32 + 2 = 98. Контакту с меткой PD2 соответствует 98 ножка на процессоре, далее потребуется для конфигурирования дерева устройств.
Дерево устройств (Device Tree, DT) — это структура данных в системе Linux, состоящая из именованных узлов и свойств, описывающих оборудование, которое невозможно обнаружить путем опроса оборудования. Дерево должно включать имя базового процессора, конфигурацию его памяти и любые периферийные устройства (внутренние и внешние). DT не используется для описания программного обеспечения, хотя перечисление аппаратных модулей вызывает загрузку модулей драйверов.
Сердцем любой отладочной платы или одноплатного компьютера является SoC. SoC имеет множество контактов (ног) для подключения линий электропитания и различных устройств.
Контакты могут быть объедены вместе для формирования интерфейса, например MIPI DSI(MIPI Display Serial Interface). Интерфейс MIPI DSI предназначен для подключения LCD панелей, активно используется в смартфонах и планшетах. Но если к устройству не планируется подключать дисплей по MIPI DSI, то эти линии можно использовать для других целей, путем изменения DT. В отличие от архитектуры x86 в системах построенных на SoC нет возможности произвести полностью опознание всех устройств в режиме Plug and Play. Поэтому необходимо явное декларирование какие контакты используются для интерфейсов и какие именно устройства подключены к этим интерфейсам.
До появления DT информация об устройствах в Linux являлась неотъемлемой частью ядра, и в случае изменения состава периферийных устройств требовалось пересобрать образ системы. Это было крайне неудобно, и поэтому описание периферийных устройств перенесли в конфигурационные файлы, которые собираются на логическом уровне в дерево. Где ветвь — устройство с указанием драйвера необходимого для работы этого устройства.
После использования DT отпала необходимость в формирование индивидуального образа для каждого набора периферии устройств. Теперь достаточно сформировать один образ, включить в него набор драйверов для различных устройств, и для каждого устройства сформировать свой DT.
Device Tree overlays (наложения дерева устройств) — добавление к DT принципа наложения слоев устройств. Если конфигурация описывает интерфейс UART к которому был подключен Bluetooth, и необходимо Bluetooth заменить на GPS модуль, то можно не удалять существующие настройки Bluetooth а добавить дополнительный слой для GPS модуля который переопределит предыдущие настройки.
Для работы с DT используются следующие термины:
DT | Дерево устройств |
DTB (*.dtb) | Бинарный файл дерева устройств |
DTBO (*. dtbo) | Бинарный файл дерева устройств для наложения |
DTC | Компилятор дерева устройств |
DTO | Наложения дерева устройств |
DTS (*.dts) | Исходный файл для дерева устройств |
FDT | Flattened Device Tree, двоичный формат, содержащийся в файле .dtb |
Аппаратная конфигурация описывается в файлах исходниках DT ( .dts ) затем они компилируется в бинарные файлы DT ( .dtb ) уже для конечного использования в системе. Так же можно выполнить обратную процедуру декомпиляции файлов *. dtb в *. dts, компилятор/декомпилятор присутствует в системе.
Реализация DTO включает разделение дерева устройств, построение, разбиение на разделы и исполнение.
DT разделяются на две части:
Тема Device Tree overlays в Linux достаточно большая, чтобы не превращать пост в многотомное произведение Ленина, более детально можно почитать в публикации Работа с GPIO на примере Banana Pi BPI-M64. Часть 2. Device Tree overlays.
Тестирование производилось на образе Armbian_20.08.2_Bananapim64_bionic_current_5.8.6_minimal.img.xz, на основе Ubuntu 18.04.5 LTS (Bionic Beaver), ядро Linux 5.8.6. uname: Linux bananapim64 5.8.6-sunxi64 #20. 08.2 SMP Fri Sep 4 08:52:31 CEST 2020 aarch64 aarch64 aarch64 GNU/Linux.
В Armbian уже есть драйвер для ILI9341, поэтому все что требуется, это создать файл описания устройства в формате DTS, скомпилировать его в формат DTBO, и перезагрузить одноплатный компьютер. Как говорится Easy!
Для формирования файла DTS необходимо узнать ссылку на gpiochip в котором находится SPI интерфейс, для этого откроем терминал Armbian и выполним команду cat /sys/kernel/debug/gpio:
root@bananapim64:~# cat /sys/kernel/debug/gpio gpiochip1: GPIOs 0-255, parent: platform/1c20800.pinctrl, 1c20800.pinctrl: gpio-120 ( |bananapi-m64:red:pwr) out hi gpio-142 ( |bananapi-m64:green:u) out lo gpio-143 ( |bananapi-m64:blue:us) out lo gpio-166 ( |cd ) in lo ACTIVE LOW gpio-233 ( |usb0_id_det ) in hi IRQ gpiochip0: GPIOs 352-383, parent: platform/1f02c00. pinctrl, 1f02c00.pinctrl: gpio-354 ( |reset ) out hi ACTIVE LOW gpio-356 ( |shutdown ) out hi gpio-357 ( |host-wakeup ) in lo gpio-358 ( |device-wakeup ) out hi gpiochip2: GPIOs 510-511, parent: platform/axp20x-gpio, axp20x-gpio, can sleep:
Данная команда выведет все доступные устройства gpiochip и номера задействованных контактов в операционной системе. В предыдущем разделе для контакта SPI1-MOSI, название контакта PD2, определили номер ножки процессора — 98. Исходя из полученного результата номер 98 приходится на диапазон GPIOs 0-255, который соответствует чипу gpiochip1: GPIOs 0-255, parent: platform/1c20800.pinctrl, 1c20800.pinctrl. Далее для формирования файла DTS потребуется узнать ссылку на 1c20800.pinctrl.
Создадим файл DTS с названием: sun50i-a64-spi-ili9341-led-always-on. dts (в основе dts файл для платы Orange Pi PC):
/dts-v1/; /plugin/; / { compatible = "allwinner,sun8i-h4"; fragment@0 { target = <&pio>; __overlay__ { ili9341_pins: ili9341_pins { pins = "PD4", "PC0"; /*RESET, DC_RS*/ function = "gpio_out", "gpio_out" ; }; }; }; fragment@1 { target = <&spi1>; __overlay__ { status = "okay"; cs-gpios = <&pio 3 0 0>; /* PD0 */ ili9341: ili9341@0 { compatible = "ilitek,ili9341"; reg = <0>; pinctrl-names = "default"; pinctrl-0 = <&ili9341_pins>; spi-max-frequency = <16000000>; rotate = <90>; bgr; fps = <25>; buswidth = <8>; reset-gpios = <&pio 3 4 1>; /*RESET=PD4*/ dc-gpios = <&pio 2 0 0>; /*DC_RS=PC0*/ /*led-gpios = <&pio 2 4 0>; LED=PC4*/ debug = <0>; }; }; }; };
Рассмотрим содержимое:
Разместим файл по пути /boot/dtb/allwinner/overlay. Затем компилирует файл .dts в .dtbo:
$ dtc -O dtb -o sun50i-a64-spi-ili9341-led-always-on.dtbo sun50i-a64-spi-ili9341-led-always-on.dts
Запустим утилиту конфигурирования платы: $ armbian-config. Перейдем по меню: System > Hardware, и включим слой (overlay): spi-ili9341-led-always-on. После перезагрузки платы, консоль Linux будет на SPI LCD экране:
Midnight Commander и Htop на SPI LCD
Midnight Commander
Htop
Название контактов
Для всех процессоров Allwinner формат записи контакта, соответствует виду cs-gpios = <&pio 3 0 0>, для других процессоров формат записи контакта будет отличаться.
Если изображение не появилось на LCD, выполните команду для проверки: $ dmesg | grep -E ‘ili9341’.
В консоли должна быть следующая информация:
root@bananapim64:/boot/dtb-5.8.6-sunxi64/allwinner# dmesg | grep -E 'ili9341' [ 5.733989] fb_ili9341: module is from the staging directory, the quality is unknown, you have been warned. [ 5.734718] fb_ili9341 spi0.0: fbtft_property_value: buswidth = 8 [ 5.734731] fb_ili9341 spi0.0: fbtft_property_value: debug = 0 [ 5.734737] fb_ili9341 spi0.0: fbtft_property_value: rotate = 90 [ 5.734744] fb_ili9341 spi0.0: fbtft_property_value: fps = 25 [ 6.119287] graphics fb0: fb_ili9341 frame buffer, 320x240, 150 KiB video memory, 16 KiB buffer memory, fps=25, spi0.0 at 16 MHz
Для вывода консоли Linux достаточно добавить файл DTS и все, но для вывода графики этого недостаточно.
1) Установим XORG и XFCE:
$ sudo apt-get update $ sudo apt-get install xorg $ sudo apt-get install xfce4
2) Для процессора Allwinner необходимо дополнительно устанавливать GPU драйвер — fbdev:
$ sudo apt-get install xserver-xorg-video-fbdev
3) Создать конфигурационный файл по пути /usr/share/X11/xorg. conf.d/99-fbdev.conf и разместить в нем следующий фрагмент:
Section "Device" Identifier "myfb" Driver "fbdev" Option "fbdev" "/dev/fb0" EndSection
Где /dev/fb0 — устройство SPI LCD. Если к плате подключена HDMI панель, то может быть два устройства /dev/fb0 и /dev/fb1.
Запускаем графический интерфейс командой: startx или startxfсe4:
Если необходимо сразу переходить в графический интерфейс, то необходимо дополнительно установить пакеты:
$ sudo apt-get remove tasksel $ sudo apt-get remove xubuntu-desktop
Для возвращения запуска только консоли необходимо отключить автозапуск службы display-manager.service
$ sudo systemctl disable display-manager.service
Если графический интерфейс не запускается то для решение проблем необходимо посмотреть журнал событий X11, командой:
$ cat /var/log/Xorg. 0.log
Установка и настройка SPI LCD не требует никаких компиляций модулей из исходного текста, что существенно упрощает установку. Главное внимательно выставить контакты и все заработает из коробки. Поставленные цели успешно решены.
Файл sun50i-a64-spi-ili9341-led-always-on.dts и другие файлы наложения дерева доступны в каталоге GitHub Banana-Pi-BPI-M64/dt-overlays/
Update: Дополнение варианта с драйвером gpio-backlight для управления подсветки и вывод графики на устройство Framebuffer в публикации Работа с GPIO в Linux на примере Banana Pi BPI-M64. Часть 4. Device Tree overlays. Подключение дисплея SPI LCD ILI9341
Каталог
ДОСТАВКА
ЗАКАЗАТЬ
КОНТАКТЫ
ГЛАВНАЯ
По телефону
По почте
Телефон
Фамилия*
Email*
Придумайте пароль
На указанный Вами телефонный номер поступит звонок, введите последние 4 цифры номера телефона.
Изменить номер
Код из СМС
По телефону
По почте
Пароль
Цена:
1530 р.
ожидается
Уже в корзине
Код товара: 10198
Оригинальное название:
LCD TFT 320×240 Graphic Color Touch Display ILI9341 Mega2560 Arduino Compatible
Цветной графический сенсорный экран 3. 2″ дюйма для MEGA 2560 R3 Arduino
Определения контактов
Номер вывода | Обозначение | Номер вывода | Обозначение |
20 | NC | 40 | NC |
19 | LED_A | 39 | NC |
18 | NC | 38 | SD_CS |
17 | LCD_RESET | 37 | SD_DIN |
16 | F_CS | 36 | SD_CLK |
15 | LCD_CS | 35 | SD_DO |
14 | LCD_DB15 | 34 | T_IRQ |
13 | LCD_DB14 | 33 | T_DO |
12 | LCD_DB13 | 32 | NC |
11 | LCD_DB12 | 31 | T_DIN |
10 | LCD_DB11 | 30 | T_CS |
9 | LCD_DB10 | 29 | T_CLK |
8 | LCD_DB9 | 28 | LCD_DB7 |
7 | LCD_DB8 | 27 | LCD_DB6 |
6 | LCD_RD | 26 | LCD_DB5 |
5 | LCD_WR | 25 | LCD_DB4 |
4 | LCD_RS | 24 | LCD_DB3 |
3 | NC | 23 | LCD_DB2 |
2 | VCC | 22 | LCD_DB1 |
1 | GND | 21 | LCD_DB0 |
Подключение дисплея к стандартным полноразмерным микроконтроллерным Arduino-платам (UNO, MEGA и т. д.) осуществляется при помощи адаптера TFT Shield V1.0 (3.3V). Подключение к платам меньших размеров или контроллерами другого семейства выполняется обычным проводным способом.
Добро пожаловать в очередной видеоурок по Arduino! В этом видео мы собираемся впервые взглянуть на этот 2,8-дюймовый цветной сенсорный TFT-дисплей! Это большой и недорогой сенсорный дисплей.
Привет, ребята, меня зовут Ник, и добро пожаловать на канал educ8s.tv, посвященный электронике своими руками. проекты с Arduino, Raspberry Pi, ESP8266, ESP32 и другими популярными платами.Если вы здесь впервые, добро пожаловать, обязательно подпишитесь и посмотрите предыдущие видео на канале.
Сегодня мы узнаем, как управлять 2,8-дюймовым сенсорным дисплеем с помощью драйвера ILI9341 с Arduino Uno и платой ESP32. Прежде всего, давайте внимательно посмотрим на сам дисплей. Дисплей большой, разрешение 320х240 пикселей. По сравнению с одним из моих любимых дисплеев, на 1,8-дюймовом цветном TFT-дисплее вы можете видеть его намного больше. Экран также предлагает сенсорные функции, что является дополнительным бонусом, и слот для SD-карт сзади. Он использует интерфейс SPI, поэтому соединение с Arduino очень простое. Стоимость дисплея относительно невысока; он стоит около 11 долларов, что, на мой взгляд, является справедливой ценой за то, что предлагает этот дисплей.
2,8-дюймовый дисплей: https://educ8s.tv/part/28ILI9341
Arduino Uno: https://educ8s. tv/part/ArduinoUno
Резисторы: https://educ8s.tv/part/Resistors
Arduino Pro Mini: https://educ8s.tv/part/ArduinoProMini
ESP32: https://educ8s. tv/part /ESP32
STM32: https://educ8s.tv/part/STM32
DS3231 RTC: https://educ8s.tv/part/DS3231
Макет: https://educ8s.tv/part/SmallBreadboard
Провода: https://educ8s.tv/part/Wires
Полное раскрытие информации: Все приведенные выше ссылки являются партнерскими ссылками. Я получаю небольшой процент от каждой продажи, которую они производят. Спасибо за Вашу поддержку!
[adsense]
Еще одна вещь, которая мне нравится в этом дисплее, это то, что он не является защитным экраном, как сенсорный дисплей, который мы использовали до сих пор. Таким образом, мы можем подключить дисплей к любой плате, Arduino Pro mini, STM32, ESP8266 и ESP32. Это очень важно, потому что теперь у нас есть недорогой дисплей, который мы можем использовать с любой доской. До сих пор единственными сенсорными дисплеями, которые мы могли использовать с этими платами, были дисплеи Nextion, которые стоят дороже, и, честно говоря, хотя я и использую их время от времени, они мне не очень нравятся.
Теперь давайте посмотрим, как подключить этот дисплей к Arduino Uno. Первые 9 контактов дисплея — это контакты питания и контакты SPI. Итак, если мы подключим только первые 9 контактов дисплея, мы сможем использовать его как обычный дисплей без сенсорного функционала. Дисплей использует логические уровни 3,3 В и, к сожалению, не устойчив к 5 В. Итак, нам нужно использовать несколько резисторов 10K, если мы хотим управлять им с платой, которая использует логические уровни 5V, такие как Arduino Uno.
Подключаем дисплей к Arduino Uno согласно этой принципиальной схеме.
Arduino и 2,8-дюймовый сенсорный экран ILI9341
Как видите, мы подключили Vcc к 5V Arduino Uno, а контакты SPI дисплея — к аппаратным контактам SPI Arduino Uno. Теперь давайте загрузим демонстрационный скетч. Как и вы, 8-битная Arduino Uno с 2 КБ ОЗУ может управлять этим большим дисплеем! Но, как вы можете видеть, он очень медленно обновляет экран. Обновление всего экрана занимает много секунд, а жаль. Однако он может отображать текст с большей скоростью. Очевидно, что Arduino Uno недостаточно для управления дисплеем с таким высоким разрешением. Очевидно, что нам нужна более мощная плата для эффективного управления этим дисплеем.
Но можем ли мы построить полезный проект, используя этот дисплей? Я хотел это выяснить, поэтому решил построить простые часы реального времени и монитор температуры. Я добавил модуль DS3231 RTC и изменил код предыдущего проекта, чтобы использовать новый дисплей большего размера. Вы можете найти код проекта по ссылке в описании ниже. Результат не так плох, как демонстрационный эскиз. Проект работает нормально, но, конечно, есть небольшая задержка при обновлении значений на экране. На мой взгляд, этот проект демонстрирует, что мы можем использовать этот дисплей с 8-битной Arduino только в очень простых проектах, которые редко обновляют экран.
ILI9341 Проект часов реального времени
Прежде чем перейти к более функциональной плате ESP32, давайте попробуем использовать сенсорные функции дисплея. Подключаем оставшиеся 5 контактов согласно этой принципиальной схеме, и мы готовы загрузить второй скетч на плату.
ILI9341 Сенсорный экран Arduino Uno
К моему удивлению, сенсорная демонстрация работает относительно быстро! Это простой набросок, в котором мы рисуем на экране этим стилусом. Я думаю, что этот результат впечатляет, если принять во внимание, что этот дисплей управляется 8-битной платой.
Теперь подключим дисплей к плате ESP32. Если вы не знакомы с этим, ESP32 — это очень быстрая и недорогая плата, совместимая с Arduino. Несколько месяцев назад я подготовил подробный обзор этой платы; Вы можете посмотреть его, нажав на карточку здесь. Поскольку плата ESP32 использует логические уровни 3,3 В, нам не нужны резисторы для управления дисплеем. Итак, если сенсорный функционал нам не нужен, подключаем дисплей по этой принципиальной схеме.
ESP32 ILI9341 Сенсорный экран
Если мы загрузим тот же скетч, который использовался ранее для Arduino Uno, мы увидим, что ESP32 работает очень быстро. Он может обновлять дисплей, рисовать графику и выполнять демонстрационный эскиз намного быстрее, чем Arduino Uno.
К сожалению, сенсорная демонстрация еще не совместима с платой ESP32, поэтому у меня не было возможности попробовать сенсорную функцию дисплея. Скоро я подготовлю еще одно видео о плате ESP32 и этом дисплее. Сначала я хочу протестировать больше библиотек и найти сенсорную библиотеку, которая работает с чипом ESP32, и создать простой демо-скетч. Следите за обновлениями.
Давайте теперь посмотрим на программную часть проекта. Чтобы использовать этот дисплей с Arduino, нам нужно установить драйвер Adafruit ILI9341 и знакомую библиотеку Adafruit GFX, если мы не используем сенсорные функции. Если мы хотим использовать сенсорные функции, мы также должны установить библиотеку URtouch. Вы можете найти ссылки на все необходимые библиотеки вместе с кодом демонстрационных программ, которые я показал вам в описании ниже.
📥 Adafruit GFX: https://github. com/adafruit/Adafruit-GFX-Library
📥 Adafruit ILI9341: https://github.com/adafruit/Adafruit_ILI9341
📥 URtouch: http://www.rinkydinkelectronics.com/ library.php?id=92
В заключение я считаю, что этот экран отлично подходит для наших будущих проектов. Я думаю, что буду часто использовать этот дисплей с платами ESP32 и STM32, потому что он прост в использовании, предлагает сенсорные функции и относительно недорог. В ближайшее время я собираюсь построить полный проект вокруг этого дисплея, чтобы протестировать его еще больше и посмотреть, на что он способен.
Я хотел бы услышать ваше мнение об этом дисплее. Вы когда-нибудь использовали его в своих проектах или собираетесь использовать в будущем? Есть ли у вас какие-либо идеи проектов, которые мы могли бы реализовать с помощью этого дисплея? Пожалуйста, оставьте свои комментарии ниже и не забудьте поставить лайк видео, если оно покажется вам полезным. Спасибо!
Сохранить Подписаться
Пожалуйста, войдите, чтобы подписаться на это руководство.
После входа в систему вы будете перенаправлены обратно к этому руководству и сможете подписаться на него.
Не забывайте, мы используем интерфейс SPI на печатной плате!
Прежде чем вы начнете, нам нужно указать дисплею перевести нас в режим SPI, чтобы он знал, какие выводы слушать. Для этого нам нужно подключить IM1 , IM2 и ИМ3 пины на 3,3В. Самый простой способ сделать это — припаять перемычки IMx на обратной стороне печатной платы. Переверните плату и найдите перемычки
С помощью паяльника расплавьте припой, чтобы замкнуть три указанные перемычки IM1 IM2 и IM3 (не запаивать IM0 !)
Если вы действительно не хотите их припаивать, вы также можете подключить контактные выводы к 3vo 9.0111, просто убедитесь, что вы случайно не подключили их к 5V! По этой причине мы предлагаем пойти по пути припоя-перемычки.
Подключение дисплея в режиме SPI намного проще, чем в 8-битном режиме, поскольку проводов намного меньше. Начните с подключения контактов питания
Вот оно! Вам не нужно подключать RST или другие контакты на данный момент.
Для использования этого дисплея вам потребуется несколько библиотек.
В Arduino IDE откройте диспетчер библиотек …
У нас есть готовый пример кода для использования с этими TFT.
Необходимо загрузить и установить две библиотеки : первая — это библиотека Adafruit ILI9341 (она содержит низкоуровневый код, характерный для этого устройства), а вторая — библиотека Adafruit GFX (которая обрабатывает графические операции, общие для многих дисплеев, которые мы нести). Если у вас Adafruit_GFX , убедитесь, что это самая последняя версия, так как мы сделали обновления для повышения производительности.
Для получения более подробной информации, особенно для тех, кто впервые устанавливает библиотеки, ознакомьтесь с нашим замечательным руководством по адресу http://learn.adafruit.com/adafruit-all-about-arduino-libraries-install-use
Затем найдите . Adafruit GFX и найдите основную библиотеку. Может появиться много библиотек, потому что мы ссылаемся на них в описании, поэтому просто убедитесь, что вы видите Библиотека Adafruit GFX выделена жирным шрифтом вверху.
Установить!
Если вы используете старую версию Arduino IDE (до 1.8.10), также найдите и установите Adafruit_BusIO .
После перезапуска программного обеспечения Arduino вы должны увидеть новую папку примера с именем Adafruit_ILI9341 , а внутри — пример с именем graphicstest . Загрузите этот скетч в свой Arduino. Возможно, вам придется нажать кнопку сброса Кнопка для сброса Arduino и TFT.