В предыдущей статье на нашем сайте мы рассмотрели начало работы с платой Raspberry Pi Zero W, в этой же статье мы рассмотрим основы управления контактами общего назначения (GPIO pins) на данной плате с помощью простой программы мигания светодиодом.
Что такое интерфейс (контакты) общего назначения
Интерфейс (контакты) общего назначения (General Purpose Input Output, GPIO) – это стандартный интерфейс для операций цифрового ввода и вывода данных в микроконтроллерах и одноплатных компьютерах. Он позволяет им как управлять различными устройствами (двигатели, инфракрасные передатчики и т.д.), так и принимать сигналы от различных датчиков/устройств. По существу, данный интерфейс позволяет нашей плате Raspberry Pi Zero W осуществлять взаимосвязь с широким набором внешних компонентов, что делает ее пригодной для созданий многих электронных проектов, начиная от погодной станции и заканчивая роботом, передвигающимся самостоятельно. Управлять данными контактами можно непосредственно из программы для платы.
Контакты общего назначения в плате Raspberry Pi Zero W
Контакты общего назначения (GPIO) – это контакты, которые могут быть использованы для включения/выключения различных внешних устройств, например, светодиодов. Плата Raspberry Pi Zero W содержит 40 контактов GPIO. Контакты 1 и 17 являются источниками напряжения 3,3 В, контакты 2 и 4 – источниками напряжения 5 В, контакты 9, 25, 39, 6, 14, 20, 30 и 34 замкнуты на землю (ground). Ряд контактов имеют специальные функции, показанные на следующем рисунке.
Power – контакты 5V и 3.3V используются для подачи питания 5V и 3.3V на внешние модули (устройства);
UART – контакты, используемые для последовательной связи (UART – Universal Asynchronous Receiver/Transmitter, универсальный асинхронный приемопередатчик);
I2C – эти контакты используются для связи с внешними устройствами по интерфейсу I2C;
SPI – эти контакты используются для связи с внешними устройствами по интерфейсу SPI;
GND – контакты общего провода/земли (Ground).
Необходимые компоненты
В данной статье мы рассмотрим мигание двумя светодиодами с помощью контактов платы Raspberry Pi Zero W. Самый простой способ сделать это – подавать на контакты GPIO соответствующие цифровые уровни напряжения. Для осуществления данного проекта нам потребуются следующие компоненты:
- Плата Raspberry Pi Zero W (купить на AliExpress).
- Светодиоды – 2 шт. (купить на AliExpress).
- Резисторы 330 Ом – 2 шт. (купить на AliExpress).
- Макетная плата.
- Соединительные провода.
Схема проекта
Схема для мигания светодиодами с помощью платы Raspberry Pi Zero W представлена на следующем рисунке.
На схеме у нас два светодиода, положительные выводы светодиодов подключены к контактам GPIO 27 (pin 13) и GPIO 22 (pin 15) платы Raspberry Pi Zero W, а их отрицательные выводы подключены к контакту земли (pin 6) платы. Резисторы служат для ограничения тока через светодиоды.
Собранная на макетной плате схема проекта представлена на следующем рисунке.
Объяснение программы для Raspberry Pi Zero W
Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты.
Для начала вам необходимо загрузить операционную систему на плате Raspberry Pi Zero W, затем открыть окно терминала (terminal window), после этого установить последние обновления на плату с помощью команды:
1 |
sudo apt-get update |
Далее необходимо установить пакет RPi.GPIO, который предназначен для управления контактами GPIO платы Raspberry Pi Zero W. Его можно установить с помощью команды:
1 |
sudo apt-get install rpi.gpio |
После этого можно приступать к написанию программы на Python для мигания светодиодами. Далее объяснено назначение команд этой программы.
#!/user/bin/python – эта команда позволяет запускать код программы на исполнение не вводя слово Python перед именем файла.
import RPi.GPIO as io – подключаем (импортируем) в программу RPi.GPIO, позволяющую управлять контактами GPIO.
import time – подключаем библиотеку для работы с временем, у нас она будет использовать для организации временных задержек в программе.
io.setmode(io.BCM) – включаем режим работы с контактами, в котором мы будем обращаться к контактам по их номерам GPIO (функциональным номерам), а не по их физическим номерам на плате.
led1 = 27 – присваиваем значение 27 переменной led1.
led2 = 22 – присваиваем значение 22 переменной led2.
io.setup(led1, io.OUT) – конфигурируем GPIO 27 для работы в качестве цифрового выхода.
io.setup(led2, io.OUT) – конфигурируем GPIO 22 для работы в качестве цифрового выхода.
while 1 – организуем бесконечный цикл, чтобы остановить выполнение программы нажмите Ctrl + C на клавиатуре.
io.output(led1, True) – подаем напряжение 3.3 В на GPIO 27, то есть включаем светодиод.
io.output(led2, True) – подаем напряжение 3.3 В на GPIO 22, то есть включаем светодиод.
time.sleep(1) – задержка в программе на 1 секунду.
io.output(led1, False) – подаем логический 0 (0 Вольт) на GPIO 27 то есть выключаем светодиод led1.
io.output(led2, False) – подаем логический 0 (0 Вольт) на GPIO 22 то есть выключаем светодиод led2.
time.sleep(1) – задержка в программе на 1 секунду.
Исходный код программы на Python
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
#!/user/bin/python import RPi.GPIO as io import time io.setmode(io.BCM) led1 = 27 led2 = 22 io.setup(led1, io.OUT) io.setup(led2, io.OUT) while 1 io.output(led1, True) time.sleep(1) io.output(led1, False) io.output(led2, True) time.sleep(1) io.output(led2, False) time.sleep(1) |
Сохраните программу под именем led.py и введите в окне терминала команду python led.py чтобы запустить программу на выполнение. После этого вы увидите как два светодиода начнут мигать с интервалом в 1 секунду.