Проект Omower – Открытая Универсальная Колесная Платформа (Начало)

Хочу представить свой проект открытой универсальной платформы для домашних роботов (газонокосилок, пылесосов и т.п.

).

Проект пока в стадии сборки и написания ПО, надеюсь на полезные замечания и предложения.



Проект OMower – открытая универсальная колесная платформа (начало)

Недавно я наткнулся на проект 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 миллиампер.

Схема (для удобства вынесла все на один лист):

Проект OMower – открытая универсальная колесная платформа (начало)

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

Уже ведется разработка 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 #газонокосилка

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.