Меню

Webiopi raspberry pi настройка



Raspberry Pi для домашней автоматизации. Установка Webiopi

Raspberry Pi имеет довольно неплохой набор портов GPIO, которые можно задействовать как аналоговые или цифровые входы/выходы, интерфейсы UART , SPI , I 2 C . В начале рассмотрим использование портов в качестве цифровых выходов и входов.

Для этого воспользуемся готовым фреймворком WebIOPi . Он был специально разработан для работы с портами GPIO Raspberry Pi и позволяет создавать на своей основе различные пользовательские приложения. Как заявлено на официальном сайте поддержки этого проекта http s ://code.google.com/p/webiopi, WebIOPi имеет следующие возможности:

Встроенный Web — c ервер, реализованный на языке Python

Встроенная поддержка более чем 30 устройств с интерфейсами UART , SPI , I 2 C , 1- Wire

Библиотеки Javascript / HTML для создания Web -интерфейса

Библиотеки Python / Java для создания приложений под Android

Совместимость с языком Python версий 2 и 3

Возможность адаптации под нужды пользователей

Структура фреймворка WebIOPi приведена на рис.1:

Чтобы выполнить установку WebIOPi , заходим в Raspberry Pi через программу Putty (логин – pi , пароль — raspberry ) и в терминале вводим поочередно следующие команды:

$ tar xvzf WebIOPi-0.7.1.tar.gz

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

$ sudo update-rc.d webiopi defaults

После чего перезапускаем Raspberry Pi :

Теперь проверяем работу WebIOPi . С любого компьютера в локальной сети набираем сетевой адрес, присвоенный Raspberry Pi с указанием порта 8000. Например:

Для доступа к WebIOPi необходимо в открывшейся форме ввести логин и пароль. По умолчанию логин « webiopi », пароль – « raspberry ». Их, как и номер порта, затем можно будет изменить, но об этом поговорим отдельно, а для наших экспериментов воспользуемся стандартными параметрами.

Итак, если вы все сделали правильно при установке WebIOPi , ввели верный логин и пароль, то в браузере должна открыться страница (рис.2)

На этой странице есть четыре пункта меню. GPIO Header и GPIO List открывают два варианта графических интерфейсов работы с портами ввода/вывода, Serial Monitor – терминал для работы с последовательным портом UART , Devise Monitor – подключенные к GPIO датчики.

Выбираем в меню пункт GPIO Header и попадаем на страницу с графическим интерфейсом управления портами (рис.3)

Как видно из приведенного рисунка, графический интерфейс представляет собой мнемоническую интерактивную схему портов GPIO Raspberry Pi . По умолчанию, все они настроены как входы ( IN ) . Для использования порта как выхода, нужно кликнуть по IN мышкой и надпись измениться на OUT .

Черный цвет порта указывает, что на выходе низкий уровень (0В), желтый – высокий уровень (3,3В). Для изменения состояния определенного порта кликнем по нему мышкой и уровень на его выходе изменится на инверсный.

Для работы с WebIOPi через Web -интерфейс, рекомендуется использовать браузер Chrome , с другими браузерами корректная работа фреймворка не гарантируется. Однако, я проверял его работу в Opera , Internet Explorer под Windows , Safari под iOS и особых проблем не наблюдалось. Но, тем не менее, лучше все же воспользоваться рекомендацией разработчика и во избежание дополнительных проблем на начальном этапе пользоваться только Chrome .

Читайте также:  Настройка времени сообщений вконтакте

Как уже отмечалось, при включении все порты GPIO в Raspberry Pi настраиваются как входы. Но, допустим, требуется, что бы при включении определенные порты не только были выходами по умолчанию, но и имели, в случае необходимости, высокий или низкий «стартовый» уровень. Никаких проблем, это довольно просто реализовать в WebIOPi . Остановимся на этом вопросе более подробно.

Подключаемся к Raspberry Pi через терминальную программу Putty (логин – pi , пароль — raspberry ) и открываем для редактирования конфигурационный файл config :

sudo nano / etc / webiopi / config

Допустим, мы хотим что бы порты GPIO 2, 3, 4, 17 были сконфигурированы как выходы с низким стартовым уровнем, порты GPIO 9, 10, 11, 22, 27 – как выходы с высоким стартовым уровнем, а оставшиеся GPIO 7, 8, 18, 23, 24, 25 как входы . Находим в открывшемся конфигурационном файле заголовок:

[ GPIO ] # Initialize following GPIOs with given function and optional value # This is used during WebIOPi start process

Редактируем в соответствии с нашими требованиями (рис.4)

Надеюсь, что здесь все понятно и без комментариев: IN – это вход, OUT 1выход с высоким уровнем, OUT выход с низким уровнем. Назначение входов IN можно не прописывать – не назначенные в конфигурационном файле порты по умолчанию будут входами.

Сохраняем настройки сочетанием клавиш Ctrl и O , затем нажимаем Enter . Настройки сохранены, делаем перезагрузку Raspberry Pi командой sudo reboot и после перезагрузки заходим на страницу WebIOPi , как это описывалось выше. Мы увидим, что назначение портов GPIO изменилось в соответствии с заданными настройками в конфигурационном файле (рис.5)

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

С помощью такой системы, вы сможете управлять различными устройствами в своем доме или квартире из любой точки планеты, где есть интернет . А как организовать доступ к домашней сети из интернета на случай, если ваш провайдер предоставляет не статический, а динамический IP , довольно подробно описано в статье Видеонаблюдение через интернет .

По теме удаленного управления нагрузками через GSM рекомендуется почитать:

Источник

Raspberry Pi

Поиск

Рубрики

Рейтинг

Облако тэгов

Боковое меню

Установка робота-фотографа на Raspberry Pi

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

Читайте также:  Настройка эффектов на рабочем столе

По проекту для робота задаются следующие требования:
• возможность управления через Wi-Fi сигнал;
• способность передвижения платформы по команде;
• видеосъемка по ходу движения;
• съемка фото высокого качества;
• получение команд с основного компьютера, отправка на него видео и фото.

Базовым макетом для нашего кибер-фотографа является Raspirobot – специально разработанная для Raspberry Pi платформа, содержащая аппаратные компоненты, через которые реализуется перемещение и повороты конструкции. Специально для нее оптимизировано программное обеспечение, доработанное для управления камерой робота. С этой целью веб-интерфейс добавлены кнопки «фото» и «видео».
Этот робот создан в качестве примера использования интерфейса. Его возможности очень широки, с его помощью можно управлять любыми привычными предметами окружения. Таким образом на базе мини-компьютера можно создать пульт управления «умным» домом.
При разработке этого интерфейса использовался фрейморк WebIOPi – он позволяет даже не очень хорошо знакомому с php, nginx пользователю, не обладающему знанием прикладных программах, быстро отладить проект.

Итак, для воссоздания эксперимента необходимо:
• умение работать с python для создания алгоритма (уровень сложности программируемого алгоритма, соответственно, зависит от уровня знания);
• способность писать код в HTML для доработки веб-интерфейса;
• навык работы в javascript и в jquery;
• элементарный навык паяния, чтобы спаять специальную приводную плату.
Также придется вводить ряд команд из терминала, что может быть несколько сложно для неопытных пользователей Linux.

Что же такое WebIOPi?

Это – готовый продукт от Internet of Things для работы с портами ввода-вывода (GPIO) на Raspberry Pi. При помощи этого фреймворка можно управлять всеми портами как локально, так и удаленно – через обычный браузер или специальные программы, а также определять их состояние.
Какие именно он дает преимущества:
1. Дефолтная поддержка почти сорока устройств (ADC, DAC, различные датчики и т.п.);
2. Совместимость с python 2-й и 3-й версий;
3. Отличная адаптивность к потребностям пользователя;
4. Возможность защиты парой логин-пароль;
5. Многовариантность применения;
6. Сервер разработан на python-е;
7. Работа с SPI, 1-Wire, I 2C, GPIO, Serial;
8. CoAP c REST-архитектурой поддерживает IP Multicast;
9. Возможность работы с облачным сервисом.

Для инсталляции WebIOPi предустановите на мини-компьютере Python совместимой версии. В таком случае установка осуществляется через терминал:

После установки запускаем фреймворк с помощью командной строки:

$ sudo webiopi [-h] [-c config] [-l log] [-s script] [-d] [port]

Options:
-h, —help Display this help
-c, —config file Load config from file
-l, —log file Log to file
-s, —script file Load script from file
-d, —debug Enable DEBUG

Arguments:
port Port to bind the HTTP Server

Тут есть нюанс – если закрыть терминал, или сочетанием Ctrl+C прервать скрипт, доступ к портам и сервер потеряются. Чтобы этого избежать, стоит запускать фреймворк как сервис. Делаем это следующим образом:
Запуск –

Возможен вариант настройки автозапуска WebIOPi при включении компьютера:

Теперь проверим
Для проверки работоспособности пробуем в адресной строке браузера ввести http://[IPRasp]:8000 (только [IPRasp] заменяем на реальный IP-адрес вашего Raspberry) на своем основном компьютере. Для первичной авторизации вводим логин: webiopi и пароль: raspberry. Должна открыться стартовая страница WebIOPi, и вы получаете доступ к web-интерфейсу Pi.
Учтите, что не все браузеры корректно работают с кодом фреймворка, поэтому разработчик Internet of Things рекомендует использовать Google Chrome в новейшей доступной версии, либо Safari и Firefox. А вот при использовании обычного Explorer почти гарантированно возникнут проблемы.

Читайте также:  Поворота конвертера при настройке

Отображаться порты GPIO будут приблизительно таким образом:

Можно отрегулировать выходной показатель каждого порта и установить для них режим работы.

Итак, перейдем непосредственно к роботу WebCamBot

Для его изготовления доработан открытый проект подвижного робота с веб-камерой CamBot. Как говорилось выше, драйвера моторов размещались на плате Raspirobot, в которую добавлен импульсный регулятор. Для управления электромоторами, приводящими конструкцию в движение, будут задействованы четыре порта мини-компьютера.

# Left motor GPIOs
LEFT_GO_PIN = 17 #PWM сигнал скорости
LEFT_DIR_PIN = 4 #направление движения

# Right motor GPIOs
RIGHT_GO_PIN = 10 #PWM
RIGHT_DIR_PIN = 25 #направление движения

Камера может работать в одном из режимов: транслировать текущий видеопоток с низким качеством и снимать фото с высоким качеством. Режим можно поменять с помощью скриптов: stream.sh, stream_stop.sh, photo.sh.

Для включения камеры:

STREAMER=mjpg_streamer
DEVICE=/dev/video0
RESOLUTION=160×120 #320×240
FRAMERATE=25
HTTP_PORT=8001
# check for existing webcam device
if [ ! -e «/dev/video0» ]; then
echo «stream.sh: Error — NO /dev/video0 device» 2>&1 | logger
exit 2
fi
PLUGINPATH=/home/pi/mjpg-streamer-r63
«$PLUGINPATH/$STREAMER» -i «$PLUGINPATH/input_uvc.so -n -d $DEVICE -r $RESOLUTION -f $FRAMERATE» -o «$PLUGINPATH/output_http.so -n -p $HTTP_PORT» -b

Для отключения камеры:

Упрощенный веб-интерфейс
Процесс написания web-интерфейса оптимизирован – достаточно лишь с помощью возможностей javascript создать кнопки управления, активизирующие макросы, ранее прописанные для Raspberry на Python. Эти кнопки через jQuery необходимо внести в HTML код веб-страницы.

1. Механизм такой:

button = webiopi().createButton(«bt_up», «/\», go_forward, stop); // создание кнопки с id bt_up, текстом /\, вызывающей функцию go_forward
$(«#up»).append(button); // добавление кнопки в div с >

2. Сама функция вызывает макрос go_forward:

3. Прописываем также возможность управления с клавиатуры:

4. После выполнения компьютером макроса фото и потоковое видео загружаются в HTML:

Конфигурация

Для настройки WebIOPi нужно открыть файл по пути /etc/webiopi/. В файле будет несколько блоков, нас интересует два из них:

1. Содержащий описание макросов:

В него необходимо внести строку типа «name = sourcefile» с прописанными макросами в скрипте python.

2. Содержащий настройки сервера:

[HTTP]
# HTTP Server configuration
enabled = true
port = 8000

# File containing sha256(base64(«user:password»))
# Use webiopi-passwd command to generate it
passwd-file = /etc/webiopi/passwd

# Use doc-root to change default HTML and resource files location
#doc-root = /home/pi/webiopi/examples/scripts/macros

# Use welcome-file to change the default «Welcome» file
#welcome-file = index.html

В нем можно изменить конфигурацию сервера.

Необходимые скрипты

А для управления камерой будет использоваться команда call, активирующая скрипт:

В итоге у вас получится интерфейс следующего вида:

Отладка

11.01.2020 в 14:30, Просмотров: 2010
Опубликовал: ak167

of your page —>
of your page —>

Источник

Adblock
detector