Web-управление Raspberry Pi GPIO. Управление линиями GPIO на Raspberry Pi

Сегодня четвертый урок, на котором мы поработаем с портами GPIO, в частности помигаем светодиодом в разных режимах.

Урок ориентирован на начинающих пользователей и представлен в текстовом и видео-форматах.

Видео четвертого урока:

Для урока нам понадобится:

  • плата Raspberry Pi;
  • кабель питания;
  • USB-клавиатура;
  • USB-мышь;
  • монитор или телевизор с HDMI/RCA/DVI интерфейсом;
  • кабель, один конец которого RCA или HDMI, а другой соответствует вашему монитору;
  • SD-карта с уже установленной ОС Raspbian ();
  • светодиод;
  • кнопка;
  • резистор на 220 Ом
  • 3 провода «мама-папа»
  • 2 провода «папа-папа».

Программирование Raspberry Pi GPIO на языке Python

Для сегодняшнего урока мы выбрали язык программирования Python.

Python — современный объектно-ориентированный язык. Он наиболее часто используется для программирования GPIO на Raspberry Pi. Python входит в состав операционной системы Raspbian.

Сборка модели

Для работы нам потребуется собрать следующую схему:

Схема подключения светодиода и кнопки к Raspberry Pi

Обратите внимание, что порты GPIO на Raspberry Pi не подписаны, полезно иметь распечатанную распиновку.

Распиновка Raspberry Pi. Схема с ledgerlabs.us

Собранная модель со светодиодом и кнопкой

Управление светодиодом на Raspberry Pi из консоли

Заходим в LXTerminal и набираем:

После этого вместо имени пользователя в начале строки должно отобразиться >>> .

Вводим следующие строки:

Import RPi.GPIO as GPIO #импорт библиотеки
GPIO.setmode(GPIO.BOARD) #"включение" GPIO
GPIO.setup(7, GPIO.OUT) #объявление 7-го пина как выход

Затем для включения светодиода можно использовать команду
GPIO.output(7, 1)

А для выключения
GPIO(output(7, 0)

После работы с GPIO желательно выполнить команду
GPIO.cleanup()

Программа для мигания светодиодом на Raspberry Pi

Для автономной работы светодиода нам потребуется написать и запустить программу. Для этого откроем предустановленную программу IDLE 3 и в меню File нажмем New. В открывшемся окне мы можем писать программу.

Напишем:
import RPi.GPIO as GPIO #импорт библиотеки для работы с GPIO
import time #импорт библиотеки для ожидания
GPIO.setmode(GPIO.BOARD) #"запуск" GPIO


____GPIO.output(7, 1) #включение светодиода

____GPIO.output(7, 0) #выключение светодиода
____time.sleep(1) #ожидание 1 секунды

Сохраним программу в папке /home/pi.

Теперь мы можем запустить программу из LXTerminal с помощью команды
sudo python programname.py

Управление светодиодом с помощью кнопки

Поуправляем светодиодом с помощью внешней кнопки: когда кнопка зажата — светодиод горит, когда отжата — не горит.

Для этого подключим кнопку к порту 5.

Для управления нам потребуется следующая программа:

Import RPi.GPIO as GPIO #импорт библиотеки GPIO
GPIO.setmode(GPIO.BOARD) #"включение GPIO"
GPIO.setup(7, GPIO.OUT) #объявление порта 7 как выход
GPIO.setup(3, GPIO.IN) #объявление порта 3 как вход
while True: #бесконечный цикл
____if GPIO.input(3) == False: #если кнопка зажата
________GPIO.output(7, 1) #включаем светодиод
____else: #иначе
________GPIO.output(7, 0) #выключаем

Управление светодиодом с клавиатуры

Сделаем еще одну программу. Она будет менять состояние светодиода при получении пустой строки и заканчиваться при получении другой строки.

Import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BOARD)
GPIO.setup(7, GPIO.OUT)
while True:
____str = input("Enter - включение, другое - выход ");
____if str != "":
________break
____else:
________GPIO.output(7, 1)
____str = input("Enter - выключение, другое - выход ");
____if str != "":
________break
____else:
________GPIO.output(7, 0)
GPIO.cleanup()

На этом четвертый урок по Raspberry Pi для начинающих закончен, продолжение следует!

Появившийся в 1998 году гипертекстовый протокол управления кофеваркой HTCPCP/1.0 ныне незаслуженно забыт. Чтобы воскресить заложенные в него создателями идеи, реализуем кофеварку с управлением от Raspberry Pi.

Многие любители кофе мечтают, чтобы к пробуждению их уже ждал горячий кофе. На мечты наложились разговоры про «умный дом», контроллеры, сенсоры, а тут еще я заказал плату Raspberry Pi (RPi) «на поиграть» - в общем, судьба ее была решена. Если в 1998-м управление кофеваркой через веб действительно выглядело забавным, то в наше время это вполне можно сделать своими руками. С такой же игрушкой, как RPi, радости будет вдвойне. На ее фоне пылящийся в коробке Ардуино Мега 2560 кажется случайно попавшим в будущее из мира 8-разрядных процессоров 80–90-х годов раритетом, к которому зачем-то прикрутили Wi-Fi, шилды и сенсоры.

Но вернемся на кухню за кофе. Кофеварку включаем с помощью реле, реле управляем с RPi, доступ к RPi из браузера по Wi-Fi. Проснувшись, прямо из кровати с помощью браузера в телефоне. И смотрим, как оно заваривается, через веб-камеру. Либо детектируем движение, и кофе начинает завариваться в тот момент, когда мы заходим на кухню или включаем свет. Настоящий гик сможет включить кофеварку из постели через SSH, настоящий лентяй - просто зайдя на кухню, простой же пользователь вроде меня - через браузер.

ВЫБОР КОФЕВАРКИ

От кофеварки требуется немного. Тип - капельный: и цена значительно меньше, и кофе, на мой вкус, мягче, чем в эспрессо. И главное - минимум электроники. Все управление должно состоять из одного механического выключателя, чтобы можно было включить кофеварку, просто подав на нее электропитание. Дома кофеварка большого объема ни к чему, большая мощность тоже не нужна: ниже ток - меньше требования к управляющим компонента. Хотя в кофеварках такого типа полностью автоматизировать процесс приготовления невозможно и нужно будет каждый вечер заправлять ее водой и молотым кофе.

Выбор кофеварок небольшого объема и мощности невелик, большинство предложений - объемом больше литра, но почти сразу мне приглянулась Moulinex BCA 1.L1 Little Solea. Мощность 640 Вт, кофейник 0,6 л.

Скручиваем все вместе

В первой ревизии плат RPi стоят неудачные предохранители (рис. 2), из-за которых почти всю USB-периферию приходится подключать через USB-хаб с дополнительным питанием. В более поздних ревизиях эта проблема была исправлена, однако из-за того, что мощность источника питания невелика, USB-хаб все равно может понадобиться.

На двух мониторах, которые я опробовал, при настройках по умолчанию была черная кайма по краям экрана. Это корректируется настройками режима overscan, в моем случае это решилось его выключением в конфигурационном меню.

Операционная система

Основной операционной системой на данный момент является Raspbian, основанный на Debian, с поддержкой аппаратного сопроцессора для операций с плавающей запятой. На странице загрузки можно загрузить не только его (нужен Raspbian «wheezy»), но и несколько других, также основанных на Linux, вместе с необходимыми утилитами.

Образ карты нужно скачать на диск, разархивировать, затем, если все делается под Windows, залить с помощью утилиты Win32DiskImager (ссылка есть на странице загрузки), на SD-карту, размер которой должен быть от 2 Гб. Далеко не любая SD-карта заработает - есть список совместимых карт и другого оборудования , но даже использование карт из этого списка не гарантирует, что конкретная карта не является подделкой. Если RPi не грузится из образа, только что залитого на карту, первое, что стоит попробовать, - сменить карту SD.

После установки SD-карты в RPi, включения и загрузки (имя пользователя по умолчанию pi, пароль - raspberry) выводится начальное конфигурационное меню, в котором нужно обязательно расширить файловую систему с 2 Гб образа на всю SD-карту и разрешить SSH. Кроме того, стоит задать раскладку клавиатуры, языки, временную зону и сменить пароль по умолчанию.

С оверклокингом лучше экспериментировать отдельно, сразу после его изменения проверяя стабильность RPi. Но попробовать его стоит, так как увеличение скорости работы заметно визуально. В конфигурационное меню всегда можно вернуться командой:

$ sudo raspi-config

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

$ sudo reboot

Следующим шагом стоит обновить пакеты - разработка под RPi идет очень активно, и крупные обновления выходят очень часто.

$ sudo apt-get update $ sudo apt-get upgrade

Настройка Ethernet и Wi-Fi

Имевшаяся у меня Wi-Fi-карта D-Link DWA-140 B2 значилась в списке совместимого оборудования . Подключил, проверил, что успешно определилась:

$ lsusb <..> Bus 001 Device 006: ID 07d1:3c0a D-Link System DWA-140 RangeBooster N Adapter(rev.B2) $ iwconfig lono wireless extensions. eth0 no wireless extensions. wlan0 IEEE 802.11bgn ESSID:off/any Mode:Managed Access Point: Not-Associated Tx-Power=20 dBm Retry long limit:7 RTS thr:off Fragment thr:off Power Management:on

Wi-Fi можно настроить в соответствии с документацией .

SSH И VNC

Старт сервера SSH разрешается в меню начальной конфигурации. Для доступа с Windows-машины можно использовать Putty, с телефона под Андроид - Irssi ConnectBot. Но тут уже на вкус и цвет…

Если недостаточно SSH и нужен доступ к рабочему столу RPi (например, просмотреть снимки, сделанные Motion, не копируя их на локальную машину), можно получить его через vncviewer из TightVNC, а для доступа с Андроида - с помощью androidVNC. Для этого нужно установить VNC, используя рекомендации bit.ly и bit.ly .

ВЕБ-КАМЕРА И MOTION

В качестве веб-камеры в моем варианте используется Logitech HD Webcam C525. При приобретении новой веб-камеры стоит свериться со списком оборудования, совместимого сRPI , некоторым может потребоваться USB-хаб с дополнительным питанием. Кроме того, стоит проверить совместимость с Motion по ссылкам «Working Devices» и «Non Working Devices». Если камеры нет в списке «Working Devices», это еще не значит, что она не заработает, но из второго списка камеру покупать точно не стоит.

$ lsusb <..> Bus 001 Device 007: ID 046d:0826 Logitech, Inc.

Проверить камеру можно, попробовав сделать скриншот с камеры:

$ sudo apt-get install uvccapture $ uvccapture -S80 -B80 -C80 -G80 -x800 -y600

В текущем каталоге должен появиться файл snap.jpg (даже если были сообщения об ошибках), который можно открыть на RPi с помощью Image Viewer. Motion - приложение для мониторинга сигнала с камеры, позволяющее установить, что значительная часть изображения изменилась (то есть определить движение в кадре), и в этом случае сохранять изображения и запускать внешние программы. Домашняя страница проекта .

$ sudo apt-get install motion

Чтобы разрешить автозапуск Motion:

$ sudo nano /etc/default/motion # set to "yes" to enable the motion daemon start_motion_daemon=yes

Разрешить доступ к веб-интерфейсу Motion с внешних хостов:

$ sudo nano /etc/motion/motion.conf webcam_localhost off control_localhost off

В этом же файле хранятся настройки детектирования движения, начала и завершения записи с камеры и запуска внешней программы при детектировании движения.

$ sudo nano /etc/motion/motion.conf # Command to be executed when a motion frame is detected (default: none) on_event_start sudo /home/pi/motion-det

/home/pi/motion-det - сценарий, который будет выполняться при детектировании движения. Ему понадобятся права root для управления портами. Добавить пользователя Motion (motion) в список sudoers:

$ sudo visudo

дописав следующую строку в конце файла:

Motion ALL=(ALL) NOPASSWD: ALL

Запуск с выводом информации в консоль:

$ sudo motion -n

Когда Motion запущен, настройки можно изменить из браузера по адресу: //:8080

Вместо нужно подставить фактический IP-адрес RPi. Увидеть изображение с камеры можно по адресу //:8081

В Firefox обновление изображения может происходить некорректно. В Chrome все ОK. Предустановленные на RPi браузеры вообще не могут его отобразить. Для настройки определения движения предусмотрен конфигурационный режим

$ sudo motion -s

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

Изображения с камеры сохраняются в каталоге /tmp/motion, формат отдельных изображений по умолчанию jpg, роликов - swf. Формат можно изменить в конфигурационном файле. А отключить сохранение файлов можно так:

Output_normal off ffmpeg_cap_new off

ПОРТЫ GPIO - ОСОБЕННОСТИ И УПРАВЛЕНИЕ

У RPi есть встроенные порты ввода-вывода. Называются они GPIO, General Purpose Input/Output, то есть порты ввода-вывода общего назначения. Строго говоря, подключить исполнительное устройство можно без особых проблем и к простому ПК, но не держать же ПК на кухне? Тем и хороша недорогая и миниатюрная RPi - ее спокойно можно разместить рядом с исполнительным устройством.

GPIO-порты работают на уровнях 3,3 В. При этом на плате RPi не предусмотрено защиты портов, и случайное замыкание 5 В на них может оказаться смертельным.

Распайка портов и примеры доступа к ним из различных языков программирования приведены здесь: bit.ly/StAJXA .

Есть две основных версии плат, Revision 1 и 2, в них немного различается распайка и назначение портов. Чтобы определить, какая версия, нужно ввести команду cat /proc/cpuinfo и найти hardware revision code в таблице: Дополнительная информация о различиях Revision 1 и 2 есть .

Питание +5 В и 3,3 В, земля (GND) и порт GPIO 4, который мы будем дальше использовать, в обеих версиях размещаются на тех же контактах. Разработчики RPi неоднократно отмечают опасность сжечь порт или всю RPi при неправильном подключении порта. Чтобы этого не произошло, порт рекомендуется защитить от ошибочных действий. Схемы защиты портов (а кроме того, примеры подключения различной периферии) можно посмотреть .

Доступ к портам

Самый простой способ управления портом - из командной строки. Состояние порта при этом можно проконтролировать вольтметром. Все действия делают под рутом.

$ sudo -i

Начало работы с портом:

$ echo "4" > /sys/class/gpio/export

Режим работы - вывод:

$ echo "out" >

Вывод значений:

$ echo "1" > /sys/class/gpio/gpio4/value $ echo "0" > /sys/class/gpio/gpio4/value

Режим работы - ввод:

$ echo "in" > /sys/class/gpio/gpio4/direction

$ cat /sys/class/gpio/gpio4/value

Завершить работу с портом:

$ echo "4" > /sys/class/gpio/unexport

Подготовим скрипт для управления заданным портом, который будем использовать позже:

$ sudo nano switch_gpio

#! /bin/bash PORT_NUM=$1 if [ $2. == "on." ]; then NEW_VALUE=1 else if [ $2. == "off." ]; then NEW_VALUE=0 else echo "Usage: $0 PORT_NUM on|off" exit fi fi # Настраиваем порт GPIO на вывод if [ ! -e /sys/class/gpio/gpio$PORT_NUM ] then echo $PORT_NUM > /sys/class/gpio/export fi # Читаем старое состояние OLD_VALUE=$(cat /sys/class/gpio/gpio$PORT_NUM/value) if [ $OLD_VALUE == 1 ]; then OLD_VALUE_TEXT="on" else OLD_VALUE_TEXT="off" fi echo "out" > /sys/class/gpio/gpio$PORT_NUM/direction echo -ne "Switching GPIO "$PORT_NUM" from "$OLD_VALUE_TEXT" to "$2"..." echo $NEW_VALUE > /sys/class/gpio/gpio$PORT_NUM/value echo " done."

Права на исполнение:

$ chmod +x switch_gpio

И проверим:

$ switch_gpio 4 on $ switch_gpio 4 off

МОДУЛЬ РЕЛЕ

Подключение реле реализовано по схеме из этой статьи . В нормальном положении, когда на выходе порта GPIO логический ноль и нулевой потенциал, транзистор закрыт и напряжение на нагрузку не подается. Если на GPIO подать логическую единицу, 3,3 В через резистор откроют транзистор, через него потечет ток и реле сработает. Диод предназначен для снятия отрицательных бросков при отключении реле.

Задействованы другое реле (по нему чуть позже) и транзистор с диодом - те, которые оказались под рукой, близкие по характеристикам. Резистор R1 (1 кОм), диод типа КД522 (1N4148), транзистор H547. В статье есть рекомендации, как выбрать аналоги. Дополнительно стоит проверить выходной ток порта при включенном реле.


Подключаемая к схеме нагрузка составляет 640 Вт. Это значит, что при напряжении в 220 В ток составит 640 Вт / 220 В = 2,9 А. Еще одно требование к реле - чтобы замыкались и размыкались сразу два провода и нагрузка полностью обесточивалась. Один из вариантов, подходящий под такие требования, - реле TRIL-5VDC-SD-2CM-R, управляемое от 5 В и способное коммутировать до 8 А переменного тока 250 В.

Начать монтаж можно на контактной макетной плате. Конечно, для серьезных задач она не подходит, но такие вот небольшие схемы на ней можно быстро собрать и отладить. Сначала запитываем от отдельного источника +5 В, все проверяем без подключения к RPi, заменив подключение к порту резистором и кнопкой к +5 В, промеряем все токи и ставим разъем для подключения к основной плате RPi. Подключать 220 В к такой плате категорически нельзя, поэтому все равно придется брать паяльник в руки и переносить это на печатную плату.

Для подключения к основной плате RPi можно собрать шлейф из пары разъемов и плоского кабеля, подключить к нему промежуточную плату, на которой уже разводятся нужные порты и питание на шлейфы к периферийным устройствам, пока всего на один, уже не 26-, а 4-проводной шлейф. Он подключается к монтажной плате, на которой собирается в точности то же, что и в первом варианте, добавлением клеммников для 220 В. Клеммники распаиваем на реле проводом сечением 0,75, аккуратно проверяем тестером работоспособность схемы, пощелкав реле. Дополнительно можно развести землю. Затем подключаем провода к клеммам, также сечением 0,75, на одномй из которых ставится вилка, на другой - розетка на провод.


Дальше осторожно и аккуратно: 220 В частотой 50 Гц - напряжение, при неаккуратной работе с которым последствия могут быть намного трагичнее, чем сгоревшая RPi. Визуально проверяем пайку на плате реле, проверяем надежность закрепления проводов 220 В в клеммники. Фиксируем плату, а лучше устанавливаем ее в закрытый корпус, чтобы случайно не задеть открытые контакты под напряжением. Не торопимся и последовательно на каждом шагу проверяем тестером. Отключаем плату реле от основной платы RPi, втыкаем вилку в 220. Дыма нет. Отключаем от сети, подключаем основную плату RPi, опять включаем в 220. Дыма опять нет, RPi жива. Щелкаем реле, видим 220 на розетке. Отключаем реле и 220, подключаем к розетке настольную лампу, подаем 220, щелкаем реле. Ура!

Рис. 5. Второй вариант модуля реле, распаянный на печатной макетной плате
с промежуточной коммутационной платой

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

УПРАВЛЕНИЕ ПОРТАМИ С ПОМОЩЬЮ WEBIOPI

Самый простой способ достучаться до портов GPIO через веб - установить WebIOPi. Это приложение, позволяющее визуально задавать направление работы порта (ввод/вывод), видеть его состояние при вводе и задавать значение на выводе.

Установка подробно описана .

$ sudo apt-get install apache2 php5

Для работы WebIOPi использует модуль rewrite и переопределение конфигурации (.htaccess):

$ sudo a2enmod rewrite $ sudo nano /etc/apache2/sites-enabled/000-default

В разделе изменить строку «AllowOverride None» на «AllowOverride All»:

Options Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all

Добавить пользователя Apache (www-data) в список sudoers:

$ sudo visudo

Дописав следующую строку в конце файла:

Www-data ALL=(ALL) NOPASSWD: ALL

Рестартовать Apache:

$ sudo /etc/init.d/apache2 restart

$ wget //webiopi.googlecode.com/files/WebIOPi-0.3.tar.gz $ tar xvzf WebIOPi-0.3.tar.gz

Переместить файлы в соответствующий каталог:

$ sudo mv webiopi /var/www

Основной интерфейс доступен по адресу: //localhost/webiopi.

Если открывать страницу непосредственно с RPi, то нужно это делать в Chromium или Midori, ни в NetSurf, ни в Dillo она не работает из-за отсутствия в них поддержки JavaScript.

СВЯЗЫВАЕМ ВСЕ ВМЕСТЕ

Для управления портом из браузера через веб вполне достаточно веб-интерфейса WebIOPi, при желании его можно настроить под свои нужды. Для включения реле при детектировании движения добавим старт Motion в заданное время утром, например в 8:00, в /etc/crontab:

0 8* * * echo $(date)": "$(service motion start) >> /var/log/motion_start.log

Crontab /etc/crontab

Создадим скрипт, который будет запускаться из Motion:

$ nano /home/pi/motion_det

#!/bin/bash /home/pi/switch_gpio 4 on service motion stop sleep 1800 /home/pi/switch_gpio 4 off

Права на исполнение:

Chmod +x /home/pi/motion_det

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

ЗАКЛЮЧЕНИЕ

Большая часть компонентов приобретена в «Чип и дип» (включая корпуса, кабельные вводы, платы, переходник и так далее). Это магазин с хорошим выбором, в который можно зайти, посмотреть и потрогать, но недешевый, есть ощутимо бюджетнее. Те, кто не хочет долго ждать доставки RPi, уже могут ее приобрести, например в «Терраэлектронике», хотя и совсем не за 25 долларов.

Чтобы не помешала темнота зимними утрами, вместо камеры (или в дополнение к ней) можно подключить ИК датчик движения. Можно разобраться в кофеварке эспрессо с автоматическим приготовлением и не задумываться вечером о том, что нужно засыпать кофе на следующее утро. Можно подключить реле через ZygBee, добавить других исполнительных устройств, например светильник в спальне. Можно реализовать управление через SMS, подключив 3G-модем, либо с обычного телефона через DTMF, подняв Asterisk или Freeswitch. А можно написать приложение для Андроида и iPhone/iPad.

Вариантов очень много, и с появлением RPi возможности экспериментировать на границе между программированием и физическим миром резко расширились. Да, и, конечно, ближайшего первого апреля нужно будет задуматься о полной поддержке стандарта RFC 2324.

Сегодня научимся управлять включением и выключением реле с помощью raspberry pi 2 , для примера будем включать и выключать розетку , управлять светильником или других электроприбором. Я использовал реле SRD-05VDC-SL-C .
1) Подключаем его к raspberry pi и к линии 220В. Я подключал только одно реле, но на плате у меня их два.

Перенесу сюда изображение разъемов GPIO raspberry pi 2

GPIO raspberry pi 2

На изображении ниже схема подключения реле к raspberry pi 2 и линии 220 В .

Схема подключения реле к raspberry pi 2 и линии 220 В
(изображение кликабельно)

Ещё раз поясню.
По схема реле соединяется с одной стороны с GPIO портами raspberry pi 2, а с другой с розеткой 220 В. На плате с реле есть 4-е пина — GND, IN1, IN2, VCC.
a) GND на реле надо соединить с GND на raspberry pi.
b) IN1 и IN2 — это как раз два реле. IN1 я подключил к GPIO17(пин 11), а IN2 к GPIO25(пин 22). Они у меня просто свободны, у вас могут быть свободны другие GPIO разъемы.
с) к пину VCC на реле подключаем 5v на raspberry pi 2. Я решил использовать пин №2 на raspberry.
Так же на плате есть контакты по три штуки возле каждого реле. От линии 220В я подвёл провод к контакту NO1 на реле 1. Контакт COM1 на реле 1 соединяю с одним из разъемов розетки. На второй контакт розетки я сразу подаю 220 B, то есть он идёт напрямую, минуя реле и raspberry. Если подключить не к NO1, а к NC1 то питание будет подаваться постоянно, розетка будет давать ток и без raspberry, поэтому NC1 я просто не использую.
С физическим подключением думаю понятно. Будьте аккуратны. Вы всё выполняете на свой страх и риск.

Перейдём к программной части.
2) пишем 2-а простейших скрипта:
sudo nano /script/gpio/relay01-01-down.sh

#!/bin/bash

echo 17 > /sys/class/gpio/export
echo out >
echo 1 > /sys/class/gpio/gpio17/value

и второй скриптик:
sudo nano /script/gpio/relay01-01-up.sh
содержимое должно быть таким:
#!/bin/bash

echo 17 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio17/direction
echo 0 > /sys/class/gpio/gpio17/value

3) делаем их исполняемыми:
sudo chmod +x /script/gpio/relay01-01-down.sh
sudo chmod +x /script/gpio/relay01-01-up.sh

В целом можно уже поиграться, подсоединив к розетке лампу поочерёдно запуская каждый скрипт, будет то включать лампу, то выключать
sudo /script/gpio/relay01-01-up.sh
sudo /script/gpio/relay01-01-down.sh

4) Но интересней сделать кнопки управления реле в веб-интерфейсе. Веб-сервер уже поднят по , поэтому в его корне(по умолчанию это директория /var/www/) пишем в файл index.php код с кнопками. Код можно .
Там же в корне веб-сервера создаём файл style.css с содержимым, которое можно .

Заходим на веб-сервер http://ip-адрес-raspberru-pi/ и должны увидеть две кнопки(они ещё не работают).

5) добавляем права для www-data следующим образом:
sudo visudo
там дописываем:
www-data ALL=(ALL) NOPASSWD: ALL

6) пробуем понажимать кнопки в веб-интерфейсе. Они уже должны работать и щёлкать релюшкой.
Результат сборки:

Мы посмотрели как можно задействовать порты GPIO и в конце материала я показывал плату из 8 реле.

Особенность этой платы в том, что с помощью нее можно управлять напряжением в 220В, с максимальной силой тока в 10А - то есть до 2000 Вт. На практике, конечно, не стоит использовать такую нагрузку. Если вы захотите управлять обогревателем или чем-то подобным, то придется задействовать пускатели тока или использовать твердотельные реле, но сейчас речь не об этом.

Именно такую плату сейчас мы и будет подключать.

Проще всего удаленно управлять нашими реле - через веб-интерфейс. Особенно, если в целом Raspberry будет использоваться совместно с системой управления умным домом MajorDoma.

И для этого у нас должен быть поднят и настроен Web-сервер, например Apache и PHP.

В указанной веб-директории (обычно /var/www) создадим файл с именем rele.php и содержимым: rele.php.txt

Создаем скрипт для включения реле:

nano /var/www/relay01-01-up.sh

Содержимой файла:

#!/bin/bash
echo 6 > /sys/class/gpio/export
gpio export 6 out

И для выключения:

nano /var/www/relay01-01-down.sh

Содержимое файла:

#!/bin/bash
echo 1 > /sys/class/gpio/gpio6/value
echo 6 > /sys/class/gpio/unexport

Делаем их усполняемыми:

sudo chmod +x /var/www/relay01-01-up.sh
sudo chmod +x /var/www/relay01-01-down.sh

Даем www-data полные права:

Добавляем строчку:

www-data ALL=(ALL) NOPASSWD: ALL

Возможно потребуется добавть пользователя у группу:

sudo usermod -a G gpio pi

Открываем созданный нами файл по адресу: http://localhost/rele.php

И включаем-отключаем реле кнопками через веб-интерфейс.

В интернете много тем где обсуждается подключение подобных реле к GPIO Raspberry и почти везде сказано, что напрямую нельзя подключать практически никакую нагрузку. Пины GPIO это практически напрямую ножки процессора и поэтому очень легко можно угробить все устройство. Поэтому даже такие реле с опторазвязкой рекомендуется подключать с резистороами на 330 Ом. Опытным путем я установил, что работает оно и без сопротивления. Но в близжайшем будущем собираюсь все равно поставить резисторы на каждый вход реле.

Подключение проводов к Raspberry Pi.

Подключение проводов к реле.

В целом подключено так.

В даннй таблице указано описание портов. Мы можем задействовать выделенные зеленым цветом, подписанные просто как GPIOXX.

Подобная схема получилась у меня, где я подписал цвета проводов и названия портов.

В итоге у нас получился простой выключатель, доступ к которому можно получать различными способами. Для меня самый удобный оказался Bot в Telegram (завязанный через MajorDoma). И в переписке с ним, можно управлять различными устройствами дома.

Зайдействов реле и задав нужную логику - мы получаем неограниченный полет для фантазии. Управление светом, электроприборами в доме, звуком и т.п. вещами.



В продолжение темы:
Windows

Часть вторая : "Важнейшие характеристики каждого семейства процессоров Intel Core i3/i5/i7. Какие из этих чипов представляют особый интерес" Введение Сначала мы приведём...

Новые статьи
/
Популярные