Робот-Газонокосилка. От Черного Металла До Прототипа

Это короткая история о сборке газонокосилки-робота из подручных материалов обычным менеджером, а также о становлении ГИК, отрицании сингулярности, соглашении с Его Величеством Илоном Маском и борьбе человека с машинами.

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

Любознательный читатель, добро пожаловать под кат!

Робот-газонокосилка.
</p><p>
 От черного металла до прототипа



Вместо предисловия:

Привет! Меня зовут Вячеслав Голицын, и я Компьютерщик! Это началось в школе; меня подсадили на это мои друзья из класса физики и математики.

На переменах, украдкой в туалете и за углом школы, мы обсуждали новые гаджеты и схемы радиопередатчиков-жучков.

Я думал, что просто развлекусь, но потом не смог отделаться.

Электроника, которую я собирался починить, никогда не была замечена работающей в доме; во время очередного феерического разгула я жестоко убил магнитофон «Электроника 302».

Меня наказали, но полностью отказаться от пагубной привычки я не смог, поэтому стал тайным выродком, но даже в радиоклубе меня не приняли как своего, да, в клубах это мало заметно, из-за пафоса все перевернуто.

Когда я обменял свой новый снегокат на учебник А.

Марченко и дизайнерскую автомагнитолу, я понял, что иду ко дну! Меня стали узнавать в лицо на радиорынках и в магазинах электроники, я читаю «Технику молодежи» и бездарные форумы по ночам по диалапу.

Я стала носить очки с простыми линзами, потому что… Все равно меня все называли «очкариком».

Даже мой собственный отец однажды поставил мне тройку в одноклассниках.

Окончательно я не выдержал, когда от меня ушла девушка, тогда я увлекся.

Купил новую паяльную станцию, и мой аккаунт на Алиэкспресс стал требовать крови за всё большую часть моей скромной зарплаты.

Потом жизнь как-то наладилась.

семья, дети, и вот уже несколько лет я застрял, но каждый день читаю Хабр (теперь Гиктаймс).

Я менеджер весьма среднего звена, работаю в офисе, как и все.

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

После недолгого полета фантазии обычно следует заказ и томительное ожидание чудесного зарубежного чуда.

Пока долгожданный груз проходит все круги ада в сортировочных центрах Почты России, романтика постепенно улетучивается из нового образца современного гения технической мысли.

Так было с Raspberry Pi, Arduino, маленькой коробочкой с датчиками и проводами.

Но потом появилась боль.

Его название – дача, а точнее газон на даче.



Косить газон – это не рубить древесину.

И чай не пей, и в квесты не ходи, и за пивом не ходи.

Ну, вы понимаете.

Вы спросите: а зачем газонокосилка, лето заканчивается, а зима у нас долгая? Не зря в народе говорят: «Зима близко.

».

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

Я решил совместить активное желание познавать новое + raspberry pi model B + arduino + черный металл + свободная воля, героизм, профессионализм, капитализм, безразличие и катаклизм.

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



Робот-газонокосилка.
</p><p>
 От черного металла до прототипа



Робот-газонокосилка.
</p><p>
 От черного металла до прототипа



Робот-газонокосилка.
</p><p>
 От черного металла до прототипа



Робот-газонокосилка.
</p><p>
 От черного металла до прототипа



Робот-газонокосилка.
</p><p>
 От черного металла до прототипа

Тележка приводится в движение двумя двигателями с редукторами от стеклоочистителя ВАЗ-2108 (в действии импортозамещение).

У двигателей не две щетки на коллекторе, как я привык, а три.

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



Робот-газонокосилка.
</p><p>
 От черного металла до прототипа



Робот-газонокосилка.
</p><p>
 От черного металла до прототипа

У двигателей непростая история: пытаясь понять устройство двигателя, я разобрал один из них – это уже было предвестником того, что двигатель со всей своей мощностью навсегда перейдет к халосару великого пастуха.

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

Источником питания является аккумуляторная батарея напряжением 12 В.

Arduino получает питание через USB от Raspberry. Raspberry подключен к USB-переключателю с отдельным питанием, питаемому от той же батареи 12 В через два параллельных L7805 (пока импульсный преобразователь постоянного тока находится в долгом пути).

Колеса от тележки были куплены на строительном рынке.

Двигатели были подключены через Monster Motor Shield, но по доброй традиции эта плата долго умерла после подачи питания на выходные контакты.

Вангую холивар в комментариях про то, что с кривыми руками ничего делать начинать не стоит, а что если сердце попросит? В общем, сом-грамм и никаких драмов: заказываем такую же плату, но пока обойдемся двумя реле, т.к.

двигатели сначала могут крутиться только в одну сторону.

В общем, учитывая отсутствие необходимости в ШИМ, можно сделать H-мост на базе блока из 8 реле для Ардуино.

Как вы относитесь к этому, дорогой читатель? Управление двигателем и опрос датчиков (ультразвуковые датчики расстояния и энкодеры на колесах; в версии 1.1: инфракрасные датчики препятствий, кнопка в переднем бампере) осуществляется Arduino mega 2560. Андурина (моя жена продолжает ее так называть) подключена к Raspberry Pi через USB (Вся скромная связь осуществляется через последовательный порт).

Также к малине подключена веб-камера (в версии 1.0 для вывода изображения через Motion) и вай-фай свисток.



Логика работы системы.

Во дворе трава, на траве.

Учитывая то, как сильно Илон Маск (и не только он) предупреждал меня (еще надеюсь, что он тоже обращался ко мне) об опасности искусственного интеллекта, я решил пока (т.е.

ИИ), т.е.

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

На Raspberry pi установлена ОС Raspbian, OpenCV (которая запустилась неправильно), а также веб-сервер и FTP. Управление и настройка выполняются через ssh. Код с OpenCV, работающий на ноутбуке, не хочет запускаться на малине.

После долгих танцев с бубном было решено оставить реализацию функционала на базе OpenCV для версии 2.0. Малинка запускает скрипт Python 2.7, который сохраняет данные о текущем положении косилки в системе координат в таблице MySQL (подробнее позже).

При обращении к ИП косилки отображается матрица (система координат), разбитая на ячейки (для удобства 0,5Х0,5 метра, так как это ширина скоса).

В таблице текущие состояния ячеек показаны разными цветами.

1. Серый – неизвестен; 2. Зеленая – нескошенная трава; 3. Желтый – скошенные участки; 4. Красный – участки с препятствием; 5. Синий — зона, где находится косилка.



Робот-газонокосилка.
</p><p>
 От черного металла до прототипа

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

Кроме того, в версии 1.1 на странице должна появиться кнопка аварийного отключения, ручка управления топливной заслонкой ДВС и кнопки ручного управления.



В каждом цикле работы малины:

  • ожидает от ардуино информацию о завершении предыдущей задачи (если она была);
  • получает информацию от дальномеров через ардуино;
  • обрабатывает информацию с веб-камеры;
  • если есть возможность двигаться вперед, он отправляет ардуино задачу продвинуться на одну клетку (0,5 м) вперед. Если клетка впереди заблокирована (есть препятствие), отправляет задание сделать поворот на 90 градусов вправо.



Arduino в каждом цикле:

  • опрашивает ультразвуковые датчики расстояния;
  • Для версии 1.1: — опрашивает кнопку бампера (при наезде на препятствие отключает реле мощности двигателя); — опрашивает инфракрасные датчики препятствий.

  • проверяет состояние переменных от энкодеров о вращении колеса;
  • (энкодеры работают по прерываниям, инкрементируют соответствующие переменные до тех пор, пока не будут получены нужные значения, из чего следует, что предыдущая задача выполнена.

    );

  • отправляет информацию о выполнении задания и данные о расстоянии до препятствий на малину;
  • получает новое задание.



Короткое кривое видео

Полное видео

Планы на будущее, помимо упомянутых ранее в тексте:

  • Используйте OpenCV для определения калибровочных меток.

    Те.

    Расставляем несколько меток (оранжевые шарики) на палочках рядом с невысокими растениями.

    Расставляем красные маркеры возле начала или по границе периметра.

    В OpenCV мы используем маску для выбора нужного цвета, затем ищем фигуру — круг.

    По размеру круга определяем расстояние до него и помещаем в базу данных информацию о соответствующем квадрате.

  • Используя OpenCV, проверьте нижнюю часть кадра на наличие среднего цвета, который должен быть зеленым, чтобы предотвратить движение по тротуарам.

  • Подключите вторую веб-камеру и используйте openCV, чтобы создать трехмерную карту препятствий.

  • Подключите двигатель 12В к ДВС в качестве генератора, создайте на газонокосилке систему поддержки зарядки аккумулятора, чтобы исключить необходимость его отдельной зарядки.

  • В качестве стартера можно использовать «генератор».

Быдлокод в свободном доступе.

Вилка на здоровье.

Буду только рад единомышленникам: https://yadi.sk/d/qObAm0deiogvP Спасибо за внимание! Теги: #Сделай сам или сделай сам #сделай сам #Raspberry Pi #Робототехника #робот #arduino #газонокосилка #робот-газонокосилка #Илон Маск говорит

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