Мультипереключатель на Raspberry pi 2

Слово мультипереключатель может показаться страшным, но это всего лишь некая кнопка, в нашем случае с тремя контактами. Пока мультипереключатель не нажат, на нём замкнута одна пара контактов, когда мультипереключатель нажат — то другая.

Область применения огромнейшая. Сигнализация, уведомления о событиях. Открылась дверь или окно, вам или письмо пришлёт raspberry pi на e-mail или камеру включит. В общем фантазии есть где разгуляться.

Сегодня попробуем реализовать простейшую схему, когда мультипереключатель нажимается, загорается светодиод. Дело с кнопкой мы уже реализовывали здесь, а со светодиодом здесь. Объединим их.
Мультипереключатель подключаем к GPIO22(пин №13) и GPIO27(пин №15). Использую только 2-а контакта, отвечающих за нажатие кнопки. У меня мультипереключатель был такой:

команды, freebsd, настройка, установка, сервер, server, ubuntu, network, interfaces, сеть, raspberry

Распиновка разъемов raspberry pi 2:

команды, freebsd, настройка, установка, сервер, server, ubuntu, network, interfaces, сеть, raspberry

GPIO raspberry pi 2

Светодиод через резистор подключаем к пину №1(3v3) и №3(GPIO2). О том, как подсоединить светодиод к raspberry pi 2 я уже писал в статье здесь.

Дальше создаём скриптик:
sudo mkdir -p /script/gpio
sudo chmod -R 0777 /script
cd /script/gpio
sudo nano led.sh

вписываем туда:

#! /bin/bash

# Указываем, что мы хотим использовать GPIO2 (№3)
# к нему подключен светодиод
echo "2" > /sys/class/gpio/export
#
# Указываем, что линия будет выходом
echo "out" > /sys/class/gpio/gpio2/direction
#
# присваиваем значение 1 сразу, чтобы выключить светодиод
# при зачении по умолчании = 0 светодиод включается
echo "1" > /sys/class/gpio/gpio2/value



# Указываем, что мы хотим использовать GPIO22 (№15)
# к нему подключен светодиод
echo "22" > /sys/class/gpio/export
#
# Указываем, что линия будет выходом
echo "out" > /sys/class/gpio/gpio22/direction
#
# присваиваем значение 1 для GPIO22
echo "1" > /sys/class/gpio/gpio22/value



# Указываем, что мы хотим использовать GPIO27 (№13)
# к GPIO27 подключен один из контактов микропереключателя
echo "27" > /sys/class/gpio/export
#
# Указываем, что линия будет входом
echo "in" > /sys/class/gpio/gpio27/direction


# Далее идёт логика:
while ( true )
do
# Если контакт №13(GPIO27) получает логическое значение 1
# (а он его получит от контакта №15(gpio22), когда нажмётся физическая кнопка мультпереключателя цепь замкнётся)
    if [ $(</sys/class/gpio/gpio27/value) == 1 ]
    then
# тогда
# передаёт значение 0 на gpio2 при котором
# светодиод включится
	echo "0" > /sys/class/gpio/gpio2/value
# Ожидание в 2 секунды, при которых значение 0 на gpio2 сохраняется и светодиод горит
	sleep 2
# Передаём значение 1 на gpio2, тем самым выключая диод
	echo "1" > /sys/class/gpio/gpio2/value
    fi
# светодиод  у нас выключен.
# Перепроверяем значение gpio27 ежесекундно на наличие значения 1
# которое появляется при нажатой кнопке
	sleep 1
done

Сохраняем, закрываем.
Скачать скриптик можно тут или тут.

Закидываем в автозапуск следующим образом.
sudo nano /etc/rc.local
Перед словом «exit 0» вписываем:
sudo /script/gpio/led.sh &
Перезагружаем raspberry pi 2, нажимаем кнопку с задержкой и радуемся светящемуся светодиоду.

Добавить комментарий