Продолжение статьи «Как я скрещивал Ардуино и лего».

Если вкратце, я столкнулся с проблемой выбора контроллера для обучения детей среднего школьного возраста (5-8 класс), мне не понравились готовые решения, и я решил разработать свой контроллер на базе Arduino Nano, со встроенными драйверами двигателей и закрытым корпусом, совместимым с Lego. Но по большому счету я это делал, потому что могу :)

С момента прошлой статьи прошло более полугода. За это время многое произошло. Я разработал новые и переработал старые корпуса для датчиков и контроллера. Собрал небольшую партию устройств. Запустил сайт и даже разработал свой блочный/кодовый редактор для контроллера ZERO и других Arduino подобных плат. Но обо всем по порядку...

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

Текущий набор компонентов (пары штук не хватает)
Текущий набор компонентов (пары штук не хватает)

В основном это обычные Arduino-датчики, но в красивом корпусе. Ещё есть oled-экран и Bluetooth-модуль.

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

Новый вариант датчиков (слева)
Новый вариант датчиков (слева)

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

Сразу из двух драйверов вышел волшебный дым, на котором они работали :(
Сразу из двух драйверов вышел волшебный дым, на котором они работали :(


Оказалось, драйвера l9110s (будь они неладны) бывают совершенно разные. Мне досталась какая-то модификация с заниженными характеристиками. Они переваривают меньшее напряжение и ток. По китайскому datasheet до 8в, а две батарейки 14500 дают в сумме 8.4в, что сразу их убивает и отправляет в КЗ.

Китайский datasheet на L9110s
Китайский datasheet на L9110s

Новые драйвера взял L9110S(XBLW), 2.5V~12V, на них datasheet я даже не нашел. Они в несколько раз дороже и с доставкой в несколько недель. Зато показали себя хорошо.

Пока ехали драйвера, решил немного передохнуть, разобраться с корпусом (точнее наклейками) и протестировать эту железку. Мы с детьми как раз тренировали задание с регионального этапа ВСОШ с ездой по линии и перетаскиванием банок.
Для этого перепаял на пару плат драйвера с модуля для Arduino. Оказалось, собирать платформу из Lego удобнее, чем допиливать готовую, и быстрее, чем проектировать в 3D и печатать :D

Спустя 1.5 месяца до меня наконец добрались драйвера, и я начал собирать первую небольшую партию контроллеров.

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

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

Далее я решил провести небольшой ребрендинг на русский язык и разработал упаковку.


Запустил сайт, чтобы публиковать информацию о программировании контроллера, подключении датчиков и многого другого.

❯ КонтрБагКОД

Обычно подобные наборы программируются при помощи блоков. Для детей (и людей, слабо знакомых с программированием) эт�� правда проще. У компании RED уже выпущено три версии блочного редактора (впрочем, все они не очень). Изначально я планировал в качестве блочного редактора предлагать ArduBlock, и даже на своём сайте писал инструкцию, как подружить его с контроллером ZERO. Хотя мне не нравятся его некоторые ограничения (например, невозможность редактировать сгенерированный код) и какие-то сложности с установкой. Также, с недавнего времени даже веб-версия стала работать только после оплаты, да и в целом продвигать чужой продукт мне не очень нравится.

Ещё на стадии задумки этого проекта у меня была идея написать свой блочный редактор, дабы ни от кого не зависеть. Но, оценив трудозатраты, тогда я решил не заморачиваться. Сейчас, оценив экономию времени благодаря использованию нейросетей, решил, а почему бы и нет :D

Будет свой редактор с блекджеком и, ну сами знаете...
Будет свой редактор с блекджеком и, ну сами знаете...

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

Разрабатывать решил на базе blockly (ArduBlock, кстати, написан тоже на ней).

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

Внедрена поддержка всего базового синтаксиса Aduino (циклы, условные операторы, функции, вывод, работа с портами, работа с памятью, и многое другое). Добавлена куча датчиков. В последнем обновлении добавлены блоки для ESP8266 (работа с Wi-Fi, MQTT, NTP и др.). А главное, блоки все логично названы, логично работают.

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

Есть загрузка в контроллер напрямую из приложения и монитор порта.

А самое крутое, что есть полноценный менеджер плат, точнее ядер! С поддержкой дополнительных ссылок на ядра (добавил в последнем обновлении). Это позволяет в моем редакторе использовать все платы, доступные в Arduino IDE, например, отечественную MIK32.

Великая и могучая МИК32
Великая и могучая МИК32

Редактор, как и все остальное, размещен у меня на сайте абсолютно бесплатно. Это ещё пока beta-версия, поэтому баги присутствуют. Буду признателен за обзор или помощь в тестировании. Постараюсь в ближайшее время сделать на него полноценный обзор.


Новости, обзоры продуктов и конкурсы от команды Timeweb.Cloud - в нашем Telegram-канале 

Перед оплатой в разделе «Бонусы и промокоды» в панели управления активируйте промокод и получите кэшбэк на баланс.