Как работают GPIO на Raspberry Pi. Какие бывают типы контактов. Как настроить и запрограммировать GPIO с помощью Python. Примеры проектов с использованием GPIO Raspberry Pi.
Что такое GPIO и как они работают на Raspberry Pi
GPIO (General Purpose Input/Output) — это универсальные порты ввода-вывода на Raspberry Pi, которые позволяют подключать и управлять различными внешними устройствами. GPIO дают возможность взаимодействовать с физическим миром, подключая датчики, моторы, светодиоды и другие компоненты.
Основные характеристики GPIO Raspberry Pi:
- 40 контактов на большинстве современных моделей Raspberry Pi
- Возможность настройки контактов на ввод или вывод
- Поддержка цифровых сигналов (0 и 1)
- Напряжение 3.3В
- Максимальный ток на один контакт — 16 мА
- Суммарный максимальный ток — 50 мА
GPIO позволяют реализовать множество интересных проектов — от простого управления светодиодами до создания роботов и систем «умного дома». Для работы с GPIO используется программирование, чаще всего на Python.
Распиновка GPIO Raspberry Pi
На современных моделях Raspberry Pi используется 40-контактный разъем GPIO. Каждый контакт имеет свое назначение:
- GPIO — контакты общего назначения для ввода/вывода
- Питание — 5В и 3.3В для питания внешних устройств
- Земля (GND) — для заземления схем
- Специальные контакты:
- I2C — для подключения устройств по интерфейсу I2C
- SPI — для устройств с интерфейсом SPI
- UART — для последовательной связи
Важно знать назначение каждого контакта, чтобы правильно подключать устройства и не повредить Raspberry Pi. Полная схема распиновки доступна на сайте Raspberry Pi Foundation.
Настройка GPIO на Raspberry Pi
Перед использованием GPIO необходимо произвести некоторые настройки:
- Обновите систему:
sudo apt-get update sudo apt-get upgrade
- Установите библиотеку для работы с GPIO (если еще не установлена):
sudo apt-get install rpi.gpio
- Для использования I2C или SPI включите их в настройках:
Выберите Interfacing Options > I2C или SPI и включите нужный интерфейс.sudo raspi-config
- Перезагрузите Raspberry Pi после изменения настроек.
После этих шагов ваш Raspberry Pi будет готов к работе с GPIO.
Программирование GPIO на Python
Python — самый популярный язык для работы с GPIO на Raspberry Pi. Вот простой пример, как управлять светодиодом через GPIO:
import RPi.GPIO as GPIO import time LED_PIN = 18 GPIO.setmode(GPIO.BCM) GPIO.setup(LED_PIN, GPIO.OUT) try: while True: GPIO.output(LED_PIN, GPIO.HIGH) time.sleep(1) GPIO.output(LED_PIN, GPIO.LOW) time.sleep(1) except KeyboardInterrupt: GPIO.cleanup()
Этот код заставит светодиод, подключенный к контакту 18, мигать с интервалом в 1 секунду. Обратите внимание на использование try/except для корректного завершения программы и очистки состояния GPIO.
Проекты с использованием GPIO Raspberry Pi
Вот несколько интересных проектов, которые можно реализовать с помощью GPIO:
1. Система мониторинга температуры
Подключите датчик температуры к GPIO и создайте скрипт для записи данных и отправки уведомлений при превышении заданного порога.
2. Умный дверной звонок
Используйте кнопку, подключенную к GPIO, в качестве звонка. При нажатии отправляйте уведомление на смартфон и включайте камеру для трансляции изображения посетителя.
3. Автоматическая система полива растений
Подключите датчик влажности почвы и насос через реле к GPIO. Когда почва становится слишком сухой, автоматически включайте полив.
4. Робот, следующий по линии
Используйте инфракрасные датчики для определения линии и моторы для движения. Управляйте всем через GPIO для создания простого робота.
5. Метеостанция
Соберите данные о температуре, влажности, давлении с помощью различных датчиков, подключенных к GPIO. Отображайте информацию на дисплее или отправляйте в облако.
Меры предосторожности при работе с GPIO
При использовании GPIO важно соблюдать некоторые правила безопасности:
- Не превышайте максимально допустимый ток и напряжение для контактов
- Используйте резисторы для ограничения тока, особенно при подключении светодиодов
- Будьте осторожны с статическим электричеством
- Не замыкайте контакты питания и земли напрямую
- Проверяйте схему подключения перед подачей питания
- Используйте макетную плату для экспериментов, чтобы избежать случайных замыканий
Соблюдение этих правил поможет избежать повреждения Raspberry Pi и подключаемых устройств.
Дополнительные возможности GPIO
Помимо базового ввода/вывода, GPIO Raspberry Pi предоставляет ряд дополнительных возможностей:
ШИМ (PWM)
Широтно-импульсная модуляция позволяет управлять мощностью на выходе, изменяя скважность сигнала. Это полезно для регулировки яркости светодиодов или скорости моторов.
Прерывания
GPIO поддерживает аппаратные прерывания, что позволяет мгновенно реагировать на изменение состояния входа без постоянного опроса.
Подтягивающие резисторы
Встроенные подтягивающие резисторы можно программно включать для входов, что упрощает схему подключения некоторых устройств.
Альтернативные библиотеки для работы с GPIO
Хотя RPi.GPIO является стандартной библиотекой, существуют и другие варианты для работы с GPIO:
- pigpio — предоставляет расширенные возможности и более точный контроль над GPIO
- gpiozero — высокоуровневая библиотека, упрощающая работу с GPIO для начинающих
- wiringPi — порт библиотеки Arduino Wiring для Raspberry Pi
Каждая из этих библиотек имеет свои преимущества и может быть более подходящей для конкретных проектов.
Расширение возможностей GPIO
Если 40 контактов GPIO недостаточно для вашего проекта, существуют способы расширения:
- Платы расширения GPIO — добавляют дополнительные контакты ввода/вывода
- Мультиплексоры — позволяют управлять большим количеством устройств через ограниченное число контактов
- Сдвиговые регистры — увеличивают количество выходов
- I2C и SPI устройства — многие датчики и модули подключаются через эти интерфейсы, экономя контакты GPIO
Эти решения позволяют значительно расширить возможности проектов на базе Raspberry Pi.
Отладка проектов с GPIO
При разработке проектов с использованием GPIO может потребоваться отладка. Вот несколько советов:
- Используйте светодиоды для визуальной индикации состояния программы
- Добавляйте подробное логирование в ваш код
- Применяйте мультиметр для проверки напряжений и токов
- Используйте осциллограф для анализа сложных сигналов
- Не забывайте о возможности удаленной отладки через SSH
Правильный подход к отладке поможет быстрее находить и исправлять ошибки в ваших проектах.
Заключение
GPIO — это мощный инструмент, который превращает Raspberry Pi из обычного мини-компьютера в платформу для создания разнообразных электронных проектов. Понимание принципов работы GPIO, умение правильно их настраивать и программировать открывает широкие возможности для творчества и инноваций.
Начните с простых проектов, постепенно усложняя задачи, и вскоре вы сможете создавать сложные системы автоматизации, роботов и устройства «интернета вещей». GPIO Raspberry Pi — это ключ к миру физических вычислений и электроники, доступный каждому энтузиасту.
Использование GPIO из Python на Raspberry Pi / Хабр
Делюсь своим опытом, полученным при изучении задачи вынесенной в заголовок. В статье рассматриваются два варианта работы, которые можно использовать в Python-программах, обращающихся к портами GPIO Raspberry Pi.
Порты GPIO Raspberry Pi выглядят следующим образом:
Одним из вариантов работы с GPIO является интерфейс Sysfs. Подробнее о Sysfs интерфейсе GPIO здесь. В этом случае для обращения к портам GPIO используются операции чтения и записи файлов. Для использования конкретного вывода его нужно зарезервировать и установить направление на вход или на выход. После окончания работы с портом его нужно освободить, чтобы другие процессы могли его использовать.
Резервирование порта (XX — номер нужного порта):
$ echo XX > /sys/class/gpio/export
При успешном резервировании появляется новая папка по адресу /sys/class/gpio/gpioXX/
$ echo "out" > /sys/class/gpio/gpioXX/direction
Или так:
$ echo "in" > /sys/class/gpio/gpioXX/direction
Установка высокого и низкого уровней для порта, настроенного на выход выполняется так:
$ echo 1 > /sys/class/gpio/gpioXX/value $ echo 0 > /sys/class/gpio/gpioXX/value
Определение состояние порта, настроенного на вход делается так:
$ cat /sys/class/gpio/gpioXX/value
Освобождение порта после окончания его использования:
$ echo XX > /sys/class/gpio/unexport
Для упрощения работы с GPIO через интерфейс Sysfs мне встретились две утилиты. Одна из них WiringPi GPIO utility, другая quick2wire-gpio-admin.
Основная задача, решаемая этими утилитами — это предоставление возможности работы с GPIO от имени непривилегированного пользователя. При этом WiringPi GPIO utility более функциональна.
Я для работы с GPIO остановился на пакете RPIO (на момент написания последней была версия 0.10.0). Этот пакет работает с портами GPIO напрямую, обращаясь к регистрам BCM2708 через специальное устройство /dev/mem
. Что такое RPIO:
Advanced GPIO for the Raspberry Pi. Extends RPi.GPIO with PWM, GPIO interrups, TCP socket interrupts, command line tools and more
RPIO позиционируется как улучшенный и расширенный вариант другого модуля, RPi.GPIO. В документации непосредственно на RPIO подробно рассмотрены только возможности, отсутствующие в RPi.GPIO, по этому за описанием общих для этих модулей функций нужно обращаться к документации RPi.GPIO, доступной здесь.
Устанавливается пакет следующей командой:
$ sudo pip install RPIO
Кроме python-модулей устанавливаюся две программы: rpio-curses и rpio. С их помощью можно, например, получить текущий режим и состояние GPIO и, при желании, изменить их. Так выглядит работа с rpio-curses:
Так можно получить информацию о системе:
$ rpio --sysinfo 000f: Model B, Revision 2.0, RAM: 512 MB, Maker: Qisda
Пример python-программы, использующей RPIO:
import RPIO import time NRF_CE = 24 # set up output channel with an initial state RPIO.setup(NRF_CE, RPIO.OUT, initial=RPIO.LOW) for i in range(10): RPIO.output(NRF_CE, 1) time.sleep(1) RPIO.output(NRF_CE, 0) time.sleep(1) # reset every channel that has been set up by this program, # and unexport interrupt gpio interfaces RPIO.cleanup()
Raspberry Pi. Работа с портами ввода-вывода GPIO.
В сегодняшней статье мы рассмотрим основные нюансы и механизмы управления портами ввода-вывода GPIO платы Raspberri Pi. И, конечно же, как обычно, все проверим на практическом примере.
Все версии Raspberry Pi оснащены штыревым разъемом, на который выведены порты GPIO. Начиная с 2014-го года разъем стал 40-пиновым (ранее было 26). На версиях Pi Zero и Pi Zero W присутствует посадочное место для разъема, но физически он не распаян:
В любом случае, как и с любой другой платой, расположение сигналов на этом разъеме для конкретной модификации лучше всего проверить по официальному даташиту. Хотя на разных версиях плат 40-пиновые разъемы для совместимости идентичны. Распиновка и сам разъем выглядят следующим образом:
Порты можно разделить на несколько категорий:
Разберем по очереди… Пины 3.3V и 5V могут использоваться для питания внешних устройств, подключенных к плате. При этом ограничение по току выглядит так:
- Максимальный ток для вывода 5V определяется по формуле:
I_{5V} = I_{вх} \medspace - \medspace I_{п}
где I_{вх} — это входной ток источника, который мы используем для питания платы. А I_{п} — это ток, потребляемый самой платой, а также внешними устройствами, подключенными по USB. То есть мы подаем входной ток, часть его потребляют узлы платы, а то, что остается мы можем использовать для дополнительных устройств, подключенных к пину 5V.
- Для выводов 3.3V все проще — максимальный ток составляет 50 мА и на этом точка.
В итоге за вычетом выводов 3.3V, 5V и Ground остаются 28 пинов GPIO, помеченных на схеме зеленым. GPIO0 и GPIO1 можно считать зарезервированными (их назначение обязательно обсудим в отдельной статье). Таким образом, остается 26 выводов, которые можно использовать по-своему усмотрению. Каждый из них может быть сконфигурирован на работу в том или ином режиме. Вот, к примеру, возможные функции портов для платы Raspberry Pi 4:
То есть любой из портов ввода-вывода может выполнять до 6-ти различных функций, в зависимости от конфигурации. В частности, GPIO2 может быть использован как сигнал SDA для I2C1 (SDA1), либо, к примеру, как сигнал MOSI для интерфейса SPI3 (SPI3_MOSI).
Об I2C и SPI поговорим в ближайших статьях, а сегодня нас интересует использование GPIO в качестве «обычных» входов и выходов. В режиме выхода на пин может быть выведен высокий (3. 3 В) или низкий (0 В) уровень напряжения. А, соответственно, в режиме входа мы можем проанализировать, какой уровень подан на пин — высокий или низкий — 3.3 В или 0 В. Тут важно обратить внимание, что порты не являются толерантными к 5 В, то есть подавать на вход 5 В категорически нельзя.
В режиме входа для любого из GPIO можно активировать внутреннюю подтяжку к питанию или земле (pull-up/pull-down). Если вывод настроен на использование подтяжки вверх, то это означает, что при отсутствии сигнала со входа будет считываться высокий уровень. С pull-down ситуация обратная — на входе в данном случае будет низкий уровень.
Исключением являются пины GPIO2 и GPIO3. Они имеют фиксированную подтяжку вверх, без вариантов.
В режиме выхода мы снова возвращаемся к ключевому параметру, а именно к ограничению по току. Максимальный ток для одного вывода составляет 16 мА. При этом, если используются несколько выходов, то суммарный ток не должен превышать 50 мА. Превышение допустимых значений с большой вероятностью приведет к выгоранию порта.
Собственно, давайте рассмотрим практический пример. Задействуем два вывода GPIO — один в качестве входа, второй в качестве выхода. На вход подключим кнопку, а на выход — светодиод. И реализуем программу, которая будет опрашивать сигнал на входе и по нажатию кнопки зажигать светодиод.
Выберем GPIO3 для светодиода и GPIO4 для кнопки. Схема подключения будет такой:
Давайте в двух словах разберем, что, как и зачем подключено. Начнем с кнопки. Программно активируем для GPIO4 подтяжку вверх, поэтому если кнопка не нажата мы получим на входе высокий уровень (логическую единицу). Соответственно, для того, чтобы определить нажатие кнопки, подключим ее к земле. В итоге при нажатой кнопке на входе будет низкий уровень (логический ноль). Поскольку используем внутреннюю подтяжку, в этом примере ставить дополнительный внешний резистор подтяжки не будем.
Резистор R_{1} — токоограничительный. Как вытекает из названия он нужен для ограничения тока ) Рассмотрим, что произойдет, если вывод GPIO4 будет ошибочно настроен не как вход, а как выход и на нем будет 3.3 В. При нажатии кнопки произойдет короткое замыкание 3.3 В на землю, что приведет к безвозвратному повреждению порта платы. Это в случае отсутствия резистора.
А при наличии резистора ток будет ограничен величиной:
I = \frac{3.3 \medspace В}{1000 \medspace Ом} = 3.3 \medspace мА
В данном случае получаем 3.3 мА, что вполне допустимо, и позволит сохранить порту жизнь в случае возникновения замыкания.
Итак, переходим к диоду, который подключен через резистор R_{2}. Каждому диоду соответствует своя собственная вольт-амперная характеристика (ВАХ), определяющая возможные значения прямого напряжения и тока. Рассмотрим первый попавшийся под руку светодиод, например такой — ссылка:
Открываем даташит на него и находим зависимость тока от напряжения при прямом включении:
Максимальный ток для GPIO в режиме выхода, как мы уже выяснили, составляет 16 мА. Чтобы не превысить это значение подадим на светодиод, например, 10 мА. Этому току, исходя из графика, соответствует напряжение 2 В. Теперь по закону Ома нам остается только определить величину резистора. На выходе GPIO у нас 3.3 В, на диоде должно падать 2 В, значит на резисторе остается:
U_{рез} = 3.3 \medspace В \medspace - \medspace 2 \medspace В = 1.3 \medspace В
При этом ток в цепи должен быть равен 10 мА, тогда сопротивление резистора:
R_{2} = \frac{1.3 \medspace В}{10 \medspace мА} = 130 \medspace Ом
Если точной величины под рукой нет, можно взять резистор номиналом чуть больше. В общем, суть тут одна — обеспечить режим работы, при котором ток через выход не превышает допустимые 16 мА. Для большинства светодиодов в документации просто приводятся конкретные типовые значения напряжения и тока, например 2.5 В и 15 мА. Расчет будет выглядеть точно так же, как и рассмотренный, просто значения другие.
В общем, с подключением разобрались, время переходить к программной реализации. Существует огромное многообразие возможных способов для управления GPIO, мы же сегодня остановимся на использовании python.
И для работы с портами ввода-вывода используем библиотеку/модуль RPi.GPIO. В Raspberry Pi OS он включен по умолчанию, но в случае отсутствия команда для установки такая:
sudo apt-get install python-rpi.gpio
Создаем файл gpio_test.py и добавляем в него следующий код:
import RPi.GPIO as GPIO import time GPIO_LED = 3 GPIO_BUTTON = 4 DELAY_TIME = 0.5 GPIO.setmode(GPIO.BCM) GPIO.setup(GPIO_LED, GPIO.OUT) GPIO.output(GPIO_LED, GPIO. LOW) GPIO.setup(GPIO_BUTTON, GPIO.IN, pull_up_down=GPIO.PUD_UP) try: while True: time.sleep(DELAY_TIME) if GPIO.input(GPIO_BUTTON) == 0: GPIO.output(GPIO_LED, GPIO.HIGH) print('led on') else: GPIO.output(GPIO_LED, GPIO.LOW) print('led off') except KeyboardInterrupt: GPIO.cleanup() print('exiting')
Пройдемся подробнее, прямо по всем строкам последовательно. Делаем import модулей для работы с GPIO и для использования временной задержки:
import RPi.GPIO as GPIO import time
Добавим переменные для хранения номеров портов и величины задержки. У нас светодиод на GPIO3, а кнопка на GPIO4. Так и определим:
GPIO_LED = 3 GPIO_BUTTON = 4 DELAY_TIME = 0. 5
Далее настроим режим нумерации портов, чтобы номера соответствовали названию сигнала (например, GPIO3), а не порядковому номеру на разъеме:
GPIO.setmode(GPIO.BCM)
Настраиваем GPIO3 на работу в режиме выхода и гасим светодиод, подав низкий уровень:
GPIO.setup(GPIO_LED, GPIO.OUT) GPIO.output(GPIO_LED, GPIO.LOW)
GPIO4 — в режиме входа с подтяжкой вверх:
GPIO.setup(GPIO_BUTTON, GPIO. IN, pull_up_down=GPIO.PUD_UP)
Далее организуем вечный цикл while True, в котором и будем проверять состояние кнопки и мигать светодиодом. Только обернем его в блок try, чтобы отловить исключение, возникающее, когда пользователь завершает процесс (нажав Ctrl + C). В случае завершения выполнения программы вызываем GPIO.cleanup():
try: while True: time.sleep(DELAY_TIME) if GPIO.input(GPIO_BUTTON) == 0: GPIO.output(GPIO_LED, GPIO.HIGH) print('led on') else: GPIO.output(GPIO_LED, GPIO.LOW) print('led off') except KeyboardInterrupt: GPIO.cleanup() print('exiting')
Ну и, конечно, здесь же у нас вся полезная работа. Если кнопка нажата (а в нашей схеме этому соответствует низкий уровень/логический ноль на GPIO4), то зажигаем светодиод и выводим сообщение «led on«. При отпускании кнопки — обратный процесс. Проверять кнопку будем каждые 0.5 с (DELAY_TIME).
Запускаем программу командой:
python gpio_test.py
И теперь, нажимая кнопку, можем наблюдать включение и выключение светодиода, как мы и планировали 👍
Как использовать контакты Raspberry Pi GPIO — учебник по Python
Будь то Raspberry Pi 3, 4 или крошечный Raspberry Pi Zero, контакты GPIO всегда были основной функцией нашего любимого одноплатного компьютера (SBC) RPi. Однако знаете ли вы о его функциональности и о том, как использовать его для создания реальных проектов? В сегодняшнем уроке мы покажем вам, как начать работу с миром физических вычислений и GPIO с помощью программирования на Python!
Сегодняшнее руководство по Raspberry Pi GPIO будет охватывать следующее:
- Что такое GPIO и как он работает?
- Объяснение распиновки GPIO для Raspberry Pi
- Настройка контактов GPIO и протоколов связи (SPI, I2C)
- Учебное пособие по GPIO для Raspberry Pi с Grove & Python
- Проекты GPIO для Raspberry Pi
GPIO, сокращение от General Purpose Input Output — это стандартный интерфейс микроконтроллеров и SBC, обеспечивающий цифровой ввод и вывод. Это позволяет этим устройствам управлять внешними компонентами, такими как двигатели и инфракрасные передатчики (выход), а также получать данные от сенсорных модулей и переключателей (вход). По сути, GPIO позволяет нашему Raspberry Pi взаимодействовать с различными внешними компонентами, что делает его подходящим для самых разных проектов, от метеостанции до самоуправляемого робота.
Для работы выводов GPIO потребуется настройка программного обеспечения. Не волнуйтесь, для начинающих доступны библиотеки Python, такие как GPIOzero, чтобы сделать физические вычисления более доступными для всех пользователей. Для более опытных программистов, предпочитающих C или C++, также доступны библиотеки доступа к GPIO, такие как wirePI!
Объяснение распиновки GPIO Raspberry Pi
Если вы используете Raspberry Pi B+, 2 , 3, Zero или новейшую модель Raspberry Pi 4 Model B, вы найдете в общей сложности 40 контактов GPIO на разъеме GPIO вашего RPi. Старые версии RPI, такие как Raspberry Pi Model B, будут содержать только 26 контактов.
Источник: Raspberry Pi FoundationКаждый из контактов на 40-контактном разъеме имеет определенное назначение. Различные типы описаны в таблице ниже.
Тип контакта GPIO | Назначение штифта и объяснение |
---|---|
GPIO | КонтактыGPIO — это стандартные контакты общего назначения, которые можно использовать для включения или выключения внешних устройств, таких как светодиод. |
Мощность | Контакты 5V и 3V3используются для подачи питания 5V и 3.3V на внешние компоненты. |
I2C | КонтактыI2C используются для подключения и аппаратной связи с внешними модулями, совместимыми с I2C. |
СПИ | ВыводыSPI (шина последовательного периферийного интерфейса) также используются для аппаратной связи, но с другим протоколом. |
УАПП | ВыводыUART (универсальный асинхронный приемник/передатчик) используются для последовательной связи. |
ДНЦ | Следует избегать использования контактов DNC (не подключать). |
Земля | КонтактыGND (земля) относятся к контактам, которые обеспечивают электрическое заземление в ваших цепях. |
Дополнительные сведения о различиях между протоколами PWM, I2C, SPI, UART и их использовании см. в следующих источниках:
- Что такое широтно-импульсная модуляция (ШИМ)? Приложения и аксессуары
- UART, I2C и SPI — протоколы связи и их использование
- Связь I2C — все о I²C с диаграммами
Как настроить контакты Raspberry Pi GPIO, I2C и SPI
Теперь, когда мы знаем больше о GPIO Raspberry Pi, пришло время приступить к физическим вычислениям! Как и в случае с другими электрическими компонентами, мы сначала должны настроить контакты GPIO перед их использованием. Приведенное ниже руководство по настройке будет работать в ОС Raspberry Pi.
Настройка GPIOЕсли вы используете последнюю версию ОС Raspberry Pi, вы можете пропустить эти шаги и сразу приступить к программированию с помощью GPIO!
В противном случае вам придется выполнить следующие команды в последовательном терминале, чтобы обновить RPI:
sudo apt-get update sudo apt-get upgrade
Если по какой-либо причине у вас не установлен пакет GPIO, вы можете выполнить следующую команду для установки:
sudo apt-get install rpi. gpioНастройка выводов Raspberry Pi I2C/SPI
Чтобы включить I2C или SPI для аппаратной связи, мы будем использовать инструмент Raspi-Config, введя следующую команду:
sudo raspi-config
В появившемся меню перейдите к Дополнительные параметры > I2C и выберите «Да». Для SPI вместо этого перейдите к Advanced Options > SPI . После завершения перезагрузите RPi, и ваши контакты I2C будут включены. Чтобы убедиться, что связь I2C работает правильно с вашим RPi, подключите ваши модули и введите следующую команду:
lsmod | grep i2c_
Для SPI вместо этого выполните следующую команду:
ЛСмод | grep spi_
В каждом случае командная строка должна возвращать список с указанием модулей, которые вы запускаете через контакты I2C/SPI.
Основные продукты для Raspberry Pi GPIO
Прежде чем мы перейдем к тому, как вы можете запрограммировать контакты GPIO Raspberry Pi с помощью Python, вот некоторые необходимые вещи, которые мы рекомендуем.
Базовая шляпа Grove для Raspberry PiБазовая шляпа Grove расширяет возможности Raspberry Pi, добавляя 15 разъемов Grove в дополнение к исходным 40 контактам GPIO. Grove — это модульная стандартизированная система разъемов, которая позволяет быстро и удобно создавать прототипы электроники, устраняя необходимость в перемычках или припое.
Базовая шляпа Grove для Raspberry PiС базовой шляпой Grove Raspberry Pi получает доступ к обширной экосистеме Grove с более чем 300 датчиками, приводами и коммуникационными модулями. Благодаря библиотекам и подробной документации, поставляемой с Grove, начать создавать проекты с использованием Raspberry Pi GPIO стало проще, чем когда-либо!
Плата GPIO Raspberry Pi с 40 контактов на 26 контактовЕсли у вас есть более старые аксессуары для Raspberry Pi, которые были созданы для исходной 26-контактной конфигурации, эта плата преобразования 40-контактного на 26-контактный GPIO будет настоящая необходимость для вас.
Эта плата GPIO преобразует 40-контактный разъем на более новых моделях Raspberry Pi в исходную 26-контактную схему, поэтому вы можете продолжать использовать существующие аксессуары Raspberry Pi. Если вам интересно узнать больше об этом модуле, нажмите здесь.
Как запрограммировать контакты Raspberry Pi GPIO для с помощью Python?Уникальность запуска Python на Raspberry Pi вместо обычного ПК заключается в том, что вы можете запускать коды специально для управления аппаратными компонентами через контакты GPIO! В сегодняшнем уроке мы узнаем, как использовать GPIO для мигания светодиодом.
Вам потребуются следующие аппаратные компоненты:
- Raspberry Pi 4 (4 ГБ / 8 ГБ)
- Базовая шляпа Grove для Raspberry Pi
- Grove — фиолетовый светодиод (3 мм)
Шаг 1: Убедитесь, что ваша среда разработки обновлена. Это должно было быть сделано в наших предыдущих шагах.
Шаг 2: Затем загрузите исходный файл, клонировав библиотеку grove.py с помощью следующих команд.
компакт-диск ~ git clone https://github.com/Seeed-Studio/grove.py
Шаг 3: Выполните следующую команду. Обратите внимание на замену port_number с номером порта GPIO, к которому подключен ваш светодиод.
компакт-диск ./grove.py/grove python grove_led.py port_number
Если ваш номер порта равен 12, ваша команда должна выглядеть так:
cd ./grove.py/grove python grove_led.py 12
Вот и все! Теперь вы должны увидеть мигание светодиода!
Проекты Raspberry Pi GPIOТеперь, когда вы увидели, как легко начать работу с Raspberry Pi GPIO с помощью Grove, мы не можем оставить вас без рекомендаций по проекту, не так ли? Имея множество проектов, доступных благодаря бесконечным возможностям, которые предлагают контакты GPIO, сегодня я просто представлю несколько моих любимых! Для получения полного списка проектов Raspberry Pi нажмите здесь!
1. Монитор Raspberry PiХотите создать полезный монитор, который в реальном времени сообщает о производительности процессора, температуре, использовании ОЗУ и другой полезной информации с помощью Raspberry Pi.
Аппаратное и программное обеспечение необходимо- Модель Raspberry Pi 4
- Матешерскую пакети0008
- Breadboard Mates Studio
Хотите узнать больше об этом проекте? Ознакомьтесь с полным руководством по Hackster от Team Breadboard Mates. Этот проект не только делает это, но и считывает вам время через разные промежутки времени! Все конфигурации программного обеспечения выполняются с помощью Python.
Необходимое аппаратное и программное обеспечение- Raspberry Pi 3 Model B
- RGB Diffused Common Cathode
- Speaker: 0.25W, 8 ohms
- Jumper Wires (Generic)
- Raspberry Pi OS on Raspberry Pi
- Python GPIO Library installed on the RPi
- Python SSD OLED Library
Хотите узнать больше? Посетите полное руководство по коду Python от Ашвини Кумр Синха на Hackster!
3. Робот-манипулятор, управляемый Raspberry PiЭтот действительно классный проект был разработан нашей командой Seeed R&D. Используя щит отслеживания жестов 3D, который взаимодействует с Raspberry Pi через его разъем GPIO, вы можете управлять рукой робота для сбора объектов!
Аппаратное и программное обеспечение необходимо- Raspberry Pi 3b+
- См. Ознакомьтесь с полным руководством Seeed на Hackster! 4. Интеллектуальное управление вентиляторами Raspberry Pi
Беспокоитесь о проблемах с температурой, присутствующих в Rasberry Pi 4, но хотите, чтобы вентиляторы включались только тогда, когда это действительно нужно процессору? В этом проекте реализован скрипт Python для регулировки скорости вращения вентилятора в зависимости от температуры процессора RPi! Теперь вы можете охлаждать свой Raspberry Pi и одновременно изучать Python!
Hardware & Software Needed- Raspberry Pi 4 Computer Model B 4GB
- Seeed Armor Aluminum Metal Case with Dual Fans for Raspberry Pi
- General Purpose Transistor NPN
- Resistor 330 ohm
- Breadboard
- Jumper wires
- ThingSpeak API
Хотите узнать больше? Вы можете ознакомиться с полным руководством Нургалиева Шахизата на Hackster!
РезюмеЭто завершает сегодняшнее руководство по использованию PIN-кодов GPIO Raspberry Pi с Python! Надеюсь, вы лучше поняли различные варианты использования GPIO и то, как использовать его для взаимодействия с датчиками и модулями для создания собственных электронных проектов.
Для получения дополнительных ресурсов Raspberry Pi перейдите по следующим ссылкам:
- Как: 3 метода настройки Wi-Fi Raspberry Pi
- 28 команд Raspberry Pi Linux: краткое руководство по использованию командной строки для Raspberry Pi
- Создайте камеру безопасности Raspberry Pi, используя камеру Raspberry Pi!
- Собери робота, следящего за линией Raspberry Pi!
- 35 лучших проектов Raspberry Pi 4, которые вы должны попробовать прямо сейчас
Метки: контакты gpio, Raspberry Pi, Raspberry Pi 4 взгляните на все основы контактов GPIO, также известных как входные и выходные контакты общего назначения.
Эти контакты предназначены для связи с другими схемами, такими как платы расширения, специальные схемы и многое другое.
С помощью этих булавок можно сделать кое-что интересное. В будущем мы рассмотрим гораздо больше проектов, в которых используются эти булавки.
Об этих булавках нужно знать довольно много, и я настоятельно рекомендую вам следовать этому руководству, чтобы лучше понять их, прежде чем вы начнете играть с ними.
Также не забудьте посмотреть наше видео о Raspberry Pi GPIO в списке оборудования. Он проведет вас через все основы, которые вам нужно знать, чтобы начать.
Предупреждение: Экспериментировать с GPIO рискованно и может привести к поломке вашего Raspberry Pi. Знание ограничений мощности контактов GPIO, а также понимание того, что вы подключаете, является обязательным.
Оборудование
Оборудование, которое я использую в этом руководстве Raspberry Pi GPIO, указано ниже.
Рекомендуется
Дополнительно
- Корпус Raspberry Pi с доступом к контактам GPIO
Видеоруководство
Наше видео ознакомит вас со всеми темами, описанными в этом руководстве. Если вы лучше учитесь, слушая и видя, то я настоятельно рекомендую вам посмотреть видео.
Если вам понравилось видео, подпишитесь на нас или следите за нами в социальных сетях, чтобы быть в курсе всех самых крутых проектов Raspberry Pi, руководств и многого другого.
Adblock удаляет видео? Поддержите нас, подписавшись на наш сервис без рекламы.
Учебное пособие по GPIO для Raspberry Pi
Теперь давайте приступим к этому учебному пособию по GPIO для Raspberry Pi, мы рассмотрим различные типы доступных выводов, как включить модули, что такое набор для прорыва и, наконец, как собрать и запрограммировать простую схему.
Если вы являетесь владельцем Raspberry Pi B+, 2, Zero или 3, то всего у вас будет 40 контактов. Более ранние модели, такие как Raspberry Pi B, имеют всего 26 контактов.
См. ниже схему выводов Raspberry Pi GPIO. Мы включили все три итерации Pi для схемы выводов.
Если вам нужна PDF-версия схемы выводов, вы можете скачать ее здесь.
Как видите, есть не только стандартные контакты, но и те, которые ссылаются на I2C, SPI и UART.- GPIO — это ваши стандартные контакты, которые можно использовать для включения и выключения устройств. Например, светодиод.
- Контакты I2C (Inter-Integrated Circuit) позволяют подключаться и взаимодействовать с аппаратными модулями, которые поддерживают этот протокол (протокол I2C). Этот протокол обычно занимает два контакта.
- Контакты SPI (шина последовательного периферийного интерфейса) могут использоваться для подключения и обмена данными с устройствами SPI. Практически такой же, как I2C, но использует другой протокол.
- UART (универсальный асинхронный приемник/передатчик) — это последовательные контакты, используемые для связи с другими устройствами.
- DNC означает не подключать, это говорит само за себя.
- Контакты питания получают питание непосредственно от Raspberry Pi.
- GND — это контакты, которые вы используете для заземления ваших устройств. Неважно, какой контакт вы используете, поскольку все они подключены к одной и той же линии.
Поначалу все это может показаться пугающим, но когда вы начнете, все будет довольно просто. Множество аббревиатур и технического жаргона сразу отталкивают людей.
Настройка и использование контактов
В этом разделе мы кратко коснемся того, как настроить контакты, чтобы вы могли использовать их на Raspberry Pi. Мы еще больше углубимся в программирование и использование выводов в будущих проектах Raspberry Pi.
В этом примере и в будущих проектах мы будем использовать Raspbian. Если он у вас не установлен, вы можете узнать, как установить последнюю версию, следуя моему руководству по установке Raspbian.
Настройка GPIO
Если вы используете последнюю версию Raspbian, вы можете начать программировать и использовать контакты GPIO без необходимости выполнять какие-либо дополнительные настройки.
Тем не менее, я рекомендую вам в любом случае обновить Pi до последних пакетов. Если вы этого не сделали, вы можете сделать это, выполнив следующие команды.
Если у вас не установлен пакет GPIO, просто установите его, выполнив следующую команду.
Настройка Raspberry Pi I2C
Настройка выводов I2C на Raspberry Pi очень проста и займет всего пару минут.
Во-первых, перейдите к инструменту Raspi-Config, введя следующую команду.
Здесь перейдите к
Параметры интерфейса
, а затем кI2c
, включите I2c, выбравДа
.Теперь Pi должен предупредить вас, что I2C будет включен после перезагрузки. Затем он спросит, хотите ли вы, чтобы он загружался по умолчанию. Выберите «Да», если вы планируете использовать I2c при каждой загрузке Raspberry Pi.
Теперь мы хотим убедиться, что необходимые модули успешно включены. Для этого введите следующую команду.
Эта команда вернет все запущенные модули, начиная с i2c. Он должен вернуть что-то вроде этого i2c_BCM2708 .
Настройка Raspberry Pi SPI
Настройка Raspberry Pi SPI очень похожа на I2c и очень проста, это займет всего пару минут.
Во-первых, перейдите к инструменту Raspi-Config, введя следующую команду.
После загрузки инструмента конфигурации перейдите к
Параметры интерфейса
, а затем кСПИ
.Включите SPI, и он сообщит вам, что он будет включен после перезагрузки. После этого он спросит, хотите ли вы, чтобы он загружался по умолчанию. Выберите Да, только если вы планируете использовать его каждый раз при загрузке Pi.
Чтобы убедиться, что SPI успешно запущен и работает, используйте следующую команду.
Эта команда вернет все запущенные модули, начиная с SPI. Он должен вернуть что-то вроде
spi_bcm2835
. Убедитесь, что вы перезапустили Pi, прежде чем проверять, загружен ли модуль.Использование комплекта для коммутации
Комплект для коммутации позволяет взять все контакты с помощью ленточного кабеля и подключить их к макетной плате или другому устройству. Этот комплект делает работу намного проще и безопаснее, чем работа внутри и вокруг Raspberry Pi.
Существует несколько различных типов наборов для разветвления, которые вы можете купить для выводов Raspberry Pi GPIO.
Лично я предпочитаю тип T, так как его легко читать и использовать. Если вы ищете комплект для прорыва, обязательно ознакомьтесь со списком оборудования выше.
При подключении ленточного кабеля необходимо убедиться, что он подсоединен и обращен от платы. Вы можете увидеть пример правильной установки ленточного кабеля с разделительной платой типа T прямо ниже.
Программирование с помощью контактов GPIO Raspberry Pi
Программирование с помощью контактов GPIO на Raspberry Pi обычно выполняется с использованием языка программирования Python. Эта конкретная схема и код очень просты в использовании и совсем не займут у вас много времени.
Если программирование кажется вам слишком сложным и вы предпочитаете простое решение, тогда вас может заинтересовать что-то вроде Raspberry Pi Cayenne. Пакет программного обеспечения позволяет добавлять датчики, управлять выводами GPIO и многое другое с помощью очень простого пользовательского интерфейса.
GPIO BOARD и GPIO BCM
Существует огромная разница между этими двумя разными режимами, и вам решать, какой из них вы хотите использовать для своего проекта. У обоих есть свои плюсы и минусы.
Плата GPIO ( GPIO.Board ) ссылается на физическую нумерацию контактов. Например, верхний левый штифт равен 1, а верхний правый штифт — 2. Он продолжает считать вверх по мере продвижения сверху вниз, пока не закончатся штифты. На нашей диаграмме вы можете видеть эту нумерацию в середине каждой группы.
GPIO BCM ( GPIO.BCM ) — это номер канала B roadcom S oc C . На приведенной выше диаграмме вы можете найти номер после GPIO. Например, на Raspberry Pi 3 контакт ниже 3v3 — это GPIO2, поэтому номер этого контакта равен 2 в режиме BCM.
Недостатком BCM является то, что они менялись между версиями (Raspberry Pi Rev 1 и Raspberry Pi Rev 2) и могут измениться в будущем. Если вы хотите быть в безопасности, я рекомендую придерживаться платы GPIO, но, как я уже говорил ранее, вам решать, как вы хотите ссылаться на контакты.
Код для простой светодиодной схемы
Если вам нравится программировать и много узнавать о Python, посмотрите мой пример ниже.
Во-первых, давайте настроим нашу маленькую схему. У меня есть полезная простая диаграмма, которой можно следовать ниже. Если у вас есть коммутационный комплект, схема, очевидно, будет немного другой, так как ваши провода будут идти от сапожника.
В качестве альтернативы просто подключите положительный конец светодиода к контакту 7 (GPIO4), а отрицательный конец — к резистору, который подключается к контакту заземления.
Теперь давайте создадим файл Python, чтобы мы могли ввести наш скрипт Python.
Давайте напишем небольшой скрипт. Важно помнить, что Python чувствителен к пробелам.
Например, в цикле для убедитесь, что у вас есть четыре пробела для всего внутри цикла. Чтобы объяснить немного дальше, GPIO.output(7, true) Строка должна содержать четыре пробела перед ней.