Сенсорная кнопка своими руками: принцип работы и подключение к Ардуино

Вопросы и ответы
Содержание
  1. Сенсорная кнопка
  2. Принцип работы сенсорных кнопок
  3. Сенсорные или механические кнопки
  4. Шаг 3: Изменение программного обеспечения Arduino
  5. Модуль сенсорной кнопки TTP223 Ардуино
  6. Характеристики TTP223 (datasheet на русском)
  7. Технические характеристики TTP223:
  8. Обзор сенсорных кнопок
  9. 1. Troyka touch sensor
  10. 2. Grove Touch Sensor
  11. 3. TTP223B Arduino Digital Touch Sensor
  12. 4. Keyestudio touch module
  13. Модуль сенсорной клавиатуры TTP229
  14. Бесконтактные концевые выключатели с принтеров и Arduino
  15. Емкостная сенсорная Midi клавиатура
  16. Подключение сенсорной кнопки к Ардуино
  17. Калибровка чувствительности
  18. Использование датчика ttp223 без Ардуино
  19. Заключительный шаг создания midi клавиатуры
  20. Загрузка кода
  21. Создание девайса
  22. Как подключить сенсорную кнопку к Ардуино
  23. Скетч. Подключение ttp223 к Ардуино (Touch Sensor)
  24. Пояснения к коду:
  25. Скетч. Сенсорный переключатель ttp223 (Touch Sensor)
  26. Пояснения к коду:
  27. Оптический выключатель со звуковым эффектом на Arduino

Сенсорная кнопка

Kasanie-300x168.jpg
Ни для кого не секрет, что прогресс не останавливается. Постоянно появляются новые технологии, совершенствуются старые. Сенсорные экраны появились совсем недавно (по меркам человечества), но уже прочно вошли в нашу повседневную жизнь. В телефонах, телевизорах, терминалах и т.д. В основном используются «бескнопочные» технологии. В кавычках это слово потому, что до сих пор используют кнопки, просто коснитесь. О них, а точнее, о сенсорном модуле для Arduino и пойдет речь в этой статье.

Принцип работы сенсорных кнопок

В большинстве модулей сенсорных кнопок используются проецируемые емкостные сенсорные экраны. Если не вдаваться в пространственные объяснения их работы, для записи давления используется расчет изменения емкости конденсатора (электрической цепи), при этом важной особенностью является возможность задавать разные начальные емкости, так как мы увидим позже.

mtouch_cap1-300x213.jpg
Человеческое тело имеет определенную электрическую емкость и, следовательно, низкое реактивное сопротивление переменного электрического тока. Если вы дотронетесь до пальца или любого электропроводящего объекта, через них будет протекать небольшой ток утечки от устройства. Специальная микросхема обнаруживает эту утечку и сигнализирует о нажатии кнопки. Преимуществами этой технологии являются: относительная долговечность, малое влияние загрязнений и устойчивость к проникновению воды.

Сенсорные или механические кнопки

  • Сенсорная кнопка «чувствует» давление даже через небольшой слой неметаллического материала, что обеспечивает широкое применение во всех типах проектов.
  • Это также следует из предыдущего пункта: возможность использования сенсорной кнопки внутри корпуса увеличивает привлекательность дизайна, что не влияет на функциональность, но в повседневной жизни довольно важно не обращать на это внимание.
  • Стабильная работа, выражающаяся в отсутствии движущихся частей и частой калибровке (о чем будет сказано ниже). Вам не нужно беспокоиться о дребезге кнопки, который происходит при использовании механического брата или сестры, что значительно облегчит жизнь начинающему геймеру Arduino. Поэтому еще одно преимущество, хотя и не для всех, — простота в работе.

Из недостатков можно отметить следующие:

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

kucha-knopok-52837311.jpg

Шаг 3: Изменение программного обеспечения Arduino

На этом этапе вам нужно изменить программу UNO-dfu_and_usbserial_combined по умолчанию в программном обеспечении arduino для обработки MIDI .

Сначала загрузите шестнадцатеричный файл, затем программу FLIP, чтобы загрузить указанный шестнадцатеричный файл на Arduino.

После загрузки файла и программы FLIP подключите плату Arduino к компьютеру. Затем переведите ваш Arduino Uno R3 (он будет работать только с версией Uno!) В режим DFU.

Вставьте провод в верхний контакт заземления и провод в нижний контакт заземления. Далее нужно прикоснуться к нижнему проводнику контактом GND, как показано на фото, и одновременно к верхнему проводнику контактом RESET. После этого плата Arduino перейдет в режим DFU.

Затем загрузите шестнадцатеричный файл MocoLUFA. Откройте FLIP, выберите свой чип (16u), найдите файл MIDI.hex и загрузите его через USB. Отсоедините USB-кабель от компьютера и снова подсоедините его. Плата Arduino должна быть определена как устройство MIDI / MocoLUFA.

Помните: если вам нужно изменить код ADE, вы должны вернуть исходный шестнадцатеричный файл для Arduino. Этот файл находится в C: Program Files (x86) Arduino hardware arduino firmwares atmegaxxu2

Модуль сенсорной кнопки TTP223 Ардуино

Когда к Arduino ttp223 подключено питание, выход OUT сенсорного датчика устанавливается на низкий уровень сигнала. Если прикоснуться к рабочей области модуля, выход OUT поднимется, и включится встроенный светодиод. Режим работы ttp223 можно настроить по своему усмотрению: для этого в модуле есть перемычки A и B (по умолчанию перемычки не замкнуты).

При замкнутой перемычке A сигнал на выходе OUT инвертируется, то есть при прикосновении пальцем к рабочей области на выходе устанавливается низкий уровень сигнала. Перемычка B включает режим блокировки переключателя модуля, например, для переключения состояния сигнала на выходе OUT необходимо еще раз прикоснуться к датчику. Ниже приведены основные особенности Arduino ttp223.

Характеристики TTP223 (datasheet на русском)

Сенсорная кнопка Arduino ttp223 выполнена на базе микросхемы TTP223-BA6 в виде модуля open frame. Датчик имеет печатную плату в виде металлизированной поверхности с надписью «касание». Чувствительность TTP223 зависит от конденсатора, место которого предусмотрено на плате. При установке конденсатора на 50 пикофарад чувствительность датчика будет минимальной.

Технические характеристики TTP223:

  • Напряжение питания: 2 — 5,5 Вольт;
  • Потребление тока: 70 — 500 мкА;
  • Выходной уровень (при питании от 5 В): 4 В (высокий) / 0 В (низкий);
  • Максимальное время отклика: 220 мс;
  • Размер модуля: 11 х 15 мм.

Обзор сенсорных кнопок

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

1. Troyka touch sensor

Время отклика: 80 мс (в режиме мощности) и 10 мс (в режиме высокой скорости)

Максимальная толщина диэлектрика для нормальной работы: 4 мм

Размеры: 25X25 мм

Напряжение питания: 3-5 В

Цена: 390 рублей

2. Grove Touch Sensor

Затраченное время: 220 мс и 80 мс

Максимальная толщина диэлектрика для нормальной работы: 2 мм

Размеры: 20X20 мм

Напряжение питания: 2-5 В

Цена: 229 рублей

3. TTP223B Arduino Digital Touch Sensor

Затраченное время: 220 мс и 60 мс

Размеры: 24X24 мм

Напряжение питания: 2-5 В

Цена: 150 руб

4. Keyestudio touch module

Размеры: 30X20 мм

Напряжение питания: 3,3-5 В

Цена: 270 руб

Модуль сенсорной клавиатуры TTP229

В поисках различных электронных модулей меня заинтересовал дешевый модуль сенсорной клавиатуры на микросхеме TTP229, и я решил купить его. Микросхема имеет 16 входов для подключения сенсорных электродов (кнопок), соответственно на плате модуля имеется 16 квадратных сенсорных площадок с номерами 1-16. Также на плате расположены контактные площадки для перемычек, с помощью которых можно настроить режим работы клавиатуры.

Микросхема TTP229 передает данные по двухпроводной линии, протокол связи аналогичен последовательному интерфейсу SPI, дополнительно имеется 8 выходных буферов, с возможностью выбора типа логического выхода. Микросхема имеет низкое энергопотребление, всего 2-9 мкА в спящем режиме.

На следующем изображении показана принципиальная схема модуля сенсорной клавиатуры:

Обвязка микросхемы минимальная, сенсорные кнопки Е1-Е16 подключаются непосредственно к выводам микросхемы. С помощью конденсаторов CJ0-CJ3, CJWA, CJWB можно регулировать чувствительность сенсорных кнопок, чем больше емкость конденсаторов, тем ниже чувствительность, кроме того, чувствительность зависит от размера самих кнопок . Рекомендуемая емкость конденсаторов находится в пределах 1-50 пФ.

Линии микросхемы TP0-TP7 играют двойную роль, помимо контроля состояния сенсорных кнопок, вы можете настроить режим работы клавиатуры с помощью перемычек JP1-JP8. При установке перемычки линия микросхемы подтягивается к общему проводу через резистор высокого сопротивления, на входе устанавливается низкий логический уровень «0», при отсутствии перемычки — высокий уровень «1». В следующей таблице представлены основные режимы работы:

Если линия TP2 имеет высокий логический уровень (TP2 = 1), активны 8 сенсорных кнопок (на схеме E1-E8), остальные 8 линий микросхемы TP8-TP15 перенастраиваются на выход (Out1-Out8). Логический уровень на выходных линиях зависит от состояния сенсорных кнопок, 1-я кнопка соответствует выходу Out1, 2-я кнопка — выходу Out2 и т.д., а данные о состоянии кнопок передаются через последовательный интерфейс.

В режиме 16 активных кнопок (TP2 = 0) на входе перенастраиваются строки микросхемы TP8-TP15. В этом случае информация о состоянии кнопок передается только через последовательный интерфейс. Следовательно, линии TP8-TP15 могут отслеживать состояние сенсорных кнопок E9-E16 или действовать как выходной буфер.

Линия TP0 отвечает за тип логического выхода, значение TP0 = 1 соответствует нормальному логическому выходу, если значение равно 0, то получается выход с открытым стоком. Активный уровень выходных буферов и последовательного интерфейса зависит от состояния линии TP1. Используя линии TP3, TP4, вы можете установить два режима для сканирования кнопок: зафиксировать «нажатие» одной кнопки или нескольких кнопок одновременно, это может быть полезно, когда вам нужно отслеживать «нажатие» любой комбинация кнопок.

Строки TP5, TP6 отвечают за частоту и длительность нажатия кнопок сканирования в спящем режиме. В микросхеме есть функция защиты от «заедания» кнопок, например, при ударе постороннего предмета по кнопке она сработает и, если защита включена, через 80 секунд кнопка калибруется и возвращается в отпущенное состояние. За эту функцию отвечает линия TP7.

Микросхема TTP229 автоматически переходит в спящий режим, если в течение определенного периода времени ни одна кнопка не «нажата». Кроме того, есть постоянная функция самокалибровки сенсорных кнопок, позволяющая микросхеме адаптироваться к изменениям окружающего «емкостного» фона и правильно фиксировать прикосновение.

Схема последовательного порта TTP229

На следующем изображении показана диаграмма последовательной передачи данных с временными характеристиками:

Линия SCL предназначена для синхронизации от внешнего устройства управления; микросхема TTP229 передает данные о состоянии кнопок на линию SDO. Когда микросхема обнаруживает «нажатие» кнопки, она выводит на линию сигнал DV длительностью 93 мкс, который можно использовать для прерывания в микроконтроллере. Кроме того, при наличии тактового сигнала микросхема выводит один или два байта данных о состоянии кнопок (в зависимости от режима работы: 8 или 16 активных кнопок). Как видно полярность сигналов на линиях SCL, SDO зависит от выбора активного логического уровня.

Биты D0-D15 отображают состояние кнопок E1-E16. Значение битов зависит от активного уровня, если активный уровень низкий, когда кнопка «нажата», соответствующий бит будет установлен на 0, если кнопка отпущена — 1. Когда активный уровень высокий, правда наоборот. Тактовая частота может быть от 1 до 512 кГц. Если нет тактового сигнала в течение 2 мс, последовательный интерфейс сбрасывается.

Например, я подключил сенсорную клавиатуру к микроконтроллеру PIC16F628A и использовал цифровой индикатор на драйвере MAX7219 для отображения номера «нажатой» кнопки. Схема подключения представлена ​​ниже:

Помимо выходных линий клавиатуры, я подключил светодиоды HL1-HL8 через резисторы R2-R9. Переключатель SA1 предназначен для выбора режима работы микроконтроллера, приема 8 или 16 байт данных, режим должен соответствовать настройкам сенсорной клавиатуры, (перемычка JP3, 8 или 16 активных кнопок). Для последовательного интерфейса необходимо выбрать высокий активный логический уровень, для выходных буферов — открытый сток с подтягиванием до 0, для этого необходимо установить на клавиатуре перемычки JP1, JP2, я не стал установите остальные перемычки. В исходном состоянии светодиоды остаются выключенными.

Бесконтактные концевые выключатели с принтеров и Arduino

Тот, кто хоть раз разбирал принтер или сканер, наверняка обращал внимание на концевые выключатели.

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

На фото ниже показаны различные типы концевых выключателей:

Некоторые из них установлены в пластиковых корпусах и, как следствие, идеально подходят для проектов Arduino.

Емкостная сенсорная Midi клавиатура

В этом руководстве показано, как создать собственную емкостную сенсорную MIDI-клавиатуру.

Примечание: клавиатура не работает с обычной краской. Для этого проекта я использовал токопроводящую краску.

Для этого устройства требуются следующие компоненты:

  • Arduino Uno R3 (это руководство предназначено только для версии R3, я не уверен, что он будет работать для других моделей)
  • 12 резисторов (сопротивление от 1 МОм до 10 МОм)
  • перемычки
  • 11 зажимов под крокодил
  • токопроводящий материал (токопроводящая краска, алюминиевая фольга и т д)
  • программа для обработки midi файлов
  • библиотека для емкостного датчика
  • программный код и файл (представлены ниже)

Подключение сенсорной кнопки к Ардуино

Чтобы использовать сенсорную кнопку, как и все другие модули и датчики, она должна быть подключена к плате Arduino. В большинстве случаев используются стандартные модули с тремя выводами: силовой, сигнальный и заземляющий. Их положение меняется от модели к модели, на диаграмме они отображаются в соответствии с последним списком (сенсорная кнопка заменена переключателем из-за ее отсутствия в Tincercad):

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

Сенсорный модуль по сути похож на цифровую кнопку. При нажатии кнопки датчик возвращает логическую единицу, а в противном случае — логический ноль.

Калибровка чувствительности

Во-первых, нам нужно определить чувствительность наших резисторов. Для этого скачайте библиотеку емкостных датчиков и установите ее в папку Arduino. Затем скопируйте этот эскиз и загрузите его в Arduino.

После загрузки кода и сборки платы Arduino откройте серийный монитор внутри ADE. Если все сделано правильно, вы увидите ряд значений. Если вы коснетесь конца проводника, обратное значение будет больше, чем значение, если вы не коснетесь проводника.

Теперь пора определить, с каким значением ваш сенсорный датчик будет «отправлять» миди-ноту. Если вы считаете 50, когда не касаетесь провода, и 1000, когда касаетесь провода, тогда вам нужно придерживаться около 700. Когда вы делаете емкостную сенсорную клавиатуру, она отправит миди-ноту, когда значение превысит 700.

А теперь перейдем к созданию самой клавиатуры…

Использование датчика ttp223 без Ардуино

На схеме выше в качестве источника питания используется плата Arduino Uno. При этом к выносному датчику ttp223 не следует подключать более 3 светодиодов. Для управления высокой нагрузкой с помощью этого модуля вам необходимо использовать модуль транзистора или реле (выключатель питания), который замкнет цепь с большим током. Пример такого подключения опубликован ниже.

Удаленный модуль можно использовать без микроконтроллера, если ttp223 перешел в режим триггера. Для этого замкните перемычку B, и тогда режим будет меняться при каждом прикосновении к датчику. Обратите внимание, что кнопка может быть включена в электрическую схему только как логический ключ. Большие нагрузки (моторы, адресные светодиодные ленты или реле) не подойдут, датчик просто сгорит.

Заключительный шаг создания midi клавиатуры

На этом этапе ваша емкостная сенсорная клавиатура должна быть готова. Он может определить, когда вы держите дирижера и отправляете миди-ноту. Однако нам также нужна программа для чтения MIDI и воспроизведения звуков. Вы можете использовать программное обеспечение DAW (Fl Studio, Ableton, Logic Pro и т.д.)

Если ваша емкостная сенсорная клавиатура работает должным образом, она будет отображаться как обычное MIDI-устройство в вашем программном обеспечении DAW, как показано на изображении выше. Устройство будет работать как обычная MIDI-клавиатура, за исключением того, что одновременно может играть только одну ноту!

Загрузка кода

Загрузите код в Arduino.

Обдумайте, что нужно помнить. Вы должны поместить это значение в свой код. Если в программном коде встречается значение 500, то его необходимо заменить своим значением.

После внесения изменений в программный код его можно загрузить в плату Arduino.

Создание девайса

Соберите схему, как показано на картинках выше.

Концы проводников — это то место, куда вы дотронетесь. К концам этих проводников можно прикрепить зажимы типа «крокодил», чтобы прикрепить проводники, например, к алюминиевой фольге.

Как подключить сенсорную кнопку к Ардуино

Для этого урока нам понадобятся:

  • плата Arduino Uno / Arduino Nano / Arduino Mega;
  • модуль датчика переключателя ttp223; SRD-05VDC-SL-C;
  • макетная доска;
  • светодиод и сопротивление 220 Ом;
  • темы «папа-папа», «папа-мама».
Датчик TTP223 Ардуино Уно Ардуино Нано Ардуино Мега
GND GND GND GND
VCC
I / 0 2 2 2

Следующая программа включит светодиод, подключенный к седьмому выводу микроконтроллера, когда вы коснетесь датчика, поскольку в этот момент логический блок (высокий сигнал) поступит на вывод 2. Схема сборки и сам код очень просты, а модуль работает без защелки (т.е перемычка B открыта). После сборки схемы, показанной выше, загрузите следующий эскиз на плату Arduino Uno.

Скетч. Подключение ttp223 к Ардуино (Touch Sensor)

Пояснения к коду:

  • этот пример программы с сенсорным датчиком Arduino довольно прост и ничем не отличается от подключения кнопки часов к Arduino.

В приведенном ниже примере модуль сенсорного датчика работает в режиме фиксации (триггера), т.е перемычка B замкнута. Модуль реле будет включаться / выключаться каждый раз при прикосновении к датчику. При этом программа для микроконтроллера остается прежней, так как после снятия пальца с модуля на выходе ttp223 все равно останется высокий уровень сигнала (логическая единица).

Скетч. Сенсорный переключатель ttp223 (Touch Sensor)

Пояснения к коду:

  1. с релейного модуля можно управлять различными устройствами с большими токами, например, светодиодной лентой, моторами, лампами 220 В и так далее;
  2. фиксацию включения реле можно производить программно, не переводя датчик в триггерный режим. Для этого нужно использовать режим работы порта INPUT_PULLUP. Пример можно увидеть здесь.

Заключение. В этом обзоре мы рассмотрели емкостной сенсорный датчик ttp223 для микроконтроллера Arduino, который можно использовать в различных устройствах DIY. Благодаря невысокой стоимости и простой схеме подключения этот модуль станет отличной альтернативой обычной сенсорной кнопке. Если у вас есть вопросы по этой теме, оставьте их в комментариях к этому посту.

Оптический выключатель со звуковым эффектом на Arduino

Добрый день! В этом посте я хочу поделиться с сообществом Хабра принципом работы сделанного мной бесконтактного переключателя. Коммутатор предназначен для использования в системе умного дома.

Основа коммутатора — это улучшенный клон недавно купленного мной контроллера Arduino, продаваемого под названием Carduino Nano V.7

Переключатель работает так: Arduino с выхода D5 постоянно излучает ШИМ-сигнал с частотой 976 Гц и скважностью 50%. Светодиод подключен к выходу D5 через токоограничивающий резистор, который излучает световой сигнал в инфракрасном диапазоне. Фототранзистор, подключенный к входу Arduino D2, обнаруживает ИК-сигнал, отраженный от руки. Arduino принимает ИК-сигнал, проверяет его достоверность, и если сигнал из 20 последовательных импульсов соответствует частоте 976 Гц, контроллер включает синий светодиод (L) на выходе D13 Arduino и начинает воспроизводить звуковой эффект через SPK выход контроллера. То же самое происходит, когда светодиод (L) не горит).

Воспроизведение :

При воспроизведении звуковых эффектов используется несжатый аудиофайл в формате WAV с частотой 16000 Гц и глубиной 8 бит. Для улучшения качества воспроизведения звука используется линейная интерполяция.

Для этого отбор отсчетов выполняется с частотой 96000 Гц, и 4 промежуточных отсчета, вычисленных с помощью метода линейной интерполяции, вставляются между исходными отсчетами.

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

Схема проста по сборке, я использовал

  1. Carduino Nano V.7
  2. ИК светодиод от старого пульта от телевизора, светодиод нужно сваривать в термоусадке, чтобы избежать бокового излучения
  3. LTR-3208E фототранзистор
  4. динамическая головка из детской игрушки
  5. сопротивления 10к и 68Ω Как работает схема, собранная на макетной плате, можно посмотреть на видео.

Читайте также: Подключение ИК-приемника к Arduino: инфракрасная станция и пульт

Оцените статью
Блог про Arduino