Как стать автором
Обновить

Как я скрещивал Arduino и Lego

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров6.9K

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

На этапе планирования учебных программ я столкнулся с проблемой выбора контроллера для обучения детей среднего школьного возраста (5-8 класс). Для младших уже существует Wedo, и этот конструктор хорошо себя зарекомендовал. Старшие уже хорошо усваивают Arduino и 3D-моделирование. А для средневозрастных ребят, исходя из своего почти восьмилетнего опыта преподавания робототехники, хотелось бы что-то среднее. Чтобы можно было программировать и блоками (желательно еще сразу видеть код), и напрямую в Arduino IDE. При этом в удобном защищенном корпусе, с минимизированным шансом пораниться или что-то сжечь, и возможностью собирать робота из готовых деталей.

Для этих целей все используют EV3, но мне не нравится программирование только блоками, спорные по качеству датчики, монструозные по размерам итоговые сборки (в основном из-за размера контроллера), ну и, честно говоря, цена. Как вариант с адекватной стоимостью, использовать китайский kazi EV6, но остальные проблемы остаются. Я знаю, что можно программировать на microPython, но это костыль, и все равно детей надо готовить к Arduino.

В этом плане мне понравился образовательный набор от RED (хотя когда я его первый раз пощупал, долго от него плевался). Их контроллер One, по сути, шилд для ардуины с выведенными портами и встроенными драйверами двигателя, в красивом пластиковом корпусе (в первых партиях напечатанном на 3D принтере). Контроллер совместим с лего деталями, и поставляется с немного измененным ресурсным набором 45544 и спорным набором Arduino датчиков, тоже в корпусах. А их среда программирования реализована на принципах scratch, но по сути дублирует ArduBlock.
Однако у этого решения тоже существуют проблемы. Начиная от странной распиновки, заканчивая не самой удачной конструкцией корпуса. Большинство проблем они решили в контроллере X, но зачем-то перевели его с аккумуляторов на батарейки, закрыли возможность программировать из ArduinoIDE и взвинтили ценник.

Контроллер RED. Распиновка, на мой взгляд, бредовая и немного неудачный корпус.
Контроллер RED. Распиновка, на мой взгляд, бредовая и немного неудачный корпус.

В общем, решил, чем я хуже? Сделаем свой контроллер!

Первым делом я занялся проектированием платы. При работе с обычной Arduino у ребят чаще всего возникают следующие проблемы: недостаток портов питания (все время приходится изобретать какие-то шины) и большое количество проводных соединений. Поэтому от неё мне нужно было наличие встроенных драйверов для двигателей и адекватной распиновки. Первый вариант схемы на базе Arduino nano я набросал минут за 30. Сильно мудрить не стал, и просто использовал схемы проверенных модулей для Arduino. В качестве драйверов я использовал микросхемы l9110s, которые работают по схеме Н-мост, для стабильных 5в просто стабилизатор L7805, немного резисторов и конденсаторов согласно схемам (пару которых забыл), диодик для защиты от переполюсовки. Также быстро развел печатку, и плата rev-1 готова!

На драйвера задействованы порты 3,9,10,11. Немного нерационально, но это для совместимости с red. Остальные порты постарался вывести максимально удобно, добавив к каждому шину питания.

Получившаяся распиновка (на картинке плата rev-2, но распиновка не изменилась)
Получившаяся распиновка (на картинке плата rev-2, но распиновка не изменилась)

Решил попробовать заказать изготовление. JLCPCB, как известно, с Россией сейчас не работает. Но легко нашелся аналогичный производитель, NextPCP. У них аналогичный сервис, цены немного повыше, зато оплата через AliExpress путем покупки нескольких лотов по 1$. Сделал заказ на изготовление 10 плат, и спустя месяц они у меня.

Запаял минимальное количество деталей для оценки габаритов и занялся проектированием корпуса.

При проектировании корпуса старался победить все проблемы red-а, которые мы (в основном мои коллеги) накопили за время работы с ним. А именно:

Red снизу. Используются батареи стандарта 14500
Red снизу. Используются батареи стандарта 14500

Абсолютно дурацкое крепление крышки аккумуляторов 14500 на двух винтах, из за чего ей никто не пользуется, т.к. аккумуляторы надо часто доставать на зарядку. Неудачно расположенное крепление к lego (меня попросили его поставить пониже, т.к. робот часто просто цеплял пол днищем этого контроллера). Отсутствие кнопки перезагрузки. И немного неудобное расположение кнопки питания.

Более-менее сносный вариант корпуса получился почти с третьего раза.

Первые варианты корпуса, здесь ещё крепление сверху
Первые варианты корпуса, здесь ещё крепление сверху

Крышка батарейного отсека получилась довольно удачной, в виде сдвигающейся шторки. Вышло и надежно, и удобно.

Почти итоговый вариант корпуса
Почти итоговый вариант корпуса

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

Собрал первую телегу
Собрал первую телегу

Но счастье было не долгим!

В первый же вечер, играясь этой телегой через bluetooth, я спалил оба драйвера :D. Левый даже до покраснения.

Оказалось, я просто забыл о конденсаторах между выходами на моторы, из-за чего драйвера и прошибало. Исправил этот момент в схеме. А на текущей железке просто распаял их между контактами.

Собрал телегу посолиднее, люблю гусеничные модели. Спроектировал сразу корпус для hc-06. Мучил её несколько дней (и до сих пор мучаю), больше проблем с драйверами не выявил.

Выглядит поинтереснее. Также заметен тот самый добавочный конденсатор по шине +5V
Выглядит поинтереснее. Также заметен тот самый добавочный конденсатор по шине +5V

Еще оказалось, что 9-ый порт не может выдавать шим сигнал при задействовании первого таймера для сервопривода. Из-за этого один мотор не работал. Просто поменял в схеме 3 с 9 порты местами.

Последней проблемой, с которой я столкнулся, оказалась перезагрузка Arduino при резкой нагрузке на аккумуляторы. Выяснилось, что конденсатора всего в 0.1мкФ недостаточно по шине 5в (интересно, почему). Поменял его в схеме на обычный 2-х выводной электролит на 100 мкФ, а на текущей плате просто напаял поверх.

Вторая ревизия платы
Вторая ревизия платы

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

И заказал производство второй ревизии платы.

Параллельно с этим велась доработка мелких косяков по корпусу и добавление всяких украшательств. И, спустя всего пару тестовых вариантов...

"Пара тестовых вариантов"
"Пара тестовых вариантов"

Я получил корпус, который хотел! Корпус (да и весь контроллер) спроектирован так, чтобы свести к минимуму шанс порчи контактов или замыкания. Старался чтобы было понятно, какие контакты за что отвечают, но они ещё дополнительно будут отмечены разными цветами гребенок. Порты моторов специально расположены со смещением, чтобы снизить риск попадания на соседние порты. Корпус имеет встроенный отсек для аккумуляторов формата 14500 и LEGO крепления с 3-х сторон. Кнопка включения расположена выше проводов, её так удобнее нажимать.

В планах сделать набор на базе этого контроллера с немного соревновательным уклоном, с возможностью собрать робота для езды по линии, для прохождения лабиринта или перетаскивания предметов. Программировать можно в ArduBlock, ArduinoIDE и в любых других средах с поддержкой Arduino nano.

На данный момент ко мне едут платы второй ревизии. А я пока подбираю датчики и делаю для них корпуса. Точно будут пара ИК датчиков, лазерный и пара УЗ дальномеров, Bluetooth, и всякая мелочь типа модуля кнопки, rgb-светодиода и зумера. Есть проблема с заказом относительно больших партий ресурсных наборов и датчиков, с этим пока разбираюсь. Еще сделал группу в ВК про проекту :)

Если интересен проект, пожалуйста поддержите его :)
Пожелания и предложения тоже очень приветствуются!

Теги:
Хабы:
+53
Комментарии33

Публикации

Истории

Ближайшие события

19 марта – 28 апреля
Экспедиция «Рэйдикс»
Нижний НовгородЕкатеринбургНовосибирскВладивостокИжевскКазаньТюменьУфаИркутскЧелябинскСамараХабаровскКрасноярскОмск
24 апреля
VK Go Meetup 2025
Санкт-ПетербургОнлайн
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань
14 мая
LinkMeetup
Москва
5 июня
Конференция TechRec AI&HR 2025
МоскваОнлайн
20 – 22 июня
Летняя айти-тусовка Summer Merge
Ульяновская область