Мобільна версія Форум Arduino Документація Гарантійні умови 0 0
UA RU
Графік роботи магазину:
Пн-Пт: 8.00 - 19.00
Сб: 10.00 - 17.00
Нд: вихідний
Каталог
Напиши статтю і отримай знижку!

Arduino и ввод-вывод данных

2024-05-18

Всі статті →

В предыдущей статье, основанной на моём опыте новичке, я рассказывал о том, как я начал своё знакомство с миром Arduino. Речь шла о не очень знакомой в широких кругах новичков плате Arduino Pro Micro.

Часть 1. Сегодня речь пойдёт не о покупке «дофиганогого» ArduinoMega, а о популярном, но к сожалению, только в узком кругу расширителе цифровых портов на микросхеме mcp23017, который позволяет подключить к любому Arduino-подобному микроконтроллеру до 16 дополнительных цифровых выводов). Такой расширитель есть в исполнении как отдельной одноимённой микросхемы (в которой практически отсутствует любая обвязка), так и готовой платы расширения. Теперь мы имеем дополнительные цифровые порты (пины), оставляя пины самого контроллера в резерве для более важных задач (например, для работы с шинами данных или аппаратными прерываниями, или обработкой аналоговых данных, ШИМ – ногам контроллера есть чем заниматься). Информация для особых «экстремалов»: к одному контроллеру можно подключить до 8 расширителей (8х16 = 128 дополнительных пинов), используя для этого популярную i2c шину (диапазон адресов от 0x20 до 0x27, изменяется с помощью напаивания перемычки «сопли» на плате расширения.


Плата выполнена в виде аккуратненького модуля 24х25 мм, при этом хорошо «задокументированная» прямо на шелкографии – все выводы чётко подписаны и нет проблем даже при подключении макетными проводами Dupont. К слову, о документации: работа с библиотекой описана отлично и со всеми примерами, и с любым пином расширителя Вы сможете работать так же, как если Вы работаете с любым цифровым пином непосредственно контроллера.

И тут же у новичка возникнет обвешать всё светодиодиками и устроить новогоднюю ёлку. И здесь иметь голову и понимать, что нагрузка на один пин не может быть больше одного светодиода (20mA), а суммарно грузить более 200mA (читай 10 светодиодов – по 1 шт на пин) – если суммарно нагрузить больше – можно угробить схему питания +5V контроллера. Поэтому со светодиодными «гирляндами» экспериментируйте осторожно.

«Для чего нужен такой расширитель, если нельзя вдоволь помигать?» - будет зудеть назойливый новичок. Отвечу в примерах:

  1. Для опроса энкодера (минимум 3 пина)
  2. Для опроса матричных клавиатур типа телефонных, домофонных и пр. (минимум 7 пинов)
  3. Для опроса датчика, сенсора и т.д. (минимум 1-2 пина, умноженных на кол-во датчиков). Вон только в обычном барометре: измеряем давление, влажность, освещение, температуру плюс органы управления и индикация.
  4. Подсветка приборов, помещений (через транзисторные ключи)
  5. Опрос отдельных кнопок и зажигание отдельных индикационных светодиодов
  6. Подача звуковых сигналов
  7. Управление (включением/выключением) внешними приборами через реле, твердотелки и т.д.

Думаю, примеров более чем достаточно. В принципе, с описанном в примерах выше по сути уже мы потепенно приближаемся к системе «умный дом».

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

Часть 2. Мы сознательно подошли к выбору сенсорного экрана. И тут становится, что часть 1 нашей статьи связаны.
С использованием сенсорного экрана отпадает необходимость в километрах проводов к кнопкам и светодиодам: по факту нам остаётся только опрашивать датчики-сенсоры, и в большинстве можно обойдись «штатными» GPIO непосредственно самого контроллера. Впрочем, GPIO лишним не бывает.

Будучи новичком, я очень долго и много перекопал информации. И, как и в случае с выбором контроллера для старта освоения Arduino, выбрал далеко не дешёвую, потому и далеко не «массовую». Однако в дальнейшем полностью убедился в правильности своего выбора, и ничуть не пожалел о «переплате».

Итак, встречайте, сенсорный экран Nexion.

Если Вы не сталкивались со сравнением, я поделюсь личным впечатлением (не углубляясь в технологии). Экраны Nextion по типу съёма тактильной информации делятся на резистивные (основная масса моделей всех линеек Nextion) и емкостные. Резистивные они более «дубоватые», что ли, менее чувствительные, емкостные же, наоборот, более чувствительные и точные. Но стоят несколько дороже резистивных.

Ну, и венец всего – для работы с этим дисплеем у производителя есть фирменная прога Nextion Editor. Описание работы с ней можно найти как на английском (на сайте производителя), так и на оркостанском (для тех, у кого хромает английский), есть даже видеоуроки. Я вкратце опишу принцип. Ещё раз повторяю: так делаю я, при этом вполне результатом. Рассмотрим на примере «умного дома».

  1. Разбиваю проект на несколько экранов. К примеру, на первом (Главном) у меня прогноз погоды, часы, и цифровая клавиатура набора кода охранной сигнализации (дисплей находится у входной двери, а также список в (виде кнопок) остальных экранов. Выбрав, (нажав) к примеру, кнопку «Санузел», мы попадаем на экран, где находится вся информация о датчиках и кнопки управления приборами, находящимися в санузле.
  2. Для каждого экрана предварительно разрабатываем: фоновую картинку, комплект кнопок (или кнопку), у каждой кнопки может быть свой дизайн, плюс у каждой кнопки можно менять картинку в зависимо от её состояния. Например, для включенной вентиляции рисуем кнопку с зелёным вентилятором, для выключенной вентиляции рисуем кнопку с красным вентилятором. Прога сама спрашивает, какую картинку прикрепить для состояния кнопки «вкл. Вент», а какая для «выкл». При нажатии по дисплею кнопка будет менять цвет.
  3. В проге можно не только менять состояния и отображать информацию в заданном месте, заданным шрифтом или картинку, но и прописывать определённые условия (на урезанном Ардуино-подобном языке) для событий, таким образом сам дисплей будет разгружать ваш контроллер. Например, если нажата кнопка А, то кнопка Б уже не будет доступна для нажатия.
  4. Кроме кнопок, тут есть множество органов управления и отображения информации: и слайдеры (напр., для регулировки температуры), и индикатор типа авто-спидометра), различные шкалы различного дизайна, выпадающие меню, чекбоксы, крутилки, - словом инструментарий фантастический.
  5. И что самое главное - есть встроенный отладчик, в котором Вы, не приобретая дисплея, можете ощутить весь кайф работы с дисплеями именно Nextion, и, как и я сделать правильный выбор при покупке. Просто, пощёлкайте мышкой по дисплею на экране Вашего монитора.


В данном проекте (пример из моих реализованных) левом верхнем углу список экранов (в случае с «умным домом» будет «списки комнат»). В правом верхнем углу – слайдер, общий для всех экранов, ниже же красные кнопки со список задействованных приборов. В выключенном кнопки все красные. При нажатии любой из них цвет меняется на зелёный (меняется картинка кнопки).

  1. После каждой Вашей манипуляции дисплей выплёвывает на свой выход в UART команду, которую присвоили конкретной кнопке или другому органу управления на конкретное действие. Таким образом контроллер получает чёткую информацию о задаче, которую Вы поставили. И может прореагировать или обработать данные.
  2. Сам дисплей прошивается двумя способами: по кабелю micro-USB или с помощью SD-карты небольшого объёма (до 2 Gb). Не забудьте приобрести вместе с дисплеем! Всё дело в том, что с карты дисплей перешивается в считанные мгновенья, по кабелю же придется несколько ожидать.

В данной статье был рассмотрен дисплей NEXTION NX8048P070-011C – это самый большой и продвинутый по возможностям, но цена достаточно «кусючая», поэтому с помощью программы Nextion Editor Вы сможете подобрать из оставшихся доступный для Вас: например, приобрести дисплей с меньшей диагональю. Базовый функциональный останется неизменный, разнится будет лишь отсутствии некоторых плюшек: напр., встроенные часы реального времени или дополнительные встроенные в дисплей 10 шт. GPIO.

ВЫВОД: Вот мы и рассмотрели способы упростить жизнь начинающему Ардуинщику, задумавшему серьёзный проект: расширяем порты GPIO до 128, убрали из проекта лишние провода, кнопки и светодиоды, получили достойный серьёзный проект, которым можно не только хвастать перед знакомым, но и самому получать кайф.

Словом, хороших продуктивных и интересных всем завершённых проектов, с которыми Вы можете здесь поделиться.

С уважением и до новых встреч, Жора Дорфман.

Ваша оцінка статті:

Відмінно
Добре
Задовільно
Погано
Дуже погано

Дякуємо Вам за звернення! Ваш відгук з'явиться після модерації адміністратором.
Поки немає відгуків на цю статтю.
оплата картами Visa і MasterCard