У процесі проектування будь-якого пристрою, виникає необхідність забезпечити його належними засобами локального керування та індикації поточного стану. Кнопки та світлодіоди є найпростішими і поширеними інструментами, що дозволяють реалізувати задум та наділити пристрій інтерфейсом користувача.
І хоча все виглядає просто, це так лише на перший погляд. У цій публікації ми розглядаємо деякі ідеї та принципи, що дозволяють стратегічно оцінювати і планувати побудову розумного пристрою так, щоб у кінці шляху проектування, усі докладені зусилля зійшлися у точці суперпозиції: – балансу витрат, функціональності, керованості і спостережності, технічної простоти тощо.
Розвиток інтерфейсів користувача привів нас до застосування дисплеїв з сенсорним відкликом на дотик, але навіть у 2020 році, такі дисплеї все ще є коштовним елементом пристрою, який споживає багато енергії, займає багато місця, складно програмується. А для більшості розумних пристроїв, дисплей взагалі не потрібен.
Адже є пристрої, які не потребують втручання користувача і виконують свої завдання у таких місцях розташування, що навіть складно одразу подумки охопити все наявне розмаїття – всередині інших побутових пристроїв, чи є зануреними у рідині, або під стелею, на даху, на склі вікна і так далі. Втім, кожен такий пристрій потребує початкового налаштування і приєднання до мережі чи головного хабу.
То ж маємо визнати, що має бути хоча б одна кнопка для керування і хоча б один світлодіод для індикації стану.
У другій половині двадцятого століття, у часи бурхливого розвитку електроніки, застосовувалося і випробовувалося багато різних підходів. Але основа основ – для кожної дії своя “кнопка”. Так вчиняли вимушено, через слабкі можливості електроніки, неможливість її програмування, стаціонарне застосування (про компактні, мобільні пристрої тоді навіть і не мріяли) обладнання. І лише з часом, шляхом проб та помилок, виробники почали вдосконалювати та оптимізувати електронне начиння і створювати нові, ефективні інтерфейси взаємодії з людиною – сенсорні диски, розпізнавання жестів, голосові команди.
З появою концепції Розумних речей (Smart Things, Internet of Things) людство почало проходити ще раз по тому ж, але вже значно меншому колу – застосовувати свої знання з проектування і виробництва щодо мінімалістичних, “одноклітинних” зовні пристроїв, з потужним внутрішнім програмним функціоналом. І от ми знову почали розмірковувати – скільки має бути кнопок, індикаторів, дисплеїв у інтерфейсі користувача.
Пропонуємо щораз ставити себе на місце інженерів новаторів минулого і спробувати розглянути лише одну кнопку, яка дозволяє побудувати мінімально необхідний, дешевий інтерфейс, але достатній для того, щоб користувачі могли комфортно для себе його застосовувати. Припускаємо, що наш підхід може мати і певні недоліки, пишіть нам про це у коментарях.
Що ми називаємо багатофункціональною програмною кнопкою
Це спеціальний програмний код, який обробляє натискання користувача на звичайну фізичну кнопку і дозволяє реалізувати різноманітні сценарії роботи пристрою.
Щонайменше, ми притримуємося наступних сценаріїв обробки: Одинарний клік, Подвійний клік, Потрійний клік, Довге натискання з фіксацією стану.
Приклад. Алгоритм цілком залежить від задуму розробника, але може бути такий:
1 2 3 4 5 6 7 8 9 10 |
if "одинарний клік" then змінити стан вихід №1 на протилежний на хх секунд elseif "подвійний клік" then перехід у режим налаштувань elseif "потрійний клік" then програмний перезапуск контролера elseif "довге затискання" then змінити стан вихід №2 на протилежний зафіксувати стан виходу №2 end |
Переваги мульти-кнопки
До переваг застосування багатофункціональної програмної кнопки можливо віднести наступні:
- Використання вбудованих можливостей контролера
Більшість навчальних та комерційних контролерів вже має на борту певну кількість кнопок “з коробки”, які користувач може використовувати для власної програмної логіки без підключення додаткових апаратних елементів.
Наприклад, NodeMCU має аж дві кнопки Reset та Flash, але запрограмувати можливо лише одну з них. Кнопка Flash (пін D3) застосовується для переходу у режим виконання прошивки контролера, але може також бути застосованою у скриптах розробника як вхід з перериванням. Ця кнопка, зазвичай ніяк не застосовується розробниками – а й справді, як її застосуєш, якщо це просто одна кнопка, а у нас он скільки функцій? – Це перше що спадає на думку, але це хибний підхід.
Втім, звернемо увагу ще на один аспект – у випадку, коли шановний читач планує розробити свою плату контролера, а зараз, тимчасово, розробляє програмне забезпечення на готовому контролері типу NodeMCU з кнопкою Flash, дуже зручно цю ж кнопку використати вже на своїй власній платі без переписування коду, особливо, якщо це багатофункціональна кнопка і якщо вона буде одна.
Також радимо звернути увагу, що контролери мають не лише кнопки на борту, а і світлодіоди – той же NodeMCU має вбудований одноколірний світлодіод на піні D4, який можливо використовувати як індикатор поточного стану, або для індикації зміни стану, аварійних ситуацій, як “блималка” зворотного зв’язку – реакція на натискання кнопок, тощо.
- Економія бюджету наявних портів вводу-виводу контролера
Кожен наявний порт вводу-виводу контролера (GPIO, General Purpose Input Output), має “собівартість” в межах проекту. Призначення розробником певної функції для GPIO, зменшує бюджет вільних пінів контролера.
Наприклад, в контролері NodeMCU на базі ESP8266, небагато пінів, які може бути використано для підключення кнопок та світлодіодів.
Докладніше див. Стандарт планування та застосування пінів у проектах на базі ESP8266-12 / NodeMCU / Lua за посиланням Стандарт
І якщо у проекті необхідно також побудувати й інші інтерфейси, як-от I2C чи то SPI – неминуче прийдеться обирати: кнопки ставити, чи натомість підключити щось більш потрібне і важливе.
Таким чином, зробимо висновок: одна багатофункціональна програмна кнопка краще, ніж декілька звичайних виділених апаратних кнопок.
Додамо, що існують розширювачі інтерфейсів GPIO та шинні мультиплексори I2C, але ми їх тут не розглядаємо, у тому числі і з огляду на додаткову вартість їх придбання, підключення та програмування. Читайте про ці пристрої у наших інших публікаціях Як підключити велику кількість компонентів до модуля ESP8266-12 або плати NodeMCU
.
- Універсальність апаратної платформи і багаторазове застосування
Застосування багатофункціональної, програмної кнопки дозволяє багаторазово використати вже написаний код, а головне, багаторазово застосовувати одну й ту ж апаратну платформу для побудови різних за призначенням та функціональністю прикладних пристроїв.
Немає значення, чи то стандартний контролер, чи то специфічний, виготовлений за власною схемою контролер, програмна багатофункціональна кнопка надає можливість розробнику легко змінювати алгоритм роботи і при тому застосовувати вже наявне апаратне забезпечення, що так складно виготовлялося для попередніх пристроїв.
- Гнучкість, що легко програмується
Оскільки вся концепція мультикнопки полягає у її програмному походженні, це надає неабиякої гнучкості її застосування всюди де це є можливим. Розробник легко, без глибинних змін коду, може швидко реалізовувати будь-які алгоритми обробки натискань на кнопку користувачем. Треба один клік – будь-ласка, треба подвійний клік, чи довге натискання із фіксацією стану – будь-ласка. Потрібно створити навігацію за меню на одній кнопці – теж можливо. Завдяки програмній складовій розробник також може швидко переносити кнопку на інші GPIO, якщо того вимагає апаратна платформа наступного пристрою, для якого виконується міграція. Також є можливим налаштування швидкості натискань, є можливість обробки помилкових натискань окремим програмним кодом. Лишень поміркуйте – все це реалізовувати було би складно (або навіть неможливо), якби йшлося про застосування звичайних апаратних кнопок, жорстко виділених (і зафіксованих у апаратному забезпеченні) під кожну окрему дію чи функцію з класичним обробником переривання по натисканню.
- Заощадження на кількості та розмірах
Мульти-кнопка дозволяє покласти на одну апаратну кнопку декілька функцій одразу і як наслідок, замінити декілька фізичних кнопок однією, що дозволить заощадити як на вартості електроніки, так і дозволяє вивільнити місце для інших компонентів у корпусі пристрою. Окрім того, звернемо увагу і на те, що менша кількість елементів інтерфейсу це – менше слів пояснення у інструкції, менше перекладів, менше малюнків, менше з’єднувальних провідників, менше електричних та монтажних схем, менше площадок пайки, менша плата пристрою, менша питома вага корпусу на один елемент і так далі.
Висновок
Застосування багатофункціональної програмної кнопки дозволяє будувати ефективні навчальні та комерційні платформи багаторазового використання для розумних пристроїв з потенціалом до зменшення розмірів і собівартості. Натомість, дозволяє розширювати функціонал та гармонізувати алгоритми відповідно до потреб користувачів у кожному конкретному випадку без додаткових інвестицій у розробку та надлишкові електронні компоненти.
Ви можете ознайомитися з нашими програмними продуктами, що стосуються багатофункціональної кнопки за посиланням Модуль обробки багатофункціональної кнопки керування з світлодіодним індикатором.