Розробка графічного сенсорного інтерфейсу

051114_1016_5.jpg

Розробка графічного сенсорного інтерфейсу для портативних пристроїв

Короткий опис та призначення сенсорного інтерфейсу дисплею

Ідеї по розробці даної системи прийшли на думку ще при попередніх розробках різноманітних систем керування в складі дослідних та навчальних стендів. Кожна наступна така система передбачала в своєму складі інтерфейс вводу-виводу даних. При кожні наступній роботі було бажання даний інтерфейс ускладнити, зробити щось нове та досконаліше.

 -> Російська версія <-

Починаючи з найпростіших семи-сегментних індикаторів, з часом наші системи почали включати в себе рідкокристалічні символьні дисплеї з різноманітним розширенням по кількості строк і символів, на яких реалізовувалось нескладне строкове меню. Пізніше також був реалізований свій програмний драйвер для швидкого створення меню користувача з різноманітною кількістю пунктів та підпунктів для строкових дисплеїв з різноманітним розширенням.

Після цього було розпочато використання графічних дисплеїв – спочатку монохромних, а потім і кольорових з різноманітним розширенням. На таких дисплеях вже реалізовувалось не тільки строкове меню, а й різні варіанти графічного меню з іконками або комбінованого варіанту. Також в даному типі дисплеїв стало можливим виводити повідомлення вже у вигляді різноманітних графічних зображень, наприклад повідомлення про помилку, зауваження, питання, тощо. Також часто було потрібно реалізувати можливість виводу тексту потрібного розміру, а також відображення різноманітних зображень, заставок, графіків і т.п.

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

Наступна задача, яку захотілося реалізувати і в повній мірі розібратися в її технології – це використання сенсорного інтерфейсу в складі графічних рідкокристалічних дисплеїв з сенсорним екраном, що дало б змогу розробляти більш гнучкі і компактні системи, що включали би систему вводу-виводу в одному елементі.

На сьогоднішній час є готові рішення для реалізації даної задачі, багато фірм випускають різноманітні відлагоджувальні плати, що включають в себе графічний сенсорний дисплей з відповідною підтримкою програмним забезпеченням. Також доступні окремі GUI (Graphical User Interface) бібліотеки для різних контролерів, що реалізують поставлену задачу.

Після огляду деяких з готових рішень, зваживши те, що використовувати якусь готову систему чи програму не знаючи як вона реалізована – не завжди доцільно, для реалізації даної задачі було вирішено розробити повністю всій програмний драйвер.

Задуманий програмний драйвер мав би передбачати наступні можливості:

  • можливість швидкого інтегрування його в новостворювану програму;
  • простим викликом заздалегідь відомого набору функції створювати різноманітні графічні елементи вводу-виводу інформації з завданням для кожного з них функції-обробника подій;
  • містити досить широкий набір різноманітних графічних елементів вводу-виводу, таких як кнопки, повзунки, індикатори (цифрові та стрілочні), графіки, тощо;
  • можливість створення потрібної кількості сторінок або робочих столів зі своїм набором графічних елементів вводу-виводу;
можливість виводу текстових повідомлення з завданням розміру та кольору шрифту.

Реалізована система графічного сенсорного інтерфейсу (далі інтерфейс) включає в себе всі вище описані можливості, зображена на рисунку 1.

 

Рисунок 1. Система графічного сенсорного інтерфейсу

 

Опис конструкції та електричної частини плати керування сенсорним дисплеєм

 

Для реалізації даного інтерфейсу була використана відлагоджувальна плата STM32F4DISCOVERY, в основі якої покладено контролер STM32F407VGT6 від фірми STMicroelectronics. Дисплей моделі S95160 на основі контролера SSD1289. Контролер сенсорного екрану – XPT2046.

На несучій платі даного дисплею, зі сторони протилежної від останнього, також присутній сокет для SD карти, контакти якого підключені до спільного джампера на платі (рисунок 2).

 

Рисунок 2. Підключення сокетки для SD карти

 

Максимальна споживана потужність даного дисплею складає 350 mW.

 

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

 

Для розподілення задач між програмою користувача та програмою-драйвером інтерфейсу використано операційну система FreeRTOS. Дана операційна система реального часу дозволяє створювати потрібну кількість задач в робочій програмі, задавати пріоритет виконання кожної задачі, створювати черги, часові таймери, мютекси, семафори, робити обмін даними між окремими задачами. ЇЇ також можна використовувати на різних контролерах з різною архітектурою.

У зв’язку з наявністю сокету SD карти, в розроблену бібліотеку також був включений FAT драйвер. Останній дає можливість в повній мірі здійснювати різноманітні функції роботи з SD картою, такі як зчитування, створення та запис текстових файлів, прописування атрибутів для файлів, зчитування зображень, тощо.

Нижче приведемо програмний приклад створення однієї сторінки інтерфейсу.

 

В залежності від типу графічного елементу, що потрібно створити, кількість параметрів для його створення відрізняється. До загальних параметрів можна віднести ID елемента, константа-тип елемента, функція-обробник події дотику, також можна задавати значення, що відповідає за створення за замовченням пасивного або активного, а також видимого або невидимого елемента. Для текстових елементів додатково задається тип шрифту та колір.

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

На рисунках 3-4 показано приклади створення різних сторінок інтерфейсу, на рисунку 5 – відображення графіку з нанесенням двох кривих.

 

Рисунок 3. Приклад відображення сторінки графічного інтерфейсу

 

 

Рисунок 4. Приклад відображення сторінки графічного інтерфейсу

 

Рисунок 5. Відображення графіків

 

Для візуалізації натискання кнопки або зміни відображення якогось з перемикачів (стан ввімкнено / вимкнено) використовується два окремі графічних елементи, масиви кодів яких створюються окремо. Для візуалізації таких графічних елементів, як циферблати, повзунки, цифрові індикатори, ручки використовуються комбінований метод відображення з використання як готових графічних частин елементів так і тих геометричних елементів, що створюються динамічно, в залежності від потрібного положення.

Для генерації масиву для відображення графічних елементів раніше була розроблена спеціальна комп’ютерна програма, що дозволяє генерувати дані для відображення заданої картинки для різноманітних монохромних та кольорових дисплеїв. На рисунку 6-7 показано приклад генерації масиву кодів для зображення в форматі RGB.

Рисунок 6. Зовнішній вигляд комп’ютерної програми для генерації масиву кодів заданого зображення

 

Рисунок 7. Отриманий масив кодів заданого зображення

 

Застосування розробленої системи інтерфейсу сенсорного графічного екрану 

 

До моменту написання даної статті розроблена система графічного сенсорного інтерфейсу не була застосована в складі закінчених пристроїв чи лабораторних стендів.

Можливі сфери застосування – це різноманітні прилади, стенди, що потребують системи вводу-виводу інформації для керування якимось процесами, портативні пристрої чи пульти керування, тощо.

 

Автор: Сергій Корсун, ХНУ (2010 р. вип.), місто Хмельницький.

            Романов О.Ю., МІЕМ НІУ ВШЕ, НТУУ “КПІ”.