Найти в Дзене
Электроника, ESP32, Arduino

Имитация резистивной клавиатуры или как сделать цифровой потенциометр своими руками

О том что такое резистивная клавиатура, и как с ней работать статья моем канале уже была (ссылка будет в конце). Сегодня порешаем обратную задачу, и попробуем по управлять модулем bluetooth аудио модулем MH-M18 с помощью Arduino.

Данное решение позволит встраивать функционал bluetooth колонки, в другие Audio-ESP проекты (например в самодельные FM или Интернет радиоприемники).

К Arduino необходимо подключить выход KEY, имитируя при этом работу кнопок. (обведено в красный кружок)

MH-M18 вариант STEREO
MH-M18 вариант STEREO

Вариант без "танцев с бубном" это конечно цифровой потенциометр - с интерфейсом SPI например такой.

Цифровой потенциометр
Цифровой потенциометр

Но, в местном магазине для радиолюбителей в наличии такого не оказалось, а заказывать в Москве - для разового проекта - "жаба душит".

Поэтому попробуем "сколхозить" тоже самое используя 4 MOSFET транзистора по цене 2.50 рубля за штуку.

-3

Цифровой потенциометр у нас займет 3 ножки Arduino (SPI шина), наш "колхоз" 4. В данном случае не велики потери.....

Для начала необходимо проверить, что там происходит в MH-M18 при нажатии кнопок.

Цепляем на вход KEY вольтметр и нажимаем кнопки
Цепляем на вход KEY вольтметр и нажимаем кнопки
  • Ни одна кнопка не нажата 3.22V
  • Кнопка "Пауза" 2.66V
  • Кнопка Следующий трек (звук +) 2.41V
  • Кнопка Предыдущий трек (звук -) 1.46V
  • Кнопка (ВКЛ/ВЫКЛ) 0V

Воспользовавшись онлайн калькулятором, не сложно выяснить, что подтяжка ноги KEY к напряжению 3.3V выполнена резистором номиналом около 10-11 кОм.

Расчет подтягивающего резистора внутри MH-M18
Расчет подтягивающего резистора внутри MH-M18

Осталось собрать схему которая будет организовывать такие напряжения на ножке KEY.

Управление MH-M18 с помощью внешнего контроллера (Arduino NANO)
Управление MH-M18 с помощью внешнего контроллера (Arduino NANO)

Собираем прототип на беспаечной макетной плате
Собираем прототип на беспаечной макетной плате

Имитация нажатия кнопки:

  • подаем на выход Arduino логическую единицу (нога KEY подтягивается к земле через резистор и ключ на MOSFET)
  • небольшая задержка имитирующая нажатие кнопки
  • подаем на выход Arduino логический ноль

Осталось выяснить величину этой задержки (2 кнопки при разной величине задержки могут выполнять разные функции). Для этого воспользуемся выводом D7, а саму задержку попробуем подобрать через COM порт.

Для этих целей идеально подойдет встроенный в среду Arduino IDE оператор parseInt()

Пара минут и решение задачи готово
Пара минут и решение задачи готово
Подключаем модуль к смартфону с запущенным проигрывателем
Подключаем модуль к смартфону с запущенным проигрывателем
Находим 2 необходимые временные задержки для переключения треков и увеличения громкости
Находим 2 необходимые временные задержки для переключения треков и увеличения громкости
  • треки проигрывателя начинают переключаться при удержании кнопки более 300ms
  • если удерживать кнопку более 1000ms происходит увеличение громкости на одну позицию
  • если удерживать кнопку более 1300ms происходит увеличение громкости на две позиции
  • если удерживать кнопку более 1600ms происходит увеличение громкости на три позиции и.т.д.

Для проверки пишем код, который будет управлять колонкой с помощью отправки цифр в монитор порта.

Секция первоначальных установок
Секция первоначальных установок
-12
-13

Получилась блютуз-колонка управляемая через UART. Теперь модуль MH-M18 можно интегрировать в любые проекты. (прикрутить ПДУ, встроить в колонку часы или сделать более удобные органы управления)

По работе с резистивной клавиатурой на моем канале есть отдельная статья:

Подключение нескольких кнопок на аналоговый вход и антидребезг

Полный список всех статей канала доступен по этой ссылке:

Всем удачи!