Сенсорная кнопка ардуино своими руками
Есть множество типов сенсорных кнопок и некоторые из них предельно просты в изготовлении, надёжны и долговечны. В этой статье рассмотрим 2 типа кнопок которые можно использовать совместно с Arduino и рассмотрим скетчи для взаимодействия с этими двумя типами кнопок.
Ёмкостную сенсорную кнопку можно сделать из куска двухстороннего фольгированного стеклотекстолита. К одной стороне припаять проводок и соединить его с GND (землёй) Arduino к другой стороне припаять проводок и соединить его с выводом например 3 который будет сконфигурирован как вход к этой же стороне припаять резистор сопротивлением 1.2 МОм а другой вывод этого резистора соединить например с выводом 2 который будет сконфигурирован как выход. На площадку подключённую к выводу 3 приклеивается скотч чтобы не касаться пальцем медной площадки.
Такая кнопка представляет собой конденсатор ёмкость которого увеличивается при прикосновении (через скотч) к её верхней площадке подключённой к выводу 3.
void setup()
pinMode(3, INPUT);
pinMode(2, OUTPUT);
digitalWrite(2, LOW);
Serial.begin(57600);
>
void loop()
dt_button=0;
digitalWrite(2, HIGH);
while(!digitalRead(3))
dt_button++;
>
digitalWrite(2, LOW);
Serial.print(dt_button);
delay(500);
>
Сначала создаётся переменная dt_button в которой будет хранится время за которое данная кнопка-конденсатор заряжается до уровня логической единицы. При прикосновении к кнопке это время увеличится т.к. увеличиться ёмкость. Далее вывод 3 конфигурируется как вход, вывод 2 как выход. На вывод 2 подаётся низкое напряжение и инициализируется последовательный порт. В основном цикле переменная dt_button обнуляется. На вывод 2 подаётся высокое напряжение и с этого момента кнопка-конденсатор начинает заряжаться. Далее в цикле проверяется появилось ли на выводе 3 напряжение уровня логической единицы (т.е. высокое) и при каждой итерации (разе выполнения тела цикла) переменная dt_button увеличивается на единицу (инкрементируется) когда напряжение на кнопке-конденсаторе дорастает до логической единицы происходит выход из цикла и на вывод 2 подаётся низкое напряжение (лог. 0) для того чтобы кнопка-конденсатор начала разряжаться для следующего её опроса. Потом в последовательный порт выводится значение переменной dt_button для того чтобы мы могли его посмотреть и потом использовать эту кнопку как нужно. Если кнопку не менять то dt_button для неё останется неизменным т.к. это параметр именно этой кнопки. Далее делается задержка в пол секунды для того чтобы кнопка-конденсатор наверняка разрядилась до приемлемого уровня. После сборки и подключения кнопки мы загружаем скетч и выясняем dt_button кнопки когда на неё не нажимают (как это сделать смотрите видео внизу статьи)(для просмтора в Arduino IDE инструменты - монитор последовательного порта - справа внизу выбрать 57600). Для площадки размером 20Х20мм dt_button будет примерно 3 для площадки 55Х20мм dt_button будет примерно 6 - с учётом этого можно переписать скетч для того чтобы при прикосновении к кнопке загорался светодиод подключённый через резистор 220Ом к выводу 4 анодом и к земле катодом (обязательно через резистор):
void setup()
pinMode(3, INPUT);
pinMode(2, OUTPUT);
pinMode(4, OUTPUT);
digitalWrite(4, LOW);
digitalWrite(2, LOW);
Serial.begin(57600);
>
void loop()
dt_button=0;
digitalWrite(2, HIGH);
while(!digitalRead(3))
dt_button++;
>
digitalWrite(2, LOW);
Serial.print(dt_button);
if(dt_button>6)//для кнопки 55Х20мм для 20Х20мм 6 меняем на 3
digitalWrite(4, HIGH);
>
else
digitalWrite(4, LOW);
>
delay(500);
>
При использовании данной кнопки возникают некоторые проблемы и по некоторым причинам при нажатии dt_button иногда равняется нулю или меньше dt_button без касания поэтому лучше использовать другой тип сенсорной кнопки:
Это резистивная кнопка которая делается из фольгированного стеклотекстолита который м.б. односторонним. Две площадки на одной стороне разрезаются так чтобы между ними небыло проводящего контакта. К одной из площадок припаивается проводок который соединяется с GND Arduino. Другая площадка соединяется с выводом 3 который конфигурируется как цифровой вход и через резистор сопротивлением 1.2 МОм соединяется с +5В Arduino. При нажатии пальцем на две эти площадки они замыкаются и на выводе 3 падает напряжение даже до уровня логического нуля - это происходит по тому что у кожи сопротивление меньше чем сопротивление резистора. Скетч для взаимодействия с такой кнопкой очень простой:
Сегодня рассажу о недорогом и простом сенсорной кнопке на чип TTP223, так же приведу пример подключения с реле и платой Arduino.
Технические параметры
► Модуль собран на микросхеме TTP223B;
► Напряжение питания модуля: 2.5 – 5,5 В;
► Потребляемый ток при 5V (без светодиода): 11 мкА “холостой”, 15 мкА “нажат”
► Потребляемый ток при 3.3V (без светодиода): 7 мкА “холостой”, 9 мкА “нажат”
► Заявленный ток в режиме сна: 1.5-3 мкА
► Максимальный ток цифрового выхода: 8 мА
► Чувствительность: 0 – 50 пФ;
► Расстояние срабатывания: около 5 мм на воздухе, также работает через неметаллы (пластик, дерево, картон и т.д.)
► Режим работы по умолчанию: кнопка без фиксации, сигнал при нажатии 0 (HIGH)
► Время отклика (режим пониженного энергопотребления): 220 мс;
► Время отклика (активный режим): 60 мс;
Общие сведения
Емкостной сенсорный датчика основан на специализированной микросхеме TTP223. Рабочее напряжение микросхемы TTP223 составляет от 2 до 5,5 В, а потребление тока очень низок. Из-за дешевизны и легкой интеграции сенсорный датчик стал очень популярным, по сравнению с другими сенсорными датчиками.
На одной стороне платы, расположена сенсорная область размером 11 мм на 10,5 мм с диапазоном срабатывание около 5 мм. На другой стороне платы установлена микросхема TTP223, светодиод, резисторы и конденсор.
При подключении датчика TTP223 к питанию, по умолчанию выход OUT устанавливается в низкое состояние. Если прикоснутся пальцем рабочий области датчика, выход OUT переключается с низкого уровня на высокий и загорится встроенный светодиод. При необходимости, можно настроить модуль, для этого предусмотрены две перемычки А и В, а так же перемычка без подписи (по умолчанию перемычки не установлены).
Регулировка чувствительности.
Настройка чувствительности осуществляется с помощью добавления конденсатора от 0 до 50 пФ, где 0 пф максимальная чувствительность, а 50 пф самая низкая чувствительность.
Пример №1 — Управление TTP223 светодиодом.
Необходимые детали:
► Светодиод 5 мм x 1 шт.
► Резистор 270 Ом x 1 шт.
► Макетная плата 400 x 1 шт.
► Провода DuPont F-F, 20 см x 2 шт.
Описание:
В первом примере покажу как управлять светодиодом с помощью сенсорной кнопки TTP223 без установки перемычек.
Подключение.
Для удобства подключения, воспользуемся макетной платой на 400 контактов и DuPont проводами. Установим датчик TTP223 на макетную плату, подключим питание и к выходу OUT через резистор установим светодиод. В качестве питания использую лабораторный блок питания на 5 В, так же можно воспользоватся блоком питания от телефона. Схема подключения ниже.
Заключение:
Если все правильно собрали, когда прикоснетесь к датчику TTP223 светодиод загорится, при отпускании погаснет.
Пример №2 — Управление TTP223 нагрузкой (реле).
Необходимые детали:
► Модуль реле 2-х канальный x 1 шт.
► Резистор 270 Ом x 1 шт.
► Макетная плата 400 x 1 шт.
► Провода DuPont F-F, 20 см x 2 шт.
► Провода DuPont F-M, 20 см x 3 шт.
Описание:
Во втором примере немного усложним схему, вместо светодиода будем управлять модулем реле с помощью TTP223.
Заключение:
При нажатии на сенсорную кнопку, реле включается, при повторном нажатии отключается. Как видите сенсорная кнопка TTP223 может управлять нагрузкой без микроконтроллера и с помощью такой простой схемы можно собрать сенсорную лампу. Так же, взамен реле, можно воспользоватся твердотельным реле или MOSFET.
Пример №3 — Подключение сенсорной кнопки TTP223 к Arduino.
Необходимые детали:
► Arduino UNO x 1 шт.
► Провода DuPont F-M, 20 см x 3 шт.
Описание:
И в последним примере, подключим сенсорную кнопку TTP223 к Arduino UNO и все показания передадим в «Последовательный порт«.
Подключение.
Подключаем вывод OUT от сенсорного датчика TTP223 к цифровому выводу 7 на Arduino, затем подключаем питание VCC и GND и загружаем скетч, схема подключения ниже.?
Сегодня мы рассмотрим такую интересную штуку, как Сенсорная кнопка. В этом уроке мы будем меньше заниматься программированием и написанием скетчей, а сосредоточимся на подключении и различных вариантах использования сенсорной кнопки. Рассмотрим примеры с подключением без Ардуино.
Управлять нагрузкой будем при помощи реле и транзистора.
Плавное включение светодиодной ленты с использованием транзистора MOSFET.
Сенсорная кнопка устроена так, что они реагирует на изменение емкости. Более подробно читайте в википедии.
Отличие от механической кнопки в том, что в сенсорной кнопке нет механических контактов, и поэтому отсутствует дребезг. Поэтому мы можем смело убрать задержку.
Если кому не понятно, о чём я, то пересмотрите моё видео про кнопки.
Сегодня только практика.
ВАРИАНТЫ СЕНСОРНЫХ КНОПОК.
Как я уже сказал есть много различных вариантов модулей сенсорных кнопок.
Это только некоторые из них.
Как видите есть блоки на одну, две, четыре , восемь и шестнадцать кнопок.
В некоторых есть возможность управлять состоянием кнопки соединив перемычки.
Проверим это без использования платы Ардуино.
Для этого соберём вот такую схему.
Нам понадобятся.
Модуль реле.
Один транзистор n-p-n СТРУКТУРЫ
2 резистора на 1 и 10 кОм
Сенсорная кнопка.
Напоминаю, что я подключал эту схему на 220 вольт, а это опасное напряжение.
БУДЬТЕ ОСТОРОЖНЫ.
Работа сенсорной кнопки по умолчанию .
Дотронулся до сенсора, и она включилась, убрал палец – выключилась. Горит пока держишь.
В общем как обычная тактовая кнопка и для выключателя она не подойдёт.
Ну если только подключив её к Ардуино и написав скетч.
В видео рассказано как подключить сенсорную кнопку и плавно управлять(зажигать/гасить) светодиодную ленту.
Управлять включением 3-х ламп на 220 вольт. и многое другое.
Так, что советую посмотреть.
Второй год я разрабатываю свой уникальный Z-Wave выключатель с сенсорными кнопками, который удовлетворит меня по функционалу, дизайну и стоимости изготовления.
С самого начала была цель сделать 4-х кнопочный выключатель на аккумуляторе размера 80х80 мм максимально тонким, сенсорные кнопки должны быть большие и при касании светиться целиком, а не только небольшой кружочек, как у всех. В итоге получился стильный тонкий выключатель, способный управлять любыми устройствами умного дома.
Во время разработки я решал множество задач по схемотехнике, дизайну корпуса и выбору материалов. Особенно интересным является создание самой сенсорной кнопки, которая светится целиком, но обо всем по порядку.
- Функционал
- Дизайн корпуса
- Разработка печатной платы
- Изучение рассеивателей света
- Подбор материалов рассеивателя
- Использование
Функционал
Требовались следующие возможности выключателя:
- Включать/выключать свет
- Регулировать яркость освещения
Сделать, чтобы каждая кнопка работала в режиме переключения, нажал — вкл, нажал — выкл. Это позволит управлять 4-мя группами освещения.
Дизайн корпуса
Мне понравилась идея с 4-мя большими сенсорными кнопками компании Basalte, и я решил развить её в своем направлении.
Рис. 1 — KNX выключатель Basalte
Я хотел, чтобы при касании кнопка светилась сама целиком, а не отдельный светодиод. Поэтому корпус представляет из себя узкую рамку с вырезами для 4-х сенсорных кнопок. Продуманы замочки для крепления задней крышки и углубления для установки магнитов. Крепежная пластинка приклеивается к стене на двухстороннюю клейкую ленту и к ней уже крепится сам выключатель с помощью магнитов. Удобно использовать выключатель как переносной пульт и удобно заряжать аккумулятор.
Рис. 2 — Корпус сенсорного выключателя
Все детали корпуса разработаны в Blender и распечатаны на 3D принтере белым ABS пластиком.
Рис. 3 — Разработка корпуса сенсорного выключателя в Blender
Разработка печатной платы
Печатная плата разработана в Proteus. Это вторая версия, в ней используется одна сенсорная микросхема TTP224 на 4 канала. В первой версии использовалось 4 шт. одноканальных TTP223, разницы в работе никакой, но при использовании TTP224 меньше компонентов паять.
Рис. 4 — Разработка печатной платы сенсорного выключателя в Proteus
Главными компонентами на плате являются:
- Z-Wave радио чип
- Аккумулятор Robiton 800мАч
- 3.3V Step-Up/Step-Down Voltage Regulator S7V8F3
- Микросхема заряда аккумулятора TP4056
- Схема переключения питания с аккумулятора на USB
- Кнопка калибровки
- Микросхема сенсорных кнопок TTP224
Рис. 5 — Плата сенсорного выключателя
Самым главным компонентом в сенсорном выключателе является контроллер сенсорной кнопки. Я провел тестирование 3-х контроллеров и у каждого оказались, как плюсы, так и минусы. Результаты тестирования 3-х контроллеров сенсорных кнопок:
Плюсы: Дешевый, на текстолите с одной стороны могут быть площадки сенсоров, на обратной стороне другие компоненты, но при этом сильно снижается чувствительность. Настройка выходного сигнала: высокий/низкий уровень, настройка режима кнопки: переключение/включение. 4 канала.
Минусы: Если с обратной стороны сенсорной площадки находятся дорожки, то плохо работает сквозь оргстекло более 3 мм и еще хуже если на стекло наклеена пленка, не реагирует на небольшое касание, только нажатие всей подушечкой пальца, даже с настроенной максимальной чувствительностью (Cs = 1pF, диапазон 0-50pF, чем меньше, тем чувствительнее).
Рис. 6 — TTP224 на готовой плате
Плюсы: Реагирует на небольшое касания сквозь 3 мм (и больше) оргстекло, если настроить чувствительность на среднем уровне (Cs = 22nF, диапазон 2-50nF, чем больше, тем чувствительнее). Автоматически подстраивается под толщину стекла.
Минусы: Под сенсорной площадкой не должно быть никаких дорожек, ни питания, ни земли, иначе снижается чувствительность. Выход только высокий уровень. 1 канал только.
Рис. 7 — Тестовая плата AT42QT1011
Плюсы: Реагирует на небольшое касания сквозь 3 мм (и больше) оргстекло. Защита от помех с помощью земли вокруг и под площадкой сенсоров, автоматически подстраивается под толщину стекла. 5 каналов.
Минусы: Долго реагирует на нажатие и долго понимает, что палец отпустили, порядка 0.5 секунд. Если удерживать палец на площадке сенсора, то через 9 секунд выключается светодиод, происходит калибровка. Сенсорную площадку требуется закрывать землей со всех сторон, в том числе и под площадкой, иначе срабатывает в любой точке касания текстолита.
Рис. 8 — MTCH105 на макетной плате
Выбрал TTP224 (4 канала), потому что на одном текстолите с одной стороны можно разместить все компоненты, а на другой стороне — площадки сенсоров. Пожертвовал чувствительностью, через 3 мм оргстекло срабатывает если коснуться целиком подушечкой пальца, хотя это можно трактовать, как защита от случайного касания :). Если под площадкой сенсора нет дорожек, то реагирует сквозь 4 мм оргстекло при малейшем касании.
Изготовить сенсорный выключатель с двумя текстолитами, первый — для сенсорных площадок, второй — для всех компонентов. Добавить вибромотор и бузер. Реализовать функцию слабой подсветки при срабатывании встроенного датчика движения.
Изучение рассеивателей света
Стояла задача — равномерно засветить площадку размером 40х40мм, которой касается палец. Из-за ограничений размера корпуса, получилось впихнуть только по одному светодиоду для каждой площадки.
Я изучил устройство нескольких сенсорных выключателей: Livolo, Vitrum, HTTM touch button. В каждом использовался свой подход к равномерному рассеиванию света.
Итальянский Z-Wave выключатель с дорогим декоративным стеклом. Отражатель-рассеиватель реализован следующим образом: на прозрачном оргстекле нарисован обод светоотражающей краской, сбоку подсвеченный одним светодиодом. Со стороны светодиода краски меньше нанесено, тем самым достигается равномерное свечение по всему ободу. Сверху устанавливается декоративное стекло.
Рис. 9 — Рисунок светоотражающего обода на оргстекле
Бюджетный китайский сенсорный выключатель. На плате располагается 2 светодиода: красный и синий, светодиоды светят внутрь замутненного полупрозрачного пластика, из-за частых преломлений света внутри получается равномерное свечение всей поверхности, на текстолит нанесена светоотражающая краска.
Рис. 10 — Сенсорная часть выключателя Livolo
HTTM — HelTec Touch Model
Готовый сенсорный модуль с Noname микросхемой. Отражатель-рассеиватель состоит из 3-х частей: текстолит с луженой площадкой, оргстекло для торцевой подсветки с множеством микроямок, белая мутная пленка.
Подбор материалов рассеивателя
Рассеиватель из матового оргстекла
Обычное прозрачное 3 мм оргстекло обработал мелкой шкуркой с двух сторон для придания матовости. Такое оргстекло равномерно рассеивает свет по всей поверхности. Толщина материала позволяет комфортно работать с любой сенсорной микросхемой. Но на поверхности видны мелкие царапины, что влияет на эстетический вид.
Рис. 11 — Матированное оргстекло
Рассеиватель из оргстекла для торцевой подсветки (LGP) и молочного оргстекла
Использовал 2 разных оргстекла толщиной по 2 мм, бутерброд из двух элементов получился 4 мм. Нижнее оргстекло для торцевой подсветки, благодаря нанесенным белым точкам, равномерно рассеивает свет по всей поверхности. Верхнее молочное оргстекло дает мягкое свечение и красивый вид, при этом яркость заметно ниже и увеличивается вес выключателя.
Рис. 12 — Оргстекло для торцевой подсветки и опаловое оргстекло
Панель лайтбокса от компании Ledison
Российская компания Ledison предоставила на тест панель от лайтбокса состоящую из 3-х компонентов: светоотражающая подложка, специальное светорассеивающее 3 мм оргстекло (на вид прозрачное, но внутри видна зернистая структура), прозрачная защитная пленка. Верхнюю пленку я заменил на матовую Oracal 8500 и получилось хорошее рассеивание. Но при работе с выключателем пленка выглядит не солидно, может поцарапаться и её трудно приклеить без пузырьков.
Рис. 13 — Бутерброд для лайтбокса от Ledison
После всех тестов в выключателе применил светоотражающую подложку от Ledison, а их оргстекло сделал матовым. На данный момент это лучший вариант для меня, и равномерно рассеивает, и яркость не снижена, и толщина подходящая.
Рис. 14 — Корпус, плата и рассеиватель
Использование
Первые тестовые версии выключателей я изготовил 2 года назад и имею уже опыт их использования, один установлен около санузла на высоте 120 см и удобен для детей, второй располагается около кровати и управляет ночником, люстрой и LED подсветкой. Т.к. все кнопки разделены перекрестием их легко нащупать в темноте и нажать нужную. Световой фидбэк точно говорит какая кнопка нажата. По сравнению с кнопочными выключателями минусов не обнаружил.
Рис. 15 — Сенсорный выключатель на аккумуляторе в деле
Заметил приятный побочный эффект, выключатель около кровати можно использовать для подсветки тумбы, если нажать на нижние кнопки.
На данный момент в Z-Wave чипе используется прошивка от 4-x кнопочного брелока Z-Wave.Me Key Fob, удобно, что она уже есть готовая и хорошо работающая, неудобно, что не все функции есть, которые хочется. Единственным нерешенным вопросом осталась засветка уголков в центре, нужно закрывать фольгированной пленкой, но пока думаю куда лучше лепить фольгу, на корпус внутри или на оргстекло.
Далее в планах перейти на свободно программируемый Z-Uno Module для реализации всех программных хотелок.
Читайте также: