Контроллер для Лего

в 11:58, , рубрики: DIY, lego, программирование микроконтроллеров, Разработка робототехники

Чуть меньше полугода назад сделал сыну на день рождения подарок — конструктор Xiaomi MITU. Неожиданно для меня ребенок на неделю завис в этом конструкторе. Когда были испробованы первые модели и их управление с планшета, возник закономерный вопрос — «А как для него писать программы?»

image

И тут меня ждало жестокое разочарование — это творение сумрачного китайского гения содержало систему программирования, вполне доступную для рептилоидов с планеты Нубиру, но вряд ли пригодную для ребенка 6ти лет. Плюс внезапно оказалось, что совместимых с Миту датчиков вполне можно и не дождаться.

Но если ребенок просит — папа не может отказать. Начал исследовать варианты, разумеется смотрю на Лего, для начала на NXT/EV3. Сразу слегка разочаровывает цена, как на компьютер, так и на моторы/кнопки, потом начинаю смотреть на их последний писк Wedo — и там вообще все уныло.

Ок, есть же альтернативные версии, нахожу интересный проект Sbrick — цена более-менее вменяемая, совместимые моторы можно брать на Ali, но программирования там негусто.

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

Для первой версии взял разрекламированную ESP32, да еще и с OLED на борту. Красота.

image

К ней в компанию был куплен шилд с драйверами моторов и PCA9685:

image

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

Ставлю на ESP32 жирный крест, беру следующего поциента. Волею случая это оказался RTL8710, купленный незадолго до этого на Али под предлогом «О, забавный! И недорого!».

Но тут даже много времени тратить не пришлось :)

image

C чистой совестью чип отправляется на свалку. И здесь вступление заканчивается и мы переходим к собственно проекту. Ибо следующим у меня на столе оказался NRF52. И не случайно — хорошо сбалансированный АРМ, с добротным СДК и толковой технической поддержкой. Собираю первый наколеночный вариант:

image

Для начала только светодиодики и блютуз профили. Отлаживаю самые базовые вещи и понимаю, что вот оно! Это именно тот чип, который мне нужен. Теперь уже можно добавить проекту немножко мускулов:

image

Ну тут уже есть и спикер, и драйвера, и акселерометр, и коннекторы для периферии. В качестве коннкторов изначально рассматривал вариант USB-C, как на Миту, но смутила сложность изготовления соединительных кабелей. Поэтому не стал изобретать велосипед, а просто поставил почти совместимые с Лего RJ-12. Их легко обжать, они дешевые и вполне надежные, как для детских шаловливых ручек.

Ну и в обычных леговских детальках разъем меняется за 3 минуты:

image

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

Параллельно создается проект на CircuitMaker (это тот же самый Альтиум, только бесплатный), где рисуется схема и плата.

На Али покупаются делатьки, на Сиидстудио — изготовление платы, и пока они неспешно плывут морями-океанами, продолжаем писать фирмварь.

Наконец приехали платы и часть деталей:

image

Заливаем фирмварь, радуемся миганию светодиодика. Наступила пора для следующей части. Рисуем модельку батарейного отсека и печатаем ее на 3Д-принтере:

image
Причем в отличие от китайских холдеров, в этот можно вставить аккумуляторы как с защитой, так и без:
image

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

image

Опять откладываем паяльник и берем 3Д-принтер. После десятка неудачных моделей таки получается приличный корпус:

image

С обратной стороны у него все готово для подсоединения к обычному Лего, уши по бокам совпадают по размерам с Lego Technic:

image

Моторы использую обычные китайские, лего-совместимые, а вот всякие дополнительные плюшки делаю отдельно. Например, из китайского HC-SR04 за доллар получился отличный Range srnsor:

image

C печатным корпусом и разъемом его стоимость получается меньше 3х долларов, при том что аналогичный леговский стоит $57:

image

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

К сожалению, у меня осталась одна незакрытая задача. Я все-таки больше по железу, и когда понадобилось написать софтинку для Андроида, то я несколько подуныл.

В плане взять обычный код Blockly и к нему добавить аплоад через блютуз. И если есть желающие присоединиться или сделать себе такую же игрушку — велкам.

Гитхаб
Схемы
Группа в фейсбуке
Надеюсь, такая железка пригодится не только моему малышу.

Автор: Delsian

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js