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

推荐订阅源

有赞技术团队
有赞技术团队
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
P
Palo Alto Networks Blog
C
Cisco Blogs
The Hacker News
The Hacker News
T
Threatpost
S
Schneier on Security
K
Kaspersky official blog
Spread Privacy
Spread Privacy
博客园_首页
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
NISL@THU
NISL@THU
量子位
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Google DeepMind News
Google DeepMind News
Security Latest
Security Latest
博客园 - 司徒正美
云风的 BLOG
云风的 BLOG
博客园 - 叶小钗
H
Hackread – Cybersecurity News, Data Breaches, AI and More
N
News and Events Feed by Topic
爱范儿
爱范儿
P
Proofpoint News Feed
C
CERT Recently Published Vulnerability Notes
Project Zero
Project Zero
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Cisco Talos Blog
Cisco Talos Blog
GbyAI
GbyAI
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Apple Machine Learning Research
Apple Machine Learning Research
T
Tenable Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
V
Vulnerabilities – Threatpost
Forbes - Security
Forbes - Security
博客园 - 三生石上(FineUI控件)
C
Cyber Attacks, Cyber Crime and Cyber Security
N
News and Events Feed by Topic
V
V2EX
Webroot Blog
Webroot Blog
The Register - Security
The Register - Security
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
阮一峰的网络日志
阮一峰的网络日志
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Blog — PlanetScale
Blog — PlanetScale
M
MIT News - Artificial intelligence
Scott Helme
Scott Helme
Simon Willison's Weblog
Simon Willison's Weblog
L
LangChain Blog
W
WeLiveSecurity
Cloudbric
Cloudbric

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

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет 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 за минуты Опыт разработчика как экономика внимания Автономность как точка невозврата: кто будет субъектом в цифровом будущем Обучение ИИ в «диких» условиях: как рутинные действия превращаются в датасеты Как измерить LLM для задач кибербеза: обзор открытых бенчмарков Где хранить код? Сравнение GitHub, GitLab и Bitbucket Математика объясняет, почему нормальное распределение встречается повсюду Почему ваш FinOps не работает: 12 тезисов от практиков Как подписать проектную документацию УКЭП с использованием бесплатных лицензий Pilot Адаптивное администрирование Sigla Vision Я грузил уран в бочки, а потом 20 лет строил ИТ в атомной отрасли Чем позвонить с Эвереста? История и обзор спутниковой связи. Часть 2 Как языковая модель помогает контролировать качество инструктажей по охране труда в металлургии Как не передать на desktop свой IP в РКН Анатомия SAP Privileges: как устроено управление правами в macOS MoneyDev: Сказка про три главных слова Обновлённый токенизатор видео K-VAE 2.0 от Сбера Как сделать диспетчеризацию дома на 1284 квартиры почти бесплатно Как мы разогнали железную дорогу Мы дали агентам рутину. Теперь надо решить — что делать с освободившимся временем Токсичный контент, промпт-хакинг и защита ИИ — всё о Guardrails для LLM Умный город начинается с точного взгляда: как «Фалькон Тех» меняет пространство к лучшему Навайбкодил приложение для анализа графов Почему Дюну так интересно читать? Упрощаем работу с рутиной или как стать Гендальфом Белым Деконструкция Go: CPU, RAM и что там происходит. Go Assembler база. Часть 1.1 Какие профессии исчезнут из-за ИИ, а какие появятся? И что с этим делать Как мы построили IT-отдел, где хочется расти: архитектурные встречи, прозрачные метрики и книжные подарки Rufler: Делаем из Claude Code автономный рой через один YAML-конфиг Sing-box и белый список приложений Как построить надёжный обмен сообщениями в микросервисах: лучшие практики для enterprise OpenAI строит MLM-пирамиду, а McKinsey и Accenture помогают ей в этом Дом, который не построил Фишер (Часть 2) «Сверхзвуковой математик» против «Вдумчивого логиста»: битва алгоритмов 3D-упаковки Мультимодальные модели – грубый и дорогой инструмент Разговоры ничего не стоят. Код тоже Проверки физических лиц: с кого начнет ФНС Топ-10 бесплатных нейросетей для создания видео в 2026 году Первые слои кода: как наши решения сегодня определяют архитектуру ИИ на десятилетия Разработка нового статического анализатора: PVS-Studio JavaScript Поиск уязвимостей ПО: базовый минимум или роскошный максимум Почему оценка персонала не работает как инструмент управления Как мы разработали ИИ-ассистента и сократили рутину продуктовой команды на 50% Как я ушел из найма, нажарил косточек и продал на маркетплейсах на 168 млн в год Когда 1С:ERP уже внедрена, а нормального производственного плана всё ещё нет Как я сделал Claude мультимодальным, подключив к нему Qwen Omni Как приглашение на вакансию мечты превращается в атаку Infrastructure as Code: философия и лучшие практики IaC Тестируем Yandex Code Assistant на задаче, в которой нужно хранить секреты nxs-universal-chart v3.0: новое поколение универсального Helm-чарта Callback Injection: Техника, которая отправила Microsoft Defender в глухой нокаут «Все идеи на стол»: митап как способ вывести проект из тупика Сегодня я узнал нечто новое о GPU благодаря багу в своей игре Как заставить LLM ̶ ̶г̶а̶л̶л̶ю̶ ̶ эволюционировать Карта событий как фундамент аналитики: практический кейс для E-commerce Что выбрать для AI: x86, ARM или RISC-V? Дайджест железа за март Роль соматических мутаций в развитии аутоиммунных заболеваний: путь к избирательной терапии Mythos от Anthropic — тревожный сигнал для всех, а не только для банков Guardrails для LLM на Java: как приручить промпт‑инъекции и токсичные ответы Green-VLA: как мы собрали VLA-модель для реального антропоморфного робота и не потеряли обобщение Финансовая гонка вооружений: почему умные люди добровольно в ней участвуют Эра ИИ-агентов наступила: выбираем лучшего цифрового сотрудника # Практический опыт внедрения WinCC Redundancy на производственном предприятии Сделал MVP за 3 дня, а потом неделю прикручивал оплату. Оно того стоило? Физика против Маска: почему Starship V3 может оказаться ещё одной катастрофой Нефть Венесуэлы: крупнейшие запасы в мире, но не крупнейшая нефтяная держава JPA 4. Переосмысление Hibernate Почему зеркальная фотокамера Nikon D5 десятилетней давности идеально подошла для миссии «Артемида-2» Проект «Уровень-Спутник» или как мы сделали платформу для гидрологов «Замедлиться, чтобы ускориться»: почему ИИ повышает цену ошибок в требованиях и архитектуре Как с нуля поднять трафик IT-компании на 1657% при бюджете 55 тыс. и выжить Pixel-perfect Downsampling — идеальная отрисовка 50 миллионов точек без потерь
Делаем любимую механику беспроводной: BLE-адаптер для Kingston HyperX Alloy FPS на базе Raspberry Pi Pico W
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 ООО «МТ ФИНАНС»