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

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


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




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


2. Сделай свой собственный корпус для Pi




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

3. Смотрим видео с Raspberry Pi




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


4. Мини веб-браузер




Поскольку ваш Raspberry Pi подключен к телевизору, то почему бы не посерфить в сети на большом экране? Для этих целей вам нужно что-нибудь получше Midori, поэтому попробуйте Chromium. Просто зайдите в терминал, наберите sudo apt- get install chromium-browser и нажмите Enter.


5. ZX Spectrum Pi




ZX Spectrum получил вторую жизнь внутри Raspberry Pi. Для эмуляции этой 8-битной прелести напечатайте в терминале sudo apt-get install fuse-emulator-common и нажмите Enter. Введите «y» для подстверждения скачивания и установки.


После того, как Fuse будет установлен, и вы вернетесь к командной строке, напишите sudo apt-get install spectrum-roms fuse-emulator-utils и нажмите Enter. И затем, снова вернувшись к командной строке, напечатайте sudo amixer cset numid=3 2 и щелкнитеEnter.





Если Spectrum пробудил ваш аппетит к олдскулу, то оцените проект RetroPie. С помощью него вы можете эмулировать сокровища таких старых консолей, как SNES, Mega Drive и других подобных. Установка выполняется не слишком быстро, но результат того стоит. Следуйте этим инструкциям , и у вас все получится. можно бесплатно скачать классические игры.






8. Windows 3.0 на Pi




Раз уж мы начали говорить о ретро, то можно попробовать запустить DOS 6.22 и Windows 3.0 с помощью QEMU. Для начала посетите Kirsle и извлеките образ VirtualBox (VDI), затем, воспользовавшись VirtualBox, конвертируйте VDI в IMG, напечатав vboxmanage clonehd "image.vdi" "image.img" --format RAW (вместо image введите название вашего образа).


Далее инсталлируйте QEMU, прописав sudo apt-get install qemu . Затем конвертируйте исходный образ в образ QEMU qcow, напечатав qemu- img convert -f raw image.img -O qcow2 image.qcow . Наконец запустите образ, введя qemu image.qcow . Все это, конечно, далеко от совершенства и имеет тенденцию к подвисанию, но все же забавная штука!


9. Робототехника



Роботы — это прикольно, за исключением, наверно, тех, которые пытаются убить всех человеков. Существует множество проектов, связанных с робототехникой. В электронном журнале MagPi (со стр. 9) приводится описание, как сделать роборуку, приводимую в движение с помощью Raspberry Pi.


10. Еще про роботов



Поскольку мы затронули тему про роботов, то есть еще один замечательный проект , предполагающий совместное использование платформы Big Track и Raspberry Pi.


11. Обучение программированию


Raspberry Pi являет собой прекрасную основу для программирования с большим выбором языков программирования. Почитайте о некоторых из них на eLinux wiki .





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





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





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


15. Firefox OS на Pi





16. RISC OS для Pi




Если вы тоскуете по прошлому, тогда попробуйте запустить RISC OS на своемRaspberry Pi. Файлы и полная инструкция находятся .


17. Клавиатура из алюминиевых банок




Клавиатура из пивных банок? Есть и такая! Команда Robofun подключила плату Arduinoвместе 40 алюминиевыми банками к Raspberry Pi. Посмотреть на это можно .


18. Сервер BitTorrent




Если вы частый гость различных торрент-сайтов, так почему бы не создать специальную торрент-машину? Просто подключите ее к своему роутеру и оставьте ее делать свое дело. Документацию, скрипты и файлы можно найти на snapdragon:IT blog .


19. Облачный сервер




Хотите организовать свой облачный сервер? Благодаря OwnCloud вы сможете это сделать. Следуйте инструкциям и настройте скрипт с petRockBlog . И в кратчайшие сроки вы станете облачным провайдером.


20. Беспилотник на Raspberry Pi




Это блестящая концепция — БПЛА на Raspberry Pi. Только подумайте о возможностях! Данное творение Maggie представляет собой, возможно, первый квадрокоптер на основеRaspberry Pi.


21. Погодная станция




Позволит создать прекрасный школьный проект — погодную станцию на Raspberry Pi. Используя погодную станцию с USB компании Maplin этот миникомпьютер может регистрировать всю необходимую информацию.


22. 10-дюймовый сенсорный экран




Используя 10-дюймовый сенсорный экран и преобразователь HDMI-LVDS, вы можете сделать тачскрин с Raspberry Pi. Полный набор может быть куплен на Chalkboard Electronics и затем собран, как в ролике ниже.



23. Домашняя автоматика








Любители игры Minecraft, ликуйте! Она доступна и на Raspberry Pi .





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


Перевод сайт





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

Наша команда давно хотела использовать недорогие 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 платформой.

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

Роботизированные устройства по-прежнему остаются диковинкой даже для тех современных семей, члены которых повсеместно пользуются продвинутыми гаджетами, цифровыми системами и плодами передовых разработок ведущих мировых компаний. Одной из причин такого положения вещей является слишком высокая цена на сложные автоматизированные механизмы, а также сомнительная целесообразность применения дорогостоящих «машин» для выполнения простых операций. Команда словацких инженеров решила в рамках стартапа «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 дня.

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

Обзор