Мобильный робот с камерой на Raspberry Pi. Робот для Google Talk на базе Raspberry Pi Что нужно для начала работы с Raspberry Pi

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 устройств, то реализовать можно практически все. Я в дальнейшем планирую переделать колесную базу на гусеничную и помощнее - хочется, чтобы модель была более серьезных размеров:). Далее поставить лазеры, атомный источник питания и тому подобное, но это уже мелочи:).

Программа обмена текстовыми сообщениями Google Talk обычно используется для общения между людьми. Тем не менее, технология, лежащая в её основе удобна для реализации программных роботов. Интернет-боты, они же веб-роботы, WWW роботы или просто «боты» также могут использовать эту технологию для исполнения автоматических функций с помощью интернета. Существует масса подобных ботов, предоставляющих различные службы, начиная от шуточных ([email protected]) до сокращения URL ([email protected]) и даже математических вычислений ([email protected]). Подключение к подобным ботам не является сложной задачей, достаточно добавить адрес бота в ваши контакты. Затем, при необходимости, отправьте боту текстовую команду и он пришлёт в ответ требуемую информацию.

Бот Raspi похож на всех остальных интернет ботов. Для его настройки необходимо иметь отдельный адрес электронной почты, связанный с учетной записью Google Talk. Этот адрес должны будут добавить себе в контакты все желающие управлять ботом. Затем, как только будет запущен скрипт бота, он подключится к службе чата Google и появится среди ваших друзей в списке контактов.

Программное обеспечение бота представляет собой клиента протокола XMPP, написанного на языке Python. При запуске, скрипт подключается под своими учетными данными к службе Google Talk. Скрипт на языке Python является развитием проекта pygtalkrobot - открытого проекта бота gtalk (google talk) с использованием библиотек XMPPPY и PyDNS, а также с использованием кода проекта python-jabberbot.

Программное обеспечение

Бот требует наличия дополнительных модулей Python. Проще всего установить их с помощью менеджера пакетов pip. Если он не установлен, вы можете установить его с помощью apt-get:

Sudo apt-get install python-pip git-core python2.7-dev

Затем обновите индекс easy_install:

Sudo easy_install -U distribute

и установите модули GPIO, xmpppy и pydns:

Sudo pip install RPi.GPIO xmpppy pydns

Затем скопируйте мой репозиторий с исходниками робота Raspi Gtalk:

Git clone https://github.com/mitchtech/raspi_gtalk_robot.git

Теперь смените рабочий каталог:

Наконец, укажите имя пользователя и пароль в службе Google для своего робота. Это можно сделать с помощью полей BOT_GTALK_USER, BOT_GTALK_PASS, и BOT_ADMIN в строках с 31 по 33 файла raspiBot.py. Рекомендуется (но не является необходимым) создать для робота свою собственную учетную запись в службах Google. Кроме того, поскольку доступ к шине GPIO на компьютере Raspberry Pi предоставляется только суперпользователю, запускать робота необходимо с помощью команды sudo:

Sudo python ./raspiBot.py

Скрипт, предлагаемый в качестве образца, понимает следующие команды:

: включает указанный выход GPIO
: отключает указанный выход GPIO
: устанавливает указанное состояние указанному выходу
: считывает состояние указанного выхода GPIO
: определяет состояние подключения google talk и статусное сообщение в соответствии с аргументом
: выполняет команду оболочки, указанную в аргументе после слова «shell» или «bash»

Например, сообщение «pinon 10» даст команду включить 10-й выход GPIO, сообщение «read 8» даст команду считать текущее состояние 8-го входа GPIO, наконец сообщение «bash ps» запустит на выполнение команду оболочки «ps».

Железо

Конфигурация, показанная в видеоролике, включает в себя двухпозиционный переключатель, подключенный к входу 8 GPIO, а также светодиод, подключенный к 10-му выходу GPIO. Вот подробная схема подключения (схема сделана с помощью Fritzing):

Пример использования №1. Домашняя автоматизация

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

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

Пример использования №2. Удаленный доступ

Робот Raspberry Pi может быть использован в качестве устройства удаленного доступа. В этой конфигурации, каждое сообщение, отправленное роботу будет обработано как команда операционной системы, результаты работы которой будут доставлены обратно пользователю в виде ответного сообщения. Конечно, такое устройство создает проблемы безопасности. Для защиты от несанкционированного доступа, робот отвечает только на сообщения Google talk от пользователя, указанного как администратор. По умолчанию, сообщения от остальных пользователей будут игнорироваться.

Вот небольшой список относительно безопасных команд, которые можно запускать удаленно с помощью робота Raspberry Pi:

vmstat - отображает активность системы, оборудования и прочую информацию
uptime - время непрерывной работы системы
w - показывает подключенного пользователя и его активный процесс
ps - выдает список запущенных процессов
free - объем свободной физической и виртуальной памяти

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

Пример использования №3. Удаленная перезагрузка

Еще одна проблема, которая может быть решена с помощью робота на Raspberry Pi - это перезагрузка зависших компьютеров. Многие из нас попадали в такую ситуацию, когда необходимо получить удаленный доступ к компьютеру, который не отвечает на внешние запросы. В этом случае, приходится совершать поездку до места физического нахождения компьютера для того, чтобы нажать «большую красную кнопку» и вызвать перезагрузку этого компьютера. Подобных ситуаций легко можно избежать, используя робота на основе Raspberry Pi в качестве агента удаленной перезагрузки. Этой цели можно достигнуть, используя систему реле цепей питания, управляемых нашим роботом. В случае, когда любой из компьютеров, управляемых роботом, перестает отвечать на внешние запросы, достаточно просто отправить соответствующую команду в виде сообщения Google talk для размыкания заданного реле и перезагрузки повисшего компьютера. Ниже возможная схема включения:

  • 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

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


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

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

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

Наша команда давно хотела использовать недорогие ARM материнские платы с linux, но их доступность и поддержка производителей не позволяла строить наши решения на них. С выходом Raspberry Pi многое изменилось. Теперь с платой поставляется полноценный linux - существует несколько вариантов дистрибутивов на выбор, большое сообщество пользователей. Единственным огорчением является доступность платы: поставки устройства в Россию постоянно затягиваются, и если вы хотите получить желанную плату быстро - вам придется заплатить приличную сумму перекупщикам. Мне досталась плата модификации B с двумя USB и Ethernet. Рекомендую брать именно ее. Также производитель заявил о более дешевой модификации A без Ethernet и с одним USB.

1) Подключение

Плата серии В имеет 3 USB разъема, однако третий имеет форм-фактор micro и предназначен только для питания платы. Потребление платы может достигать 700мА и не факт, что будучи подключенной напрямую в порт вашего компьютера, плата будет работать (напомню, что согласно старому стандарту, потребление устройства USB не должно превышать 500мА, по новому – 900 мА). У нас плата работала, будучи подключенной к ноутбуку, к телевизору и к USB хабу, проблем не было. Остальные два разъема USB хоть и поддерживают стандарт 2.0, но электрически его не соблюдают. По наблюдениям, максимальное потребление на них составляет 140 мА, вы не сможете подключить напрямую жесткий диск и большинство web-камер. И это далеко не всё. Из-за множества косяков подобного рода и кривым драйверам на этой плате можно использовать только ограниченное число железок. Подробно с ними можно ознакомиться по этой ссылке .

Для старта платы иметь на руках необходимо иметь следующее:

  1. кабель micro-USB
  2. SD- карта 6-10 класса (мы использовали карту производства Transcend, также работает Silicon Power, но хуже). Не все карты будут работать в этой плате. И это связано с кривым драйвером SD-карточки и с тем, что производители переходят на более дешевые технологии изготовления. Из-за этого меняются временные параметры сигналов и карты перестают работать. Объем – до 32 Гб.
  3. USB-hub. Подойдет не любой. Работать будет практически с любым, но будет следующая проблема: у платы нет защиты от обратных токов со стороны USB hub, это означает, что если вы не включите плату через micro USB, но часть устройств подключите по USB hub с внешним питанием, то плата может запуститься, при этом на нее будет подано низкое напряжение. В итоге вы можете убить содержимое SD-карты, так как при данном напряжении загрузчик будет исполняться криво и может повредить данные. Плата после этого может не запуститься и вам придется создавать новый образ ОС и зашивать его на карту. Поэтому советую всегда иметь запасную карту. Подходящие хабы с внешним питанием также описаны на Wiki проекта . Без них нормально подключить wi-fi, web-камеры, USB HDD не получится.
  4. USB клавиатуру и мышь. Очень советую, чтобы они были новые и одного стандарта (например USB 2.0 или 1.1). Драйвер для USB на этой плате кривой и часто можно получить случай, когда при втыкании мыши и клавиатуры, работает что-то одно. Отзывы на сайте указывают на проблему драйвера.
  5. источник питания. Если плата не завелась от порта USB вашего компьютера, то можно обойтись и без USB хаба с внешним питанием, для этого вам придется купить блок питания для зарядки или питания usb устройств. Подробнее про это можно узнать на сайте проекта.

2) Установка Linux

Отдельного внимания заслуживает концепт корпуса для Raspberry. К сожалению, для него нет 3д модели STL для печати. Но был найден в инете . Юзеры Solidworks могут попробовать его доработать для 3д печати.

Совет пользователям SolidWorks: не стоит думать, что детали в формате STL нельзя распознать. Для этого в меню открытие после выбора формата STL надо выбрать "Параметры" и выбрать тип детали ("твердое тело" или "поверхности"). Тогда STL будет распознана в виде, пригодном для небольшого редактирования.

Этот проект уникален и несмотря на нынешние недоработки, буквально через несколько месяцев бурное сообщество пользователей укажет на основные ошибки и поможет их исправить. Я же советую напоследок внимательно всегда читать документацию на сайте проекта и использовать только проверенное там железо. Согласитесь, за стоимость 2000-3000 руб. можно смириться с недостатками, которые к тому же постоянно исправляются, делая эту плату чуть ли не единственной нормально поддерживаемой ARM Linux платформой.

Роботизированные устройства по-прежнему остаются диковинкой даже для тех современных семей, члены которых повсеместно пользуются продвинутыми гаджетами, цифровыми системами и плодами передовых разработок ведущих мировых компаний. Одной из причин такого положения вещей является слишком высокая цена на сложные автоматизированные механизмы, а также сомнительная целесообразность применения дорогостоящих «машин» для выполнения простых операций. Команда словацких инженеров решила в рамках стартапа «PiKit — Robotic & Control kit based on Raspberry Pi» убедить всех, что концепция модульных роботов, когда покупатель сам вправе выбрать и собрать устройство с необходимой ему функциональностью, способна не просто популяризировать подобные механизмы, но и сделать их более доступными.

Главной особенностью PiKit стала конструкция из отдельного набора «блоков», оснащённых теми или иными датчиками. Представьте, что в предлагаемой сторонними производителями модели часть возможностей вам просто не пригодится, но переплачивать за ненужные опции — затея явно нерациональная. Компромиссом в этом случае выглядит модель компании Anima Technika — робот PiKit, за обработку поступающих команд которого отвечает одноплатный компьютер Raspberry Pi или Banana Pi.

Стартап начал поиски финансирования при помощи краудфандинговой площадки Indiegogo, чтобы собрать $41,8 тыс. для воплощения идеи в жизнь. Участники проекта при соответствующей материальной поддержке могут оформить предзаказ как на уже готовое изделие, так и на отдельные части модульного конструктора. Главной составляющей является небольших размеров корпус, в котором расположился сам PiController на базе одноплатного микрокомпьютера. Благодаря встроенному в него модулю беспроводной связи Wi-Fi владелец устройства сможет управлять PiKit дистанционно, используя для этого настольный ПК, ноутбук, смартфон или планшет.

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

Чтобы следить за всем происходящим от первого лица разработчики предлагают установить модуль визуализации со встроенной HD-камерой, микрофоном и ультразвуковым дальномером. С помощью микрофона устройство сможет обрабатывать голосовые команды, а встроенный динамик обеспечит имитацию живого общения PiKit с его владельцем. А чтобы превратить робота в максимально самостоятельный механизм, специалисты Anima Technika подготовили модуль автоматизации, отвечающий за переход «машины» в автономный режим для выполнения ряда несложных задач.

PiController обеспечивает взаимодействие всех модулей со встроенным в него трёхосным акселерометром и гироскопом, трёхосным магнитометром, ШИМ-контроллером, динамиками, зумером, выводя при этом системную информацию на собственный LCD-дисплей.

Элементы PiController, для создания которого использовался Raspberry Pi

Покупатель может заказать PiController за $249 без одноплатного компьютера в комплекте, чтобы усовершенствовать систему по своему усмотрению. Цены на отдельные составляющие указаны ниже:

  • модуль визуализации — $189;
  • модуль автоматизации — $119;
  • колёсный Segway-привод — $99;
  • Spider-привод — $899;
  • PiController с Raspberry Pi — $289;
  • PiController с Banana Pi — $299.

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

Модификация под названием Balancing robot, которая представлена на изображении выше, включает в себя модуль визуализации, PiController и колёсный привод. Её розничная стоимость составит $587. А вот для сборки робота-паука понадобится уже куда более дорогой Spider-модуль за $899 — две пары механизированных лап, синхронизирующиеся с центральным контроллером.

Что там говорилось про сомнительную целесообразность дорогих механизмов? Неудивительно, что на данном этапе стартап собрал лишь $628. Однако до окончания краудфандинга осталось ещё 43 дня.