Здравствуйте! Меня зовут Вячеслав Голицын, и я ГИК! Это началось все еще в школе, меня на это подсадили друзья из физмат класса. На переменах, украдкой в туалете и за углом школы мы обсуждали новые гаджеты и схемы для жучков-радиопередатчиков. Я думал просто побалуюсь, но затем я уже не мог соскочить.

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

Когда я обменял свой новый снегокат на учебник А.Марченко и конструктор автомобильного приемника, я понял, что я качусь на ДНО! Меня стали узнавать в лицо на радио-рынках и в магазинах электроники, я читал «Технику молодежи» и посредственные форумы по ночам на dialup’e. Я начал носить очки с простыми стеклами, т.к.

все большую часть моей скромной зарплаты.

Потом жизнь как-то наладилась… семья, дети, и вот уже несколько лет я в завязке, но каждый день читаю Хабр (теперь Гиктаймс). Я менеджер очень среднего звена, я как все — работаю в офисе. Технического образования у меня, увы, нет, но когда я читаю обзор нового гаджета, мини-компьютера или платы автоматизации в сознании уже формируется огромное количество идей где бы это можно было применить (автоматизацию офисного туалета не предлагать).

После недолгого полета фантазии обычно следует заказ и томительное ожидание забугорного чуда чудесного. За время пока долгожданный груз проходит все круги ада сортировочных центров Почты РФ, романтика понемногу из нового образчика современного гения технической мысли улетучивается. Так было и с raspberry pi, arduino, небольшой коробочки с датчиками и проводами. Но тут появилась боль. Имя ей — дача, точнее газон на даче.

Газон косить — не дрова рубить. И не чай пить, и не квесты проходить, и не за пивом ходить. Ну Вы поняли…

Робот косилка

Вы спросите: почему газонокосилка, лето ведь заканчивается, а зимы у нас долгие? Не зря ведь в народе говорят: «The winter is coming…». Возможно, ответ — банальная лень или любознательность, возможно — все вместе, но поддерживать газон в красивом виде — задача не из простых даже при скромных размерах угодий, кои и представлены у вашего покорного слуги.

Предлагаем ознакомиться  Степи и лесостепи – природа, зоны, особенности, характеристики, климат

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

Тележка приводится в движение двумя двигателями с редукторами от стеклоочистителя ВАЗ-2108 (импортозамещение в действии). У двигателей не две щетки на коллекторе, как мне было привычно, а три. Я так и не разобрался для чего третья щетка, но тот факт, что один из проводов подключен к корпусу, а двигатели должны были двигаться в разных направлениях для движения вперед, заставил меня изолировать один из двигателей от рамы.

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

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

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

В общем сомы грамм и нету драм: оформляем заказ на такую же плату, а пока обойдемся двумя реле, т.к. двигатели на первых парах могут крутиться только в одну сторону. А вообще, учитывая отсутствие необходимости в ШИМ, можно сделать H-мост на основании блока из 8 реле для Arduino. А как к этому относишься ты, дорогой читатель?

Предлагаем ознакомиться  Съедобные орехи - виды с фото и названиями

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

Андурина (моя жена устойчиво продолжает ее так называть) подключена к raspberry pi через USB (Все скромное общение по Serial port). Также к малинке подключена веб-камера (в версии 1.0 для вывода картинки через Motion) и wi-fi свисток.

Логика работы системы. На дворе трава, на траве…

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

На Raspberry pi установлена raspbian OS, OpenCV(которая так правильно не завелась) и подняты вебсервер и FTP. Управление и настройка производятся через ssh. Тот код с OpenCV, который работает на ноуте, никак не хочет запускаться на малинке. После продолжительных танцев с бубном было принято решение оставить внедрение функционала, завязанного на OpenCV для версии 2.0.

На малинке работает Python 2.7 скрипт, который сохраняет в таблице MySQL данные о текущем положении косилки в системе координат (подробнее чуть позже). При обращении по IP косилки выводится матрица (система координат), разбитая на ячейки (для удобства 0.5X0.5 метра, так как это ширина скоса). В таблице разным цветом указаны текущие состояния ячеек.

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

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

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

  • ожидает от arduino информации о завершении предыдущего задания (если оно было);
  • получает через arduino информацию с дальномеров;
  • обрабатывает информацию с веб-камеры;
  • если есть возможность двигаться вперед, отправляет на arduino задание совершить движение на одну клетку (0,5м.) вперед. Если клетка впереди заблокирована (есть препятствие), отправляет задание совершить поворот на 90 градусов вправо.
  • опрашивает ультразвуковые датчики расстояния;
  • Для версии 1.1:
    — опрашивает кнопку бампера(при столкновении с препятствием выключает реле питания ДВС);
    — опрашивает инфракрасные датчики препятствий.
  • проверяет состояние переменных с энкодеров о повороте колес;
  • (энкодеры работают на прерываниях, инкрементируют соответствующие переменные до получения нужных значений, из которых следует, что предыдущее задание выполнено.);
  • отправляет на raspbery информацию о завершении задания и данные о расстоянии до препятствий;
  • получает новое задание.
Предлагаем ознакомиться  Алиссум листья

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

  • Использовать OpenCV для определения калибровочных меток. Т.е. некие метки( шары оранжевого цвета) размещаем на палочках рядом с низкими растениями. Метки красного цвета размещаем рядом со стартом или по границе периметра. В OpenCV маской делаем выборку по нужному цвету, затем ищем форму — круг. По размеру круга определяем расстояние до него и размещаем в базе информацию для соответствующего квадрата.
  • С помощью OpenCV проверять нижнюю часть кадра на средний цвет, который должен быть зеленый, чтобы исключить езду по тротуарам.
  • Подключить вторую веб-камеру и с помощью openCV создавать трехмерную карту препятствий.
  • Подключить к ДВС двигатель на 12V в качестве генератора, на косилке создать систему поддержки заряда батарей, чтобы исключить необходимость заряжать ее отдельно.
  • Возможно использовать «генератор» в качестве стартера.

Быдлокод в открытом доступе. Форкайте на здоровье. Буду только рад единомышленникам: https://yadi.sk/d/qObAm0deiogvP

Спасибо за внимание!