Робот для видеонаблюдения на Raspberry Pi. Проект PiKit: модульный робот на основе микрокомпьютера Raspberry Pi Что такое Raspberry Pi

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

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

  1. Батарейки в корпус никак не влазили, поэтому приходилось их приматывать к корпусу изолентой:)
  2. Настройка параметров была вынесена на четыре потенциометра, которые оказались очень чувствительными к температуре. В помещении настраиваешь одни значения, выходишь на улицу - а они уже другие, уплыли.
  3. У Arduino Nano, которую я использовал в пульте, есть всего 8 аналоговых входов. Четыре были заняты настроечными потенциометрами. Один потенциометр служил газом. Два входа были подключены к джойстику. Оставался свободен только один выход, а параметров для настройки гораздо больше.
  4. Единственный джойстик был вовсе не пилотным. Управление газом с помощью потенциометра тоже весьма угнетало.
  5. А еще пульт не издавал никаких звуков, что иногда бывает крайне полезно.

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

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

Новый корпус

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

Элементы управления и меню

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

Чтобы перемешаться по меню, и менять параметры обычно используют кнопки. Влево, вправо, вверх, вниз. Но мне захотелось использовать вместо кнопок энкодер. Эту идею я подсмотрел у контроллера 3D-принтера.


Разумеется, за счет добавления меню, код пульта распух в несколько раз. Для начала я добавил всего три пункта меню: "Telemetry", "Parameters" и "Store params". В первом окне отображается до восьми разных показателей. Пока я использую только три: заряд батареи, компас и высота.

Во втором окне доступны шесть параметров: коэффициенты PID регулятора для осей X/Y,Z и корректировочные углы акселерометра.

Третий пункт позволяет сохранять параметры в EEPROM.

Джойстики

Над выбором пилотных джойстиков я долго не размышлял. Так получилось, что первый джойстик Turnigy 9XR я добыл у коллеги по квадрокоптерному делу - Александра Васильева, хозяина небезызвестного сайта alex-exe.ru . Второй такой же заказал напрямую на Hobbyking.


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

Питание

В старом пульте я использовал простой регулятор напряжения LM7805, который кормил связкой из 8 батареек AA. Жутко неэффективный вариант, при котором 7 вольт уходили на нагрев регулятора. 8 батареек - потому что под рукой был только такой отсек, а LM7805 - потому что в то время этот вариант мне представлялся самым простым, и главное быстрым.

Теперь же я решил поступить мудрее, и поставил достаточной эффективный регулятор на LM2596S. А вместо 8-ми AA батареек, установил отсек на два LiIon аккумулятора 18650.


Результат

Собрав все воедино, получился вот такой аппарат. Вид изнутри.


А вот с закрытой крышкой.


Не хватает колпачка на одном потенциометре и колпачков на джойстиках.

Наконец, видеоролик о том, как происходит настройка параметров через меню.


Итог

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

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

Хочу познакомить вас с одной вполне интересной разработкой - самодельным экспериментальным роботом, которого я назвал "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)

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

Если уже имеются некоторые навыки работы с Raspberry PI 3 то можно попробовать сделать простейшего робота который будет передавать изображение с камеры на компьютер и выполнять посылаемые ему команды, например робот имеет возможность перемещаться в пространстве на своих колёсах и будет некоторое количество команд для управления двигателями. Raspberry PI 3 имеет встроенный WIFI модуль скорости передачи информации которого достаточно для передачи качественного изображения, однако этого не всегда получается добиться но всё же передача хоть какого то видео для начала - это уже хорошо (см. Raspberry pi камера). Если проблема с передачей видео решена то можно приступить к решению проблемы управления двигателями. У Raspberry Pi имеются выводы общего назначения которыми можно управлять через скрипты на языке "питон" (см. http://electe.blogspot.ru/2016/05/raspberry-pi-3-gpio-wifi.html) но такой способ управления не очень удобен. Для решения этой проблемы можно реализовать управление выводами через веб интерфейс, для этого на Raspberry pi нужно установить какой либо веб сервер например lighttpd или apache и интерпретатор языка php, ещё понадобиться установить wiringpi, после чего можно будет написать простой код с html тэгами и вставками php и javascript скриптов необходимых для реализации удобного управления двигателями. Веб сервер lighttpd занимает меньше места в памяти и работает быстрее чем apache но apache более популярен и распространён, поэтому если возникнет какая либо проблема (например с его установкой) то её можно будет проще решить спросив ответ у знающих людей. Установить apache и php можно по инструкции на странице https://www.raspberrypi.org/documentation/remote-access/web-server/apache.md . Перед выполнением инструкций надо выполнить команду

Sudo apt-get update

(о том как отправлять команды на Raspberry pi 3 смотрите на странице http://electe.blogspot.ru/2016/05/raspberry-pi-3-gpio-wifi.html) Дальше будут всего две обязательные команды:

Sudo apt-get install apache2 -y

Sudo apt-get install php5 libapache2-mod-php5 -y

После успешного выполнения которых Raspberry pi "превращается" в сервер.
Далее необходимо установить wiringpi, если он не установлен. В полной версии Raspbian, как правило, wiringpi уже присутствует. Для того чтобы проверит наличие wiringpi нужно ввести команду

Если после ввода этой команды появиться таблица с состоянием выводов то это значит что wiringpi уже установлен, Если такой таблицы не появилось то wiringpi можно установить по инструкциям с сайта https://thedrhax.pw/?p=1460 . Далее можно прямо в терминале писать команды ля управления выводами, например командой

Gpio mode 21 out

Мы переводим вывод gpio 5 raspberry pi в режим выхода,
командой

Gpio write 21 1

Мы выводим лог. 1 на вывод gpio 5 raspberry pi.
Почему пишется 21 а выводится на 5? Это можно увидеть если ввести команду

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

Рисунок 1 - Подключение драйверов и двигателей к Raspberry pi 3


Вместо L6203 можно использовать какие либо другие драйверы но достаточно мощные двигатели подключать лучше к таким. Для упрощения сборки в схеме отсутствует резистор с сопротивлением 0.1 Ом между выводом 10 и землёй но при желании его можно поставить, по нему драйвер будет определять ток и в случае необходимости отключиться чтобы не перегореть (очень хорошая вещь, советую поставить, у меня просто не было такого резистора). Так же желательно поставить предохранитель по питанию.
Далее надо удалить файл index.html командой:

Rm /var/www/html/index.html

И создать новый

Sudo nano /var/www/html/index.php

В который вставить этот код . После чего сохранить нажатием CTRL+O и ENTER и выйти нажатиtм CTRL+X.
В строке

System("gpio write 25 0");

Происходит установка на выводе 26 напряжения логического нуля. Вместо этого можно написать например

Exec("gpio write 25 0");

В общем через system и exec можно выполнять в php те команды которые выполняются в консоли кроме тех что идут с sudo в начале, т.е. например если написать exec("sudo halt"); то Raspberry pi не выключиться.

В строке

Xhr.open("GET", "http://192.168.1.252/?act=1", true); xhr.send();

И ей подобных, вместо 192.168.1.252 надо поставить ip адрес вашего Raspberry PI

Тест драйв и некоторую дополнительную информацию можно посмотреть в видео

Робот автомобиль с управлением raspberry pi 3 каждый ребенок захочет иметь у себя в коллекции. Снимает видео и делает фото по управлению с телефона (andriod) или с вашего персонального компьютера. Отличный комплект с учебными пособиями для того, кто делает первые шаги в робототехнике.


  1. Полный комплект учебных материалов на основе Raspberry Pi с Android App. для улучшения обучения, подробно написанное руководство пользователя, код с объяснением и схемы предоставляются.
  2. Raspberry Pi д используется в качестве контроллера. комплект использует (step-down DC-DC) пониженный преобразователь модуль для уменьшения входного напряжения и водитель мотора модуль с L298N. Также веб-камера поставляется с USB Wi-Fi адаптер, так что вы можете проверить видео в режиме реального времени на ваш КОМПЬЮТЕР или мобильный телефон.
  3. На ПК вы можете контролировать автомобиль двигаться вперед/назад и повернуть влево/вправо, а также управлять камерой, чтобы повернуть вертикально и горизонтально, чтобы захватить изображения в разных направлениях.
  4. Отличный комплект для вас, чтобы начать изучать Raspberry Pi (как код и приложения), узнать об основных компонентов и модулей в электронике, а затем использовать знания, полученные для изучения более широкого поля!
  5. рабочее Напряжение: 7 В-12 В; питается от двух 18650 литиевых аккумуляторных батарей
  6. Предоставлено несколько частей, инструкции и код, необходимый, так что вы можете собрать их самостоятельно, с помощью руководства пользователя и, следовательно, enjoy the fun of making!
  7. Автомобиль управления может быть реализована на ПК с Linux системы, или вы также можете применять его в Linux виртуальной машины.
  8. Камера в этом комплекте MJPG применяется для захвата изображения и передачи видео в режиме реального времени. вы можете просматривать видео, веб-браузер на любом устройстве. Firefox и Google Chrome рекомендуется.


1 упак. х Акриловых пластин
1 упак. х Резьбового крепежа
1 х Башня Pro SG90 Micro Servo
2 х Передач Редуктор
2 х Ведомого колеса
2 х Active wheel
1 х 16-канальный 12-битный ШИМ драйвер
1 х L298N DC Motor Driver Модуль
1 х Шаг вниз DC-DC Преобразователь Модуль
1 х USB Wi-Fi Адаптер
1 х USB Камера
1 х Dual 18650 держатель батареи
1 х Лента
1 х USB Кабель
сервала Провода Dupont
1 х Отвертка
1 x Крест Торцевых ключей

Отдельно нужно приобрести:

1х raspberry pi 3
2×18650 Литий-Ионная Аккумуляторная Батарея (3.7 В) без защитной схемной платой
1 x TF-карты

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 и получаем
В итоге получаем: Всем удачи!