Проект PiKit: модульный робот на основе микрокомпьютера Raspberry Pi. Робот для Google Talk на базе Raspberry Pi Общая схема подключения

  • Tutorial

Очень часто на хабре появляются статьи о том как использовать Raspberry Pi как медиацентр, передвижную видеокамеру, удаленную web камеру и… собственно все. Очень странно, что в такой большой IT тусовке - довольно мало информации о том - как его программировать и использовать одноплатный компьютер там, где он действительно довольно полезен - во всяких встраиваемых системах, где есть ограничения по размеру и стоимости, но также есть потребность в производительности. В нескольких статьях постараюсь описать на примере создания мобильного колесного робота с компьютерным зрением - как можно использовать малинку для создания роботов(штук с интеллектом на борту, а не управляемых с андроида машинок с веб камерой).

Введение

Всегда было интересно программировать что то механическое - ощущаешь себя Богом(как и большинство программистов) - вдыхаешь в кучу деталей душу. Наверное все помнят ту детскую радость от первого мигания светодиодом, шевелящегося сервопривода и т.д. - когда сделал что то, что можно потрогать, что живет, двигается, а не сайтик на php .
Во многих своих творениях, а тем более роботах - человек всегда старается повторить самого себя, или часть своих функций. 80% информации об окружающем мире мы получаем через зрение - так что компьютерное зрение, на мой взгляд, одна из основополагающих областей знания в робототехнике.


Изучение ее я начинал с чтения академических трудов по алгоритмам параллельно с освоением библиотеки компьютерного зрения OpenCV на C++(в случае с Raspberry - Python)- знание принципов работы алгоритмов поможет Вам оценить сложность и выполнимость задачи, еще до начала ее выполнения, а также оптимизировать алгоритмы в критичных местах. Даже если Вы будете пользоваться в основном библиотечными функциями - они хорошо оптимизированы, и вряд ли вы с нуля напишете лучше - Вы сможете оптимизировать какие то параметры, которые незначительно влияют в конкретном случае на решение вашей задачи, но значительно влияют на скорость ее решения - в общем возвращаясь к холивару - «нужна ли программисту математика» - В данном случае нужна, так что советую напрячь немного извилины и разбираться хотя бы поверхностно в работе алгоритмов.

Также нелишне будет хотя бы поверхностно изучить Теорию Автоматического Управления - вместо расписывания ее возможностей - предлагаю просто посмотреть следующее видео (BTW - половина его команды - русские)

Составные части робота



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

Механика

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



Контроллер двигателей

В качестве контроллера двигателей можно использовать любой микроконтроллер, у меня используется Arduino nano - потому что просто попалось под руку.
Возможно возникнет вопрос - почему бы не управлять напрямую с Raspberry? Дело в том, что у оперционной системы квант времени гораздо больше, чем у микроконтроллера, кроме того нет аппаратных ШИМ ов, плюс, если мы захотим улучшить управление двигателями при помощи обратной связи и Теории Управления - это потребует вычислительных затрат и более быстрой реакции - поэтому управляющая двигателями часть и мозг робота разделены - arduino просто получает по UART команду - с какими скоростями и направлениями мозг бы хотел, чтобы крутились двигатели - как это будет достигаться - просто включением ШИМа с нужной скважностью или хитрым управлением, когда вначале мы подаем напряжение больше уставки, раскручивая двигатель, а потом выравниваем - таким образом ускоряя раскрутку двигателя до нужной скорости - все это уже заботы контроллера двигателей, а не Raspberry - поскольку это вообще говоря задача гораздо более жесткого времени - на порядок - два меньшего, чем позволяет Raspberry, да и вообще подобные системы.

Драйвер двигателей

Одной лишь ардуинки недостаточно, чтобы двигатели закрутились - ток, отдаваемый ножкой слишком мал - если мы на маленький выходной транзистор ножки контроллера посадим обмотку двигателя, требующего ток порядка ампер - то просто устроим КЗ - замкнем ключ сам на себя и он скорей всего просто выйдет из строя - поэтому нужен более мощный ключ, позволяющий пропускать через себя большой ток - если нам требуется крутить двигатель в одном направлении - в общем то нам достаточно одного транзистора, но если мы хотим крутить в разных - нам их уже потребуется 4 - такая схема называется H - мост - замыкая диагональные ключи при закрытых других диагональных - мы можем менять направление тока в двигателе.
И такая схема необходима для каждого колеса. К счастью в наше время нет нужды ее собирать - она реализована в виде интегральных микросхем, коих великое множество - так что, подойдет любая, способная управлять током, нужным вашему двигателю. У меня используется вот такой двухканальный от pololu:


Также имеется великое множество всевозможных шилдов для ардуин - при помощи гугла вы их легко найдете по запросу «arduino motor driver». Схему подключения также обычно предоставляет производитель или пользователи всевозможных форумов - ищущий да обрящет. У микросхем 2 питания - одно - которое подается на двигатели от мощного источника тока - например Li-Pol батарейки 7.2В, другое - питание входного каскада логики - ардуиновские 5В, также имеется входы, контролирующие направление вращения каждого канала и вход Enable - подавая на который ШИМ сигнал мы можем регулировать скорость вращения двигателя. Могут быть различные конфигурации в зависимости от шилда, но основные выводы - такие.

В общем то соединив таким образом Arduino, драйвер двигателей, двигатели и батарейку(или просто какой нибудь источник тока на длинном проводе) можете уже начинать играться с управлением моторами. Для получения команд от Raspberry потребуется реализовать прием строчки по UART и ее парсинг - протокол можете тут придумать какой вашей душе угодно. вышеперечисленное - основные части практически любого колесного робота - далее уже начинаются варианты - можете вообще забить на компьютерное зрение и сделать робота чисто на Arduino, который, например, ездит по линии, объезжает препятствия при помощи датчиков расстояния и т.п.

Главный контроллер



Моя же задача - сделать несколько более интеллектуальную платформу для ислледования компьютерного зрения и теории управления - так что следующим элементом системы будет являться одноплатный компьютер Raspberry Pi B+ в виду его невысокой цены, распространенности и доступности информации. В сборку Raspbian включен Python интерпретатор - так что писал программу для робота я на нем

Камера



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

Средство отладки



Для отладки я использую USB Wifi свисток, подключаясь к Raspberry через удаленный рабочий стол по SSH. Тоже в общем то можно использовать любой, для первоначальной настройки вообще можно использовать Ethernet кабель и SSH

Система питания

Аккумулятор - литий полимерный от 2Ач на 7.2В номинального напряжения + зарядка.


Понижающий DC-DC преобразователь - батарея наша выдает от 8.4 до 6В - это напряжение мы можем напрямую подавать на двигатели через микросхему драйвера, но для питания Raspberry и Arduino требуется 5В источник питания - по документации Raspberry Pi требуется источник 5В, способный отдавать не менее 800мА - можно конечно понизить напряжение с батарейного до 5В при помощи линейного стабилизатора, но при таких токах он будет греться и неэффективно использовать заряд батареи, так что я рекомендую использовать импульсный понижающий DC-DC преобразователь - от него у меня питается и Raspberry и Arduino

Собственно фото моего нанотехнологичного робота и пара видео его езды по различным соревновательным трекам в качестве демонстрации:


Линия профи(прерывистая)

Тонкая линия с резкими поворотами(Евро)

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

Хочу познакомить вас с одной вполне интересной разработкой - самодельным экспериментальным роботом, которого я назвал "Zer0". Эта статья является первой из цикла статей по самостоятельному изготовлению робота на основе Raspberry Pi, который будет управляться могущественной связкой Linux + Python.

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

Подготовка

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

Малинка (Raspberry Pi 2B) у меня уже была в наличии, поэтому прикупив парочку Ni-MH аккумуляторов по 6В/6А*ч (позже купил еще один на 12В/2,3А*ч) окончательно решил что вполне можно собирать небольшого робота для обучения, экспериментов, развлечений и не только...

Рис. 1. Набор деталей, которые дали начало самодельному роботу.

Поскольку двигатели оказались на рабочее напряжение +24В, а для питания малинки нужно +5В, то пришлось заказать несколько понижающих и повышающих DC-DC преобразователей на микросхемах LM2596 и XL6009.

Основой шасси для робота будет служить доска из дерева средней плотности, она легкая и на нее удобно крепить все детали при помощи маленьких шурупов-саморезов.

Ходовую часть решил делать трехколесную: два ведущих колеса спереди от игрушечной машинки и одно колесико - сзади, которое будет следовать направлению ведущих. Можно сделать ходовую часть и на 4 колеса, 2 из которых ведущие или же все 4, это уже дело вкуса и запчастей в наличии.

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

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

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

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

Из чего состоит робот

Основные составные части и возможности экспериментального робота Zer0:

  • Мозг робота - Raspberry Pi + Raspbian Linux;
  • Питание - аккумулятор на 12В/2,3А*ч + контроллер на ATtiny2313 + DC-DC преобразователи;
  • Перемещение - два электродвигателя на +24В с редукторами + модуль L298;
  • Воспроизведение звука - два широкополосных динамика 2x3 Вт/8 Ом + усилитель на TDA1517P;
  • Захват видео/фото/звук - Webcam Logitech C270 HD, 1280 x 720 пикселей + микрофон;
  • Управление углом обзора - два сервопривода S05NF;
  • Освещение - 6 ярких светодиодов + отражатель с фокусировкой;
  • Отображение информации - OLED дисплей 128x64 пикселя;
  • Связь - USB Wi-Fi + USB 3G
  • Другие возможности - пиродатчик, газовый анализатор воздуха, датчик температуры и влажности воздуха, 3-х осевой компас, ультразвуковой датчик препятствий, датчик освещения, мониторинг напряжения батареи питания, часы реального времени, 2-3 свободных USB порта для подключения разных устройств.

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

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

Для управления питанием был изготовлен несложный самодельный контроллер на основе ATtiny2313 + электронные ключи на полевых транзисторах. Благодаря ему робот умеет находиться в ждущем режиме (включение по кнопке), выполнять безопасное выключение компьютера с последующим полным отключением питания в случае подачи команды от Raspberry Pi или с кнопки.

Самая дорогая деталь в конструкции робота - это одноплатный мини-компьютер Raspberry Pi. Немного уменьшить его стоимость можно если купить к нему более простой корпус или же вообще изготовить корпус самостоятельно. Отказываться от корпуса для компьютера я бы не севетовал, поскольку он защищает плату компьютера от различного рода внешних воздействий.

Знакомьтесь: Zer0!

Zer0 - это самодельный работ, собранный на основе Raspberry Pi, который управляется операционной системой Linux (Raspbian). Название "Zer0" пришло в голову как-то сразу, это как начальная модель 0-й версии.

Ниже привожу несколько фотографий готового робота (все рисунки кликабельны) и описания к ним:

Рис. 2. Самодельный робот Zer0 на Raspberry Pi и Linux - фронтальный вид.

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

Голова робота содержит HD веб-камеру со встроенным микрофоном, маленький монохромный OLED-дисплей, пиродатчик, а также небольшой фонарик для освещения того на что голова смотрит если очень темно. Для поворота головы в разные стороны, а также для наклонов вперед и назад используются два маленьких но мощных сервопривода.

Рис. 3. Самодельный робот Zer0 на Raspberry Pi и Linux - вид сзади.

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

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

Рис. 4. Самодельный робот Zer0 - вид с боковой стороны где размещен компьютер Raspberry Pi.

С левой стороны у робота находится компьютер, по сути для него отведена вся левая сторона. Здесь мы имеем удобный доступ ко всем разъемам и пинам GPIO, которые размещены на малинке. С передней части у нас есть доступ к Micro-SD карточке компьютера.

Также сзади за компьютером есть небольшая свободная площадка для удобного подключения и размещения различных Flash-накопителей, USB Wi-Fi, 3G-адаптеров и для подключения сетевого Ethernet-шнура в случае необходимости.

Рис. 5. Робот Zer0 - вид со стороны где размещены датчики, контроллер движков и система питания.

С правой боковой стороны у робота размещены: платка с набором датчиков, модуль управления электродвигателями на основе L298 + платка для конвертации сигналов на К561ЛА7, DC-DC преобразователи напряжения на +5В и +24В, плата контроллера питания на ATtiny2313 + ключи на полевых транзисторах и радиатор к ним, панель управления питанием.

Рис. 6. Робот Zer0 - вид снизу на движки, акустические колонки и колесико с подшипником.

Снизу у робота прикреплены движки с колесами, а также колесо с подшипником, которое будет следовать направлению движения робота. Еще у нас здесь располагается очень важный отсек - две акустические колонки с широкополосными динамиками по 3Вт, которые собраны в одном корпусе из фанеры с внутренней перегородкой.

Идеи по применению робота

Приведу несколько идей по использованию робота:

  • Периодические задачи на автомате, оповещение о наличии новой почты, комментариях на сайтах, курсах валют, погоде...о чем угодно (синтезатор речи + информация на дисплее). У многих есть каждодневные задачи, которые приходится выполнять вручную, это все можно запрограммировать и поручить роботу, настроив при этом время, условия и периодичность оповещений;
  • Эксперименты с искусственным интеллектом, нейросетями, логикой . Мощности 2-й и 3-й версии малинки уже хватит для некоторых вещей в этой сфере;
  • Платформа для обучения и работы с OpenCV (Open Computer Vision). Анализ информации с фото и видео для принятия каких-то решений, например распознавание лиц у людей, детектор наличия и перемещения каких-то предметов;
  • Сигнализация об утечке воды в помещении, появления вредных веществ (газов) в воздухе . Суть идеи проста: робот установлен (или же перемещается) в помещении и периодически измеряет уровень влажности воздуха, анализирует наличие паров вредных веществ и газа в воздухе. В случае отклонений от нормы можно подать звуковой сигнал, отправить куда-то письмо или СМС...;
  • Напоминалка о том что нужно полить вазоны и/или проветрить помещение (анализ температуры, влажности и качества воздуха). Часто бывает что люди находясь в помещении привыкают и перестают замечать что по сути там уже нечем дышать, начинает болеть голова, появляется вялость и куда-то пропадают все силы - причиной может быть плохая проветриваемость помещения, низкая влажность воздуха из-за включенного на обогрев кондиционера или обогревателя, жаждущих полива растений и т.п. Можно запрограммировать робота на выполнение периодического контроля качества и влажности воздуха в помещении, с последующем оповещением, например: "откройте окно и освободите помещение на Х минут для его проветривания";
  • Удаленный просмотр и мониторинг помещений (интернет через Wi-FI/3G + управление движением + веб-камера). Полезная штука если на некоторое время нужно куда-то уехать, а дома некому остаться, можно будет удаленно увидеть состояние комнат и всего дома, убедиться что все на своем месте;
  • Система интерактивной охраны для квартиры или дома (фото + видео + перемещение + звуковой оповещение, сигнализация). Динамические и статические маршруты перемещения с автокорректировкой + логирование событий и значений с датчиков, запись видео и фото, отправка информации на почту или личный удаленный сервер в интернете;
  • "Скайп на колесах" (камера + звук + микрофон + перемещение). Возможность общаться и при этом перемещать камеру, меняя позицию и угол обзора удаленно. Возможно вы видели как Эдвард Сноуден удаленно (без физического присутствия) выступал на конференциях TED 2014 (Ванкувер) и CES 2016 в Лас-Вегасе используя робота, которого в сети назвали как "Сноубот"? - в моем случае получится почти то же самое, за исключением наличия большого дисплея на котором смогут видеть того кто "за роботом". Тем не менее, к роботу можно подключить дисплей на 4-7 дюймов используя HDMI выход;
  • Подбор и воспроизведение музыки (голосовые команды + удаленное управление). Можно воспроизводить музыку под настроение, отдавая простые голосовые команды или же просто по хлопкам. Также запрограммировав робота можно включать музыку или какое-то звуковое приветствие при срабатывании пиродатчика если кто-то вошел в помещение;
  • Управление электроприборами в квартире или доме (через радиомодуль). Здесь нужна доработка: передатчик на 433МГц встраиваем в робот, приемники с "умными" электронными реле подключаем к каждому устройству для управления их питанием и/или режимами;
  • Развлечение для детишек (перемещение + камера + звук + свет + удаленное управление). В робота можно заложить какую-то программу и научить его реагировать на какие-то голосовые команды, а также самому управлять и разговаривать через него удаленно... детишки будут в восторге;
  • Источник питания с напряжением 12В и током 4А (стоит предохранитель). В тыловой части робота установлена панель управления питанием с двумя клеммами на которых постоянно присутствует напряжение +12В даже если робот выключен, также через них сейчас выполняется заряд аккумулятора. Вполне можно использовать как источник питания для каких-то самоделок и экспериментов не покупая при этом дополнительного аккумулятора или БП;
  • и т.д. и т.п. .... придумайте сами:) .

Скомбинировав некоторые из приведенных выше идей можно получить достаточно функциональное устройство, которое может принести не мало пользы вам и вашим близким.

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

В заключение

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

Другие мои статьи по самодельному роботу Zer0:

  1. Изготовление платформы для самодельного робота (шасси, двигатели, акустика, УНЧ на TDA1517)

Желаю вам творческих успехов и побольше позитива во всех ваших начинаниях!

Arduino, безусловно, популярная и интересная платформа, но и у нее есть свои ограничения. Что, если тебе нужно использовать на роботе дополнительный софт? Подключать периферию? На помощь приходит хорошо знакомый Raspberry Pi.

В этой статье я покажу, как сделать управляемого по Wi-Fi робота с веб-камерой на базе Raspberry Pi. Эта платформа позволит нам работать со всем понятным Linux, с легкостью использовать любой нужный нам софт, а также задействовать почти любую периферию.

Набор

  • Raspberry Pi модели В - 2200 р.
  • Веб-камера - 1500 р.
  • Wi-Fi-донгл - 300 р.
  • Аккумулятор на 12 В 7 А ч - 500 р.
  • Колесная база, провода и двигатели от какой-нибудь игрушки

Итог: 4500 р.

О компьютере

Я использовал стандартный Raspberry Pi версии B, который обладает двумя USB-портами, Ethernet-портом и 512 Мб оперативной памяти. Также существует модель А, в которой есть только один USB-порт, 256 Мб памяти и отсутствует Ethernet. Такая плата более сложна в настройке, но зато ей нужно намного меньше питания.

В качестве ОС я выбрал стандартную Raspbian (оптимизированный под железо «малинки» Debian). Для установки операционной системы нам потребуется SD- или SDHC-карта объемом желательно не менее 4 Гб класса 10 и любой компьютер с кардридером. Сам процесс заливки довольно тривиален. Пользователям UNIX будет достаточно утилиты dd. Вставляем готовую карточку в «малинку», подключаем ее к сети, включаем любимый SSH-клиент. Стандартный логин pi, пароль - raspberry.

При первом запуске появится окно с конфигурациями - если этого не произошло, то его можно вызвать командой raspi-config. Нас волнует несколько пунктов:

  • Expand filesystem - расширение основного раздела на всю карту памяти. Иначе системе не будет доступно больше 4 Гб.
  • Change User Password - стандартный пароль лучше все-таки сменить.
  • Internationalisation Options - выставляем локаль ru_RU.UTF-8 UTF-8 и соответствующий часовой пояс.
  • Enable Camera - включение поддержки камеры. Потребуется для камер с DSI-интерфейсом (например, для официальной камеры), но в моем примере это не нужно, то есть можно поставить значение Disable.

Для того чтобы избавиться от сетевого кабеля, нужен поддерживаемый Wi-Fi-донгл. Я использовал D-Link DWA-110, а полный список есть в интернете (bit.ly/1cQXMFP). Расскажу немного о настройке:

  1. Подключаем Wi-Fi к Raspberry.
  2. Смотрим, определилась ли она #lsusb

    Получим что-то подобное:

    Bus 001 Device 005: ID 07d1:3c07 D-Link System DWA-110 Wireless G Adapter(rev.A1)

  3. Подключаемся к нашей сетке: # sudo wpa_passphrase имя_точки ключ_точки > /etc/wpa_supplicant/ wpa_supplicant.conf # sudo iwconfig wlan0 essid имя_точки # sudo wpa_supplicant -B -Dwext -i wlan0 -c /etc/wpa_supplicant/ wpa_supplicant.conf # sudo ifconfig wlan0 down # sudo ifconfig wlan0 up

    и проверим, подключились ли мы к точке доступа:

    # ifconfig

Управление

Для начала установим веб-интерфейс, через который мы будем управлять роботом. Я остановился на WebIOPi. Этот продукт разработан специально для применения RPi в автоматизации и робототехнике.

Установка интерфейса производится следующим образом:

  1. Скачиваем архив программы в любой каталог командой # wget http://webiopi.googlecode.com/files/WebIOPi-0.6.0.tar.gz
  2. Распаковываем архив в текущую директорию tar xvzf WebIOPi-0.6.0.tar.gz
  3. Переходим в каталог с программой # cd WebIOPi-0.6.0

    Вес пакета составляет всего 152 Кб.

  4. Запускаем установочный файл # sudo ./setup.sh
  5. И ставим веб-интерфейс на автозапуск # update-rc.d webiopi defaults

Теперь займемся созданием страницы управления. Для начала скачаем архив проекта по адресу bit.ly/1di2qgl . Распакуем его в каталог пользователя:

# sudo nano /etc/webiopi/config

Что меняем:

Myscript = /home/pi/robot/python/script.py doc-root = /home/pi/robot/html/ welcome-file = index.html gpio-export = 25, 11, 8, 9 gpio-post-value = true

Устанавливаем «глаза»

Итак, подключаем к роботу веб-камеру. Я использовал камеру HP HD-4110 с поддержкой Full HD и V4L, но смысла брать именно Full HD камеру нет, так как у нас разрешение изображения 640 на 480. Полный список есть здесь: bit.ly/1cR06N4 . Почти для каждой камеры в этой табличке указано, требуется ли ей внешнее питание. Это важно, поскольку «малинка» может стабильно питать по USB далеко не каждый девайс, а у некоторых камер питание в принципе подводится через внешний адаптер. Поэтому стоит остерегаться некоторых моделей от Logitech и Microsoft. Дальше по списку:

  1. Проверяем «подключенность» # lsusb

    Получим что-то подобное: Bus 001 Device 004: ID 03f0:9207 Hewlett-Packard

  2. Устанавливаем пакет video for Linux # apt-get install libv4l-0
  3. Устанавливаем утилиту mjpg-streamer-rpi # wget http://www.bobtech.ro/get?download=36:mjpg-streamer-rpi
  4. Переименовываем скачанный файл # mv get\?download\=36\:mjpg-streamer-rpi mjpg-streamer-rpi.tar.gz
  5. Распаковываем # tar -zxvf mjpg-streamer-rpi.tar.gz
  6. Переходим в каталог с программой # cd mjpg-streamer
  7. Запускаем # ./mjpg-streamer.sh start
  8. При необходимости настраиваем скрипт под себя # sudo nano ./mjpg-streamer.sh VIDEO_DEV="/dev/video0" - иденти­фикатор устройства; FRAME_RATE="30" - частота кадров (FPS); RESOLUTION="640x480" - разрешение; PORT="8080" - HTTP-порт; YUV="false" - флаг YUV-кодирования.

При 30 кадрах в секунду моя система работала нормально (без оверклока), но, чтобы снять нагрузку с компьютера, значение можно снизить вплоть до 5. Также обрати внимание на YUV - это позволит нам немного оптимизировать размер видеопотока за счет другого принципа кодирования цвета. Создаем скрипт автоматизации запуска:

$ cd /home/pi $touch autostart.sh $ nano autostart.sh #!/bin/sh sudo /etc/init.d/webiopi start cd /home/pi/mjpg-streamer ./mjpg-streamer.sh start

#!/bin/sh -e # # rc.local ... cd /home/pi ./autostart.sh exit 0

Если хочешь полюбоваться результатом, то зай ди в браузере по адресу http://raspberrypi:8000, логин webiopi, пароль raspberry. В качестве бонуса можно открыть веб-интерфейс в «мир». Для этого нужно дать в твоем роутере доступ к портам 8000 и 8080 для IP твоей «малинки». Естественно, перед этим нужно сменить стандартные логин и пароль WebIOPi командой

# sudo webiopi-passwd

После чего запустится генератор файла пароля и запросит сначала логин, а потом пароль дважды. Результатом будет: Hash: «длинная-длинная строчка с множеством символов» Saved to /etc/webiopi/passwd

После проведенных операций требуется перезагрузка сервера

# sudo /etc/init.d/webiopi restart

Сборка

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

Схема взята из самой машинки. Все номиналы деталей и транзисторы взяты прямо оттуда. Транзисторы Q1, Q2 лучше использовать B772, транзисторы Q3, Q4 - D882. Если ты экономишь место, то транзисторы Q5 и Q6 лучше брать SMD с маркировкой 6C. Схема скопирована с платы машинки, от которой взята колесная база, но я добавил резисторы на 1 МОм параллельно входам управления, дабы погасить наводки. Двигатель питается напрямую через драйверы от аккумулятора 12 В. При желании можно организовать регулировку скорости машинки посредством широтно-импульсной модуляции. Теперь подключаем все по такой схеме:

  • За движение вперед отвечает порт GPIO 11, назад - GPIO 9, влево - GPIO 25, вправо - GPIO 8. Подключаем к драйверам двигатели, а драйверы к соответствующим портам на Raspberry Pi.
  • Питание управляющей части робота осуществляется через DC/DC-преобразователь на микросхеме LM2596.
  • На вход мы подключаем аккумулятор, а на выход Raspberry Pi. Когда наш робот выключен, у нас будет утечка тока через транзисторы драйверов и БП Raspberry, поэтому надо поставить тумблеры в разрез цепям питания, первый тумблер между плюсом аккумулятора и преобразователем, а второй так же между плюсом аккумулятора и клеммой питания драйверов.

Итак, долгожданный пуск готового устройства. Производим подключение по следующей схеме:

  • К RPi подключаем веб-камеру, USB-адаптер Wi-Fi, преобразователь и проводники, ведущие к драйверам.
  • Далее подсоединяем Raspberry к аккумулятору через преобразователь и включаем его. Аккумулятора хватает на два-три часа.
  • После загрузки компьютера включаем тумблер подачи напряжения на драйверы.
  • Заходим с любого устройства из нашей локалки по адресу http:/адрес_твоего_RPi:8000 и катаемся на машинке по квартире:).

Читателю

Функциональность Raspberry Pi зависит только от фантазии, здравого смысла и потребности человека, держащего его в руках. Мой пример - не единственный, как можно применить этот компьютер, созданный для обучения детей программированию. Готового робота можно модернизировать как угодно. Можно подключить к нему датчики изгиба по шине I2C и сервоприводы, пошаманить с механикой и получить манипулятор, как вот здесь: bit.ly/1e1pOQ0 , на Arduino. Далее дополнить его еще одним АЦП и сделать робота, управляемого голосом! Например, вот этот: bit.ly/1fJwTvz , специализированный под RPi АЦП. Так как шина I2C поддерживает до 127 устройств, то реализовать можно практически все. Я в дальнейшем планирую переделать колесную базу на гусеничную и помощнее - хочется, чтобы модель была более серьезных размеров:). Далее поставить лазеры, атомный источник питания и тому подобное, но это уже мелочи:).

Raspberry Pi это одноплатный компьютер, сделанный для обучения базовым компьютерным навыкам для школьников. В последствии получивший намного более широкое применение и популярность, чем ожидали его авторы. Наша плата выглядит так: Данная версия платы оснащена процессором ARM11 фирмы Broadcom BCM2835 с тактовой частотой 700 МГц и модулем оперативной памяти на 256МБ/512МБ. Raspberry Pi работает под управлением операционной системы Linux. Мы, будем использовать плату версии «B» с установленной ОС Raspbian.

1. Сборка робота на базе гусеничной платформы

Raspberry Pi и камера будут установлены на гусеничную платформу. По сути это будет мобильная система видеонаблюдения.
Сама Raspberry Pi с драйвером моторов будет закреплена с помощью конструктора Lego, так как на данной плате отсутствуют необходимые крепежные элементы.
Электропитание платы и моторов раздельное. На моторы стоит 8 аккумуляторов по 1.2 вольта, на плату стоять 2 аккумулятора по 3.7 вольта. Все аккумуляторы включены последовательно. Моторы получают питание через драйвер моторов выполненный на L293D с помощью навесного монтажа.
Электропитание самой платы осуществляется через линейный стабилизатор, так как требуется фиксированное напряжение в 5 вольт. Что умеет данная платформа делать: 1. Сам перемещаться по площади (квартире и тд) используя датчик Ultrasonic HC-SR04 для обьезда препядствий. 2. Снимать через определенное время фото (видео кадр) снимок и отправлять его на яндекс или гугл диск. 3. Сам подъезжать на базу для подзарядки используя ИК-локатор. 4. Возможность ручного управления, используя браузер и интернет. Стабилизатор для питания самой платы raspberry. На макетной плате был собран драйвер управления моторами на L293 и установлен гироскоп mpu-6050, подключенный по шине I2C.
Общаться с интернетом будет за счет вот такого WiFi адаптера Tp-Link.
Завелся сразу из коробки, без установки дополнительного программного обеспечения. Так же установлена камера для raspberry pi с CSI интерфейсом.
Для поворота камеру использоваться будет вот такой механизм на двух сервоприводах.
Управлять им будет Raspberry напрямую с GPIO портов, как и моторами движения через микросхему L293D. Зарядка робота будет осуществляется с док станции к которой надо будет подъехать. Для этого на передней части шасси установлены контакты для подзарядки.
Была куплена в магазине вот такая макетная плата на которой все будет смонтировано. От деталей конструктора Lego для крепления Raspberry пришлось отказаться, так как не все умещается.
Прикрепив ее к шасси получаем. Далее на штырьки так крепим саму Raspberry Pi.
Теперь на шасси.
Примерно вот так будет ездить платформа:

2. Общая схема подключения


3. Подключение моторов

Подробно разберём схему подключения моторов с помощь L293D.
Порты GPIO Raspberry Pi к драйверу моторов подключаем следующим образом: Левый мотор: L293 IN1 on GPIO 9 L293 IN2 on GPIO 10 L293 EN1 on GPIO 11 Правый мотор: L293 IN3 on GPIO 23 L293 IN4 on GPIO 24 L293 EN2 on GPIO 25

4. Настройка Raspberry Pi

Для того чтобы управлять данным шасси удалено, нужен белый IP адрес (постоянный), который можно сделать с помощью роутера находящегося в помещении. Для удаленного управления и настройки нам понадобится программа PuTTY. Скачать ее можно на просторах интернета. На Raspberry нужно включить SSH сервер, если вы этого не сделано то в консоли нужно набрать команду sudo raspi-config В пункте SSH нажать на Enable. Далее перезагрузить плату, теперь мы можем удаленно подключится. Устанавливаем на нашем компьютере PuTTY и настраиваем ее. Для этого в вкладке «Сеанс» вводим IP адрес Raspberry Pi. IP адрес можно посмотреть в настройках роутера. Номер порта оставляем 22, тип соединения SSH. Нажимаем «Сохранить» введя при этом название сеанса. Теперь настройки сохранены. Далее выбираем пункт Соединение -> Данные и вводим наши имя и пароль для входа на Raspberry. Если не меняли, то имя и пароль те же: pi и raspberry. Вводим мы это для того, чтобы не вводить каждый раз имя и пароль при входе. Теперь выбираем пункт SSH ->X11 и ставим галочку напротив «Включить переадресацию X11», а в строчке «Отображение дисплея Х» необходимо написать localhost:0 Вернемся в вкладку «Сеанс» и сохраняем все настройки под тем именем, что уже записали. Всё, настройка завершена! Нажимаем «Соединить» и входим в командную строку Raspberry Pi. Теперь настраиваем картинку с камеры в браузер. Для этого в командной строке вводим: sudo apt-get update После завершения работы команды, пишем следующую: sudo apt-get upgrade Затем: sudo raspi-config и включаем поддержку камеры. Перезагружаемся, снова запускаем PuTTY и соединяемся с raspberry. Далее устанавливаем приложения нужные для правильной работы mjpg-streamer: sudo apt-get install libjpeg8-dev Затем: sudo apt-get install cmake Скачиваем исходники mjpg-streamer: wget github.com/jacksonliam/mjpg-streamer/archive/master.zip Потом распаковываем полученный архив: unzip ./master –d ./Valli (Vflli произвольное имя) Заходим в папку cd /Valli/mjpg-streamer-master/mjpg-streamer-experimental далее вводим make clean all Командой nano меняем файл start.sh sudo nano Valli/mjpg-streamer-master/mjpg-streamer-experimental/start.sh удаляем там две незакомментрованные строки и пишем вместо них cd etc/ms/mjpg-streamer-master/mjpg-streamer-experimental ./mjpg_streamer -o "./output_http.so -w ./www" -i "./input_raspicam.so -x 640 -y 480 -fps 10 -ex auto -awb auto -vs -ISO 100" Выходим из редактора командой Ctrl+X, затем Enter (соглашаемся с изменением) и Y (да). В папке mjpg-streamer-experimental запускаем наш скрипт: ./start.sh Должно запуститься и в консоли будет много букв на камере загорится светодиод. Команда Ctrl+C остановит скрипт и светодиод погаснет. Открываем браузер, заходим по такой ссылке: ip-address-raspberry:8080/?action=stream (где ip-address-raspberry – это IP нашей raspberry) и попадаем на вебсервер, нажимаем на Stream и видим:
Чтоб робот двигался необходимо установить веб-интерфейс, который будет управлять роботом. Устанавливаем. Для начала скачиваем WebIOPi wget webiopi.googlecode.com/files/WebIOPi-0.6.0.tar.gz распаковываем tar xvzf WebIOPi-0.6.0.tar.gz Заходим в папку cd WebIOPi-0.6.0 и запускаем файл установки командой sudo ./setup.sh После установки, командой: update-rc.d webiopi defaults делаем автозапуск интерфейса с raspberry. Как всегда открываем браузер, заходим по такой ссылке: ip-address-raspberry:8000 и получаем
В итоге получаем: Всем удачи! 2018-04-17T11:12:29+05:30

The Raspberry Pi works just like your regular desktop PC, except that it is a single board microcomputer the size of a credit card. But, is that all you can do with your Raspberry Pi? Not really. The device is so popular among students, professionals, hobbyists, and artists alike because you can do many things with it, including building a robot!

The best part is that you can build one for as cheap as $50 or as expensive as $1000 and beyond. Where do you get started, then? Pick out the right Raspberry Pi robot kit based on your preferences and you’ll be good to go!

Here’s a list of the best kits we found:

Top Raspberry Pi Robot Kits

1) SunFounder Raspberry Pi Smart Robot Car Kit

Hands down, the SunFounder Raspberry Pi robot kit is the best in the market today and we say this because it has outstanding functionality and just about everything you need to get started with your robot building project. It is a comprehensive STEM learning kit for enthusiasts and professionals and users can’t stop praising it.

Let’s take a look at all the features this kit comes with:

  • You will have a lot of fun during assembly! The vehicle is quite well-designed.
  • You can use it seamlessly for Python coding.
  • It has an S-block based graphical visual programming language line.
  • It comes with 3 different sensor modules that function for ultrasonic obstacle avoidance, light follower, and line follower.
  • You can engage in simple GUI programming with this robot kit.
  • The kit comes with the following:
    • Robot HATS
    • 1 set of acrylic plate
    • TB6612 motor driver
    • PCA9685 PWM driver
    • Light follower module
    • Ultrasonic obstacle avoidance module
    • 5-CH line follower module
    • 2 battery holders
    • 1 SunFounder Servo
    • DC gear motor
  • Remember that you can use this only with Raspberry Pi and not the other boards.
  • It comes with a user manual that has complete instructions as well as code for the vehicle. It also has a published video online to help you further with the assembly and usage.

2) Dexter Industries Raspberry Pi GoPiGo3 Robot Kit

The Dexter Industries has made this GoPiGo3 Robot kit which helps to build a fully functional robot powered by Raspberry Pi 3. It includes a robot body, motors, controls and everything you need to get your Raspberry Pi up and running. Currently, it is one of the most popular Raspberry Pi Robot Kits on Amazon.

Features of the GoPiGo3 Raspberry Pi Robot Kit are:

  • It is a super robot car and upgraded version of GoPiGo
  • It comes with the fastest Raspberry Pi 3 board
  • Also works great with the A, B, and B+
  • It requires no soldering and powered by eight AA batteries
  • Dexter Industries provide the software examples and APIs
  • Other accessories include a preloaded Micro SD card, an Ethernet cable, a USB WiFi adapter, Raspberry Pi power supply, an ultrasonic sensor, and all the other essential components of the GoPiGo basic starter kit

3) Rapiro Robot for Raspberry Pi by Switch Science

The Switch Science has designed the Rapiro robot which is a DIY Raspberry Pi-powered kit. It is an affordable, sturdy, easy to assemble, humanoid robot kit.

Features of the Rapiro Robot by Switch Science are:

  • It is a DIY model Raspberry Pi robot kit
  • It is specially designed for the hobbyists, students, and engineers in the robotics field
  • The kit comes in unassembled condition, so user needs to assemble the parts
  • You can also install the Model B+ of Raspberry Pi with some small modifications in the Rapiro
  • After assembling, it weighs only 1Kg (Lightweight design)
  • It comes with 12 servos and a servo control board
  • Recommended for the age above 15+

4) PiStorms LEGO Robot – Raspberry Pi V2 Starter Kit

You can make the stunning robot powered by Raspberry Pi with this fantastic Raspberry Pi Robot kit from mindsensors.com. It easily interacts with your bot and can be programmed using the Python. The package includes a PiStorms controller, a LEGO compatible frame, a 6-AA battery holder, a WiFi adapter and an SD card loaded with a ready to use Operating System.

Features of the PiStorms Raspberry Pi Robot Kit are:

  • You can make LEGO robot by using the brains of Raspberry Pi!
  • It works great with the Raspberry Pi A+, B+, and Raspberry Pi 2
  • The LEGO Mindstorms NXT or the EV3 motors & sensors can be connected to code the Raspberry Pi
  • It has a built-in color touch display screen of 2.4-inch
  • The sturdy design includes an and a WiFi adapter

5) SunFounder Smart Video Car Raspberry Pi Robot Kit

If you want to get started with a robot, then this smart video car Raspberry Pi robot kit from SunFounder is a great option to choose. You can also apply this kit in a virtual machine on Linux. If you have an Android OS installed on Raspberry Pi, then you can operate this setup using a supported app by SunFounder.

Check the features of the SunFounder Raspberry Pi Robot Kit below:

  • It is a complete Raspberry Pi learning kit for the beginners in the field of robotics and electronics
  • The kit uses a step-down DC to DC converter module that reduces the input voltage
  • An L298N motor driver module also included in the bundle
  • It is a great kit for studying the Raspberry Pi robotics by both the code and application
  • It has a working voltage of 7 to 12V and is powered by two rechargeable lithium batteries of 18650A
  • The kit also includes a Webcam with a USB WiFi adapter
  • It comes with a compatible Android App for Raspberry Pi

6) BrickPi+ Raspberry Pi Base Kit


Design a stunning robot with the BrickPi starter bundle from Dexter Industries. It comes with all the needed accessories. You need to separately buy the Raspberry Pi 3, power supply, micro SD card with preloaded ‘Raspbian for Robots’ software, etc. though.

Features of BrickPi+ Raspberry Pi Robot Kit from Dexter Industries are:

  • The battery pack is enough to power your Raspberry Pi board
  • If you attach the BrickPi case with LEGO, then it will turn into an excellent featured robot
  • Other languages like Scratch, Python, and Java can be used to write code
  • You can connect up to four NXT or EV3 digital/analog motors & sensors
  • Control it remotely by connecting the LEGO Mindstorms robot to the web
  • An acrylic case is sturdy enough to protect your setup from accidental damage
  • A fantastic Raspberry Pi robot kit for beginners

The BrickPi+ Raspberry Pi robot kit is a Wi-Fi supported, cross country, off-road smart car robot kit. It helps you to make a 4-wheel smart robot car on your own without any professional help.

7) Raspberry Pi 3 Smart Video Car Kit by SunFounder

The SunFounder has developed an open source robot to help you understand the coding platform using Raspberry Pi 3. It includes a wide-angle webcam to give clear and perfect pictures of the objects that come in between the path of the robot car.

Features of the SunFounder Smart Robot Kit for Raspberry Pi 3 are:

  • You will get a real-time video transmission through the powerful webcam
  • An included remote helps to navigate the robot car easily
  • Attractive look, sturdy design, and multiple all-together make it a value for money robotics learning kit
  • It supports a compatible app which is supported by all types of Operating Systems
  • Though the Python code is provided to program it, you can use any development platform to make it up and running
  • It will need two high-capacity batteries to work on the operational voltage of 7-12 Volts
  • Essential components like Raspberry Pi 3, HATs, wide-angle camera, PWM driver, Motor driver, Servo, battery holder, screwdriver, wrenches, wheels, screws, nuts, and wires make you worry free from making different purchases to make a complete product

The user-friendly graphical interface, simple coding section with a drag-and-drop feature, multiple OS, and coding languages support, etc. are the main advantages to have this RPi 3 robot car kit. It can work with any computer, tablet, mobile phones, etc.

8) Kuman Professional WIFI Smart Robot Car kit for Raspberry Pi


If you want a complete Raspberry Pi robot kit with a WiFi functionality, then Kuman professional robotic kit is an excellent option to choose. It will help you to control your Pi powered robot car through a mobile application too.

The Raspberry Pi Robot Car Kit from Kuman comes with features as below:

  • It comes with a preloaded SD card of 8GB capacity including the robot system codes
  • An included webcam provides real-time image and video transmissions on your device
  • Inbuilt hotspot feature offers an easy control through an app
  • Open source Python code makes the programming task easy and effective
  • The camera has 2-axis cradle which makes the shooting at any angle, and that is done without moving the robot car
  • The setup works on the most successive and powerful solution including the brain of the RPi motherboard & drive expansion with power management
  • A detailed manual with easy-to-understand diagrams helps to understand the working of the project

The smart robot car kit from Kuman is compatible with computer systems, iOS, and Android devices to let you get started with your Raspberry Pi 3. It takes advantage of both the application and coding platforms to interact and control the robotic car kit.

We hope we helped you find the best Raspberry Pi robot kit to get started with your magical projects. If you are still confused, you could take our recommendation and purchase the SunFounder Raspberry Pi Smart Robot Car Kit. It is supremely reliable and very easy to work with.

What are your thoughts? We would love to hear from you!

Вверх