Телефонуйте » (+38) 096 227 41 41

Скористаємося веб-інтерфейсом для управління RPi і використаємо його як файловий сервер або медіа-центр з віддаленого місця розташування за допомогою будь-якого підключеного до Інтернету пристрою.

Через свій розмір і портативність, RPi можна розташувати в будь-якому місці, де він може мати живлення, і тому він широко використовується як файловий сервер, медіа-центр та для інших нетрадиційних додатків, перш за все, для віддаленого керування та Інтернету речей. Розглянемо WebIOPi, як найбільш досконалий інструмент для віддаленого керування за допомогою RPi.

WebIOPi - фреймворк Інтернету речей для Raspberry Pi

WebIOPi створений для управління, налагодження та використання GPIO вашого RPi, датчиків і перетворювачів з веб-браузера або будь-якого іншого додатку. WebIOPi є ідеальним «швейцарським ножом», щоб зробити підключення речей.

Основні можливості:

• Має у комплекті Weaved IoT Kit для доступу до RPi через Інтернет без клопоту.
• Написаний на Python, що зручно для завантаження і виконання спеціальних сценаріїв, використовуючи всеосяжну структуру з установленням і функціями циклу.
• Надає необмежену підтримку Serial/SPI/I2C з повним і послідовним набором функцій для управління більш ніж 30 типами пристроїв, у тому числі, найбільш часто використовуваними аналоговими перетворювачами, розширювачами входу/виходу і датчиками.
• Має клієнтську бібліотеку JavaScript/HTML, щоб зробити власний веб-інтерфейс.
• Має клієнтів Python/Java, щоб робити системи RPi-to-RPi або додатки для Android.
• Підтримує CoAP, що надає кращий протокол Інтернету речей для RPi, як майбутній доказ можливостей RPi.
• Включає в себе прості веб-додатки для налагодження GPIO, пристроїв і послідовного інтерфейсу.

Установка WebIOPi

Перш за все, треба завантажити останню версію архіву .tar.gz в директорію /home/pi. Нижче наведені команди, які треба виконати, щоб витягнути з архіву, а потім встановити WebIOPi. Сценарій установки автоматично завантажить та встановить необхідні залежності, використовуючи apt-get.

Примітка: Перед запуском процесу установки зупиніть роботу існуючого сервісу WebIOPi. Ваша попередня конфігурація буде збережена, але інші файли будуть перевизначені.

Перегляньте сторінку завантажень, щоб побачити останню версію пакету, і замініть в команді нижче x.y.z на значення з версії, яку завантажите. Наприклад, на момент написання статті x.y.z треба було замінити на 0.7.1:

$ tar xvzf WebIOPi-x.y.z.tar.gz
$ cd WebIOPi-x.y.z
$ sudo ./setup.sh

Для власників Raspberry B+ і Pi 2 та 3, щоб отримати доступ до всіх 40 виводів, радимо скористатися нижченаведеною процедурою установки з патчем: 

$ wget http://sourceforge.net/projects/webiopi/files/WebIOPi-0.7.1.tar.gz
$ tar xvzf WebIOPi-0.7.1.tar.gz
$ cd WebIOPi-0.7.1
$ wget https://raw.githubusercontent.com/doublebind/raspi/master/webiopi-pi2bplus.patch
$ patch -p1 -i webiopi-pi2bplus.patch
$ sudo ./setup.sh

Встановлення може зайняти деякий час.

Запуск WebIOPi

Нарешті, використайте команду webiopi:

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

Параметри:

-h, --help       Показати цю допомогу
-c, --config     Завантажити конфігурацію з файлу
-l, --log          Записати журнал у файл
-s, --script     Завантажити сценарій з файлу
-d, --debug       Включити DEBUG (налагодження)

Аргументи:

port                   Порт для прив'язки HTTP-сервера

Наприклад, для запуску з докладним виводом і використанням файлу конфігурації за замовчуванням:

$ sudo webiopi -d -c /etc/webiopi/config

Коли закінчиться, ви будете готові насолоджуватися WebIOPi! Але стани сервера і GPIO будуть втрачені, коли зупинити сценарій (CTRL-C) або закрити термінал.

Запуск WebIOPi, як службу (демон)

Ви також можете запустити/зупинити WebIOPi, як фонову службу, а конфігурація буде завантажуватися з /etc/webiopi/config:

$ sudo /etc/init.d/webiopi start
$ sudo /etc/init.d/webiopi stop

Автоматичний запуск при завантаженні

Для налаштування вашої системи для запуску WebIOPi при завантаженні RPi:

$ sudo update-rc.d webiopi defaults

Щоб видалити запуск WebIOPi з завантаженням:

$ sudo update-rc.d webiopi remove

Доступ WebIOPi через локальну мережу

Якщо ваш RPi підключений до мережі, то можете відкрити браузер, ввести адресу http://raspberrypi:8000/ з будь-якого пристрою в мережі, але треба замінити raspberrypi на його IP.

Користувач за замовчуванням "webiopi" і пароль "raspberry".

Вибравши посилання GPIO Header на головній сторінці, ви зможете контролювати GPIO, використовуючи веб-інтерфейс, який виглядає як роз’єм на платі.

• Натисніть кнопку OUT/IN, щоб змінити напрям GPIO.
• Натисніть необхідні контакти, щоб змінити вихідний стан GPIO.

Доступ WebIOPi через Інтернет

Завдяки WeavedIoTKit, можна легко отримати доступ до RPi з будь-якої точки безпечним способом.

Перш за все, якщо ваш Raspberry Pi буде доступний з Інтернету, то ви повинні відразу змінити пароль за замовчуванням. Щоб зробити це, запустіть команду:

sudo webiopi-passwd

Введіть ім'я користувача за замовчуванням webiopi, і вкажіть новий пароль. Крім того, ви можете замінити користувача webiopi за замовчуванням, ввівши нове ім'я користувача і вказавши необхідний пароль. Після того зробите це, перезапустіть за допомогою:

sudo /etc/init.d/webiopi restart

Реєстрація на порталі Weaved розробника

Перейдіть до https://developer.weaved.com/portal/ і дотримуйтесь інструкцій, щоб створити обліковий запис.

Завантаження Weaved для Raspberry Pi

Скопіюйте та вставте командний рядок нижче у вікно терміналу або SSH-клієнта, підключеного до RPi, а потім натисніть клавішу ENTER:

wget https://github.com/weaved/installer/weaved-nixinstaller_1.2.13.bin

Встановлення Weaved

Зробіть файл установника виконуваним:

chmod +x weaved-nixinstaller_1.2.13.bin

Запустіть програму установки:

./weaved-nixinstaller_1.2.13.bin

Введіть адресу електронної пошти та пароль для свого облікового запису Weaved:

Коли буде запитано, виберіть WebIOPi в процесі установки. Потім введіть псевдонім або нік для свого пристрою:

Примітка: Якщо ви запустите установку більш ніж один раз, ви отримаєте на це запитання:

Підтримка декількох послуг не повною мірою протестована в 1.2.13. Рекомендуємо тут відповісти 'Y', щоб видалити попередню установку, перш ніж продовжити.

Перевірка налаштування

Щоб перевірити підключення до RPi з браузера, перейдіть до списку пристроїв, знайдіть рядок із псевдонімом свого RPi, і натисніть на кнопку «Connect». Буде показана інтернет-адреса вашого пристрою.

Управління світлодіодом і транзисторним ключом

Використовуючи додаток, ви можете включити і виключити певний вивід GPIO натисканням на кнопку поруч з ним. Зробимо, наприклад, підключивши світлодіод послідовно з резистором 270 Ом до виводу 3,3 В (анод) і виводу 25 GPIO (катод). У веб-додатку, натиснувши кнопку поряд з GPIO 25, зможемо перемикати стан між IN і OUT, щоб вмикати і вимикати світлодіод:

Після того як переконалися, що WebIOPi працює, можете побудувати простий веб-додаток, що містить кнопку, яка перемикає світлодіод. Почніть зі створення каталогу /home/pi/project/html. Потім створіть новий текстовий файл, вставте в нього код з наведеного нижче лістингу і збережіть файл під назвою index.html в каталозі /home/pi/project/html. Навіть, якщо у вас є тільки базові знання HTML і JavaScript, ви будете в змозі ідентифікувати два основні будівельні блоки сторінки: блок коду JavaScript, що містить функцію, яка визначає кнопку для управління виводом 25 GPIO, і блок стилів, який формує появу кнопки.

Простий додаток WebIOPi:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
             <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
             <title>WebIOPi | LED Control</title>
             <script type="text/javascript" src="/webiopi.js"></script>
             <script type="text/javascript">
             webiopi().ready(function() {
                             var button = webiopi().createGPIOButton(25, "LED");
                             $("#controls").append(button);
                             webiopi().refreshGPIO(true);
             });
             </script>
             <style type="text/css">
                             button {
                                             display: block;
                                             margin: 5px 5px 5px 5px;
                                             width: 105px;
                                             height: 45px;
                                             font-size: 24pt;
                                             font-weight: bold;
                                             color: white;
                             }
             </style>
</head>
<body>
             <div id="controls" align="center"></div>
</body>
</html>

Далі, нам потрібно переналаштувати WebIOPi, щоб він використовував каталог /home/pi/project/html, як свій кореневий каталог документів. Запустіть:

sudo nano /etc/webiopi/config

Команда відкриє конфігураційний файл у текстовому редакторі nano. Додайте рядок doc-root = /home/pi/project/html в секції [HTTP]. Збережіть зміни і перезавантажте WebIOPi за допомогою:

sudo /etc/init.d/webiopi restart

Тепер, відкрийте в браузері http://raspberrypi:8000, і ви повинні побачити новий веб-додаток у всому його мінімалістичному стилі. Натискайе кнопку, щоб включати і виключати світлодіод.
Крім параметрів id і label, процедура webiopi().createButton також підтримує додатковий параметр, який може бути використаний для створення кнопки з власною функції. Використовуючи цю функціональність, ви можете змінити створений веб-додаток для управління транзисторним ключом. Цей транзисторний перемикач керує заданим виводом GPIO, вмикаючи і вимикаючи його з півсекундним інтервалом. Використовуючи WebIOPi, ви можете написати простий веб-додаток, який дозволить контролювати транзисторний ключ за допомогою кнопки.

Написання додатку, який управляє транзисторним ключом, не вимагає занадто багато роботи - ви можете використати наведений раніше приклад коду для світлодіоду, як шаблон. Все, що вам потрібно зробити, це замінити код між тегами <script type="text/javascript"></style> кодом, наведеним нижче. Як ви можете бачити, блок коду, який створює кнопку, схожий на попередній приклад, але він використовує процедуру webiopi().createButton, яка визначає кнопку з викликом функції outputSequence, яка додається до неї.

Код перемикання транзистора для WebOPi:

<script type="text/javascript">
         webiopi().ready(function() {
                 var content, button;
                 content = $("#content");
                 button = webiopi().createButton("trigger", "Trigger!", outputSequence);
                 content.append(button);
});

function outputSequence() {
                 var sequence = "01"
                 webiopi().outputSequence(25, 500, sequence, sequenceCallback);
}

         function sequenceCallback(gpio, data) {
                 alert("Triggered on GPIO" + gpio);
         }
</script>

Ця функція робить дві речі: Вона визначає послідовність сигналу і виводить його на вивід GPIO на певний проміжок в мілісекундах. У цьому випадку послідовність включає вивід і вимикає на інтервал в 0,5 сек. Процедура webiopi().outputSequence, у свою чергу, викликає функцію sequenceCallback, яка відображає повідомлення, що містить попередження, яке служить підтвердженням того, що код був успішно виконаний. Тепер, зберіть транзисторний ключ, як показано на схемі нижче, і використайте створений веб-додаток, щоб запустити його. У даному конкретному випадку, транзисторний ключ може бути легко використаний для вмикання і вимикання різних пристроїв.

Завдання та питання для перевірки

1. Зберіть схему з 3-ма свтлодіодами та організуйте керування ними через WebIOPi в локальній мережі.

Попереднє заняття - Наступне заняття

Новини

  • SDR в IoT

    iotSDR пропонує платформу розробок для IoT-радіо та мережевих доменів. На платі два передавачі Microchip AT86RF215, для вводу-виводу модему на Xilinx ZYNQ SoC, приймач GNSS MAX2769 для GPS, Galileo, BieDou та Glonass. Плата сумісна з ПЗ GNURadio SDR. Дозволяє розробити протоколи фізичного рівня LoRa, SigFox, WightLess, Bluetooth, BLE, 802.15.4, ZigBee тощо для IoT, або шлюз IoT через TheThingsNetwork, LPWAN або Google Thread. Пам'ять EEPROM: 1x AT24MAC602 , flash-пам'ять: 1x QSPI 128 Мб, RAM: 256 MБ DDR3,слот для Micro SD карти, входи/виходи: 2x 8-бітних інтерфейси PL, інтерфейс 8-бітного PS, Gigabit Ethernet, USB 2.0 (USB3310), USB 2.0 (CP2104), 2x SMA RF-роз'єми для приймача діапазонів IoT, 2x SMA RF-роз'єми для приймача 2,4 ГГц , RF-роз'єм приймач GNSS, FPGA-роз'єм JTAG для програмування. Розміри плати: 76,2 мм x 101,6 мм.

     

    in Новини

Записатися на курс