惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

IT之家
IT之家
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
A
About on SuperTechFans
博客园 - 聂微东
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
B
Blog RSS Feed
U
Unit 42
Stack Overflow Blog
Stack Overflow Blog
Recent Announcements
Recent Announcements
雷峰网
雷峰网
罗磊的独立博客
Microsoft Security Blog
Microsoft Security Blog
Hugging Face - Blog
Hugging Face - Blog
L
LangChain Blog
人人都是产品经理
人人都是产品经理
The GitHub Blog
The GitHub Blog
F
Fortinet All Blogs
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
H
Help Net Security
P
Proofpoint News Feed
The Cloudflare Blog
D
Docker
大猫的无限游戏
大猫的无限游戏

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания
Делаем любимую механику беспроводной: BLE-адаптер для Kin...
artyomsoft ( · 2026-05-19 · via Все публикации подряд на Хабре

Уровень сложностиСредний

Время на прочтение6 мин

Охват и читатели1.1K

Кейс

Продолжаю рассказывать о своём опыте создания BLE адаптера для USB-клавиатуры, которым уже пользуюсь каждый день.

Собранный ранее на макетной плате адаптер с подключённым pico debug был хорош тем, что можно было экспериментировать, набираться опыта, но пользоваться таким адаптером как устройством неудобно: нет корпуса и нет автономного питания.

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

Стремление к универсальности часто приводит к неудобным решениям, поэтому я сосредоточился на своей клавиатуре Kingston HyperX Alloy.

Если у вас другая клавиатура, вам придётся корректировать и разрабатывать свой корпус или каким-то образом колхозить внутри клавиатуры, но я не сторонник идеи внесения правок в оригинальные устройства.

У моей клавиатуры есть разъём мини-USB, поэтому от USB-шнура можно избавиться, не разбирая клавиатуры. Именно это стало для меня стимулом довести проект до конца.

Схема с автономным питанием

Я не стал изобретать велосипед и использовал готовые модули.

Понадобились:

  • LiPo батарея на 1000 мАч,

  • модуль зарядки TP4056,

  • повышающий DC-DC преобразователь на 5 Вольт,

  • Raspberry Pi Pico W,

  • вилка mini-USB,

  • переключатель EG1201,

  • угловой штыревой PLS разъём,

  • Dupont-разъёмы типа «вилка»,

  • Dupont-разъёмы типа «гнездо»,

  • соединительные провода.

Последние два пункта нужны для удобного отключения Raspberry Pi Pico и батареи.

Схема выглядит следующим образом.

Cхема BLE-адаптера

Cхема BLE-адаптера

Выходное напряжение модуля зарядки такое, же как и у Li-po батареи: 3.7 Вольта. USB-клавиатуру можно запитать от модуля напрямую, и, скорее всего, всё будет работать, но использование DC-DC преобразователя необходимо, чтобы подавать питание 5 В на клавиатуру, требуемое спецификацией USB.

Для удобства схему питания (батарею, модуль зарядки и DC-DC преобразователь) отделил от Raspberry Pi Pico Dupont-соединением.

USB

В самом простом случае USB — это четыре провода:

  • +5В (красный),

  • GND (чёрный),

  • Data- (белый),

  • Data+ (зелёный).

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

В BLE-адаптере Raspberry Pi Pico W является USB-хостом, к которому подключается USB-устройство в виде клавиатуры.

Клавиатура питается от хоста, поэтому подавать питание клавиатуре нужно от Raspberry Pi Pico W.

Изначально хотел просто спаять провод micro-USB — mini-USB, но потом узнал, что на обратной стороне Raspberry Pi Pico есть тестовые точки, куда выведены Data+, Data- и GND USB-разъёма, к которым можно припаяться. Питание 5В для клавиатуры берётся с пина VBUS Raspberry Pi Pico.

Обратная сторона Raspberry Pi Pico

Обратная сторона Raspberry Pi Pico

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

Тестовая точка

Назначение

Цвет подключаемого провода

TP1

GND

чёрный

TP2

Data-

белый (жёлтый)

TP3

Data+

зелёный

Тестовые точки и VBUS нужно соединить с male-разъёмом mini-USB.

Распиновка приведена ниже:

Пин

Назначение

Цвет провода

1

+5В

красный

2

Data-

белый (жёлтый)

3

Data+

зелёный

4

ID

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

5

GND

чёрный

Распиновка  mini-USB

Распиновка mini-USB

или, чтобы было понятнее:

Обратная сторона mini-USB male-разъёма

Обратная сторона mini-USB male-разъёма

Pin ID, если посмотреть на схему Raspberry Pi не используется Pico, поэтому ничего к нему не припаиваем.

Главное — не спешить и несколько раз перепроверить, как вы припаяли провода

Корпус

Расположение разъёма mini-USB позволяет сделать адаптер немного похожим на небольшой картридж. Нужно разобраться с размерами и креплением.

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

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

Как поведёт себя выбранное решение, покажут несколько месяцев эксплуатации, пока своим решением доволен.

Вид корпуса спереди

Вид корпуса спереди

Вид корпуса снизу

Вид корпуса снизу

Разработка корпуса — увлекательный итеративный процесс, требующий применения инженерных решений. Навык работы с CAD 3D-системами необходим для создания корпусов. Освоить базовые приёмы можно за пару недель, если у вас нет опыта.

Создание 3D-модели корпуса

В таких средах как Solidworks или Компас 3D можно выполнять параметрическое моделирование, которое позволяет рассмотреть различные варианты корпусов. Главное — правильно выбрать базовые размеры.

Хотя 3D-моделирование упрощает жизнь, всё-таки парочку вариантов детали желательно напечатать на 3D-принтере, так как некоторые нюансы замечаешь, когда щупаешь модель руками.

Я поленился и не стал искать 3D-модель своей клавиатуры, в результате упустил из виду важный размер, который не позволял разместить адаптер под клавиатурой. Пришлось делать адаптер тоньше и утончать стенки корпуса.

Распечатка корпуса на 3D-принтере

Созданная трёхмерная модель корпуса — это полдела, модель нужно превратить в набор инструкций для принтера: как передвигать экструдер (печатающую головку) и стол, когда включать вентилятор, какую температуру использовать для плавления филамента (пластика).

Делается это в специальной программе — слайсере. Из всего разнообразия слайсеров я выбрал BambuStudio, так как принтер у меня Bambu Lab.

Преобразование построенной модели в слайсере для 3D-печати, если нет особенных требований к качеству корпуса — процесс, который можно освоить за несколько часов, особенно при наличии опыта печати на 3D-принтере.

Одним из ключевых моментов является то, как вы расположите модель на столе принтера. От этого зависят внешний вид, точность геометрии и прочность детали.

Также нужно определиться, какой тип пластика вы используете, как правило, для корпусов самодельной электроники используются PLA, PETG или их разновидности. Я использовал PLA, но PETG обладает лучшими характеристиками. PLA больше подходит для печати прототипов или художественной печати.

STL-модели деталей корпуса и файлы, созданные в слайсере, находятся моём репозитории на GitHub в директории 3d.

Верх корпуса

Верх корпуса

Низ корпуса

Низ корпуса

Сборка

Разобранный корпус и его содержимое

Разобранный корпус и его содержимое

Сборка всего адаптера проста:

  1. Навесным монтажом собирается электронная схема.

  2. На двухсторонний скотч к нижней части корпуса приклеивается батарея, модуль зарядки, DC-DC преобразователь.

  3. К внутренней части верхней крышки на двухсторонний скотч крепится Raspberry Pi Pico.

  4. Соединяется схема питания и Raspberry Pi Pico.

  5. Две части корпуса соединяются на шурупах.

  6. Вилка mini-USB вставляется в разъём mini-USB клавиатуры.

  7. Корпус крепится к клавиатуре на двухсторонний скотч.

Собрать можно и без dupont-разъёмов, но гораздо удобнее, когда можно удобно при необходимости отсоединить Raspberry Pi Pico или батарею.

Установка прошивки

Прошивка находится в моём репозитории GitHub. Так как теперь адаптер уже готовое решение, то можно использовать прошивку в виде файла в формате UF2.

UF2 — формат, разработанный Microsoft, позволяющий обновлять прошивку без сложных программ. Обновление прошивки выполняется загрузчиком, на плате устройства. Загрузчик нужно перевести в специальный режим, где он эмулирует внешний USB-диск. Для обновления прошивки нужно записать на этот диск файл прошивки в формате UF2.

Для Raspberry Pi Pico это выглядит так:

  1. Зажимаем на Pico кнопку Boot.

  2. Подключаем к разъёму USB компьютера.

  3. Отпускаем кнопку Boot.

  4. На появившийся диск копируем файл прошивки.

Чтобы ничего не спалить, лучше отключите Pico от остальных компонентов устройства.

Потребление тока

Так как адаптер использует аккумулятор, нужно рассмотреть энергоэффективность разработанного устройства.

Замеры потребления тока оказались следующие:

Сценарий работы

Потребляемый ток от аккумулятора

USB-клавиатура не подключена

47 мА

USB-клавиатура подключена

84 мА

Выполняется печать на клавиатуре

100…110 мА

При использовании батареи ёмкостью 1000 мАч адаптер способен проработать 8–9 часов. Время автономности можно немного увеличить, используя энергоэффективные режимы работы Raspberry Pi Pico.

Сама USB-клавиатура потребляет достаточно много тока, поэтому я не стал усложнять прошивку. Хотя осталась интересная задача по энергоэффективности.

Забавный факт, но маленький USB-донгл для беспроводной клавиатуры потребляет больше тока, чем USB клавиатура Kingston HyperX Alloy (общее потребление тока 127 мА вместо 84 мА у моей Kingston).

Выводы

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

Использование готовых модулей значительно упрощает задачу создания автономного питания для Raspberry Pi Pico W.

Полученный в итоге адаптер можно использовать в повседневной жизни. Большую роль в завершённости устройства играет корпус.

CAD-системы и 3D-принтеры значительно упрощают разработку и изготовление DIY-устройств.

Разработка корпуса — итеративный, творческий и увлекательный процесс, 3D принтер позволяет быстро получить и опробовать прототип.

В своём корпусе я бы добавил ещё несколько отверстий для крепления, но и разработанный является юзабельным.

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

Энергопотребление устройства достаточно высокое, но заряда аккумулятора должно хватать на один рабочий день. Можно увеличить ёмкость батареи или посмотреть в сторону спящего режима Pico, но и сама USB-клавиатура потребляет значительное количество тока.

© 2026 ООО «МТ ФИНАНС»