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

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

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

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

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

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

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

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


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

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

В первый же вечер, играясь этой телегой через bluetooth, я спалил оба драйвера :D. Левый даже до покраснения.
Оказалось, я просто забыл о конденсаторах между выходами на моторы, из-за чего драйвера и прошибало. Исправил этот момент в схеме. А на текущей железке просто распаял их между контактами.
Собрал телегу посолиднее, люблю гусеничные модели. Спроектировал сразу корпус для hc-06. Мучил её несколько дней (и до сих пор мучаю), больше проблем с драйверами не выявил.

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

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

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


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