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

Вдохновившись картинками и видео решил опробовать свои силы. Разработка корпуса, электроники и программы будет вестись с 0.

Итак, часть 1 — разработка 3D модели корпуса


Исходные материалы и комплектующие для будущего робота:

0. Arduno Due (писать будем в Atmel Studio на чистом C без Arduino IDE, заодно расскажу как подключить отладчик к этой плате) — 1шт;

1. HLK-RM04 (UART to WIFI converter) — прозрачный мост с UART в WIFI — 2шт;

2. Сервоприводы MG996R (из китая, как же без него) — 18шт;

3. LM317D2T-TR для питания сервоприводов + мелкая рассыпуха в виде резисторов и конденсаторов;

4. САПР «КОМПАС 3D»;

5. Фанера 3мм в качестве материала для корпуса (дёшево и пахнет вкусно);

6. Возможность заказать лазерную резку;

7. Время. Много времени.

В самом начале пути встал вопрос «А какой же корпус я хочу?». В процессе поиска ответа на данный вопрос набрел на несколько готовых решений. Больше всего понравились PhantomX и A-Pod. Посмотрев на корпуса, решил уже было начать разработку, но нет. Появилась следующая проблема: так как этих роботов в глаза я не видел и в руках не держал, то я имел плохое представление об их габаритах. В поиске решения этой проблемы я наткнулся на одну из статей на хабре. Автор статьи tomnewmann любезно поделился со мной чертежами своего проекта, за что ему большое спасибо.

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

Coxa


Спустя несколько часов размышлений появилась первая модель «Coxa» (так принято обозначать узел, соединяющий ногу с корпусом). Узел попытался сделать максимально компактным. Сервопривод будет полностью находится внутри, соответственно нужно не забыть (что я первый раз и сделал) про отверстие для вывода проводов.



Деталь 1 — Ось, на которую будет крепиться Femur (вторая часть ноги). Собрана из винта М3x15, шайбы и гайки М3
Деталь 2 — Винт М3x20
Деталь 3 — Стойка для печатных плат M3x20
Деталь 4 — Являются своего рода фиксаторами сервопривода, для предотвращения его перемещения по вертикали.

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


Femur


Далее нужно сделать «Femur». Деталь оказалась самой простой из всех и думаю не нуждается в комментариях.


Деталь 1 — Винт М3x20
Деталь 2 — Пластиковая втулка 3x10 (длинную стойку я не нашел, пришлось искать другие пути решения)
Деталь 3 — Стойка для печатных плат M3x30


Tibia


Следующая деталь — «Tibia», последняя часть ноги. С ней проблем быть не должно и её длина зависит от высоты, на которую планируется понимать робота. У меня она составляет 130мм от оси сервопривода, больше делать не стал, так как с увеличением длины увеличивается и нагрузка на сервоприводы, особенно на сервопривод в «Coxa». На второй стороне сделал на второе отверстие под ось, чтобы можно было перевернуть сервопривод и уменьшить длину рычага, если вдруг сервоприводам будет тяжело.



Рама


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

На первых этапах проектирования возник вопрос: «А на каком расстоянии должны находится ноги друг от друга?». В поисках ответа на этой вопрос я понял, что каких-либо рекомендаций по этому поводу нет. Изучая чужие проекты и варианты походок сделал вывод о том, что расстояние подбирается исходя из желаемого максимального угла поворота конечности. Чем больше расстояние между ногами тем больший угол могут достичь конечности во время ходьбы.

В решении данного вопроса помогли чертежи tomnewmann, из которых я и взял расстояние между ног, так как габариты роботов были довольно похожи (мой немного меньше). Спустя несколько часов родились верхняя и нижняя части рамы:



В нижней части рамы сделан вырез под АКБ и его крепления. Кстати крепиться он будет на липучку, которые используются на квадриках при креплении АКБ к ним. Рама получилось довольно большой. Посидев еще 1 вечер и сделав промежуточные детали в виде опор между частями, я решил, что пора сделать сборку рамы с установленными сервоприводами. Результат не заставил себя долго ждать:



Так как все необходимые компоненты у нас уже есть, то можно сделать полную сборку корпуса:



В центре корпуса между пластинами планировался располагаться блок питания для сервоприводов, снизу 3S Li-po аккумулятор, а сверху плата управления (Arduino Due). В соответствии с этим я изменил сборку рамы:


Плата сверху это модель Arduino Mega c каким-то шилдом. Используется просто для вида и имеет аналогичные размеры, как и Due.

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

Решением первой задачей являлись крышки сверху и снизу, закрывающие АКБ и управляющую электронику. Это единственные детали, которые будут собраны при помощи клея. Спустя вечер родилась модель нижней крышки.



Если с первой задачей проблем не было, то со второй задачей возникли трудности на 2 дня. Да, именно столько времени у меня заняло, чтобы просто придумать ему имя. Случайно вспомнив фильм «Терминатор» решил назвать его «Skynet» и вырезать имя на верхней крышке. Так же добавил вырезы для HC-SR04.



В результате добавления всего двух крышей, корпус существенно изменил внешний вид в лучшую сторону:



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

P.S.


  1. Чертежи: drive.google.com/open?id=1KHteI6MK5aWlVP0mCM4DmjNJArnF98Ur.
  2. Буду рад любой критике и готов ответить на любые вопросы в рамках данного материала.

Комментарии (45)


  1. MaxAlekseev
    29.09.2018 23:10
    +3

    На противоположной оси (винт М3x15) от выходного вала сервомотора желательно использовать подшипник, стоят они не дорого, а люфтов удасться избежать. Т.к 3-х звенная нога, то без подшипников последнее звено может порядочно гулять суммируя все люфты.

    ИМХО
    В целом проект достаточно велосипедный, на полке будет смотреться не плохо и друзьям можно будет показать. Как комплексная задача научиться/попроектировать/попаять/попрограммить вполне себе, с практической точки зрения на ардуино получится реализовать только простейшие движения, приблизительно реализовать движение паука по сложной поверхности не выйдет.


    1. Neoprog Автор
      29.09.2018 23:34

      Да, с счет подшипников Вы правы, люфт небольшой имеется, но в большей части он исходит от самих сервоприводов (дешевые). Отверстия под винты я сделал на 0.5мм меньше диаметра винта, чтобы плотно прижимало, но через время оно увеличится от трения. Думаю в следующем варианте корпуса добавлю. Это и есть одна из тех граблей, на которую я наступил.

      На счет ИМХО согласен, нечего революционного в нем нет. У меня такой подход к саморазвитию, т.е. я беру проект, в котором я мало разбираюсь и в процессе разработки закрываются пробелы в знаниях.

      Пока, что планирую хотя бы научить его обходить\отодвигать препятствия на ровной поверхности, ну и трансляцию видео по воздуху.


      1. MaxAlekseev
        30.09.2018 00:24
        +3

        Пока, что планирую хотя бы научить его обходить\отодвигать препятствия на ровной поверхности, ну и трансляцию видео по воздуху.
        Лучше сразу заложить Raspberry Pi 3 + 2 шилда для сервомоторов. В ардуино будет не развернуться, raspberry — это python + wi-fi + RPi камера и огромное количество библиотек для питона (openCV, нейросети и т.д.). Для такого проекта самое то, потому как в процессе развития хотелки гарантировано вырастут, поэтому лучше сразу заложить возможность развития проекта. Основная работа будет в программной части, ардуины будет мало, а УЗ датчик один из самых примитивных и «глючных».


        1. Neoprog Автор
          30.09.2018 00:35

          Готовые нейросети да, это очень круто. Спасибо за совет, нужно будет подумать. С Pi ни разу не работал.

          а УЗ датчик один из самых примитивных и «глючных»

          А можете посоветовать более нормальный аналог? Я знаю ИК датчики дистанции, но там тоже свои нюансы.


          1. MaxAlekseev
            30.09.2018 00:47
            +1

            Да по большему счету он вообще в данном проекте лишний, намучаетесь с ним. Платформа будет сильно наклоняться в процессе движения и датчик будет «хватать» пол + свои глюки. Достаточно ограничится камерой и управлением движением с ноута. Камера + OpenCV можно реализовать движение по линии. Если очень хочется в дистанцию то для помещения пойдет ИК GP2Y0A02YK (на улице будет ловить ложние срабатывания от солнца) Данных датчиков надо будет ставить несколько для объезда препятствий, по аналогии с парктроником. Так что я бы на дальномеры не закладывался, СТЗ куда интереснее.


            1. Neoprog Автор
              30.09.2018 10:40

              Спасибо. На счет управления движением с компа хорошая идея.


            1. Alex_ME
              30.09.2018 13:47

              Платформа будет сильно наклоняться в процессе движения и датчик будет «хватать» пол + свои глюки.

              Тогда уж две камеры, карта глубины и SLAM, чтобы наваерняка. Тут, конечно, без Raspbery не обойтись (правда, не знаю, хватит ли ее мощностей). USB-вебкамеры могут быть слишком большие для маленького аппарата и медленные, можно попробовать csi-камеры.


          1. Elmot
            30.09.2018 17:34

            Сейчас появились очень прикольные ИК датчики time-of-fly, например VL53L1X.


            1. Neoprog Автор
              30.09.2018 18:04

              Да, датчики крутые. Был бы рад ими завладеть)), но стоят они конечно прилично.


        1. DarkTiger
          30.09.2018 01:47

          Тогда уж Pi Zero — вес, потребление лучше чем у Pi3, а по сравнению с ардуиной — оба как небо и земля


          1. Newcss
            30.09.2018 19:53

            Есть Pi Zero W, с WiFi на борту))).


  1. OldGrumbler
    30.09.2018 07:09
    +1

    Использовать как ось резьбовую часть винта — моветон, потому что поверхности трения почти и нет в начале, а потом пойдет износ или отверстия витками резьбы, или самих витков. По уму та часть винта должна быть без резьбы, длиной в толщину фанеры и чуть большего диаметра. А совсем по уму — отверстия в фанере под оси втулить, иначе они быстро превратятся в дырки )))


    1. Neoprog Автор
      30.09.2018 11:26

      Да верно. Проще всего маленькие подшипники вставить, что я скорее всего и сделаю


  1. im_stD
    30.09.2018 09:10
    +3

    Автору для КДПВ…


    Недавно пересматривал «Прибытие», поэтому слово «гексапод» сразу ассоциировалось...


    1. slovak
      30.09.2018 16:42

      Прошу простить "зануда мод", но там количество конечностей было 7, а не 8. Так что "геПтаподами" прилетевших величали.
      Плюс на кдпв, предложенной Вами, у существа радиальная симметрия тела, чего нет у робота автора статьи.


      1. im_stD
        01.10.2018 08:29

        Да, Вы правы, гептаподы. Беру свое предложение обратно.


  1. third112
    30.09.2018 09:11

    А не лучше использовать дюраль или листовой пластик типа полистирола? Тонкая фанера не всегда идеально плоская, может впитывать влагу и деформироваться (ее надо лакировать), отверстия могут расшириться в процессе эксплуатации (если небольшой перекос оси). Обработка не сильно сложнее.


    1. Neoprog Автор
      30.09.2018 10:43

      Возможно лучше, но для отладки дешевле всего фанера. В конечном варианте думаю перейти на пластик. Фанера временное решение


  1. Arxitektor
    30.09.2018 09:48

    Посоветую резьбовые заклёпки.
    Очень удобная штука.

    листовой пластик типа полистирола

    И порежут его легко. Куча контор. Можно даже взять листовой поликарбонат.
    Прочный очень.


    1. Neoprog Автор
      30.09.2018 10:47

      Глянул резьбовые заклепки и не очень понял как это должно быть. Вы предлагаете вставить заклепку во вторую часть ноги?


  1. Karlson_rwa
    30.09.2018 14:23

    Я правильно понимаю, что вы собрались питать всю конструкцию от 3S1P лития, а напряжение питания серв (5В, да?) будете брать с линейного стабилизатора LM317?

    Тогда у меня вопрос. Где алюминиевый радиатор размером с робота? :)


    1. Neoprog Автор
      30.09.2018 14:31

      Там всё есть)) На картинке с электроникой в центре стоит плата питания, а на ней радиатор и вентилятор. Кстати во время работы LMки не сильно греются. Слегка теплые.

      И да, там каждый сервопривод питается от отдельной LM.


      1. Karlson_rwa
        30.09.2018 15:12

        Извините, не удержался.

        первая реакция


        1. Neoprog Автор
          30.09.2018 15:19

          Хах, да я понимаю не самое лучшее решение, но одно из самых простых и дешевых. Пока, что имею мало опыта в разработке импульсных БП, а брать готовые не интересно.

          При том зима скоро, дополнительный обогрев не помешает))


        1. Neoprog Автор
          30.09.2018 15:25

          Я уже боюсь писать статью про разработку электроники. Убьют)))


          1. Elmot
            30.09.2018 17:36

            Если будете питать сервы с LMок, то да, убьют. И правильно сделают.


            1. MaxAlekseev
              30.09.2018 19:45

              del


          1. MaxAlekseev
            30.09.2018 19:45

            Пока, что имею мало опыта в разработке импульсных БП, а брать готовые не интересно.
            Зато дешево, надежно и практично (с) У вас работы по ПО будет вагон и маленькая тележка, делать ответвления на разработку очередного велосипеда импульсного БП — это бесполезная трата времени, есть шанс не дойти до финала. А как уже сказали выше линейниками греть атмосферу, через силовое питание серв… точно заклюют.


      1. timdorohin
        30.09.2018 15:19

        Безумец вы. И злостный растратчик электрической энергии! :D
        Купите на али мелкие dc-dc 6-24В — 5В двух/трехамперные и будет вам счастье. По доллару штука, блин.


        1. Neoprog Автор
          30.09.2018 15:22

          Да, можно было купить, но хочется самому собрать. Возможно когда-нибудь и перейду на импульсные, на каком-нибудь этапе Х — «Оптимизация времени работы». Да и дома линейных валяется много, решил употребить.


          1. Elmot
            30.09.2018 17:37
            +1

            Это не только время работы. Ваши 18 серв под мех нагрузной возьмут столько тока, что лмки будут плавиться. Возьмите сначала готовый DCDC, а когда все заработает, переходите на самопал.


            1. Neoprog Автор
              30.09.2018 18:01

              Я делал питание из того, что дома валяется. Мощного DC-DC у меня, к сожалению, не нашлось. Я понимаю, что DC-DC это верный вариант, но для начала и LMки пусть погреют.

              Плату питания сервоприводов я тестировал на нагрев и результаты вполне хорошие. Руку не обжигают при работе. Сильно нагреваются при клине, когда идут максимальные токи, вплоть до срабатывания защиты LM.

              Цифры привести не могу, рука не показывает температуру. В будущих частях приведу конкретные цифры для LMок, если к этому времени не перейду на DC-DC.



  1. variable
    30.09.2018 14:55

    ардуиню в свободное время, буду рад если поделитесь чертежами.


    1. Neoprog Автор
      30.09.2018 15:00

      Скинул ссылку в личку


      1. variable
        30.09.2018 15:12

        Поблагодарил в личке)


  1. Avtoelectrika29
    30.09.2018 16:48

    Классная задумка. Могу вырезать тебе все детали из металла. Бесплатно. Если нужно напиши в личку.


    1. Neoprog Автор
      30.09.2018 16:53

      Спасибо за предложение, но под металл нужны другие чертежи. Тут все завязано на толщине материала, а корпус из 3мм металла (даже алюминия) думаю будет слишком тяжелым. Если и использовать металл, то только в релизной версии, но думаю она будет не скоро.


  1. Avtoelectrika29
    30.09.2018 17:12

    Ок


  1. Avtoelectrika29
    30.09.2018 17:12

    Удачи.


    1. Neoprog Автор
      30.09.2018 18:10

      Спасибо)


  1. Andrey_NV
    30.09.2018 17:26

    Очень перспективное начинание, при удачной реализации! Удачи


    1. Neoprog Автор
      30.09.2018 17:26

      Спасибо, постараюсь довести проект до конца


  1. rekzi
    01.10.2018 00:38

    А чертежи и схемы лучше в github выложить.


  1. k2m30
    01.10.2018 09:57
    +1

    Как-то логично напрашивалась в конце ссылка на гитхаб-репозиторий с чертежами и кодом