Bubot — очень легкий фреймворк на Python 3 для программирования роботов и домашней автоматизации

Предыстория

Хотелось создать своего робота, а так же автоматизировать управление светом и климатом дома. С этой целью начал изучать имеющиеся возможности. Для себя я разделил все решения на две группы: системы в которых код на контроллере выполняется в одном главном цикле (arduino, lego и т.п.) и системы состоящие из параллельно работающих процессов обменивающихся между собой сообщениями.
Интуитивно выбрал вторую группу, так как хотелось найти максимально простое решение с дружественным пользовательским интерфейсом. Из наиболее популярных представителей этого «семейства» очень понравились Microsoft Robotics Studio и ROS. Но к сожалению, на текущий момент, привязать их к конкретному железу весьма не просто, да и разобраться в них с нуля так же весьма не тривиальная задача. В итоге принял решение писать сам, но «кодить» на C очень не хотелось, Душа просила чего-нибудь попроще и полегче. В итоге выбрал Python. А учитывая, что по мимо робота и «умного дома» в голову начало лезть куча других идей, то решил сразу сделать небольшой фреймворк, в котором основной упор был бы сделан на простоту разработки.

Концепция

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

Bubot - Схема

Сеть процессов строится на базе стандартного Python модуля multiprocessing. Система обмена сообщениями и разделяемая память реализованы при помощи Redis.

Каждый Bubot имеет встроенный веб-сервер веб-сервер Tornado, который позволяет контролировать состояние, управлять роботом, на ходу менять параметры (калибровать) робота, а также закладывается возможность обмена данными между роботами.
Bubot не является системой реального времени, хотя Bubot возможно интегрировать с кодом реального времени.

Читать дальше →

Чистый звук на Raspberry Pi, подключаем USB звуковую карту

Как известно звук с аналогового аудиовыхода Raspberry Pi не отличается высоким качеством и наполнен посторонними шумами, что особенно заметно при большой громкости динамиков.
Для получения качественного звука лучше подключить по USB внешнюю звуковую карту. Помимо улучшения качества аудио, звуковая карта обладает входом для микрофона, что также весьма полезно.
Чтобы не заморачиваться с драйверами я выбрал звуковую карту с чипом c-Media, т.к c-Media работает в Raspbian «из коробки».


Читать дальше →

Получение данных с аналоговых датчиков, подключенных к Raspberry Pi

Информация, снимаемая с аналогового датчика, представляет собой напряжение сигнального выхода датчика. Это напряжение может изменяться от 0 до напряжения питания датчика (грубо говоря, чем больше измеряемая датчиком величина, тем выше напряжение сигнального выхода)
Чтобы считать это напряжение и преобразовать его к осязаемому цифровому значению используется аналого-цифровой преобразователь (AЦП).
В Raspberry Pi отсутствует встроенный АЦП, поэтому для подключения к RasPi аналоговых датчиков потребуется внешний АЦП.

Я использовал АЦП на основе чипа PCF8591 — http://rspmarket.com/viewproduct/49/

Это 4-канальный 8-битный АЦП, который передаёт считываемые с датчика значения напряжения по i2c.
Читать дальше →

Компиляция ядра для Raspberry Pi и Raspberry Pi2

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


Читать дальше →

Установка Python 3.4 и OpenCV 3.0 на Raspbian

Решил освоить raspberry, при этом не использовать компилируемые языки, выбор невольно остановился на Python 3.
Поскольку изначально планировалось задействовать OpenCV, то на текущий момент это возможно только с OpenCV 3.0 beta которая рекомендует использовать с ней Python 3.4.
Ни того ни другого в репозитории нет и пришлось собирать из исходников, по пути осваивая данный процесс. Идущим по моим следам посвящается:

Читать дальше →

Подключение Raspberry Pi к телефону по Bluetooth. Часть 1

В этой статье мы рассмотрим как установить связь между смартфоном и Raspberry Pi по Bluetooth, и в каких полезных целях можно данное соединение использовать.

Что потребуется:
1. Телефон с поддержкой Bluetooth (я тестировал на Android смартфоне Huawei)
2. USB-Bluetooth модуль для Raspberry Pi (покупал такой — http://rspmarket.com/viewproduct/76/)
3. Дополнительное программное обеспечение

Читать дальше →
  • 0

iCarus - набор для сборки Car PC на основе Raspberry Pi

Концепция



iCarus представляет собой набор модулей для сборки автомобильного компьютера. Базовым программным обеспечением является адаптированный Raspbian Linux со специальной мультимедийной оболочкой-интерфейсом ICR, написанной на Qt5, которая запускается автоматически после загрузки операционной системы. Помимо стандартного программного обеспечения, можно использовать ПО сторонних разработчиков (например XBMC Car PC edition).

Читать дальше →
  • +1

Raspberry Pi B+

1
Выпущена улучшенная версия Raspberry Pi «B», которая получила название «B+». Это последняя модернизация платы «B», перед выходом Raspberry Pi 2, которая планируется в ближайшие несколько лет

Raspberry Pi B+

Читать дальше →
  • 0

Проблема с USB Wifi адаптером

Всем добрый день!
Столкнулся с такой проблемой. Имеется RPi B с установленной Raspbian (ядро 3.11.22) и USB-адаптер WiFi TP-Link TL-WN725N (версия 2). Драйвера на WiFi установил, сеть видит. Настройки энергопотребления выполнены (8188eu rtw_power_mgnt=0 и rtw_enusbss=0). Кроме того, настроено задание на пинг шлюза каждые 5 минут. При этом WiFi периодически полностью отключается (может раз в сутки, может 2 раза за полчаса). К плате больше ничего не подключено, Иксы отключены (доступ чисто по SSH). Питание платы — через внешний БП 5V 1000 mA. Как можно решить проблему с WiFi?

Неизвестные контакты

На плате RPi rev.2.0 около GPIO находятся 2*4 коннектор с маркировкой «P5». Кто нибудь может объяснить, что это за коннектор?