Самодельная USB кнопочная панель на STM32 на 16 кнопок (можно переделать до 29 кнопок)

  Рет қаралды 6,082

Нанославик

Нанославик

3 ай бұрын

Решил сделать свою версию программируемых кнопок для компьютера с разными комбинациями клавиш, чтобы быстрее и комфортнее работать. Такая клавиатура пригодится для геймеров, стримеров и для всех тех, кому нужно часто нажимать разные комбинации кнопок на клавиатуре. Данный проект сделан на микроконтроллере STM32, исходные коды можно найти ниже.
Электронные детали, которые я показывал
Микроконтроллер STM32F401CCU6 на плате:
fas.st/rZHav
fas.st/jrygNf
fas.st/juEqif
fas.st/QZF17
Готовые модули программируемых кнопок:
fas.st/kLlzM
fas.st/TpodB
fas.st/SSS0bS
fas.st/u6y_Z
Сенсорные кнопки:
fas.st/lE4w9X
fas.st/nbCcRz
fas.st/48U-Kq
fas.st/vfHn6
fas.st/kmUDs
Сенсорные кнопки с подсветкой:
fas.st/5xu7b6
fas.st/iDtgLQ
Исходные коды для прошивки:
nanoslavic.ru/custom_keyboard...
Мой телеграм: t.me/nanoslavic
Мой сайт: nanoslavic.ru
Отправить мне донат: boosty.to/nanoslavic/donate
Мой Boosty (дополнительный контент): boosty.to/nanoslavic
#DIYКлавиатура #STM32 #Arduino #Самоделки #Ардуино #StreamDeck

Пікірлер: 84
@nanoslavic
@nanoslavic 3 ай бұрын
Если кто-то сделает себе такую же панель - пишите:) Кстати, у меня есть телеграм канал: t.me/nanoslavic_ru
@mikurrey416
@mikurrey416 3 ай бұрын
Большущее вам спасибо за наводку на кнопки с подсветкой! Искал такое для подобного своего проекта.
@ceeam
@ceeam 3 ай бұрын
Иногда вместо специальных сенсорных кнопок можно использовать просто неподключенный GPIO вход без подтягивающего резистора. Его значение зависит буквально "от фазы луны", меняет от приближения пальца случайным образом. В общем простейший алгоритм который при изменении входа даёт на выходе единицу с малой задержкой - и сенсор готов.
@nanoslavic
@nanoslavic 3 ай бұрын
Ну там просто получается наводка 50Гц от сети, потому что тело человека как антенна работает. Так что это будет нормально работать только в здании, где есть розетка. В других местах такой наводки не будет, да и в городе в разных местах будет работать по разному.
@dimasamsonov4970
@dimasamsonov4970 3 ай бұрын
@@nanoslavic Попробуйте поменять поменять пулл ап на пулл довн на входе и померьте время перехода тимером до интеррапта. Оно зависит от емкости на ножке. Наводка маскируется усредением большого числа измерений. И другой способ который я пробовал Если подавать сигнал от другой ножки через резистор в 1 мом то срабатывает даже на приближение пальца, а не только на касание ... uint16_t lastCnt = 0; void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) { lastCnt = TIM1->CNT; } .. main() { ... printf("Program Start "); HAL_TIM_Base_Start_IT(&htim1); int flag = 0; int res =0; uint16_t startv = 0; /* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ startv = TIM1->CNT; //HAL_GPIO_WritePin(TOUCH_OUT_GPIO_Port,TOUCH_OUT_Pin,flag?GPIO_PIN_RESET:GPIO_PIN_SET); TOUCH_OUT_GPIO_Port->BSRR = flag?(TOUCH_OUT_Pin
@nanoslavic
@nanoslavic 3 ай бұрын
Насколько я понимаю, в ёмкостных сенсорах используется линия от генератора частоты, с которой через небольшую ёмкость сигнал поступает на цифровой вход, подтянутый к земле через резистор 100к-500к. Ёмкость подбирается так, чтобы сигнал надёжно проходил. Но если прикоснуться к цифровому входу, то в схеме появляется ёмкость на землю, которая шунтирует сигнал и это можно надёжно определить. То есть, схема несложная, нужно только правильно выбрать частоту и ёмкости. Правда в этом нет никакого практического смысла, потому что для опроса нужно будет тратить ресурсы микроконтроллера, а микросхемы для матрицы сенсоров стоят недорого. Разве только в тех случаях, когда микроконтроллер не занимается ничем основную часть времени:)
@dimasamsonov4970
@dimasamsonov4970 3 ай бұрын
@@nanoslavic Не жрет это опрос ресурсов. Меняю pullup на pulldown или наоборот , а результат приходит interruptom. Я выложу видео с кодом , попозже. Можно даже матрицу опрашивать.
@asdffewfew
@asdffewfew 3 ай бұрын
можно сделать перегородки с обратной стороны и подсвечивать нужную кнопку светодиодами. а 3d принтер все-таки освой, очень нужная штука у хоббиста
@nanoslavic
@nanoslavic 3 ай бұрын
Подсветка это скорее просто для красоты:) Лучше было бы купить просто кнопки для кастомных механических клавиатур, они вроде тоже есть с подсветкой. Правда значительно дороже, плюс к ним надо специальные сокеты покупать, в которые вставляются эти кнопки.
@asdffewfew
@asdffewfew 3 ай бұрын
@@nanoslavic не, подсвечивать нужную кнопку при нажатии
@cs16amx
@cs16amx 3 ай бұрын
Спасибо тебе добрый человек!) Валяется планшет на винде самопальный , думаю сделать вторую версию как игровую, и возможно сделаю борта по шире под кнопки и добавлю как раз стандартный набор wasd)
@francuz314
@francuz314 3 ай бұрын
3д печать и рисование простых корпусов в CAD программе значительно проще умения хорошо паять и разбираться в электронике )))
@nanoslavic
@nanoslavic 3 ай бұрын
Наверное проще, но гораздо скучнее:)
@128wqr
@128wqr 3 ай бұрын
Что-то подобное делал на Digispark, из плюсов не нужен программатор. Но тогда не смог реализовать индикатор Caps Lock (была потребность как индикатор активности микрофона) А ваш код умеет получать статус Caps Lock ?)
@nanoslavic
@nanoslavic 3 ай бұрын
Для STM32 тоже не нужен специальный программатор, если использовать UART-загрузчик. И моя версия не умеет считывать светодиоды клавиатуры, потому что мне это не нужно на данный момент. Но пока я разбирался с USB драйверами, я находил на гитхабе проекты для STM32, в которых использовались светодиоды. Там нужно добавлять эту функциональность в дескриптор рапорта и делать отдельную функцию по считыванию состояний светодиодов из компа.
@andrewsv9729
@andrewsv9729 3 ай бұрын
О! Шайтан машину можно сделать! Это-ж подарок судьбы - бесконтактный джойстик!
@nanoslavic
@nanoslavic 3 ай бұрын
Можно даже подключить ИК приёмник и управлять пультом от телевизора:)
@misimar
@misimar 3 ай бұрын
привет, помниш в этом ролике "Игровая консоль своими руками! Прототип игровой приставки и файловый менеджер" а какая плата была название напиши пж
@nanoslavic
@nanoslavic 3 ай бұрын
Самодельная там плата:)
@misimar
@misimar 3 ай бұрын
@@nanoslavic а как и где можно создать такую плату
@nanoslavic
@nanoslavic 2 ай бұрын
Нигде её не заказать, эту плату я сделал просто чтобы попробовать схему в работе. Она даже не полностью проверена, потому что я забросил этот проект.
@user-uv5ul2zn3e
@user-uv5ul2zn3e 2 ай бұрын
​@@nanoslavic а сними видео пж как зделать такоюже плату пж пж пж
@user-uv5ul2zn3e
@user-uv5ul2zn3e 2 ай бұрын
И да я начел смптреть твой канал имено с этово видео
@DanCore
@DanCore 28 күн бұрын
Сделай пожалуйста аналог Stream Deck, приблизь к максимальному комфорту, кнопку с дисплеями, которым можно свои картинки поставить (механическая вряд-ли будет, но будет круче)
@nanoslavic
@nanoslavic 28 күн бұрын
Вряд ли моя поделка будет дешевле и лучше оригинальной стримдеки:)
@DanCore
@DanCore 28 күн бұрын
@@nanoslavic хехь, я тут думал такую сделать, в итоге передумал вещь проста для использования, подумаешь добавлю новые кнопки ахахахха
@meganoobe
@meganoobe 3 ай бұрын
Надо было ссылку на ГитХаб делать. Так профитнее. А для такой мелкой клавиатуры хватило бы и stm32f103. И да- они тоже есть на УСБ-Ц.
@nanoslavic
@nanoslavic 3 ай бұрын
Ну так на бусти мне можно задонатить:) Да, через STM32F103 тоже можно, но я заказал себе несколько STM32F401, вот придумываю проекты для них:)
@OzzyBone
@OzzyBone 3 ай бұрын
Купил себе Xp-Pen панельку. Удобно, приемлемо собрана. Но блин, столько вопросов к функциональности колеса.... Капец. Пришлось через сторонний софт перехватывать ввод, что бы нужные функции повесить
@nanoslavic
@nanoslavic 3 ай бұрын
Кто-то софт ищет, а кто-то паяет свою версию панельки:)
@OzzyBone
@OzzyBone 3 ай бұрын
@@nanoslavic во первых, нормальный софт в одно рыло я буду делать до скончания веков. Во вторых, нормальный корпус, что бы его было не отличить от заводского, тоже В третьих, ножничный механизм кнопок я не сделаю. Его нельзя просто взять и купить, а его изготовление это крайне сложно и нужны доноры. Так что не, спасибо. DIY поделки такие же, как на Али, мне не очень на столе нужны, у меня требования другие
@popov_eo
@popov_eo 3 ай бұрын
Красивая поделка, но непрактичная. Сенсорный модуль TTP229 как раз 4х4 кнопки + контроллер I2C. Стоит на Алике 71р + 50р. доставка.
@nanoslavic
@nanoslavic 3 ай бұрын
Так тут речь не о кнопках ведь, а о USB-модуле и прошивке с возможностью создания клавиатуры. Самая сложность в ней была. А в качестве кнопок могут быть хоть кнопки от аркадных автоматов или даже кнопки-педали для нажатия ногой:) Я взял то, что было в наличии.
@popov_eo
@popov_eo 3 ай бұрын
@@nanoslavic Н-да, вот так смотришь ролик и не понимаешь, на чем автор сделал акцент. Никогда бы не подумал, что для кого-то может стать проблемой программа для взаимодействия контроллера (тем более, ESP32) с компом через USB... Библиотеки эмуляции клавомыши даже для ардуинки написаны (Гайвером, по-моему). Если с нуля писать, то да, есть там неприятные моменты.
@nanoslavic
@nanoslavic 3 ай бұрын
Да, много библиотек написано, но USB - достаточно сложный протокол и для создания своего HID устройства нужно вникать в его работу. Конечно, я не с нуля всё писал, но до этого проекта не было вообще знаний о том, как это работает. Нужно было адаптировать всё под конкретную модель микроконтроллера и платы (STM32F401CCU6), потому что именно для неё нет проектов и напрямую всё не переносится как в ардуино. Пришлось пересматривать уроки и кучу проектов с гитхаба. Я на бусти сделал видео с рассказом о проблемах, с которыми столкнулся.
@SIM31r
@SIM31r 3 ай бұрын
Думаю входов можно меньше задействовать. Матрицу 4*4 входов сделать и сканировать. Через диоды развязать только все выходы. Но запутанная история конечно получается ))
@nanoslavic
@nanoslavic 3 ай бұрын
Ниже уже предложили использовать сенсорные модули на 16 кнопок:) Там контроллер сам опрашивает их, надо только считывать. Но и ваш вариант, конечно, подходит. Причём не только 4*4, но и больше кнопок можно сделать.
@kalobyte
@kalobyte 3 ай бұрын
TTP229 это и2ц сенсорная клавиатура на 16 кнопок на али есть кнопки механические со светодиодами и прозрачными колпачками для бумажек
@nanoslavic
@nanoslavic 3 ай бұрын
Да есть:) Но мне было лень ждать их
@user-yn1oq5se6p
@user-yn1oq5se6p 3 ай бұрын
@@nanoslavic не быть тебе блогером с таким подходом
@kirikudr
@kirikudr 3 ай бұрын
А эта STM умеет быть midi клавиатурой, а не обычной?
@nanoslavic
@nanoslavic 3 ай бұрын
Да, я вот как раз разбирался с тем, как совместить обычную клавиатуру с медиаклавиатурой. В итоге получилось совместить. На панели видно кнопки регулировки громкости - это как раз медиа кнопки. На бусти сделал видео с объяснением, как я это совмещал.
@kirikudr
@kirikudr 3 ай бұрын
@@nanoslavic Не, я про MIDI-клавиатуру, а не медиа. Это другое
@kirikudr
@kirikudr 3 ай бұрын
@@nanoslavic Не, я про MIDI-клавиатуру, а не медиа. Это другое немного.
@nanoslavic
@nanoslavic 3 ай бұрын
А, понял. Про миди я не изучал, думаю, там совсем другой USB драйвер должен быть. Но вроде бы на гитхабе видел такие проекты.
@EugeneTit1
@EugeneTit1 3 ай бұрын
Годно! Но возбми esp32 и долой провода! Да еще и обратную связь можно сделать
@morskoyzmey
@morskoyzmey 3 ай бұрын
На воду как реагирует? Плита с сенсорной панелью с ума сходит от пары капель воды.
@nanoslavic
@nanoslavic 3 ай бұрын
Да вроде не сильно реагирует. Я как раз сделал такую панель, чтобы нажимать на неё пока ем:) Руки мокрые уже были. Возможно, тут ещё зависит от окружения: если корпус металлический и заземлён, то работать будет по другому. У меня вокруг пластик, он слабо влияет на чувствительность.
@ZEN_2255
@ZEN_2255 3 ай бұрын
Погоди, разве не проще было использовать старую клавиатуру и через специальную программу назначить кнопки на необходимые команды? Или я что-то не понял, и тебе просто захотелось сделать самому?
@nanoslavic
@nanoslavic 3 ай бұрын
Да, мне захотелось всё сделать самому:) Именно свой контроллер клавиатуры с нужным мне алгоритмом отсылки комбинаций. Теперь я могу одной кнопкой не только отсылать нажатие комбинации клавиш, но также и целую последовательность нажатий, в том числе набирать часто используемые фразы. Потому что специальная программа для имитации нажатия клавиш, как оказалось, не всегда работает быстро и правильно.
@silentage6310
@silentage6310 3 ай бұрын
сенсорные кнопки - ужас. если сенсорное вас устраивает, то проще взять старый телефон или планшет и спец ПО которое будет отправлять команды, там же можно и лайауты менять легко. но кнопки лучше настоящие тактильные... есть свичи от мех клавы и есть прозрачные капы.
@nanoslavic
@nanoslavic 3 ай бұрын
Эти все программные утилиты тормозные и глючные. У меня задача: я смотрю стримы певиц, пока ем. И мне нравится делать скрины с этих стримов. Портить рабочую клавиатуру не хочу. Сенсорная панель идеальна для мокрых рук, а реальное USB устройство работает быстро, поэтому я могу точно делать скрины с эмоциями стримерши, а также быстро их вставлять в редактор и кидать в телеграм:) Именно поэтому и возникла идея сделать данное устройство. Но согласен, что механические кнопки будут удобнее, правда они не подходят под мокрые руки:)
@silentage6310
@silentage6310 3 ай бұрын
@@nanoslavic я еще для этих целей покупал доп цифровую клавиатуру (300р) и есть программы которые позволяют на разных клавиатурах перебиндить клавиши. то есть NUM9 например на основной и доп клавишах станут разными кнопками...
@OzzyBone
@OzzyBone 3 ай бұрын
Было бы куда прикольные, если бы ты добавил дисплейчики 32х32 под кнопки Хотя тогда уж можно сенсорный дисплей юзать
@nanoslavic
@nanoslavic 3 ай бұрын
Ну это уже разработка совсем другого уровня и по стоимости, и по сложности:)
@maxpsyh3389
@maxpsyh3389 3 ай бұрын
Вы только что изобрели первое поколение "Оптимус" от Лебедева (аж 2005 год). Стоило это счастье даже по его меркам просто космических денег. Во втором поколении сделали один сплошной экран и прозрачные кнопки.
@OzzyBone
@OzzyBone 3 ай бұрын
@@maxpsyh3389 я ничего не изобретал, и Лебедев тоже. Такие штуки называются сейчас стримдек и были до него. Впервые подобная идея была высказана 1988 году.
@maxpsyh3389
@maxpsyh3389 3 ай бұрын
@@OzzyBone Стримдеки (те что попадались лично мне на глаза) - это как раз второй вариант - просто сенсорный планшет, к которому сверху приделана рамка с кнопками. А у Тёмы были именно что честные отдельные экраны в каждой кнопке. Из-за чего там каждая клавиша стоила как дешёвая проводная клавиатура.
@OzzyBone
@OzzyBone 3 ай бұрын
@@maxpsyh3389 они разные есть. И да, там не сенсорные кнопки, а физические. И, кстати, там отдельные дисплеи, так как проще встроить дисплей в кнопку, над механизмом нажатия, с гибким шлейфом, чем думать, как же так сделать кнопку прозрачной, что бы был виден дисплей, но при этом что бы впихнуть над дисплеем механизм нажатия. К примеру, 0,96 дюйма TFT дисплей стоит 1$ при оптовой закупке небольшой партии, сейчас просто по быстрому прогуглил
@SIM31r
@SIM31r 3 ай бұрын
Из плюсов кстати защита от воды сама собой получается. Механические кнопки более проблемные, их нужно защищать от воды и брызг.
@nanoslavic
@nanoslavic 3 ай бұрын
Да, я специально сделал, чтобы можно было нажимать мокрыми руками, когда ем:) Удобно делать скрины со стримов.
@NeriNayt
@NeriNayt 3 ай бұрын
Цена, говорит, у них не большая... В среднем 2т. 🤨 Ок....
@nanoslavic
@nanoslavic 3 ай бұрын
Если вы про готовые клавиатуры, то у них 2 тыс это действительно дешёвая цена, если сравнивать с фирменными программируемыми кнопками типа StreamDeck, которые стоят больше 14 тыс за 15 кнопок:) А у этих красных сенсорных модулей цена 100 рублей за 10 штук, плюс контроллер 400 рублей. То есть, самодельная выходит дешевле 1000 рублей со всеми материалами.
@OzzyBone
@OzzyBone 3 ай бұрын
Сенсор для такой панели, конечно, то ещё извращение Механические свичи - тоже Единственный нормальный вариант - это панели от производителей графических планшетов с ножничными клавишами и нормальными колёсиками Хотя панель от Xp-pen имеет ряд недостатков, один фиг ..
@nanoslavic
@nanoslavic 3 ай бұрын
Ну тут уже каждый может под себя выбрать то, что лучше подходит.
@Mavric_
@Mavric_ 3 ай бұрын
Есть модули на 8 сенсоров...
@nanoslavic
@nanoslavic 3 ай бұрын
Да, но в наличии не было:) Я бы лучше механические кнопки поставил, но их тоже не было нормальных:) Главная идея тут - в прошивке, которая превращает модуль в клавиатуру.
@user-yn1oq5se6p
@user-yn1oq5se6p 3 ай бұрын
а мог за потротаху купить сенсорный дисплей и не заниматься чушью
@nanoslavic
@nanoslavic 3 ай бұрын
Ну у меня это вышло рублей за 400 :) Плюс я разобрался с созданием USB клавиатуры и теперь могу сделать много разных вариантов под свои задачи.
@SIM31r
@SIM31r 3 ай бұрын
Тут размер не ограничен.
Не хватает Arduino? Выход есть STM32!
9:36
VirF Live Productions
Рет қаралды 202 М.
ПОМОГЛА НАЗЫВАЕТСЯ😂
00:20
Chapitosiki
Рет қаралды 3,8 МЛН
Gym belt !! 😂😂  @kauermotta
00:10
Tibo InShape
Рет қаралды 18 МЛН
Box jumping challenge, who stepped on the trap? #FunnyFamily #PartyGames
00:31
Family Games Media
Рет қаралды 22 МЛН
Опасность фирменной зарядки Apple
00:57
SuperCrastan
Рет қаралды 12 МЛН
UI на ESP32 своими руками при помощи LVGL
12:34
Kirill Ivanychev
Рет қаралды 6 М.
Создание качественного USB-C микрофона
21:30
Студия озвучки "Acting"
Рет қаралды 123 М.
STM32 на Linux
39:19
Crazy Geeks
Рет қаралды 16 М.
ноутбуки от 7.900 в тг laptopshoptop
0:14
Ноутбуковая лавка
Рет қаралды 3,6 МЛН
Nokia 3310 top
0:20
YT 𝒯𝒾𝓂𝓉𝒾𝓀
Рет қаралды 4,5 МЛН
$1 vs $100,000 Slow Motion Camera!
0:44
Hafu Go
Рет қаралды 29 МЛН
Todos os modelos de smartphone
0:20
Spider Slack
Рет қаралды 66 МЛН
Мой новый мега монитор!🤯
1:00
Корнеич
Рет қаралды 3,6 МЛН