St7735 подключение к raspberry

Getting a ST7735 TFT Display to work with a Raspberry Pi

Getting an ST7735 TFT Display working with a Raspberry Pi.

Jake Walker

I recently bought a cheap TFT display for a project I was doing and after a bit of research I decided upon a 1.8″ 128×160 ST7735 Display from Karen’s eShop on eBay, it’s very affordable and looked great for my project. On the product page, the seller has got some really great, detailed instructions for getting the screen to work on an Arduino, however, I couldn’t find anywhere online for getting this screen to work on a Raspberry Pi. This post will quickly save you the trial and error of getting a ST7735 working with a Raspberry Pi.

Wiring

Firstly, the display needs to be wired correctly to the Raspberry Pi. This site will come in handy for finding which pins are where.

Screen Pin Raspberry Pi Pin
GND Ground (pins 6, 9, 14, 20, 25, 30, 34 or 39)
VCC 5v Power (pins 2 or 4)
SCL GPIO 11 (pin 23)
SDA GPIO 10 (pin 19)
RES GPIO 25 (pin 22)
DC GPIO 24 (pin 18)
CS GPIO 8 (pin 24)
BL Not connected

When powering on your Raspberry Pi, the screen will show white by default. You will need to use Python to now display images, more on that below.

Software

I found a library for the screens using the ST7735 chip on GitHub. The instructions and examples on GitHub will work fine, but this is for a different size of the screen, the instructions and example code here will work from the 128×160 display from Karen’s eShop.

Firstly, you need to enable SPI on your Raspberry Pi. You can do this by using the Raspberry Pi configuration tool:

Once in the configuration, select ‘3 — Interface Options’, then ‘P4 — SPI’, select ‘Yes’

Now, you’ll need to install the dependencies and the ST7735 library itself:

Example Code

Here is some example code that I used to print out ‘Hello World!’ to my display, modified from one of the examples in the GitHub repository.

Источник

Enviro Air Quality: подключение, настройка и начало работы

Используйте Enviro Air Quality для мониторинга окружающей среды. Модуль буквально «напичкан» датчиками, которые помогут измерить качество воздуха, атмосферное давление, температуру и влажность окружающей среды, уровень шума и освещенности, а также зафиксирует приближение объекта. А ещё модуль позволяет вывести все показатели датчиков на яркий графический дисплей.

Enviro Air Quality — это уникальная и компактная метеостанция для Raspberry Pi.

Подключение и настройка

Enviro Air Quality совместим со всеми версиями компьютеров Raspberry Pi. В качестве примера используем одноплатный компьютер Raspberry Pi 4.

Примеры работы

Из коробки в библиотеке Enviroplus Python хранятся базовые примеры для знакомства с модулем.

BME280: вывод климатических показаний

Для начала запустите пример для вывода показаний с климатического датчика.

В консоли каждую секунду будет отображаться значения атмосферного давления, температуры и относительной влажности окружающей среды. Попробуйте прикоснуться или подышать на датчик BME280, проверьте как меняются показания.

Вы заметите, что значение температуры немного завышено. Это связано с тем, что некоторое количество тепла всё таки передается от процессора Raspberry Pi к плате Enviro+ и, следовательно, к датчику BME280. Но, вы можете получить температуру процессора Pi от его внутреннего датчика температуры и использовать полученное значение для показаний.

Запустите пример для вывода температуры с компенсацией.

В итоге показания температуры будут более точными.

LTR-559: вывод освещенности и расстояния

Перейдем к оптическому сенсору освещенности и расстояния. Запустите пример:

В консоли отобразится текущее значению потока света в люксах и расстояние до видимого объекта в отчетах АЦП от 0 до 2047, при этом расстояние до объекта обратно пропорционально показаниям в консоли.

MiCS6814: вывод концентрации вредных веществ

Датчик газа MiCS6814 выводит значения сопротивления вредных веществ в Ом’ах, которые соответствуют уровням трех различных типов газа: восстанавливающего, окисляющего и аммиака. Запустите пример:

Для стабилизации значений сенсора подождите около 10 минут, поскольку датчик постепенно нагревается.

Как только показания стабилизировались, попробуйте подышать на датчик и сравните изменения.

ST7735 LCD: привет мир

Вывод в консоль не всегда удобен для мониторинга данных в реальном времени. Для этого на плате Enviro+ расположен маленький, но яркий и красочный дисплей. В качестве теста экрана запустим проверенный годами Hello, World!

All-in-one: вывод всех показаний на дисплей

Пришло дело к кульминации всех усилий. Запустите пример, который будет отображать данные с каждого датчика по очереди на дисплей. А переключать канал на каждый последующий сенсор, поможет датчик LTR-559 в качестве бесконтактной кнопки.

Элементы платы

Дисплей

Дисплейный модуль выполнен по технологии TFT IPS с диагональю 0,96 дюйма и разрешением 160×80 точек. Матрица дисплея подключена к встроенному чипу ST7735, который выполняет роль моста между экраном и внешними управляющими платами. Контроллер ST7735 общается с компьютером Raspberry Pi по интерфейсу SPI. Для связи c дисплеем используйте библиотеку ST7735 Python от производителя, которая входит в общий сет библиотек для Enviro.

Метеодатчик BME280

Метеосенсор выполнен на чипе BME280, который измеряет атмосферное давление, а также температуру и влажность окружающей среды. Сенсор BME280 общается с компьютером Raspberry Pi по интерфейсу I²C с адресом 0x76 . Для связи c датчиком используйте библиотеку BME280 Python от производителя, которая входит в общий сет библиотек для Enviro.

Датчик освещенности и приближения LTR-559

Сенсор освещенности и приближения выполнен на чипе LTR-559, который измеряет уровень освещенности в люксах и фиксирует приближающие объекты. Сенсор LTR-559 общается с компьютером Raspberry Pi по интерфейсу I²C с адресом 0x23 . Для связи c датчиком используйте библиотеку LTR559 Python от производителя, которая входит в общий сет библиотек для Enviro.

Такой же датчик расположен в мобильных телефонах, который автоматически затемняет и увеличивает яркость экрана в зависимости от уровня освещенности и отключает сенсорный экран, когда он находится рядом с ухом.

В итоге датчик LTR-559 можно использовать не только для считывания уровня освещенности, но и в качестве триггера к приближающимся объектам. В примерах библиотеки на модуль Enviro датчик приближения используется в качестве переключателя отображения различных данных с сенсоров на дисплей.

Датчик газа MiCS6814

Датчик газа выполнен на модуле MiCS6814, который поможет следить за качеством воздуха в окружающей среде. Сенсор MiCS6814 общается с компьютером Raspberry Pi через аналого-цифровой преобразователь ADS1015, который считывает аналоговые показания с датчика MICS6814, а затем преобразует данные в цифровые коды. Сама же АЦП общается с Raspberry Pi по интерфейсу I²C с адресом 0x49 . Для связи c датчиком используйте библиотеку GAS Python от производителя, которая входит в общий сет библиотек для Enviro.

В модуле расположено три отдельных самодостаточных чувствительных элемента с независимыми нагревателями. Каждый чип рассчитан на определенную группу газов:

Датчик также будет чувствителен к остальным веществам, например водород, этанол и другие углеводороды.

Т.к. в воздухе может концентрироваться группа различных газов, то невозможно выделить и определить концентрацию конкретного газа. Самый простой способ интерпретировать данные, т.е. снимать показания с датчика, пока они не стабилизируются, а затем установить базовую линию и измерять данные относительно этой базовой линии. Это даст приблизительное представление о том, повышается или ухудшается качество воздуха.

Показания датчиков восстановления и аммиака будут падать с увеличением концентрации обнаруживаемых газов, а показания датчика окисления, наоборот будут увеличиваться с увеличением уровня концентрации.

Микрофон MEMS

На плате Enviro расположен крошечный микрофон MEMS SPH0645LM4H-B, который позволяет записывать звук или определять уровни шума. Микрофон SPH0645LM4H-B общается с компьютером Raspberry Pi по интерфейсу I²S. Для связи c датчиком шума используйте библиотеку Noise Python от производителя, которая входит в общий сет библиотек для Enviro.

Разъём для датчика пыли

Через дополнительный разъём на плате можно подключить опциональный датчик пыли PMS5003, который измеряет концентрацию твёрдых частиц в миллионных долях (ppm). Сенсор PMS5003 общается с компьютером Raspberry Pi по интерфейсу UART/Serial. Для связи c датчиком используйте библиотеку PMS5003 Python от производителя, которая входит в общий сет библиотек для Enviro.

Входные пины ввода-вывода

Enviro Air Quality подключается к одноплатникам Rasperry Pi сверху через входной 40-пиновый разъём.

Источник

Raspberry Pi: TFT дисплей с SPI интерфейсом

У Raspberry Pi есть встроенное графическое ядро, которое позволяет без проблем подключать к этому микрокомпьютеру самые обычные мониторы и телевизоры по HDMI интерфейсу. Но к RPi можно подключить множество более дешевых и миниатюрных дисплеев, которые могут быть более уместными для небольшого DIY-проекта.

В этой статье мы подробно разберем подключение популярного TFT-дисплея с контроллером ILI9341. Существует несколько вариантов модулей с таким дисплеем, отличающихся внешним видом и разрешением. Мы будем работать с таким экземпляром:

На обратной стороне виден разъём для SD-карты и драйвер сенсорной резистивной плёнки. Дисплеи с разрешениями более 2,2 дюйма как правило попадаются в двух исполнениях: с сенсорной панелью и без.

Диагональ дисплея составляет 2,4 дюйма при разрешении 320×240 пикселей. Контроллер, как уже говорилось, ILI9341.

Чтобы повторить всё, что делается в данной статье понадобится:

Подключение

Дисплей подключается по SPI интерфейсу. Схема подключения:

Raspberry Pi GND 3.3V MOSI(GPIO10) MISO(GPIO09) CLK(GPIO11) GPIO2 GPIO3 GPIO4
Дисплей GND VCC SDI(MOSI) SDO(MISO) SCK DC RESET LED

Контакты DC, RESET и LED можно подключить к любым свободным GPIO контактам Raspberry Pi, а вот SDI, SDO и SCK только к указанным.

Установка драйвера для работы с TFT

Драйвер, который мы используем в данной статье, существует в виде исходного кода в репозитории github. Чтобы им воспользоваться, нам предстоит его скомпилировать в исполняемый файл.

Установим утилиту cmake, которая поможет подготовить необходимые для компиляции файлы:

Затем загрузим из репозитория исходные коды драйвера. Лучше это делать в домашней папке пользователя pi.

Зайдем в загруженную папку и создадим в ней подпапку build:

Теперь самое главное. Нам нужно запустить cmake, указав кучу параметров для нашего TFT-дисплея. Готовая строка для запуска может выглядеть так:

-DILI9341=ON — собирает версию драйвера именно для ili9341. Но данный пакет поддерживает и другие модели дисплеев: DILI9340, HX8357D, SSD1351, ST7735R. ST7789, ST7789VW, ST7735S, ILI9486, ILI9486L, MPI3501. То есть можно работать практически с каждым популярным дисплеем.

Следующие три параметра определяют контакты Raspberry Pi, к которым подключены служебные сигналы дисплея:

-DGPIO_TFT_DATA_CONTROL=2 — это пин DC, который мы подключили к GPIO2;

-DGPIO_TFT_RESET_PIN=3 — сброс RESET (к GPIO3);

-DGPIO_TFT_BACKLIGHT=4 — подсветка LED (к GPIO4);

Последний параметр по сути задаёт скорость работы шины SPI, определяя делитель частоты:

-DSPI_BUS_CLOCK_DIVISOR=30

Для первого запуска можно уставить делитель 30. Затем, стоит попробовать уменьшать это число вплоть до 6, или до значения при котором дисплей начнёт глючить.

-DSTATISTICS=0 — убираем отладочную информацию сверху дисплея.

Запустим команду cmake с указанными параметры. После завершения работы cmake запустим компилятор, который и соберет нам всё вместе в бинарный файл:

единственный параметр -j позволит ускорить сборку исполняемого файла за счёт распараллеливания процесса по ядрам процессора.

После завершения работы make, в папке build должен появиться файл fbcp-ili9341. Запускаем его:

Вот и всё. Дисплей в деле!

Мелкий шрифт на дисплее

Без дополнительных телодвижений текст на дисплее будет не очень чётким. Почему так? Все дело в том, что Raspberry Pi формирует картинку в разрешении, отличном от разрешения такого мелкого tft-дисплея. Драйвер сам производит масштабирование (очень быстро, с использованием GPU), и шрифты при этом немного портятся.

Чтобы избежать масштабирования драйвером, нужно настроить RPi таким образом, чтобы картинка изначально формировалась в нужном разрешении. В таком случае и шрифт будут выглядеть читабельнее.

Открываем в редакторе файл настроек:

Находим там строку:

Сразу после неё добавляем:

Сохраняем и перезагружаем Raspberry Pi. Теперь при запуске утилиты fbcp-ili9341 мы получим примерно такое:

Ну вот, гораздо лучше!

Источник

Adblock
detector