![](https://habrastorage.org/getpro/habr/upload_files/152/783/a65/152783a65522b3db161bee1301b60898.png)
Как известно, движение — жизнь. А пошаговое движение — надёжный путь к любой цели (даже если эта цель в простом движении по кругу). Вот и я, лениво передвигаясь по бесконечной ленте товаров китайского маркетплейса наткнулся на необычный гаджет. Называется это чудо китайской инженерии «Xiaomi Cyber Gear», и мимо трёх этих слов нельзя пройти спокойно, если проживаешь в 2024-м году.
В сущности, это и не гаджет даже, а компонент для Xiaomi Cyber Dog. Эта робо‑псина не так популярна в Ютубе и в России, как изделия от Unitree, но видимо достаточно популярна, чтобы продавать к ней запчасти. Впрочем, любителям DIY, к коим я себя причисляю, данный моторчик тоже может быть интересен.
Сразу оговорюсь, цена за одну штуку около ста долларов и это не то, что можно хотеть в качестве дополнения к мигающему светодиоду. Кажется, что робо‑руки, робо‑ноги и прочие дорогие и мощные устройства будут более подходящими проектами для применения этого чуда техники.
Встречают в коробке, а провожают в ящике... В общем, встречает нас красивая картонная коробка, как от смартфона, не какой‑то антистатический пакетик. Внутри коробки китайская агитация, qr‑код на WiChat с кошка‑жена, радикально чёрный демпферный пенопласт и сам мотор. Тоже чёрный.
![](https://habrastorage.org/getpro/habr/upload_files/699/a08/110/699a0811021fdf552c5ed33c42e3dab1.png)
Первое впечатление от него, в самом деле, как от любого гаджета Xiaomi, это впечатление очень дорогой, почти премиальной вещи (на фото я уже залапал эту вещь, извините, не смог удержаться).
![](https://habrastorage.org/getpro/habr/upload_files/a20/36d/f36/a2036df3636c8a9292539b16fa7c7936.png)
Самое главное, что можно рассказать про этот двигатель: это шаговый двигатель со встроенным энкодером и контроллером, взаимодействие с которым происходит по CAN-шине на скорости 1Мбит. Питается мотор от 24-х вольт, максимальное число оборотов - около трёхсот в минуту, минимальное - очень медленно. Детали можно прочитать в справочном буклете из коробки.
![Xie xie! Xie xie!](https://habrastorage.org/getpro/habr/upload_files/5ae/c8d/9a4/5aec8d9a48d91147c937b29f2bb5faaf.png)
У мотора есть своё приложение-компаньон для Windows, из него можно подавать тестовые команды мотору, смотреть за показателями датчиков. Из него же мотору можно... обновить прошивку. Но я с приложением не стал связываться, так как оно на китайском целиком и полностью.
Ещё один интересный факт. Драйвер для мотора на основе socketcan я нашёл в GitHub, он был написан, внезапно, на Swift, в этот момент я узнал, что Swift для сервера существует и вполне себе жив. После недолгого этапа вкатывания мне даже понравилось. Есть в нём определённая лёгкость. Впрочем, мы не об этом сегодня собрались.
![Питание и CAN-шина Питание и CAN-шина](https://habrastorage.org/getpro/habr/upload_files/dba/bee/9b2/dbabee9b279e02eae6dcdcb70a9d15a3.png)
Драйвер взаимодействует с двигателем по CAN‑шине, позволяет управлять скоростью в режиме двигателя «speed», углом поворота и скоростью в режиме позиционирования «location», также позволяет управлять током в режиме «current», но я не пробовал, наверное, это для робо‑собаки и имитации работы мышц, а у меня был другой тип нагрузки.
Двигатель очень мощный, на мой взгляд, руками его не остановить. Энкодер точный, но не сильно точный, с ним приходится играть в «доведи меня до нужной кондиции» в несколько приёмов на разной скорости. Чем‑то напоминает... а впрочем не будем об этом.
Управлял двигателем из RPi 4 + СAN hat (но работает и с обычным MCP2515 и со встроенным в ESP32 can‑драйвером). Там же, внутри RPi писал код через VSCode Remote + Swift, как я и сказал, всё получилось довольно легко и удобно, двигатель уже описан высокоуровневыми классами и методами, думать о байтах не пришлось вовсе. Выглядит код примерно так:
let motorA = CyberGear.Motor(canID: 017, bus: canBusA)
try! motorA.runMode(.speed)
try! motorA.enable()
На видео демонстрация плавного набора скорости (в цикле и через Task.sleep(), простите, люди добрые)
По звуку он больше всего напоминает троллейбус или электросамокат, видимо, так и должно быть.
В целом очень приятный DIY-компонент, современный и удобный. Это как раз тот компонент в проекте (о котором я никогда не расскажу) с которым не возникло никаких проблем. Подключил и забыл. Рекомендую.
Ссылка на драйвер: https://github.com/CmST0us/CyberGearKit