Привет, Хабр!

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

Кинематика

Сразу было решено использовать только один мотор-редуктор для привода всех четырёх ног лошади. Распространённые кинематические схемы Чебышева и Клана мне не подходили, так их движения не похожи на реальные движения ног животных. В роботах, таких как «робособаки», сгибание в бедре и в колене конечно выполняют отдельные моторы. Но если проанализировать ходьбу и упростить, то видно, что временные периодические зависимости угла сгиба бедра и колена сдвинуты на 90°. Сдвиг фаз на 90° можно получить схемой 1.

Кинематическая схема получения траектории ходьбы двумя суставами из вращательного движения
Кинематическая схема получения траектории ходьбы двумя суставами из вращательного движения

Но можно упростить ещё, сделав по схеме 2.

Кинематика задних и передних ног из вращательного движения коленвалов.
Кинематика задних и передних ног из вращательного движения коленвалов.

Моделировал в SolidWorks, за несколько десятков подгонов выбрал оптимальные длины ног и рычагов.

оптимальные длины ног и рычагов.
Передняя нога, реальные размеры
Передняя нога, реальные размеры
Сборка
Сборка

Для задних ног было посложнее, так как ось вращения ведущего коленвала выше, чем ось бедра (а должна быть на уровне 45°) и сдвиг фаз не был 90°. Но в целом вышло приемлемо для первого раза. Если кому интересна кинематика – поделюсь файлами сборки.

Весь механизм приводится одним мотор-редуктором JGA25-370 6В 200 об/мин. Скорость регулируется широтно-импульсной модуляцией (ШИМ) и составляет от 0 до 2 шагов в секунду.

Медные заклёпочки, алюминиевые "кости"
Медные заклёпочки, алюминиевые "кости"

Устойчивость такой простой лошадки отсутствует, потому что это не робот с динамическим поддержанием равновесия. Чтобы предотвратить её падение, я использовал санки в качестве дополнительной опоры и фиксации корпуса.  Оглобли (палки до саней) выполнены с жёстким креплением к корпусу саней. За противоположные концы крепится кольцо хомута, а хомут жёстко надет на лошадь так, чтобы он не проворачивался, здесь отошёл от реализма. Вся конструкция блокирует кренящий момент от ходьбы и удерживает лошадь более-менее ровно.

Поворот

Возможность поворота всей повозки в движении должна быть. Но как реализовать? Проще было бы сделать руль на санках, например дополнительную поворотную лыжу. Решил погнаться за естественностью и лошадью ходить  поворачивать самим конём. Между оглоблями достаточно зазора, чтобы заднюю часть коня сдвигать влево и вправо. 

В санках установлена сервомашинка SG-90, со шкивом. На нём намотана прочная нить, которая выходит через 4 петли, до корпуса лошади. Там концы нитей крючками зацеплены под брюхом. Посредством поворота вала сервомашинки происходит перемещение задней части лошади, то есть меняется направление вектора движения до 12 градусов, что достаточно для поворота. Общий натяг ниток ещё и дополнительно удерживает корпус лошади по вертикали.

Белая нить пропущена через шкив (слева), её концы прикреплены под брюхом лошади
Белая нить пропущена через шкив (слева), её концы прикреплены под брюхом лошади

Санки

Санки изготовлены из фанеры, 3D-печати и вспененного ПВХ на полозьях. Внутри находятся аккумуляторы, плата с приёмником и контроллером. Начинка закрыта сверху шерстяным покрывалом. Из украшений — светодиоды.

Управляющая электроника

Основа – микроконтроллер APM32F030K6 (клон STM32F), потому что дёшев и удобно паять. На плате к выводам МК подключены силовые ключи для ШИМ двигателей и для света. По UART подключен модуль Bluetooth JDY-34. Также, один из GPIO используется как программный UART для управления аудиомодулем JR6001. Питается всё от двух 18650, с DCDC 5В для сервомашинки, Bluetooth и аудиомодуля.

Схема
Схема подключения МК и разъёмов внешних устройств
Схема подключения МК и разъёмов внешних устройств

Радиосвязь через модуль Bluetooth JDY-34. описание здесь. Модуль применяю уже несколько раз, удобен в использовании и поддерживает режим прозрачного радио-UART, и если надо, поддерживает Мастер. Здесь реализован простой режим прозрачного радио-UART, поэтому никаких подготовительных действий от МК не требуется. (* расширить настройки)

Подключившись к JDY-34 по UART, с терминала достаточно подать команды (каждая заканчивается #10#13)
  • Установить скорость обмена 9600 бит/с. AT+BAUD4

  • В прозрачном режиме надо отключить эхо. AT+ENLOG0

  • По желанию – указать имя модуля. AT+NAMEZIMAKONY

  • Установить режим №1. AT+BTMODE1

Аудиомодуль я взял вот такой MP3-модуль JR6001 – описание здесь. Для питания модуля JR6001 необходимо напряжение 5 В. Динамик 34мм 8 Ом подключен к выводам SPK+ и SPK-. Громкости хватает 3 метра.

Почему использовал не модуль с micro-SD ? – они дольше ищут мелодию и требуют карточки. Здесь в 4 Мб я впихал 10 новогодних мелодий и звуков (64 кб/с). Файлы скопированы простым подключением модуля по USB. Имена файлов должны быть как номер «00001.mp3» и так далее. Управление идёт по программному UART, так как второго порта в МК нет (реализовать несложно, там только передача). Из важного в этом модуле – настройки режима и громкости энергонезависимы, поэтому один раз их настроил с компьютера, а МК только даёт команду на воспроизведение конкретной мелодии. Осуществляется командой A7 с указанием номера «A7:00005» - будет играть «00005.mp3».

Программная часть

Главный таймер в МК на частоте 20 Гц обрабатывает команды от Bluetooth, устанавливая скорость, поворот, свет и проигрывание мелодии. Ещё измеряется напряжение аккумулятора, но телеметрия отключена. Отдельный таймер с ШИМ для мотора и задания длительности импульса 0,5 - 2,5 мкс для сервомашинки . Отдельный таймер 9,6 кГц для программного UART.  

Управление игрушкой

Передатчик на БТ делать просто не хватило времени, взял готовую программу Bluetooth robot control для смартфона. Там протокол слегка куцый, но хватило. Кнопки движения и поворота есть, свет есть, а на слайдер повесил воспроизведение мелодий (от 1 до 10), плюс ржание и фырканье.  

 Bluetooth robot control

Фото процесса

Внутренности корпуса. Фазу между передними и задними ногами можно было менять
Внутренности корпуса. Фазу между передними и задними ногами можно было менять
Голова коня, работа ножом, это вам не новомодные 3D-печати)) кто угадает источник материала?
Голова коня, работа ножом, это вам не новомодные 3D-печати)) кто угадает источник материала?
Шьём ноги
Шьём ноги
Покрашенная голова, ну я не художник)
Покрашенная голова, ну я не художник)
Середина сборки. Ткань частично приклеена, частично пришита
Середина сборки. Ткань частично приклеена, частично пришита
С гривой и ножками
С гривой и ножками
Всё целиком
Всё целиком

И босстали машины из бепла...

Видео теста на ковре https://rutube.ru/video/private/ca3001c2ead001ae03ba4170b0e95679/?p=wKEsQiMSdKN6nkxoAVCbBw и вид из санок https://rutube.ru/shorts/c6ecca83e9c70c8f2c870fc5af5932a4/

Видео в снегах https://rutube.ru/video/private/8662024b4b725c3caebdaf7ded818ff5/?p=gYMmaUmcY7mAYL6b4ps_5g и ещё https://rutube.ru/video/private/d55e0e13460859bb95ff88e8e8a805d8/?p=06baJKeTfD1Y3ZpG7SsKdA

Итоги

Как хотел - получилось. Даже местами красивее, чем ожидал. Идёт, поворачивает, поёт. В закупке 2300 р. без аккумуляторов. В движении загребает задними ногами потому что там больше массы и оглобли чуть выше чем надо, а их уже не передвинуть. Полная скорость намного быстрее, чем на видео. Не доделана сбруя, нет коромысла. Сложно разобрать, если сломается механизм.