Хочу представить свой проект открытой универсальной платформы для домашних роботов (газонокосилок, пылесосов и т.п.
).
Проект пока в стадии сборки и написания ПО, надеюсь на полезные замечания и предложения.
Недавно я наткнулся на проект Ardumower ( Статья о нем ) и приобрел много интересного опыта.
Но, к сожалению, у этого робота много разных ограничений, поэтому мой заказчик «умного дома» спонсировал проект совершенно нового и гораздо более мощного робота, который хорошо справляется как с покосом травы, так и с разными другими задачами (например, есть идея развозить напитки по дому для гостей :)).
Проект развивается как универсальная и расширяемая платформа, с открытым исходным кодом и SDK для написания собственных вариантов ПО.
Основным элементом робота является плата с 32-битным процессором ATSAM3X8E, идентичным используемому в Arduino Due, что позволяет использовать простую и привычную среду разработки, а также исключает множество проблем с техническими вопросами за счет большого сообщества.
людей, пишущих программы для этой платформы.
Благодаря большому количеству портов микроконтроллера к плате можно подключить практически все что угодно.
Характеристики платы: Питание от 12 до 30 вольт, встроенный блок зарядки аккумулятора током до 5 ампер и даже бустер для зарядки от солнечной панели во время работы.
Два места для широко используемых контроллеров коллекторных двигателей Polulu Dual MC33926, с возможностью управления до четырех двигателей (в двух вариантах - два двигателя на колесах, второй контроллер управляет двигателем скашивания; или четыре двигателя на колесах с отдельными каналами).
Разъемы двигателя имеют выводы для подключения одометров.
Место для контроллера шагового двигателя (привод изменения высоты среза травы, например).
Разъем для установки Orange Pi Zero (для поддержки RTK GPS с сантиметровой точностью и некоторых внешних сложных алгоритмов управления) с возможностью обновления прошивки через этот микрокомпьютер.
6 выходов сигнала PPM для управления бесщеточными двигателями и сервоприводами.
6 портов для гидролокаторов HC-SR04, 2 порта для датчиков столкновений (например, бампер газонокосилки с пневматическими датчиками), два емкостных датчика травы, 2 входа для инфракрасных аналоговых датчиков расстояния, четыре входа для проводных датчиков периметра, два разъема для термисторов, управляемые порты для вентилятора, звукового сигнала и трех светодиодов (20 и 70 мА).
Конечно, многие порты можно использовать для подключения других датчиков с определенными ограничениями.
Также к разъемам подключены практически все внешние порты, поддерживаемые микроконтроллером: 3 разъема последовательного порта, две шины I2C с 9 разъемами (один из которых буферизован разъемами как для пятивольтовых, так и для трехвольтовых устройств), 2 шины SPI, CAN (без физического трансивера), USB, два отдельных ЦАПа (просто поднес к разъемам раз уж он есть, там можно проигрывать музыку или что-то в этом роде).
Дополнительный импульсный стабилизатор 5 вольт 2 ампера с шестью разъемами для внешних устройств.
Ну и еще есть реле с фиксацией аварийного отключения аккумулятора, чтобы не допустить его переразряда, если не доберетесь до зарядной станции.
Естественно, напряжение и ток потребления контролируется микроконтроллером (частично через встроенный многоканальный АЦП, частично через дополнительный MAX11617EE).
В режиме ожидания (драйверы двигателей в неактивном состоянии) - ток потребления 130-140 миллиампер.
Схема (для удобства вынесла все на один лист):
В процессе пайки платы я столкнулся с тем, что некоторые элементы слишком малы для ручной пайки феном, а что-то может перегреться (например, диод в блоке зарядки), поэтому возможны небольшие изменения.
Уже ведется разработка SDK для написания прошивок роботов; с его помощью можно будет практически полностью абстрагироваться от низкоуровневого управления оборудованием, получив набор классов для всех периферийных устройств и датчиков.
Например, кусок кода, заставляющий робота повернуть на север, будет выглядеть так (эти примеры уже работают, правда, без каких-то проверок на перегрузку и тому подобное):
И проехать по зашитому периметру до станции, подняв мотор косилки:course = 0.0; imuSens.setCourse(course); motWheel.rollCourse((navThing *) &imuSens, 9000);
mow.setHeight(0);
perSens.setTracking(true);
motWheel.moveCourse((navThing *) &perSens, 120000);
К сожалению, сам SDK выложить пока не могу; многое еще не написано (типа кода поддержки радиометок Decawave DW1000 и всяких вторичных датчиков).
Но могу сказать, что все низкоуровневые функции работают и в скором времени я смогу опубликовать это на github. Тизер: Теги: #Сделай сам или сделай сам #роботы #Робототехника #Умный дом #arduino #газонокосилка
-
Преимущества Публикации В Блоге
19 Oct, 24 -
Презентация Новинок Lenovo В Берлине
19 Oct, 24 -
Камасутра Для Айтишников.
19 Oct, 24 -
Где Находятся Закладки В Google Bookmarks?
19 Oct, 24