Распознавание лиц с помощью OpenCV и Raspberry Pi
В этом проекте мы будем распознавать лица, используя OpenCV и Raspberry Pi.
Raspberry Pi 3 Model B
Raspberry Pi Camera module
Описание Проекта:
В этом проекте мы используем OpenCV в Raspberry Pi. Проект используется для обнаружения человеческого лица с помощью инструмента OpenCV. Чтобы выполнить обнаружение объектов с помощью каскадных файлов, для сначала вам нужны сами каскадные файлы. Для чрезвычайно популярных задач этот файл уже существует.
Используемое программное обеспечение
Это рекомендуемая ОС для Raspberry Pi. Вы можете также установить другие ОС от третьей стороны. Raspbian OS – это ОС на основе debian. Мы можем установить его из установщика noobs. Вы можете получить ссылку отсюда
PuTTY – клиент SSH и telnet, разработанный Simon Tatham для платформы Windows. PuTTY – это программное обеспечение с открытым исходным кодом, которое доступно с исходным кодом и разрабатывается и поддерживается группой добровольцев. Здесь мы используем PuTTY для удаленного доступа к малине.
Вы можете скачать PuTTY здесь
OpenCV (Open Source Computer Vision Library) представляет собой библиотеку программного обеспечения для компьютерного зрения и машинного обучения с открытым исходным кодом.
OpenCV была создана для обеспечения общей инфраструктуры приложений для компьютерного зрения и ускорения использования восприятия машины в коммерческих продуктах. Будучи лицензированным BSD продуктом, OpenCV упрощает для бизнеса использование и изменение кода.
В библиотеке имеется более 2500 оптимизированных алгоритмов, которые включают в себя полный набор классических и современных алгоритмов компьютерного зрения и машинного обучения.
Эти алгоритмы могут использоваться для обнаружения и распознавания лиц, идентификации объектов, классификации действий человека в видео, отслеживания движения камеры, отслеживания движущихся объектов и извлечения 3D-моделей объектов.
Используемое оборудование
Это последняя версия Raspberry Pi. В ней встроены Bluetooth и Wi-Fi, ранее приходилось использовать Wi-Fi свисток в одном из портов USB. Всего в RPI3 40 контактов. Из 40 контактов 26 являются контактами GPIO, а остальные – штырьками питания или заземления (плюс два вывода ID EEPROM.)
Имеется 4 порта USB и 1 слот Ethernet, один порт HDMI, 1 порт аудиовыхода и 1 порт micro usb, а также многое другое. Есть один слот для карт micro sd, в котором мы должны установить карту micro sd с рекомендованной операционной системой.
Существует два способа взаимодействия с вашим Raspberry Pi. Вы можете напрямую взаимодействовать через порт HDMI, подключая кабель HDMI к VGA, а также клавиатуру и мышь, а также вы можете взаимодействовать с любой системой через SSH (Secure Shell).
(Например, через putty ssh.)
Источник: http://academicfox.com/raspoznavanye-lyts-s-pomoschyu-opencv-y-raspberry-pi/
Распознавание лица на Raspberry Pi с помощью Amazon Rekognition
Вы хотите сделать вход в «своё тайное логово» с используя только лицо? Этот проект позволит Вам использовать распознавание лиц с помощью Pi и AWS.
Используемые части.
Софт
Amazon Web Services Rekognition – Для Rekognition доступен бесплатный тариф.
Основы
Распознавание лица строиться на использовании AWS и Pi-Timolo.
Описание
Pi-детектор используется с Pi-Timolo для поиска движения на видео изображении, для распознавания и совпадений лиц, путем использования AWS Rekognition.
В текущем состоянии совпадения записываются в event.log. При желании Вы можете отправить уведомление или разрешить/запретить доступ в комнату с минимальными изменениями.
Скрипт установки поместит соответствующие файлы в /etc/rc.loal для запуска при загрузке.
Требование к конструкции
- Raspberry Pi (или аналогичные платы)
- Picamera
- AWS Rekognition Access (доступен бесплатный тариф)
В качестве альтернативы, этот набор скриптов может быть изменен для просмотра любой директории, содержащей изображения. Например, если вы собираете изображения с другой камеры и сохраняете их на диск, вы можете изменить путь к изображению, чтобы запустить распознавание лица против любой созданной новой фотографии.
AWS Rekognition
Перед установкой лучше всего организовать работу AWS. Для моего проекта я использую услугу AWS Free Tier. Использование этого тарифа позволяет вам 5000 вызовов API в месяц, что вполне хватит для этого проекта. Войдите в свою консоль и создайте нового пользователя IAM, у которого есть права администратора на Rekognition.
Просмотр групп пользователей.
Если Вам нужна помощь в этом шаге, вот ссылка. То, что вам нужно сделать, это скопировать ваши aws_access_key_id и aws_access_key_secret.
Чтобы получить эту информацию, перейдите на вкладку «учетные данные безопасности / security credentials» (со страницы пользователей IAM, как показано на изображениях выше).
Если это ваш первый раз, вам, возможно, придется создать новый секрет. Вам будет предложена эта информация после запуска скрипта установки.
После того, как Ваш пользователь имеет доступ к Rekognition, убедитесь, что Вы установили свой регион на US-East, потому что он является одним из немногих, которые предлагают услуги Rekognition. Чтобы изменить регионы, перейдите в EC2, Rekognition или любую другую услугу и посмотрите в верхнем правом углу.
Установка
Установите Rasbian по инструкции.
SSH в Ваш Raspberry Pi (или подключить его к монитору и войдите с помощью pi в качестве имени пользователя и raspberry в качестве пароля). Не забудьте изменить указанный ниже IP-адрес на IP-адрес Вашего pi. Если Вам нужна помощь в поиске в сети, используйте nmap (nmap -sn 192.168.1.0/24)
- ssh Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.
Скопируйте это repo и установите:
git clone https://github.com/robotoss/Pi-Detector.git cd pi-detector/scripts sudo chmod +x install.sh sudo ./install.sh
Во время установки вам будут предложено указать Ваши учетные данные aws, которые Вы установили ранее.
Когда Вас спросят, введите свой идентификатор секретного ключа AWS, секретный ключ доступа AWS и установите регион, мы выбрали us-east-1 (выбирайте регион, который вы выбрали, когда ранее устанавливали AWS Rekognition). Пример вывода будет выглядеть примерно так, как показано на рисунке ниже:
Начнем
Во-первых, Вам нужно создать новую коллекцию в AWS Rekognition. Создание коллекции «home» будет выглядеть так:
cd pi-detector/scripts python add_collection.py -n 'home'
Затем добавьте свои изображения в папку pi-detector / faces. Чем больше изображений человека, тем лучше результаты для обнаружения. Я бы порекомендовал несколько разных поз в различном освещении.
cd pi-detector/faces python ../scripts/add_image.py -i 'image.jpg' -c 'home' -l 'Tom'
Лучший вариант что я смог найти это сделать фотографии в той же области, где будет размещена камера, и с помощью Picam. Если Вы хотите сделать так же, я создал небольшой скрипт python для съемки фотографии с задержкой в 10 секунд, с сохранением в папку pi-detector / faces. Чтобы использовать скрипт:
cd pi-detector/scripts python take_selfie.py
После завершения Вы можете вернуться и переименовать файл и повторить описанные выше шаги, чтобы добавить изображения в AWS Rekognition. Создав новую коллекцию или добавив новое изображение, два справочных файла будут созданы в качестве ссылки в будущем. Они будут полезны, если в будущем вы планируете удалить изображения или коллекции.
На этом этапе установка готова к работе. Вы можете настроить Wi-Fi на свой Rpi и поместить камеру в своем доме, где Вы хотите. Как только Вы подключите Rpi, он должен начать работать без дополнительных действий от пользователя. Чтобы проверить Ваши журналы, просто используйте ssh в Rpi и проверьте папку event.log для ссылки на ваши обнаружения.
Чтобы удалить лицо из своей коллекции, используйте следующее:
cd pi-detector/scripts python del_faces.py -i '000-000-000-000' -c 'home'
Если Вам нужно найти идентификатор изображения или имя коллекции, укажите файлы faces.txt и collections.txt.
Чтобы удалить коллекцию:
cd pi-detector/scripts python del_collections.py -c 'home'
Обратите внимание, что вышеизложенное также удалит все лица, которые вы сохранили в AWS.
Последний скрипт – facematch.py. Если у Вас есть обновленные изображения и вы просто хотите проверить статические фотографии на лицах, которые вы сохранили на AWS, выполните следующие действия:
cd pi-detector/scripts python facematch.py -i 'tom.jpg' -c 'home'
Результаты будут выведены на экране, чтобы включить процент сходства и уверенности.
Финал
Я буду работать над добавлением сервопривода в этот проект, чтобы открыть дверной замок. Как только все будет работать я выложу вторую часть проекта.
https://github.com/robotoss/Pi-Detector
Источник
Источник: https://robotos.in/uroki/raspoznavanie-litsa-na-raspberry-pi-s-pomoshchyu-amazon-rekognition
Raspberry Pi глазами новичка: лучшие проекты для начинающих
Энтузиасты постоянно совершенствуют варианты использования устройства. Многие Raspberry Pi проекты может повторить самостоятельно даже дилетант. А они действительно разнообразны: мультимедийные центры, фотокабины и даже майнинг-фермы.
Содержание
Энтузиасты постоянно совершенствуют варианты использования устройства. Многие Raspberry Pi проекты может повторить самостоятельно даже дилетант. А они действительно разнообразны: мультимедийные центры, фотокабины и даже майнинг-фермы.
Но не все Raspberry проекты подходят для начинающих пользователей. Для того чтобы понять, насколько мини-ПК функционален, необходимо начать с простых и понятных разработок, которые рассмотрим далее.
Raspberry Pi projects – вникаем в систему
Весь процесс реализации заключается во взаимодействии программного обеспечения с внешним оборудованием через встроенные интерфейсы: UART, GPIO, CSI, DSI, SPI, I2C, USB, Wi-Fi и др. Микрокомпьютер работает на Linux-подобных ОС, а также возможна загрузка Windows 10, правда, beta. Для впервые столкнувшихся с «малиной» подойдет официальная операционная система Raspbian. Итак, приступим.
Raspberry Pi проекты – счётчик импульсов
Первый проект для Raspberry следует начать с мигания светодиодами, но лучше сделать полезную вещь – счётчик воды, демонстрирующий работу подсчёта импульсов. На большинстве современных водомеров имеется вращающаяся область чёрного и белого цвета. Её и будем фиксировать. Тёмный цвет – логический 0, светлый – 1.
Кроме Raspberry Pi нам понадобятся:
- Moteino – беспроводной модуль на базе atmega328;
- EE-SY310 – ИК фотопрерыватель;
- Скетч для Moteino https://github.com/LowPowerLab/WaterMote;
- Скрипт для Raspberry https://github.com/LowPowerLab/SumpPumpAlert/blob/master/Gateway.py;
- Графическая оболочка https://github.com/emoncms/emoncms.
Данная конфигурация универсальна. Может быть адаптирована и под Raspberry Pi 1 проекты. К Moteino подключаем питание, фотопрерыватель (VCC, GND, OUT), а затем загружаем скетч WaterMote.ino. Изначально скетч считает: в галлонах в минуту, в последнюю минуту, всего. Но ничто не мешает переделать в литры.
Общий объем воды сохраняется в EEPROM для исключения потерь при отключении питания. Скрипт Gateway.py последовательно собирает данные и отправляет их в EmonCMS для графического вывода из MySQL. Подобный подход также работает с электросчётчиком, только там отслеживается мерцание светодиода.
Telegram для Raspberry Pi
Благодаря свободному API мессенджера, появились проекты Raspberry Telegram, реализующие идею удалённого взаимодействия. Это весьма удобно, когда нужно управлять оборудованием через интернет, используя GPIO. Стоит отметить, что на Raspberry Pi проекты для начинающих чаще всего применяют этот интерфейс.
Чтобы это осуществить, потребуется:
- Устанавливаем Telegram на устройство IOS, Android или Windows
- Через поиск находим BotFather, нажимаем «Начать» (/start)
- Выбираем /newbot (указываем имя бота и имя пользователя)
- Когда бот будет создан, появится сообщение с токеном
- Вводим команды для установки Teleport в Raspberry Pi для связи с Telegram:
- sudo apt-get install python-pip
- sudo pip install teleport
- Создаём скрипт на Python, где обязательно указывается ТOKEN (примеры скриптов https://github.com/nickoala/telepot/tree/master/examples):
- telegram_bot = telepot.Bot(TOKEN)
Запускаем скрипт, и проверяем его работу
Для проверки используем светодиоды, подключенные к GPIO с определёнными номерами и Pin. Через скрипт включаются и отключаются выбранные светодиоды по команде из Telegram.
Кроме того, полнофункциональное ПО Telegram запускается на Raspberry Pi второй (Model B) и третьей версии. Порядок установки и параметры поддержки доступны на официальном сайте команды Eltechs.
Проект «Интернет вещей»
Развёртывание проекта Windows IoT для Raspberry Pi 2, 3 происходит достаточно просто. Надо подготовить накопитель MicroSD, а также скачать установщик по ссылке (Windows 10 IoT Core Dashboard) https://developer.microsoft.com/ru-ru/windows/iot/Downloads. Далее выбирается тип устройства, версия ОС и накопитель. Нажимаем «Скачать и установить».
После установки через Core Dashboard будет отображено устройство по Ethernet в списке «Мои устройства». Устанавливаем Microsoft Visual Studio. А уже там создаём проект «Universal Windows». Он будет разворачиваться на нашу «малину». Для этого в меню вместо «Local Machine» ставим «Remote machine» с адресом мини-ПК.
С помощью DeviceHive https://github.com/devicehive/devicehive-.net/tree/master любые устройства на базе Raspberry Pi можно превратить в «Интернет-вещь».
Строим умный дом
Платформа MajorDoMo для Raspberry Pi – бесплатная система для создания полноценного умного дома с удобным UI. Она устанавливается как на Raspbian, так и в виде образа, который доступен по ссылке https://connect.smartliving.ru/tasks/20.html.
Самый простой способ:
- Потребуется карта ёмкостью 16gb
- В Win32DiskImager (http://sourceforge.net/projects/win32diskimager/) выбирается «Image File» и «Device»
- Нажимаем «Write»
- После записи вставляем в Raspberry и стартуем
- Умный дом готов (по адресу Raspberry Pi доступен Web-интерфейс)
Проект MajorDoMo и Raspberry Pi открывает широкие возможности:
- управление освещением, воротами, отоплением и пр.;
- контроль безопасности и детектирование присутствия и пр.;
- режим экономии электроэнергии;
Источник: http://myraspberry.ru/raspberry-pi-glazami-novichka-luchshie-proektyi-dlya-nachinayushhix.html
HoneyPI – ловушка для хакера на Raspberry Pi. Kippo и Kippo-Graph
Ловушка а точнее приманка — традиционная составляющая шпионских романов эпохи Холодной войны, когда страдающий от проблем с общением госслужащий оказывается в сетях роковой русской красотки, которая сначала соблазняет его, а потом шантажирует, вынуждая выдать драгоценные государственные секреты.
Ловушка для хакера
Ныне, в Эпоху Информации, секретные данные больше не находятся исключительно во власти лысеющих правительственных агентов; они хранятся на компьютерах. Сетевые администраторы могу снизить риск несанкционированного доступа посредством сочетания программных обновлений, мониторинга трафика, ультрасовременных роутеров и брандмауэров, но это может не подействовать на решительного хакера.
Вот бы был способ убедить хакера, что он вошел на ваш сервер, а на самом деле соединить его с машиной-приманкой! В нашем руководстве мы рассмотрим, как настроить и установить ПО-ловушку Kippo на ваш Raspberry Pi именно с этой целью.
Основное условие, что как только программа будет установлена и запущена, вы можете настроить порт 22 на своем роутере на автоматическую переадресацию на порт 2222 на Raspberry Pi.
Хакер получит доступ только к файловой системе, созданной Kippo (разработанной так, чтобы походить на Debian Server). Все внесенные изменения будут зафиксированы, так что вы сможете просмотреть их позже.
Главное, что никакие другие устройства в вашей сети не будут скомпрометированы.
Установка Kippo
В целях безопасности, для данного проекта надо отвести отдельный Raspberry Pi, с чистой установкой самой последней версии Raspbian. Вы также должны быть хорошо знакомы с переадресацией портов на вашем роутере. Эти действия различаются на разных роутерах, но вы можете заглянуть на , чтобы найти инструкции для наиболее частых моделей.
Установка необходимого для работы Kippo
Откройте Терминал на своем Raspberry Pi или подключитесь через SSH и затем запустите:
sudo apt-get install subversion python-twisted python- mysqldb mysql-server apache2 |
Когда откроется MySQL, надо будет настроить пароль root для баз данных—введите его снова, чтобы подтвердить свой выбор.
Скачайте файлы Kippo с помощью:
git clone https://github.com/desaster/kippo |
Когда Kippo поработает некоторое время, вы можете в любой момент отобразить логи, запустив:
cat/home/pi/kippo/log/kippo.log |
Однако помните, что с течением времени отображаться будет огромный объем информации. В порядке альтернативы рассмотрите возможность установки на свой Pi kippo-graph.
Настройка базы данных Kippo
Войдите в MySQL и введите пароль root:
mysql -h localhost -u root -p |
Введите:
Присвойте пользователю права на “kippo» с паролем базы данных “password123″ с помощью:
ALL ON kippo.* TO ‘kippo’S'localhost' IDENTIFIED BY'password123'; |
Скомандуйте exit, затем:
Загрузите mysql.sql. запустив:
Введите свой пароль базы данных.
Завершение настройки базы данных Kippo
В MySQL, введите:
затем:
Запустите:
это позволит вам проверить присутствие таких полей базы данных, как ’ttylog’.
Введите exit и перейдите в директорию kippo:
Затем запустите:
ср kippo.cfg.dist kippo.cfg |
и
Прокрутите до раздела “[database_mysql]”, раскомментируйте строки и поправьте соответствующую информацию.
Настройка роутера и запуск Kippo
Убедитесь, что ваш роутер настроен на переадресацию запросов на подключение с порта 22 на внутренний порт Raspberry Pi (который 2222). Далее измените собственный номер SSH-порта Pi по умолчанию на нечто побольше — например, 65534 — запустив:
sudo sed -i 's:Port 22:Port 65534:g' /etc/ssh/sshd_conf |
И наконец, из вашей папки kippo запустите скрипт:
Теперь, если хотите, можете установить kippo-graph.
Если вы хотите проводить серьезный мониторинг всех попыток подключения к вашей сети, программа kippo-graph может собрать все данные для вас в серии круговых диаграмм, графиков и карт. Затем изучайте их сколько душе угодно.
Для начала откройте Терминал на своем Raspberry Pi (или подключитесь через SSH) и установите всё необходимое для программы, запустив:
sudo apt- get install libapache2-modphp5 php5-cli php5-common php5-cgi php5-mysql php5-gd |
Далее перезапустите сервис Apache:
sudo /еtc/init.d/apache2 restart |
и перейдите в директорию Apache:
Скачайте самую свежую версию kippo-graph (обратите внимание, что на данный момент программа находится в версии 1.5.1), запустив:
sudo wget http://bruteforcelab.com/wp-content/uploads/kippo-graph-1.5.1.tar.gz |
и затем распакуйте ее с помощью
sudo tar zxvf kippograph-1.5.1.tar.gz -no-same- permissions |
Переименуйте директорию Kippo Graph в kippograph — например:
sudo mv kippo-graph-1.5.1 kippo-graph |
затем перейдите в нее с помощью:
Чтобы изменить расширения запустите:
sudo chmod -R 777 generated-graphs |
Затем создайте файл настройки с помощью:
sudo ср config.php.dist config, phр |
Отредактируйте файл — sudo nano config.php — и найдите раздел, отмеченный как # MySQL server configuration.
Измените значения следующим образом:
define('DB_HOST', '127.0.0.1');define('DB_USER', 'kippo');define('DB_PASS', 'password123');define('DB_NAME', 'kippo');deline('DB_PORT', '3306'); |
Нажмите Ctrl+X, затем Y. затем Enter, чтобы сохранить файл и выйти из программы.
Теперь ваш граф должен быть доступен на http://ip-адрес-вашего-pi/kippo-qraph. (например, http://192.168-1.17/ kiDDO-oraph).
Если схемы не грузятся, вам необходимо изменить разрешения во всей директории kippo-graph с помощью команды:
sudo chmod-R 777 kippo-graph |
После окончания установки зайдите на http://ip-адрес-вашего-pi/kippo-graph для просмотра данных логов.
Вкладка Kippo-Graph отобразит общую активность Honeypot [Ловушки], например, общее количество попыток входа и используемые пароли.
Нажмите на Kippo Input, чтобы вывести список использованных команд. Если выбрать Kippo Play-Log, в браузере воспроизведется видео всех использованных логинов и команд.
Используйте опцию Kippo-Geo, чтобы вывести список входящих соединений по странам. Отсюда вы можете отслеживать IP-адреса разных попыток соединения и даже отображать топ-10 IP-адресов на интерактивной карте.
HoneyPI и безопасность
Снова и снова мы повторяем, что этот проект — отнюдь не для новичков. Если вы не очень комфортно чувствуете себя в управлении роутерами, серверами и брандмауэрами, велик риск, что при попытке настроить ловушку вы сделаете свою сеть еще более уязвимой для атак.
К счастью, можно снизить риск, изменив порт SSH по умолчанию на Pi, как показано в руководстве. Официальная страница Kippo на Github также настроить отдельную виртуальную среду для самой Kippo, до некоторой степени скрыв ее в песочнице.
Сама программа Kippo разработана похожей на сервер, напоминающий Debian 5 (Lenny). Поскольку сейчас актуален Debian 9, особо продвинутые хакеры могут заподозрить ловушку. Одно из решений — постараться переделать файл настройки, изменив имя сервера и прочие данные по умолчанию, чтобы отсеять подозрительных злоумышленников.
Помните, что Kippo разработан только для защиты от атак через SSH, поэтому хакеры могут использовать сервисы, работающие на других открытых портах.
Если вам требуется более универсальная ловушка, подумайте об использовании последнего ответвления Kippo от Михеля Остерхофа [Michel Oosterhot] под названием .
Как и Kippo, Cowrie похож на сервер Debian 5, но поддерживает дополнительные функции, например, запись в журнале попыток использования прокси SSH, переадресация SMTP-соединений на отдельный SMTP Honeypot, например, mailoney, и сохранение лог-файлов в универсальном формате JSON.
Источник: http://www.spy-soft.net/honeypot-raspberry-pi/
15 полезных команд Raspberry Pi, которые должен знать каждый пользователь
Источник: http://isearch.kiev.ua/ru/searchpracticeru/-methodsinstruments/1815
Компьютер Raspberry Pi: особенности применения для систем умного дома, нестандартные применения устройства
Raspberry Pi – это инновационный продукт от английских разработчиков. Их главной целью было популяризировать компьютерное образование среди широких слоев населения, сделать программирование более обширной и доступной дисциплиной и побудить больше людей создавать что-то новое при помощи новых технологий.
Название продукта Raspberry Pi означает «малиновый пирог», компания-производитель таким образом сделала акцент на том, что этот компьютер предназначен в первую очередь для детей.
Что представляет собой это изобретение, и каково применение Raspberry Pi в современном мире, об этом мы и расскажем ниже.
Особенности компьютера Raspberry Pi
Устройство Raspberry Pi представляет собой маленький компьютер в виде одной платы без корпуса. Разработчики призывают так детей и взрослых обращать внимание не только на пользование компьютерами, но и на его изучение изнутри, а также предлагают задействовать фантазию и сделать другим что-то свое на базе этого компьютера.
Как полагают разработчики, устройство Raspberry Pi должно выполнять такие образовательные цели:
- заинтересовывать школьников развивать навыки программирования;
- способствовать в начинаниях молодых программистов;
- помогать опытным компьютерщикам открывать новые горизонты, и делать новые достижения в области программирования.
В родной стране устройства Raspberry Pi – Великобритании, его полный комплект можно приобрести всего за 75 фунтов. Сам комплект при этом состоит из таких составляющих:
- самого мини-компьютера Raspberry Pi модели В;
- микро- CD (8 гигабайт);
- клавиатуры;
- оптической мыши;
- микро-адаптера CD Card ;
- источника питания;
- кабелей HDMI и микро USB .
Первая партия Raspberry Pi производилась в Поднебесной, но с конца 2012 года производство целиком перенесено в Великобританию, на завод в Пенкойде (Уэльс). В среднем, завод производит порядка 40 тысяч мини-компьютеров Raspberry Pi в неделю.
Технические характеристики Raspberry Pi
Итак, какие же технические характеристики этого уникального компьютера без корпуса, давайте выясним:
- вес – 45 грамм, свободно помещается в ладони;
- наличие одной платы;
- создан на базе мобильного микропроцессора ARM11;
- минимальное потребление энергии и возможность работать даже посредством солнечных батарей;
- оперативная память – 512 Мб;
- USB -разъемы (одно или два в зависимости от модели);
- модель В дополнительно оснащена портом Ethernet;
- тактовая частота 700 МГц;
- наличие графического ядра в процессоре Broadcom BCM2835.
Применение компьютера Raspberry Pi для дома
Наиболее применяемая модель мини-компьютера Raspberry Pi – это модель В на 215 Мб оперативной памяти с поддержкой Ethernet. Также есть еще одна модификация прибора, в которой компоненты размещены более компактно, также она имеет четыре порта USB , количество портов ввода и вывода GPIO в ней существенно больше, кроме того, отсутствует композитный видеовыход.
Сферы применения компьютера Raspberry Pi достаточно широки. Несмотря на то что этот прибор не слишком мощный, но при этом это вполне полноценный компьютер. Если вам нужна машина для решения простейших задач, которые не требуют применения мощных ресурсов в плане вычисления, то вы смело можете подключать к устройству Raspberry Pi стандартные элементы машины:
- монитор;
- мышь;
- клавиатуру;
- подключение любого дистрибутива ОС Linux .
В домашних условиях устройство Raspberry Pi вы можете использовать в таких целях:
- создание домашнего медиа-сервера;
- как сервер хранения данных;
- в качестве «мозгового центра» для автоматизированных станков или роботов;
- как сервер домашней автоматизации (или системы «умный дом»).
Как мы видим, сферы применения Raspberry Pi для частных нужд могут быть разные. В основном – это узкопрофильные задачи, связанные с работой программистов или других разработчиков.
А если говорить о широком применении, то стоит ознакомиться с особенностями применения Raspberry Pi для систем домашней автоматизации или так называемого умного дома.
Давайте рассмотрим практическую сторону этого вопроса.
.Любая система домашней автоматизации или же так называемый умный дом является достаточно сложной и многоструктурной.
Помимо того, что она призвана выполнять те или иные сценарии, которые задаются ей пользователем, она имеет свойство принимать свои собственные решения в определенной нештатной ситуации.
Смело можно сказать, что такая система имеет задатки искусственного интеллекта.
Многие сегодня применяют понятие «умный дом» ко всему, например:
- сигнализации GSM ;
- датчику протекания воды;
- световому управлению датчикам движения и т.д.
Все эти явления могут входить в структуру домашней автоматизации, но являться ею по отдельности они не могут.
Система домашней автоматизации («умный дом») включает в себя такие компоненты:
- центральный сервер;
- он связан посредством интерфейса RS485 с контроллерами, которые стоят в каждой комнате и помещении дома;
- к контроллерам подключены те или иные управленческие устройства для защиты, контроля и регулирования работы системы.
Такая сетевая архитектура данной системы хороша тем, что у владельца дома нет необходимости протягивать от каждого устройства к серверу неудобные провода, а нужно просто соединить контролеры, к которым они подключаются посредством одного кабеля UTP.
Одна пара его проводов применяется для интерфейса RS485, а другие питают датчики и контроллеры.
Стоит отметить, что структура работы предусмотрена таким образом, что если выйдет из строя один из контроллеров или несколько, или даже будет нарушена работа центрального сервера, на работу системы в целом это влиять не будет.
А мини-компьютер Raspberry Pi в данной системе и является центральным сервером.
На него нужно установить Веб-сервер, с помощью которого любой пользователь посредством своего мобильного устройства (смартфона, планшета или ноутбука) сможет посредством обычного браузера иметь данные обо всех процессах, которые происходят в доме и управлять этими процессами. Доступ к серверу пользователь имеет посредством логина и пароля через домашнюю локальную сеть или через глобальную сеть, если входить в нее через Wi — Fi -устройство.
К последовательному порту устройства UART посредством согласовывающего прибора через интерфейс RS485 подключают контроллера, которые оснащены разным набором выводов или вводов.
Также к этому же интерфейсу можно подключать GPS -модель и с его помощью иметь доступ в систему посредством мобильной или стационарной телефонной связи, если пользователь находится в зоне, где нет доступа в Интернет. Доступ разрешается также через пароль, как и в предыдущем случае.
Еще одно устройство в сети – это радиомодуль, с помощью которого можно привязать к общей системе все радиодатчики и пульты дистанционного управления.
Итак, существующая на сегодняшний день версия системы домашней автоматизации на базе компьютера Raspberry Pi состоит из центрального сервера и контроллеров с интерфейсом RS485, которые нужны для связи с сервером. Их описание выглядит так:
- контроллер восьмиканальный, отвечающий за температуру и влажность. С его помощью собираются температурные показатели и параметры влажности с соответствующих датчиков;
- термостат четырехканальный – этот контроллер способен управлять четырьмя нагрузками, причем как вручную, так и согласно заданным температурным параметрам. Температурные значения можно водить непосредственно на самом контроллере, так и удаленным способом посредством веб-интерфейса. Благодаря наличию режимов прямого и обратного управления каналами, его можно применять при управлении нагревом и охлаждением;
- радиомодель для эмуляции брелков и сбора информации со специальных датчиков. С его помощью можно эмулировать по пять радиобрелков включительно, и принимать данные от 10 датчиков;
- контроллер универсального типа. Он оснащен четырьмя независимыми входами и выходами, а также имеет два входа подключения для температурных датчиков и датчиков влажности.
Нестандартные виды применения Raspberry Pi
А сейчас давайте узнаем, каким образом устройство Raspberry Pi было применено изобретателями для создания инновационных изделий. Рассмотрим некоторые из них.
Конструктор Kano
Конструктор Kano для детей – это не просто обычный конструктор, это модульный компьютер, собрать такую головоломку сможет даже ребенок. Набор конструктора включает в себя следующее:
- инструкцию по самостоятельной сборке ПК;
- приложения для самостоятельного изучения азов программирования;
- материнскую плату;
- детали для сборки корпуса;
- клавиатуру;
- блок питания;
- карты памяти;
- динамик;
- кабеля.
Таким образом, даже ребенок может сам собрать компьютер, который затем подключается к монитору или телевизору посредством HDMI -порта.
Такой конструктор изначально был создан для детей, но стал популярным и среди взрослых. Средства на разработку и реализацию этого проекта были собраны посредством платформы для сбора средств на творческие изобретения. Благодаря собранному компьютеру можно выполнять такие действия:
- записывать музыку;
- смотреть видео в формате HD ;
- писать программы;
- создавать свои игры.
Летающее устройство SkyJack
Другие изобретатели на базе компьютера Raspberry Pi создали аппарат-беспилотник SkyJack, который управляется посредством Wi — Fi соединения.
Такой аппарат способен брать вертолетную высоту, отслеживать пути военных вертолетов и управлять ими, также с его помощью можно перехватывать радиосигналы и создавать помехи.
Однако, несмотря на такие возможности, аппарат разрешен для массового пользования из-за своего небольшого радиуса действия.
Poppy: робот-инопланетянин
Робот Poppy был создан посредством трехмерной печати французской компанией INRIA Flowers. Робот управляется посредством мини-компьютера Raspberry Pi.
Конструкция робота повторяет биологическое строение человека, он имеет суставы, позвоночник и сухожилия, его походка похожа на человеческую, он ходит, переступая с пятки на нос и равномерно руководить центом своей тяжести.
Что такое No More Woof?
No More Woof – это прибор, который пока находится на стадии разработки, и создается на базе Raspberry Pi. С его помощью хозяин будет понимать, что хочет его пес.
Так, прибор будет прикрепляться к голове животного и работать по принципу электроэнцефалографа, то есть считывать информацию с головы собаки и передавать ее хозяину посредством Raspberry Pi.
Когда подобный прибор будет готов и каким образом он будет точно использоваться, пока неизвестно, но подобные гарнитуры, пусть не настолько совершенные, уже применялись профессиональными кинологами.
Все видят, что с наступлением нового тысячелетия интерес к компьютерам у нового поколения и не только является исключительно потребительским.
Дети не хотят учиться программировать и создавать что-то новое, а хотят быть исключительно «юзерами».
Разработчики Raspberry Pi уверены, что их устройство вернет былой интерес людей к изучению вычислительных наук и заставит их не только пользоваться новыми технологиями, но и создавать их.
Источник: https://elektro.guru/dlya-proizvodstva/primenenie-raspberry-pi-v-bytu-i-nestandartnye-primeneniya.html
Практическое использование ROS на Raspberry Pi — часть 2
Добрый день, уважаемые читатели Хабра! Это вторая статья из цикла статей о практическом использовании ROS на Raspberry Pi. В первой статье цикла я описал установку необходимых компонент ROS и настройку рабочего окружения для работы.
Во второй части цикла мы приступим к практическому использованию возможностей ROS на платформе Raspberry Pi. Конкретно в данной статье я собираюсь рассказать об использовании камеры Raspberry Pi Camera Board на Raspberry Pi в связке с ROS для решения задач компьютерного зрения.
Кто заинтересован, прошу под кат.
Камера RPi Camera Board
Для работы нам нужна будет такая вот камера Raspberry Pi Camera Board:
Эта камера подключается напрямую к графическому процессору через CSi-разъем на плате, что позволяет записывать и кодировать изображение с камеры без использования процессорного времени. Для подключения камеры используется ZIF-шлейф. Разъем для подключения шлейфа на плате находится между портами Ethernet и HDMI:
Установка библиотек
Итак приступим к установке необходимых библиотек. Для начала установим OpenCV:
$ sudo apt-get install libopencv-dev
Для использования камеры Raspberry Pi Camera нам будет нужна библиотека raspicam. Скачайте архив отсюда.
Далее установим библиотеку:
$ tar xvzf raspicamxx.tgz $ cd raspicamxx $ mkdir build $ cd build $ cmake .. $ make $ sudo make install $ sudo ldconfig
Нужно включить поддержку камеры в Raspbian через программу raspi-config:
$ sudo raspi-config
Выберите опцию 5 — Enable camera, сохраните выбор и выполните ребут системы.
Начало работы с ROS
Для удобства работы создадим новый catkin воркспейс для своих пакетов:
$ mkdir -p ~/driverobot_ws/src $ cd ~/driverobot_ws/src $ catkin_init_workspace $ cd ~/driverobot_ws $ catkin_make
Создайте новый пакет ROS:
$ catkin_create_pkg raspi_cam_ros image_transport cv_bridge roscpp std_msgs sensor_msgs compressed_image_transport opencv2
Спецификация команды catkin_create_pkg следующая: catkin_create_pkg [depend1] [depend2], где вы можете указать под depend сколько угодно зависимостей — библиотек, которые будет использовать пакет. Эта команда создает каркас проекта ROS: пустую директорию src для скриптов узлов и конфигурационные файлы CMakeLists.txt and package.xml.
Я нашел простой скрипт, который получает кадры с камеры и публикует их с помощью «паблишера» (publisher), и адаптировал его под ROS Indigo. Скачать его можно отсюда.
Для его использования нужно установить Raspberry Pi UV4L camera driver:$ curl http://www.linux-projects.org/listing/uv4l_repo/lrkey.asc | sudo apt-key add –
Добавьте следующую строку в файл /etc/apt/sources.list
deb http://www.linux-projects.org/listing/uv4l_repo/raspbian/ wheezy main
, обновите пакеты и выполните установку:
$ sudo apt-get update $ sudo apt-get install uv4l uv4l-raspicam
Для загрузки драйвера при каждой загрузке системы также установим необязательный пакет:
$ sudo apt-get install uv4l-raspicam-extras
Перейдем к редактированию пакета. Вставьте в ваш файл CMakeLists.txt строки отсюда.
Самые важные строки в файле CMakeLists.txt:
link_directories(/usr/lib/uv4l/uv4lext/armv6l/) … target_link_libraries(capture ${catkin_LIBRARIES} uv4lext)
Таким образом мы добавляем ссылку на драйвер uv4l, необходимый для компиляции пакета.
В конце файла мы задаем специальные строки для нашего узла:
add_executable(capture src/capturer.cpp) target_link_libraries(capture ${catkin_LIBRARIES} uv4lext)
Строка add_executable создает бинарник для запуска и target_link_lbraries линкует дополнительные библиотеки для бинарника capture.
Вставьте недостающие строки отсюда в файл package.xml, чтобы он выглядел вот так:
test_rpi_cam 0.0.0 The test_rpi_cam package pi TODO catkin cv_bridge image_transport roscpp std_msgs sensor_msgs opencv2 compressed_image_transport cv_bridge image_transport roscpp std_msgs sensor_msgs opencv2 compressed_image_transport
В первых строках задаются базовые параметры узла — название, версия, описание, информация об авторе.
Строки build_depend определяют зависимости от библиотек, необходимые для компиляции пакета, а строки run_depend — зависимости, необходимые для запуска кода в пакете.
Создайте файл capturer.
cpp внутри папки src и вставьте строки отсюда. Здесь в методе main() происходит инициализация узла и его запуск в цикле:
ros::init(argc, argv,”test_rpi_cam”); ros::NodeHandle n; UsbCamNode a(n); a.spin();
Вся логика скрипта заключается в том, что мы получаем картинку с камеры средствами OpenCV, оборачиваем ее в сообщение для ROS в методе fillImage и публикуем в топик. Здесь используется пакет image_transport для создания “паблишера” картинки.
Запустим драйвер uv4l выполнив команду:
$ uv4l –driver raspicam –auto-video_nr –width 640 –height 480 –nopreview
что создаст MJPEG-стриминг.
Скомпилируем наш узел ROS:
$ roscore $ cd ~/driverobot_ws $ catkin_make
Проверьте значение переменной ROS_PACKAGE_PATH:
echo $ROS_PACKAGE_PATH /opt/ros/indigo/share:/opt/ros/indigo/stacks
Значение переменной ROS_PACKAGE_PATH должно включать путь до нашего воркспейса. Добавим наш воркспейс в путь:
$ source devel/setup.bash
Теперь запустив команду echo $ROS_PACKAGE_PATH еще раз мы должны увидеть подобный вывод:
/home/youruser/catkin_ws/src:/opt/ros/indigo/share:/opt/ros/indigo/stacks
, где /home//catkin_ws/src — это путь до нашего воркспейса. Это означает, что ROS может «видеть» наши узлы, созданные в catkin_ws и мы можем их запускать через rosrun.
Запустим наш узел ROS:
$ rosrun test_rpi_cam capture
Запустим графическую программу rqt_image_view для отображения видеопотока с топика:$ rosrun rqt_image_view rqt_image_view
Выберем топик image_raw в окне rqt_image_view
При запуске узла может возникнуть ошибка “Gtk-WARNING **: cannot open display: -1” при работе через ssh или “GdkGLExt-WARNING **: Window system doesn’t support OpenGL.” при запуске в режиме работы удаленного рабочего стола VNC. Решение — подключиться к Raspberry Pi через SSH с X11 forwarding:
$ ssh -X pi@
Можно узнать с какой частотой публикуются сообщения в топик с помощью команды rostopic:
rostopic hz image_raw
Эта команда вычисляет частоту получения сообщений на топик каждую секунду и выводит ее в консоль.
У меня для модели B+ был вывод такого вида:
average rate: 7.905 min: 0.075s max: 0.249s std dev: 0.02756s
Как видим частота публикации сообщений — 8 Гц.
Я также проверил частоту публикации изображений с камеры на модели RPi 2. Здесь результаты были в разы лучше:
average rate: 30.005 min: 0.024s max: 0.043s std dev: 0.00272s
Сообщения уже публикуются с частотой 30 Гц, что является довольно хорошим увеличением скорости по сравнению с моделью B+.
Visual-based управление роботом с OpenCV и ROS
Сейчас мы напишем небольшой пакет ROS для использования компьютерного зрения на роботе с Raspberry Pi, который будет выполнять алгоритм распознавания (в нашем случае визуальное ориентирование методом line following) и публиковать величину необходимого смещения робота в топик.
С другой стороны узел управления движением робота будет подписываться на этот топик и посылать команды управления движением на Arduino.
Сейчас добавим в скрипт capturer.cpp “паблишер”, который будет публиковать величину сдвига.
Сначала включим определение типа сообщения для величины сдвига — std_msgs/Int16.
#include
rosserial берет специальные файлы сообщений msg и генерирует исходный код для них. Используется такой шаблон:
package_name/msg/Foo.msg → package_name::Foo
Исходный код для стандартных сообщений rosserial хранится в папке package_name внутри директории ros_lib.
Далее инициализируем сообщение для данного типа:
std_msgs::Int16 shift_msg;
Создаем “паблишера”:
ros::Publisher shift_pub;
и внутри конструктора UsbCamNode даем ему определение:
shift_pub = nh.advertise(“line_shift”, 1);
Здесь мы задаем тип сообщений и название топика для публикации.
Дальше добавим логику вычисления величины сдвига линии средствами OpenCV и ее публикации в топик line_shift в метод take_and_send_image() перед строкой #ifdef OUTPUT_ENABLED:
// Some logic for the calculation of offest shift_msg.data = offset; shift_pub.publish(shift_msg);
У меня нет готового алгоритма следования линии, поэтому читатель волен написать свою собственную логику здесь.
Фактически данные в сообщении сохраняются в поле data. Структуру сообщения можно посмотреть с помощью команды:
$ rosmsg show std_msgs/Int16
Теперь запустим узел:
$ rosrun raspi_cam_ros capturer
Используем команду rostopic echo для вывода данных, публикуемых в топик line_shift:
$ rostopic echo line_shift
Теперь добавим “сабскрайбер” в узле управления роботом. Включим определение типа сообщения:
#include
Затем добавляем callback-функцию, которая выполняется при получении сообщения из топика.
void messageCb(const std_msgs::UInt16& message) { int shift_val = int(message.data); char* log_msg; if(shift_val 0 ) log_msg = “Right”; else log_msg = “Forward”; nh.loginfo(log_msg); }
callback функция должна иметь тип void и принимать const ссылку типа сообщения в качестве аргумента. Для простоты я вывожу в лог сообщение о направлении смещения линии. Вы можете здесь добавить собственную логику движения робота для своего сценария.
Создаем подписчика на сообщения из топика line_shift.
ros::Subscriber sub(“line_shift”, &messageCb);
Здесь задаем название топика и ссылку на callback-функцию.
Дальше идут стандартные методы скетча для rosserial_arduino:
void setup() { nh.initNode(); nh.subscribe(sub); Serial.begin(57600); } void loop() { nh.spinOnce(); delay(100); }
Единственное отличие — это то, что мы добавляем nh.subscribe(sub) для создания фактической “подписки” узла на топик.
Скетч для управления роботом можно скачать отсюда.
Маленькая хитрость! В ROS существуют специальные launch файлы, которые позволяют запускать узлы как отдельные процессы автоматически с определенными параметрами. launch файлы создаются в формате xml и их синтаксис позволяет запускать множество узлов сразу.
Однако launch файл не гарантирует, что узлы будут запущены в точно заданном порядке.
Можно создать launch файл для более легкого запуска сервера rosserial_python.
$ cd /src $ catkin_create_pkg rosserial_controller $ cd src/rosserial_controller $ vim rosserial_controller.launch
Напишем launch файл такого содержания:
Скомпилируем и запустим его:
$ cd ~/ $ catkin_make $ source devel/setup.bash $ roslaunch rosserial_controller rosserial_controller.launch
Мы можем визуализировать значения, публикуемые в тему line_shift, с помощью утилиты rqt_plot, как это сделано в статье:
$ rqt_plot line_shift
Теперь вы можете использовать все преимущества камеры Raspberry Pi Camera и библиотеки OpenCV в своих сценариях визуального ориентирования робота, распознавания объектов, слежения и многих других. Дайте волю фантазии!
В следующий раз мы поговорим об управлении роботом в режиме teleoperation с помощью нажатия клавиш на клавиатуре.
ссылка на оригинал статьи http://geektimes.ru/post/268928/
Источник: http://savepearlharbor.com/?p=272384
Adblockdetector