Рубрики
Raspberry Pi

raspberry pi / GPIO

Основное:

!!! pi контакты работают на уровне 3,3В и они контакты не выдержат 5В :(
!!! для arduino неплохо бы дать внешние питание
!!! сначала нужно загрузить pi, а потом подключать arduino, а то pi может зависнуть :(

Контакты GPIO:

Исходящие сигналы -  управление светодиодами, моторами, реле и т.д.
Входящие сигналы - кнопки, переключатели, сенсоры температуры, света, движения, дальности и т.д.
Аналогово Цифровой Преобразователь = АЦП
Недостаток pi к ней нельзя напрямую подключать аналоговые сенсоры.(требуется  АЦП)

Power | Pin | Power 
__________________
3,3V    11    5v 
  no    00    no
  no    01    Ground
GPIO4   10    no
  no    00    no
GPIO17  11    GPIO18
GPIO27  10    no
GPIO22  11    GPIO23
3V_g24  01    GPIO24
  no    00    no
  no    01    GPIO25
  no    00    no
  no    00    no
__________________

Подключение светодиода:

катод(-) светодиода к gpio ground
анод(+) светодиода к gpio25
0. Включаем контакт gpio25
echo 25 > /sys/class/gpio/gpio/export
1. Смотрим что появилось в каталоге /sys/class/gpio/gpio25
cd /sys/class/gpio/gpio25 - переходим в него
ls - смотрим содержимое 
В каталоге будут следующие файлы  active_low, edge, subsystem, value, direction, power, uevent.
2. gpio кантакт может быть вывод/out(например светодиод) и ввод/in(например кнопка)  
Отвечает за это файл direction.
Делаем его out
echo out > /sys/class/gpio/gpio25/direction
3. За включение и отключение светодиода отвечает файл value. 1 - вкл и  0 - выкл
echo 1 > /sys/class/gpio/gpio25/value

Подключение кнопки:

!!! Передача свыше 3,3V на вход/ins pi смертельно для pi
!!! Убедись что подключил кнопку контакту 3V_g24( 3,3V gpio24)
!!! Цифровые входы/in должны быть подключены к 3,3V либо к земле
Один вывод с кнопки на ground
Второй вывод с кнопки на 3V_g24 
Для избежания дребезга вход 3V_g24 нужно подключить к земле через резистор на 10кОм 
0. Включаем порт 3V_g24
echo 24 > /sys/class/gpio/export
1. Переходим в каталог
cd /sys/class/gpio/gpio24
2. Настроим поведение порта
echo in > /sys/class/gpio/gpio24/direction
3. Жмем кнопку и смотрим файл /sys/class/gpio/gpio24/value
cat /sys/class/gpio/gpio24/value
0 - порт подключен к земле через стягивающий резистор. кнопка не нажата
1 - порт подключен к земле без резистора. кнопка нажата

Пример включения света:

Пример баш скрипта on.sh (включаем светодиод)
#!/bin/bash - эта строка должна быть во всех скриптах
echo Exporting pin $1 - вместо $1 будет подставлен первый аргумент командной строки
echo $1 > /sys/class/gpio/export - экспортируется контакт переданный первым аргументом
echo Setting direction to out
echo out > /sys/class/gpio/gpio$1/direction - так же в $1  подставится первый аргумент
echo Setting pin high
echo 1 > /sys/class/gpio/gpio$1/value - включаем светодиод
сохраняем с именем on.sh
chmod +x on.sh - даем права на выполнения скрипта
./on.sh 25 - выполнится скрипт с первым аргументом = 25 

$1 - обозначает первый аргумент, $2  - второй, и т.д. 
И вот в чем фишка:
./on.sh 25 - выполнится скрипт с первым аргументом = 25
Т.е. все применяется для 25 порта

Пример баш скрипта off.sh(выключаем светодиод)
#!/bin/bash - эта строка должна быть во всех скриптах 
echo Setting pin low. - выводит надпись
echo 0 > /sys/class/gpio/gpio$1/value - выключаем порт $1
echo Unexporting ping $1 - выводим надпись
echo $1 > /sys/class/gpio/unexport - ?  отключаем экспортируемое 
chmod +x off.sh
./off.sh 25 - выполнится скрипт с первым аргументом = 25

$1 - обозначает первый аргумент, $2  - второй, и т.д. 
И вот в чем фишка:
./off.sh 25 - выполнится скрипт с первым аргументом = 25
Т.е. все применяется для 25 порта

Реле и освещение:

!!! внимание 220В
0) убираем светодиод
1) gpio25 подключаем к положительному терминалу реле (+in)
2) pi ground подключаем к земле
3) землю подключаем к отрицательному терминалу реле (-in)
4) 220В одним проводом в лампу вторым в реле.
5) другим проводом с реле к лампе
6) используем скрипты для вкл. ./oт.sh 25 и выкл. ./off.sh 25

Расписание выполнения команд:

cron - выполнение скриптов/команд по расписанию
crontab -e - посмотреть список запланированных заданий
Файл крона выглядит как таблица.
В ней 6 столбцов. 
* * * * * command
первый столбец минуты 0-60
  второй столбец часы 0-24
    третий столбец день месяца 1-31
      четвертый столбец  месяц 1-12
        пятый столбец день недели 1-7 (ПН-ВС)
          шестой столбец команда которую нужно выполнить 
* - любое значение
*/5  каждые 5 минут
0 20 * * * /root/run_script.sh - выполнится скрипт в 20:00
https://pinout.xyz/