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

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

    Гитхаб
    Схемы
    Группа в фейсбуке
    Надеюсь, такая железка пригодится не только моему малышу.
    Поделиться публикацией
    Комментарии 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 заходит на ура.
                      +1
                      А вот это отличная новость, получить всё что нужно из коробки…
                        0
                        можно с Python-ом и без операционной системы: store.micropython.org/product/HOUSING-OS-1
                          0
                          А что нельзя реализовать на стандартном 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 — печатный корпус. Сколько не пробовал делать детальки для Лего — не контачат ни между собой, ни с оригиналами. Уж слишком допуски суровые. Как вам удалось?

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

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