Оглавление:

Обучающий Micro DIY: битовый робот: 8 шагов (с изображениями)
Обучающий Micro DIY: битовый робот: 8 шагов (с изображениями)

Видео: Обучающий Micro DIY: битовый робот: 8 шагов (с изображениями)

Видео: Обучающий Micro DIY: битовый робот: 8 шагов (с изображениями)
Видео: Я Создал Свой Компьютер с Нуля! Он Работает! 2024, Июль
Anonim
Обучающий микроконтроллер своими руками: бит-робот
Обучающий микроконтроллер своими руками: бит-робот
Обучающий микроконтроллер DIY: бит-робот
Обучающий микроконтроллер DIY: бит-робот

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

После того, как вы построите этого робота, вы сможете пользоваться его разнообразными датчиками и исполнительными механизмами для выполнения основных, но также и довольно сложных вещей в зависимости от версии, которую вы собираете (я предоставлю две версии). С помощью этого робота вы предоставляете micro: bit глаза (обзор 180 °!) И ноги (с возможностью точного движения!), А micro: bit предоставляет вам такие замечательные функции, как светодиодная матрица, радиосвязь, связь по Bluetooth, акселерометр., compas, но также доступ ко всему этому с помощью MicroPython или языка визуального программирования, подобного царапинам (на самом деле также в C ++ и javascript, но я считаю их менее подходящими для обучения).

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

Шаг 1: Собираем кусочки

Собирать кусочки
Собирать кусочки

Для этого проекта вам понадобится:

  • Древесина МДФ толщиной 5 мм и лазерный резак для каркаса
  • 1x18650 литиевая батарея, 1x аккумуляторный экран для энергии и прерыватель
  • 1xMicro: битовая карта и 1xMicro: битовая плата расширения для мозга (хотя оба могут быть легко заменены на Arduino)
  • 2x28BYJ-5V шаговых двигателей, 2xA4988 драйверов шаговых двигателей и 2x макетной платы для установки драйверов для ног
  • 1x TOF10120 и 1x Mini 9g серводвигатель для глаз Некоторые кабели и винты
  • 1x универсальное колесо, высота = 15 мм

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

В идеале в вашем распоряжении также будут:

  • Мультиметр
  • Макет
  • Паяльник

Для них, а также для лазерного резака, проверьте, есть ли у вас какие-нибудь фабрики поблизости! Это отличные места для встречи с вдохновляющими творцами!

Шаг 2: подготовка ног

Подготовка ног
Подготовка ног
Подготовка ног
Подготовка ног
Подготовка ног
Подготовка ног
Подготовка ног
Подготовка ног

Ваша первая миссия, если вы ее примете, будет состоять в том, чтобы заставить наш шаговый двигатель вращаться, используя micro: bit в качестве контроллера! Почему шаговый двигатель? Я мог бы выбрать двигатель постоянного тока с редукторами, но я попробовал их, и мне трудно заставить дешевые двигатели работать на низкой скорости. Еще я подумал, что было бы неплохо точно знать, с какой скоростью крутятся мои колеса. По этим причинам шаговые двигатели были лучшим вариантом.

Итак, как теперь управлять двигателем 28BYJ с помощью драйвера 4988? Ответ … немного длинный. Мне не удалось аккуратно вписать его в это руководство, поэтому я сделал еще один именно для этой цели, который вы найдете здесь. Я предлагаю вам выполнить эти шаги до конца, создав небольшую макетную плату размером 26x22 мм с отверстиями 2x2 мм и размером 17 мм, чтобы установить ее по бокам, как показано на рисунке выше (обратите внимание, что, как указано в указанной статье, желтый провод слева торчит, чтобы напомнить вам о том, что нужно паять SLP и RST вместе).

Получив эту работу с одним двигателем с макетной платой, я также разработал свою собственную печатную плату, чтобы сделать вещи немного более аккуратными. Прикрепил соответствующий файл easyEDA. Это текстовый файл, но вы все равно можете открыть его с помощью бесплатной онлайн-платформы для редактирования easyEDA.

Шаг 3: Я вижу свет !! (По желанию)

Я вижу свет !! (По желанию)
Я вижу свет !! (По желанию)
Я вижу свет !! (По желанию)
Я вижу свет !! (По желанию)
Я вижу свет !! (По желанию)
Я вижу свет !! (По желанию)

Если вы просто хотите построить и ничего больше, перейдите к предпоследнему абзацу этого шага, чтобы узнать, как подключить TOF10120 к micro: bit. Если не доведете до конца.

Поскольку наш micro: bit не поставляется с камерой или датчиком приближения, он делает его своего рода слепым для любого приложения мобильной робототехники. Он поставляется с радиоизлучателем и приемником, которые позволят нам построить скелет на основе того, что у нас уже есть, и получить робота с дистанционным управлением. Но разве не было бы здорово сделать нашего робота автономным? Да было бы! Итак, давайте посмотрим, как туда добраться.

Сейчас мы заинтересованы в том, чтобы оснастить нашего робота датчиками, чтобы он мог получать некоторую информацию об окружающей среде. Доступно множество типов датчиков, но здесь мы остановимся на датчике приближения. Когда я проектировал этого робота, моей главной целью было, чтобы робот ни во что не врезался, поэтому я хотел, чтобы он чувствовал препятствия. Для этого также есть несколько вариантов. Первый, очень простой способ - использовать бамперы, но я считаю, что информация об окружающей среде немного ограничена. С другой стороны, вы можете подумать о добавлении камеры (или лидара, или кинекта!). Мне нравятся камеры, компьютерное зрение и все эти вещи, но, к сожалению, Micro: bit не поддерживает их (для поддержки таких устройств нам пришлось бы использовать Raspberry Pi, а не micro: bit или Arduino).

Так что же поддерживает micro: bit между камерой и бамперами? Есть небольшие активные датчики, которые излучают свет в окружающую среду и проверяют, что получено, чтобы получить некоторую информацию о мире. Тот, о котором я уже знал, был GP2Y0A41SK0F, который использует метод триангуляции для оценки расстояния до препятствий. Однако мне было интересно, могу ли я найти что-нибудь получше, поэтому я провел небольшое исследование и в итоге обнаружил TOF10120 (и GY-VL53L0XV2, но я еще не получил его:(). Вот хорошая статья для вас, чтобы вы узнали об этом. По сути, этот датчик излучает инфракрасный сигнал, который отражается от препятствий, а затем принимает отраженный свет. В зависимости от времени, которое потребовалось свету, чтобы пройти вперед и назад, датчик может оценить расстояние до препятствия (отсюда и название TOF = время полета. Из-за его небольшого размера, дальности действия и требований к мощности я решил использовать TOF10120.

В то время как моя первая идея заключалась в том, чтобы поместить три из них на робота (один спереди и два по бокам), китайский Новый год и пандемия COVID-19 не хотели этого, так как это, казалось, создавало проблемы с доставкой. Так как я был ограничен одним TOF10120, который я тоже хотел видеть по бокам, и что у меня было несколько сервомоторов, я решил установить свой датчик на сервопривод. Итак, сейчас не хватает двух вещей: как использовать TOF10120 с micro: bit? И тот же вопрос с сервоприводом.

К счастью, micro: bit оснащен протоколом связи I2C, и это очень упрощает нашу жизнь: подключите красный провод к 3,3 В, черный к земле, зеленый к SCL и синий к SDA, и все, что касается аппаратной части. Что касается программного обеспечения, я рекомендую вам немного прочитать о связи I2C и попробовать код Python, который я прикрепил к micro: bit. Эта программа должна напечатать вам расстояние, измеренное датчиком на REPL (Read Evaluate Print Loop). Вот и все. Мы просто взглянули на наш micro: bit.

Теперь давайте заставим его повернуться шеей, если вы позволите мне продолжить мои аналогии с анатомией животных. Единственное, что нам нужно, это управлять серводвигателем с помощью micro: bit. Эта часть становится все длиннее, поэтому я просто дам вам эту ссылку, в которой есть вся необходимая информация и код, который я использовал для ее тестирования. Если хотите, я также добавил простой код для управления сервоприводом с помощью pin0. Только не забудьте запитать сервопривод напряжением 5 В, а не 3,3 В.

Шаг 4: взлом батарейного щита

Взлом батарейного щита
Взлом батарейного щита
Взлом батарейного щита
Взлом батарейного щита
Взлом батарейного щита
Взлом батарейного щита

Теперь, когда мы подготовили наши исполнительные механизмы и датчики, пришло время взглянуть на систему управления батареями. Чтобы вы больше узнали о выбранном мною защитном кожухе аккумулятора, я бы посоветовал вам прочитать эту статью. Я нахожу это очень понятным и доступным. Из этой статьи мы можем увидеть множество преимуществ этого защитного экрана для батареи, но есть один важный недостаток, с которым я не хотел мириться: переключатель ВКЛ / ВЫКЛ влияет только на выход USB. Это означает, что если вы выключите переключатель, все остальные контакты 3,3 В и 5 В. будут запитаны. В результате, поскольку мы используем эти контакты для нашего робота, переключатель вообще ничего не будет делать …

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

Да, но я не хочу открывать робота, чтобы получить доступ к защитному кожуху аккумулятора, чтобы положить и удалить этот кусок пластика! Легко: возьмите выключатель и приклейте по два маленьких алюминиевых квадрата к каждому из проводов, подключенных к выключателю. Теперь приклейте эти две части алюминия к пластику, чтобы две алюминиевые части были изолированы друг от друга и чтобы алюминий находился снаружи вашей системы. Обычно так и должно быть. Вставьте новое творение в аккумуляторный щит рядом с ячейкой, и переключатель должен позволить вам размыкать или замыкать цепь, подключенную к ячейке.

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

Шаг 5: 3D-дизайн и вырезка

3D-дизайн и вырезка
3D-дизайн и вырезка
3D-дизайн и вырезка
3D-дизайн и вырезка

Единственное, чего сейчас не хватает, - это построить структуру, которая скрепит все наши компоненты вместе. Для этого я использовал онлайн-платформу tinkercad. Это действительно хорошая среда для выполнения некоторых базовых САПР, которых часто бывает достаточно для проектирования изделий для лазерного резака.

Поразмыслив некоторое время, пришло время повозиться. Для этого я начал собирать 3D-модели различных частей, которые у меня были (сначала исключив сервопривод и TOF из уравнения). Сюда входят аккумулятор и экран, шаговые двигатели и драйверы двигателей, и, конечно же, micro: bit с его платой расширения. Я прикрепил все соответствующие 3D-модели в виде файлов stl. Чтобы облегчить процесс, я решил сделать своего робота симметричным. В результате я повозился только с половиной робота и достиг дизайна, показанного на изображении выше.

Из этого появилось несколько версий, из которых я выбрал две:

  • Достаточно аккуратный, без датчика приближения, что позволяет не просачиваться проводам. Хотя эта версия не является автономной, ее все же можно запрограммировать через Bluetooth, например, через iPad или можно запрограммировать для управления с помощью радиосигналов, которые, например, могут быть отправлены другим micro: bit, как показано на видео выше.
  • Гораздо менее аккуратный, который позволяет значительно продвинуться в мобильной робототехнике, поскольку позволяет фиксировать расстояние до препятствия с обзором на 180 ° благодаря датчику приближения, встроенному в серводвигатель.

Чтобы создать это, перейдите в свой любимый Fablab и используйте лазерный резак, который вы найдете, чтобы вырезать модель по вашему выбору: первый соответствует файлам design1_5mmMDF.svg и design1_3mmMDF, которые соответствуют частям для резки в 5-миллиметровом МДФ. дерево и те, что нужно вырезать из 3мм; вторые соответствуют файлу design2_5mmMDF.svg. Установите черные контуры для резки и красные для гравировки.

Боковое примечание: я добавил красный узор, чтобы сделать его более ярким. Это функция заполнения Гильберта, которую я создал с помощью прилагаемого кода Python.

Шаг 6: оседлать зверя

Верховая езда на зверя
Верховая езда на зверя
Верховая езда на зверя
Верховая езда на зверя
Верховая езда на зверя
Верховая езда на зверя

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

  1. Снимите синий колпачок двигателей и немного отрежьте его, чтобы кабель торчал из задней части двигателя.
  2. Установите двигатели с каждой стороны, используя винты M2 и болты.
  3. Установите макетную плату по бокам, используя отверстия 2x2 мм и несколько винтов и болтов.
  4. Поместите драйверы A4988 и заклейте кабели двигателя, чтобы он был в порядке.
  5. Установите универсальное колесо под нижнюю часть и сложите стороны.
  6. Установите плату расширения micro: bit в верхней части.
  7. Установите нижнюю часть гибкой передней крышки.
  8. Поместите экран батареи и подключите все (для этого, поскольку я все еще ждал доставки нужной мне платы расширения, и что у меня была только одна с торчащими женскими заголовками, я переработал кабель IDE от старого компьютера, чтобы справиться с чтобы мои кабели не торчали из платы, чтобы прикрыть все это откидной передней крышкой). Хотя код, который я предоставил, очень легко адаптировать, чтобы использовать его напрямую, вам нужно подключить левый STEP к контакту 2, правый STEP к контакту 8, левый DIR к контакту 12, правый DIR к контакту 1.
  9. Вставьте micro: bit в расширение.
  10. Прежде чем продолжить, убедитесь, что все работает с MoveTest.py.
  11. Установите переключатель в верхней части и поместите пластиковую насадку рядом с литиевым элементом.
  12. Прикрутите верхнюю часть передней крышки.
  13. Смонтируйте заднюю часть, и все готово! Уф! Я не ожидал такого количества шагов! Думать и делать это намного проще, чем объяснять словами! (И я уверен, что информации все равно будет не хватать!)

Если вы строите вторую версию с датчиком приближения, то:

  1. Следуйте инструкциям выше. Единственная разница будет заключаться в том, что вам нужно будет добавить несколько проставок M2 на шаге 7 (хотя я так и сделал, но это не требуется), игнорируйте шаги 8 и 13 (поскольку передняя крышка отсутствует).
  2. Закрепите серводвигатель винтами M2 и подключите VCC и GND сервопривода непосредственно к 5V экрана батареи, а управляющий вход подключите к контакту 0 микробита.
  3. Закрепите два деревянных бруска, которые будут наверху сервопривода, с помощью винта, прикрутите к нему датчик TOF, а также белую пластиковую деталь, которая идет в комплекте с сервоприводом.
  4. Установите этот последний блок на сервопривод и подключите датчик, используя I2C micro: bit, как описано в шаге 3.

Шаг 7: программа

Вот и все ! У вас есть робот, которого вы можете программировать либо на micro: python, либо на makecode. Я приложил сюда образец кода, который использовал для создания видео выше:

  • Пример 1: Поместите radioControl.py на micro: bit робота и ReadAccelero.py на другой micro: bit, чтобы управлять роботом, используя наклон второго micro: bit.
  • Пример 2: Поместите Autonomous.py на версию 2 робота, который будет исследовать окружающую среду.

Это всего лишь базовые примеры, которые вы можете использовать, чтобы пойти намного дальше. Например, мне очень нравится одновременная локализация и отображение, и обычно во второй версии этого робота есть все, что вам нужно для этого! Хотя один большой недостаток для меня в реализации такого проекта заключается в том, что драйвер ШИМ micro: bit - это программный драйвер, который использует один и тот же таймер для всех каналов, а это означает, что все установленные нами ШИМ должны иметь одинаковую частоту (что я и сделал. не знаю, когда я писал образцы кодов, хотя я обнаружил что-то странное, когда писал Autonomous.py).

Шаг 8: Идем дальше

Не сомневайтесь, улучшайте дизайн, решайте некоторые проблемы, которых я не видел. Например, в конце концов я бы хотел:

  • Добавьте инфракрасный датчик в нижней части робота, чтобы он мог определять, черная или белая земля, или она приближается к краю моего стола.
  • Измените систему управления батареей, так как она меня пока не устраивает. Действительно, на данный момент, чтобы перезарядить аккумулятор, требуется разобрать робота, чтобы вынуть элемент или экран аккумулятора … Поэтому я планирую: 1. добавить разъем mini-USB на задней панели робота, который я подключу к аккумуляторному щиту, чтобы я мог его зарядить; 2. Вырежьте отверстие внизу, чтобы видеть светодиоды на защитном кожухе аккумулятора и видеть, когда зарядка закончилась.
  • Проверьте, существует ли приемлемый способ вывода ШИМ с разными частотами.
  • Попробуйте VL53L0XV2 вместо TOF10120, поскольку это может быть более дешевый вариант, который сделает его доступным для еще большего числа людей. Хотя я читал больше об этом датчике, кажется, что компания, которая сделала его дешевым, сделала его намеренно очень сложным …
  • Протестируйте разные конструкции колес, чтобы сделать их более прочными (прямо сейчас я ожидал, что если я буду вставлять и снимать колеса много раз, дерево будет постепенно повреждаться. Если я сделаю дерево более эластичным, изменив конструкцию, я могу иметь возможность продлить срок службы)

Большое спасибо людям из команды мобильной робототехники (ныне часть лаборатории биороботики) EPFL, которые помогли мне значительно расширить мои знания в области электроники и механики!

Рекомендуемые: