Сундучок на базе raspberry pi, который распознает ваше лицо

Распознавание лиц с помощью 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

Ссылка на основную публикацию
Adblock
detector
",css:{backgroundColor:"#000",opacity:.6}},container:{block:void 0,tpl:"
"},wrap:void 0,body:void 0,errors:{tpl:"
",autoclose_delay:2e3,ajax_unsuccessful_load:"Error"},openEffect:{type:"fade",speed:400},closeEffect:{type:"fade",speed:400},beforeOpen:n.noop,afterOpen:n.noop,beforeClose:n.noop,afterClose:n.noop,afterLoading:n.noop,afterLoadingOnShow:n.noop,errorLoading:n.noop},o=0,p=n([]),h={isEventOut:function(a,b){var c=!0;return n(a).each(function(){n(b.target).get(0)==n(this).get(0)&&(c=!1),0==n(b.target).closest("HTML",n(this).get(0)).length&&(c=!1)}),c}},q={getParentEl:function(a){var b=n(a);return b.data("arcticmodal")?b:(b=n(a).closest(".arcticmodal-container").data("arcticmodalParentEl"),!!b&&b)},transition:function(a,b,c,d){switch(d=null==d?n.noop:d,c.type){case"fade":"show"==b?a.fadeIn(c.speed,d):a.fadeOut(c.speed,d);break;case"none":"show"==b?a.show():a.hide(),d();}},prepare_body:function(a,b){n(".arcticmodal-close",a.body).unbind("click.arcticmodal").bind("click.arcticmodal",function(){return b.arcticmodal("close"),!1})},init_el:function(d,a){var b=d.data("arcticmodal");if(!b){if(b=a,o++,b.modalID=o,b.overlay.block=n(b.overlay.tpl),b.overlay.block.css(b.overlay.css),b.container.block=n(b.container.tpl),b.body=n(".arcticmodal-container_i2",b.container.block),a.clone?b.body.html(d.clone(!0)):(d.before("
"),b.body.html(d)),q.prepare_body(b,d),b.closeOnOverlayClick&&b.overlay.block.add(b.container.block).click(function(a){h.isEventOut(n(">*",b.body),a)&&d.arcticmodal("close")}),b.container.block.data("arcticmodalParentEl",d),d.data("arcticmodal",b),p=n.merge(p,d),n.proxy(e.show,d)(),"html"==b.type)return d;if(null!=b.ajax.beforeSend){var c=b.ajax.beforeSend;delete b.ajax.beforeSend}if(null!=b.ajax.success){var f=b.ajax.success;delete b.ajax.success}if(null!=b.ajax.error){var g=b.ajax.error;delete b.ajax.error}var j=n.extend(!0,{url:b.url,beforeSend:function(){null==c?b.body.html("
"):c(b,d)},success:function(c){d.trigger("afterLoading"),b.afterLoading(b,d,c),null==f?b.body.html(c):f(b,d,c),q.prepare_body(b,d),d.trigger("afterLoadingOnShow"),b.afterLoadingOnShow(b,d,c)},error:function(){d.trigger("errorLoading"),b.errorLoading(b,d),null==g?(b.body.html(b.errors.tpl),n(".arcticmodal-error",b.body).html(b.errors.ajax_unsuccessful_load),n(".arcticmodal-close",b.body).click(function(){return d.arcticmodal("close"),!1}),b.errors.autoclose_delay&&setTimeout(function(){d.arcticmodal("close")},b.errors.autoclose_delay)):g(b,d)}},b.ajax);b.ajax_request=n.ajax(j),d.data("arcticmodal",b)}},init:function(b){if(b=n.extend(!0,{},a,b),!n.isFunction(this))return this.each(function(){q.init_el(n(this),n.extend(!0,{},b))});if(null==b)return void n.error("jquery.arcticmodal: Uncorrect parameters");if(""==b.type)return void n.error("jquery.arcticmodal: Don't set parameter \"type\"");switch(b.type){case"html":if(""==b.content)return void n.error("jquery.arcticmodal: Don't set parameter \"content\"");var e=b.content;return b.content="",q.init_el(n(e),b);case"ajax":return""==b.url?void n.error("jquery.arcticmodal: Don't set parameter \"url\""):q.init_el(n("
"),b);}}},e={show:function(){var a=q.getParentEl(this);if(!1===a)return void n.error("jquery.arcticmodal: Uncorrect call");var b=a.data("arcticmodal");if(b.overlay.block.hide(),b.container.block.hide(),n("BODY").append(b.overlay.block),n("BODY").append(b.container.block),b.beforeOpen(b,a),a.trigger("beforeOpen"),"hidden"!=b.wrap.css("overflow")){b.wrap.data("arcticmodalOverflow",b.wrap.css("overflow"));var c=b.wrap.outerWidth(!0);b.wrap.css("overflow","hidden");var d=b.wrap.outerWidth(!0);d!=c&&b.wrap.css("marginRight",d-c+"px")}return p.not(a).each(function(){var a=n(this).data("arcticmodal");a.overlay.block.hide()}),q.transition(b.overlay.block,"show",1*")),b.overlay.block.remove(),b.container.block.remove(),a.data("arcticmodal",null),n(".arcticmodal-container").length||(b.wrap.data("arcticmodalOverflow")&&b.wrap.css("overflow",b.wrap.data("arcticmodalOverflow")),b.wrap.css("marginRight",0))}),"ajax"==b.type&&b.ajax_request.abort(),p=p.not(a))})},setDefault:function(b){n.extend(!0,a,b)}};n(function(){a.wrap=n(document.all&&!document.querySelector?"html":"body")}),n(document).bind("keyup.arcticmodal",function(d){var a=p.last();if(a.length){var b=a.data("arcticmodal");b.closeOnEsc&&27===d.keyCode&&a.arcticmodal("close")}}),n.arcticmodal=n.fn.arcticmodal=function(a){return e[a]?e[a].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof a&&a?void n.error("jquery.arcticmodal: Method "+a+" does not exist"):q.init.apply(this,arguments)}}(jQuery)}var debugMode="undefined"!=typeof debugFlatPM&&debugFlatPM,duplicateMode="undefined"!=typeof duplicateFlatPM&&duplicateFlatPM,countMode="undefined"!=typeof countFlatPM&&countFlatPM;document["wri"+"te"]=function(a){let b=document.createElement("div");jQuery(document.currentScript).after(b),flatPM_setHTML(b,a),jQuery(b).contents().unwrap()};function flatPM_sticky(c,d,e=0){function f(){if(null==a){let b=getComputedStyle(g,""),c="";for(let a=0;a=b.top-h?b.top-h{const d=c.split("=");return d[0]===a?decodeURIComponent(d[1]):b},""),c=""==b?void 0:b;return c}function flatPM_testCookie(){let a="test_56445";try{return localStorage.setItem(a,a),localStorage.removeItem(a),!0}catch(a){return!1}}function flatPM_grep(a,b,c){return jQuery.grep(a,(a,d)=>c?d==b:0==(d+1)%b)}function flatPM_random(a,b){return Math.floor(Math.random()*(b-a+1))+a}
");let k=document.querySelector(".flat_pm_modal[data-id-modal=\""+a.ID+"\"]");if(-1===d.indexOf("go"+"oglesyndication")?flatPM_setHTML(k,d):jQuery(k).html(b+d),"px"==a.how.popup.px_s)e.bind(h,()=>{e.scrollTop()>a.how.popup.after&&(e.unbind(h),f.unbind(i),j())}),void 0!==a.how.popup.close_window&&"true"==a.how.popup.close_window&&f.bind(i,()=>{e.unbind(h),f.unbind(i),j()});else{let b=setTimeout(()=>{f.unbind(i),j()},1e3*a.how.popup.after);void 0!==a.how.popup.close_window&&"true"==a.how.popup.close_window&&f.bind(i,()=>{clearTimeout(b),f.unbind(i),j()})}f.on("click",".flat_pm_modal .flat_pm_crs",()=>{jQuery.arcticmodal("close")})}if(void 0!==a.how.outgoing){let b,c="0"==a.how.outgoing.indent?"":" style=\"bottom:"+a.how.outgoing.indent+"px\"",e="true"==a.how.outgoing.cross?"":"",f=jQuery(window),g="scroll.out"+a.ID,h=void 0===flatPM_getCookie("flat_out_"+a.ID+"_mb")||"false"!=flatPM_getCookie("flat_out_"+a.ID+"_mb"),i=document.createElement("div"),j=jQuery("body"),k=()=>{void 0!==a.how.outgoing.cookie&&"false"==a.how.outgoing.cookie&&h&&(jQuery(".flat_pm_out[data-id-out=\""+a.ID+"\"]").addClass("show"),j.on("click",".flat_pm_out[data-id-out=\""+a.ID+"\"] .flat_pm_crs",function(){flatPM_setCookie("flat_out_"+a.ID+"_mb",!1)})),(void 0===a.how.outgoing.cookie||"false"!=a.how.outgoing.cookie)&&jQuery(".flat_pm_out[data-id-out=\""+a.ID+"\"]").addClass("show")};switch(a.how.outgoing.whence){case"1":b="top";break;case"2":b="bottom";break;case"3":b="left";break;case"4":b="right";}jQuery("body > *").eq(0).before("
"+e+"
");let m=document.querySelector(".flat_pm_out[data-id-out=\""+a.ID+"\"]");-1===d.indexOf("go"+"oglesyndication")?flatPM_setHTML(m,d):jQuery(m).html(e+d),"px"==a.how.outgoing.px_s?f.bind(g,()=>{f.scrollTop()>a.how.outgoing.after&&(f.unbind(g),k())}):setTimeout(()=>{k()},1e3*a.how.outgoing.after),j.on("click",".flat_pm_out .flat_pm_crs",function(){jQuery(this).parent().removeClass("show").addClass("closed")})}countMode&&(flat_count["block_"+a.ID]={},flat_count["block_"+a.ID].count=1,flat_count["block_"+a.ID].click=0,flat_count["block_"+a.ID].id=a.ID)}catch(a){console.warn(a)}}function flatPM_start(){let a=flat_pm_arr.length;if(0==a)return flat_pm_arr=[],void jQuery(".flat_pm_start, .flat_pm_end").remove();flat_body=flat_body||jQuery("body"),!flat_counter&&countMode&&(flat_counter=!0,flat_body.on("click","[data-flat-id]",function(){let a=jQuery(this),b=a.attr("data-flat-id");flat_count["block_"+b].click++}),flat_body.on("mouseenter","[data-flat-id] iframe",function(){let a=jQuery(this),b=a.closest("[data-flat-id]").attr("data-flat-id");flat_iframe=b}).on("mouseleave","[data-flat-id] iframe",function(){flat_iframe=-1}),jQuery(window).on("beforeunload",()=>{jQuery.isEmptyObject(flat_count)||jQuery.ajax({async:!1,type:"POST",url:ajaxUrlFlatPM,dataType:"json",data:{action:"flat_pm_ajax",data_me:{method:"flat_pm_block_counter",arr:flat_count}}})}).on("blur",()=>{-1!=flat_iframe&&flat_count["block_"+flat_iframe].click++})),flat_userVars.init();for(let b=0;bflat_userVars.textlen||void 0!==a.chapter_sub&&a.chapter_subflat_userVars.titlelen||void 0!==a.title_sub&&a.title_subc&&cc&&c>d&&(b=flatPM_addDays(b,-1)),b>e||cd||c-1!=flat_userVars.referer.indexOf(a))||void 0!==a.referer.referer_disabled&&-1!=a.referer.referer_disabled.findIndex(a=>-1!=flat_userVars.referer.indexOf(a)))&&(c=!0),c||void 0===a.browser||(void 0===a.browser.browser_enabled||-1!=a.browser.browser_enabled.indexOf(flat_userVars.browser))&&(void 0===a.browser.browser_disabled||-1==a.browser.browser_disabled.indexOf(flat_userVars.browser)))){if(c&&void 0!==a.browser&&void 0!==a.browser.browser_enabled&&-1!=a.browser.browser_enabled.indexOf(flat_userVars.browser)&&(c=!1),!c&&(void 0!==a.geo||void 0!==a.role)&&(""==flat_userVars.ccode||""==flat_userVars.country||""==flat_userVars.city||""==flat_userVars.role)){flat_pm_then.push(a),flatPM_setWrap(a),flat_body.hasClass("flat_pm_block_geo_role")||(flat_body.addClass("flat_pm_block_geo_role"),flatPM_ajax("flat_pm_block_geo_role")),c=!0}c||(flatPM_setWrap(a),flatPM_next(a))}}}let b=jQuery(".flatPM_sticky");b.each(function(){let a=jQuery(this),b=a.data("height")||350,c=a.data("top");a.wrap("
");let d=a.parent()[0];flatPM_sticky(this,d,c)}),debugMode||countMode||jQuery("[data-flat-id]:not([data-id-out]):not([data-id-modal])").contents().unwrap(),flat_pm_arr=[],jQuery(".flat_pm_start, .flat_pm_end").remove()}

Если Вы используете компьютер Raspberry Pi для своего проекта выходного дня (возможно, медиа-центра или домашнего сервера), то есть хороший шанс сэкономить некоторое время, используя эти полезные инструкции командной строки.

Raspberry Pi: да, это Linux

Вы записали образ на свою карточку SD и загрузили Raspberry Pi. Вы, наверное, используете операционную систему Raspbian, обновляете и настраиваете ее так, чтобы она соответствовала Вашим требованиям.

То, что Вы, возможно, не поняли, что, несмотря на стиль Windows иконок на рабочем столе, Raspbian является дистрибутивом Linux.

Для Raspberry Pi доступны несколько операционных систем, подавляющее большинство из которых являются Linux.

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

И поэтому это достаточно хорошо!

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

Хотите иметь власть над Вашим Raspberry Pi с Raspbian? Начните с запуска LX Terminal.

Основы командной строки Raspberry Pi

Мы не ожидаем, чтобы Вы начнете использовать командную строку, не зная, как она работает. По сути, это метод для выдачи инструкций компьютеру на выполнение задания. Реально это не все, чем отличается от «выделить и нажать”, но Вы должны использовать текст.

При первом обращении к командной строке увидите подсказку pi@raspberrypi $ – каждый раз, когда это отображается, Вы сможете вводить команды.

С GUI под управлением мышью Вы можете легко переключаться между каталогами и читать их содержимое. В командной строке, Вы можете проверить, какой каталог смотрите, введя pwd (print working directory – распечатать рабочий каталог).

Используйте ls, чтобы увидеть содержимое каталога, а для изменения каталога введите cd. Например, cd edward переключит на папку с названием “Edward”, тогда как cd.. всегда будет возвращать фокус в родительский каталог.

Новые каталоги можно создать с mkdir newdir, где “newdir” будет меткой (названием) каталога.

Вы также можете создать преемственность новых каталогов с mkdir –p /home/edward/newdir1/newdir2, где создаются и newdir1, и newdir2, но это работает только с ключом –p.

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

Отображение информации об аппаратном обеспечении

На ПК с Windows или Mac, Вы можете легко найти информацию об оборудовании, посмотрев в System или About This Mac. Чтобы узнать об оборудовании Вашего Raspberry Pi, следует ввести следующее:

cat /proc/cpuinfo

На выходе будет информация о процессоре устройства. Например, если Вы видите BCM2708, то это означает, что чип изготовлен Broadcom.

Разная другая информация об аппаратных средствах может быть найдена путем запуска команды в каталоге proc:

  • cat /proc/meminfo отображает подробную информацию о памяти Raspberry Pi
  • cat /proc/partitions показывает размер и количество разделов на Вашей карте SD или HDD
  • cat /proc/version показывает, какую версию Pi Вы используете
Читайте также:  Цифровой контроллер для светового шнура "дюралайт"

Все эти детали могут быть использованы для оценки того, на что Ваш Raspberry Pi способен. Дополнительная информация может быть получена с помощью ряда команд vcgencmd, которые могут выявить такие вещи, как температуру процессора (vcgencmd measure_temp). И это может быть жизненно важным, если беспокоитесь о воздушном потоке вокруг процессора.

Другие технические команды включают в себя free -o -h, чтобы увидеть, сколько свободной системной памяти доступно, в то время как vcgencmd get_mem arm && vcgencmd get_mem gpu покажет распределение памяти между процессором и GPU, то, что может быть скорректировано на экране raspi-config (см. ниже).

Как и для файловой структуры, команду ls можно использовать в список элементов, прикрепленных к Вашему Raspberry Pi, особенно к USB-оборудования.

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

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

Три важные команды терминала

Возможно, наиболее важной инструкцией командной строки является sudo. Это одно слово инструктирует систему на основе Linux, например, Raspbian, что следующая команда будет выполняться с правами «суперпользователя», то есть на продвинутом уровне доступа, аналогично (но не то же самое) администратору на компьютерах Windows.

Например, sudo apt-get install synaptic загрузит и установит менеджер пакетов synaptic (один из нескольких методов установки программного обеспечения на Raspberry Pi).

Одной из наиболее распространенных команд для пользователей Raspbian является sudo raspi-config. Она открывает экран для настройки операционной системы, которая была значительно обновлена после того, как он был впервые выпущен.

Закончив работу в командной строке Raspberry Pi и используя Raspbian (дистрибутив),, введите startx, чтобы вернуться в графический интерфейс с управлением мышью. Если, с другой стороны, Вы хотите остановить работу, используйте sudo shutdown –h now, чтобы немедленно начать остановку системы и процесс выключения.

Вы можете перезапустить с sudo shutdown –r now. Время выключения может быть установлено как интервал, например, 5 minutes, или время суток, например, 21:55:

sudo shutdown –h 21:55

Информация командной строки – это мощность

Многих людей доступ через командную строку на любой платформе пугает

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

Если Вы новичок в Raspberry Pi, то не забудьте почитать на сайте другие статьи нашего раздела о Raspberry Pi.

(Источник EN: makeuseof.com)