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

    Чуть меньше полугода назад сделал сыну на день рождения подарок — конструктор 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 и к нему добавить аплоад через блютуз. И если есть желающие присоединиться или сделать себе такую же игрушку — велкам.

    Гитхаб
    Схемы
    Группа в фейсбуке
    Надеюсь, такая железка пригодится не только моему малышу.
    Поделиться публикацией
    Никаких подозрительных скриптов, только релевантные баннеры. Не релевантные? Пиши на: adv@tmtm.ru с темой «Полундра»

    Зачем оно вам?
    Реклама
    Комментарии 32
    • +12
      Ну, как всегда: игрушку купили ребенку, а папа завис надолго…
      • 0
        Интересно.
        Можно ли компактнее?
        Как выглядит интерфейс? Может лучше веб-версию пилить?
        Какие еще есть датчики?
        • 0
          Компактнее можно, но сейчас 90% объема — это аккумуляторы и коннекторы. Т.е. или меньше автономность, или крохотные (неудобные для ребенка) разъемы.
          Интерфейс описан на гитхабе, BLE сервис, понимающий много чего. Внутри коробочки — джаваскрипт, заливать можно тоже через BLE
          Веб-версию не хочу, надо, чтобы ребенок мог с неподключенного к интернету планшета рулить.
          Датчиков пока только кнопка и ультразвук, но подходе цвет и поворот, плюс встроенный акселерометр/гироскоп
          Будут еще сервы, актуаторы, шаговики и т.п.
          • +1
            веб-версия != интернет
            • 0
              Какой смысл в таких извращениях?
              • 0
                смотря что называть извращением.
                например, для технаря ставить знак равенства между вай-фаем и интернетом — это невежество или извращение?
                • 0
                  Да причём здесь, автор по всей видимости имел ввиду расклад при котором контроллер поднимает точку доступа, которую ищет приложение, что бы это всё работало где угодно, без завязки на какой-то конкретный маршрутизатор…
                  … конечно, вместо приложения иногда бывает проще поднять сервер на контроллере, и я так часто делаю и делал если ресурсы позволяли, но есть одна деталь, иногда детям хочется управлять поделкой в реальном времени, и тут начинаются лаги, так что иногда приложения рулят, а нативные приложения рулят ещё больше
        • +1
          Ябкупил. Может сделать серию?
          • 0
            Если найдется энтузиаст, готовый вывести это, например, на кикстартер — я буду всецело его поддерживать. Даже не обижусь, если кто-то сумеет на этом заработать больше денег, чем я :)
            • +1
              А продавать отдельные блоки мне невыгодно. Пайка одной платы вручную занимает где-то 5-6 часов, печать корпуса еще 4 часа.
              Деталей там суммарно на 11 долларов, еще минимум 8 долларов за хорошие аккумуляторы, печатная плата стоит 50 центов ($4.99 за 10 штук на сиидстудио)
              А продавать в виде конструктора — так маловато найдется умельцев, вручную запаивающих TQFP48 :)
            • 0
              ЧТо-то я не догоняю, на сколько миту совместим с лего?
              • 0
                По деталькам совпадает идеально, качество пластика отличное. Размер моторов вроде бы совпадает, но точки крепления отличаются. По коннекторам несовместим абсолютно, даже количество проводов к мотору разное. В принципе, техниксовские чертежи несложно адаптировать под Миту
              • +12
                Как сэкономить на лего?
                1. 10 лет копаем STM по 8 часов в день
                2. Покупаем 3д принтер стоимостью в пару тысяч.

                n. Лего теперь стоит 3 бакса вместо 57!
                • +2
                  Хорошее начало. Интересно почему ESP не пошло. Я как раз нечто похожее на ESP делаю и вроде как проблем нет, хотя проект не закончен ещё.
                  • 0
                    ESP32 хорош для карманных поделок в ардуино-стиле. Чуть потребуется что-то серьезное — начинается: кривые либы, код либ вместо флеша жрет рам, отсюда фрагментация, жрет как андроид и т.п.
                    • 0
                      Код либ ведь не зависит от МК так сильно. Использовал esp-open-rtos (esp8266), пробовал esp-idf (esp32) — не было такого, что вообще кошмар как в комментарии. Да и либы часто есть разные на одно и тоже, что можно выбрать.

                      Кривой код есть везде, конечно, но это не вина МК. Или я что-то не видел ещё? Не могу сказать, что у меня огромный опыт и я просто могу чего-то не знать, потому и спрашиваю.
                  • +5
                    Для всех владельцев EV3 желающих продвинуться дальше чем предлагает Lego и стать красноглазиком
                    Отличный проект http://www.ev3dev.org/
                    Кирпич EV3 превращается в полноценный Linux компьютер, вся периферия Lego доступна из Python библиотеки. Образ Linux записывается на SD-карточку и кирпич EV3 грузится с неё, при этом вынув SD получаем снова штатный Lego, в порт USB втыкаю Wi-Fi свисток… и у вас на столе Lego-Linux комп с Wi-Fi, который из Python может крутить колесами и работать с датчиками. Веду таким образом кружек робототехники в школе, с штатным Lego софтом и всякими Windows не пересекаюсь совсем. А вот Linux+Python на рабочих компах школьников и на Lego EV3 заходит на ура.
                  • 0
                    Если можно, в двух словах, насколько убог MiTU? С детства осталось немало Лего и иметь возможность собирать «умные» поделки была бы не лишней, но цена на оригинальный EV3 ставит крест на затее. А вот MiTU вполне вменяем по деньгам, но уже не раз слышу, что с программной частью все грустно.
                    Как я понимаю, там какой-нибудь псевдо ЯП, и что-то серьезнее самобалансирующего робота сделать не получится?
                    • 0
                      В принципе базовое программирование норм. Основные операторы в наличии.
                      Есть голосове управление на английском, мой сын 8 лет освоил.
                      • 0
                        Спасибо! А интегрировать с чем-то сторонним, с MQTT, например — реально?
                      • 0

                        У лего в этом году появился boost, он для детей поменьше и не совсем программируемый, но судя по либам на гитхабе вполне можно управлять самостоятельно (руки только не доходят). Плюс в том что по деталям совместим с сити/техник

                      • –1

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

                        • 0
                          как автор выше написал — это не просто, все же производство — не домашнее мыловарение.

                          к тому же есть sbrick, который достаточно демократичен по цене (особенно для не-росскийских зарплат).
                        • 0
                          А что не так с RTL8710, кроме того что нужно писать на С?
                          • 0
                            Ахахаха… насмешили. Зарегистрироваться на сайте Ameba — это уже непосильный труд и всё, можно выбрасывать модуль. Профессиональный подход! Браво)

                            ЗЫ. А если по делу, то есть раздел на этом форуме esp8266.ru/forum — там много всего интересного и полезного для SoC RTL8710 и других этой и следующей линейки.
                            • 0
                              Я все-таки больше по железу, и когда понадобилось написать софтинку для Андроида, то я несколько подуныл


                              А в сторону appinventor'а не смотрели? ;) Bluetooth умеет, и если протокол на стороне контроллера реализовать максимально простой — вполне реально! ;)
                              • 0
                                Смотрел. Сыроват пока. Например, не умеет коннект без биндинга, не умеет скан и т.п.
                                Но надеюсь, что его когда-нибудь доведут до ума, симпатичный проект и многообещающее начало.
                              • 0
                                Если мне не изменяет память у Сяоми скретч-подобное программирование. Чем же оно вам не подошло? Вообще — очень интересная штука получилась, но я бы все таки предпочел бы среду EV3, чем JS.
                                • 0

                                  А меня скорее заинтересовал 3D — печатный корпус. Сколько не пробовал делать детальки для Лего — не контачат ни между собой, ни с оригиналами. Уж слишком допуски суровые. Как вам удалось?

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

                                  Самое читаемое