Включение светодиода с помощью GPIO-контактов Raspberry Pi

Включение светодиода с помощью GPIO-контактов Raspberry Pi

Одним из главных преимуществ Raspberry Pi являются контакты GPIO, или контакты общего назначения ввода/вывода (General Purpose Input/Output). Это маленькие штырьки, торчащие из платы, которые позволяют подключать к Raspberry Pi различные устройства – от датчиков до дисплеев. С помощью небольшого программирования вы можете управлять ими или определять, что они делают.

В этом руководстве мы покажем вам, как включить светодиод с помощью этих GPIO-контактов – отличный простой первый проект для любого владельца Raspberry Pi!

Что вам понадобится

Помимо Raspberry Pi, работающего под управлением Raspberry Pi OS, вам понадобятся:

Все эти компоненты, и не только, вы можете найти в наборе CamJam EduKit, который научит вас работать со светодиодами, зуммерами и переключателями и включает все необходимое оборудование и восемь хорошо написанных рабочих листов по использованию GPIO-контактов на Raspberry Pi.

Макетная плата

Макетная плата – это удобный способ соединения электронных компонентов друг с другом без необходимости их спаивать.

Они часто используются для тестирования («прототипирования») схемы перед созданием окончательной версии проекта, будь то пайка проводов или создание печатной платы (PCB).

Отверстия на макетной плате соединены следующим образом:

Объяснение дорожек макетной платы

На макетной плате из CamJam EduKit верхний ряд отверстий соединен вместе и отмечен красной линией. То же самое относится и ко второму ряду отверстий, отмеченному синей линией. Аналогично соединены и два соответствующих ряда (синий/красный) в нижней части макетной платы.

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

Светодиод (LED)

Красный светодиод

Когда вы возьмете светодиод, вы заметите, что одна ножка длиннее другой.

Длинная ножка (известная как «анод») всегда подключается к положительному выводу питания схемы. Короткая ножка (известная как «катод») подключается к отрицательной стороне источника питания, известной как «земля» (ground).

LED расшифровывается как Light Emitting Diode (светоизлучающий диод), и он светится, когда через него протекает электрический ток.

Светодиоды будут работать только при правильном направлении подачи питания (т.е. при правильной «полярности»). Вы не сломаете светодиоды, если подключите их наоборот – они просто не загорятся. Если вы обнаружите, что они не светятся в вашей схеме, возможно, они были подключены неправильно.

Резистор

Резистор 330 Ом

Вы ВСЕГДА должны использовать резисторы для подключения светодиодов к GPIO-контактам Raspberry Pi. GPIO-контакты Raspberry Pi могут обеспечить лишь небольшой ток (около 60 мА). Светодиоды будут потреблять больше, и если им это позволить, они могут повредить ваш Raspberry Pi или используемые контакты. Поэтому добавление резисторов в схему обеспечит протекание только этого небольшого тока.

Резисторы – это способ ограничения количества электричества, проходящего через цепь; в частности, они ограничивают величину «тока», которому разрешено протекать. Единица измерения сопротивления называется Ом (Ohm), и чем больше сопротивление, тем сильнее оно ограничивает ток. Значение резистора обозначается цветными полосками вдоль корпуса резистора.

Вы будете использовать резистор 330 Ом. Вы можете определить резисторы 330 Ом по цветным полоскам на корпусе. Цветовая кодировка зависит от количества полосок на поставляемых резисторах:

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

  • Если пять полосок, то цвета будут: оранжевый, оранжевый, черный, черный, коричневый.

Не имеет значения, какой стороной вы подключаете резисторы. Ток протекает через них в обоих направлениях.

Соединительные провода (джамперы)

Соединительные провода (джамперы)

Соединительные провода используются на макетных платах для «перемычек» от одного соединения к другому. Провода, которые вы будете использовать в этой схеме, имеют разные разъемы на каждом конце. Конец со «штырьком» будет вставляться в макетную плату. Конец с пластиковой деталью с отверстием будет надеваться на GPIO-контакты Raspberry Pi.

GPIO-контакты Raspberry Pi

GPIO означает General Purpose Input Output (Ввод/Вывод общего назначения). Это способ, которым Raspberry Pi может управлять внешним миром и контролировать его, подключаясь к электронным схемам.

Raspberry Pi может управлять светодиодами, включая и выключая их, моторами и многими другими устройствами с помощью этих контактов (это называется «выход» или output). Он также может определять, была ли нажата кнопка, измерять температуру, освещенность и многое другое (это называется «вход» или input).

С CamJam EduKit вы научитесь управлять светодиодами и зуммером, а также определять нажатие кнопки. Диаграмма ниже слева показывает расположение контактов для старых 26-контактных моделей Raspberry Pi, которые больше не продаются. Новейшие 40-контактные Raspberry Pi имеют такое же расположение контактов для верхних 13 рядов, как и старая модель.

GPIO-контакты Raspberry Pi

Сборка схемы

Схема состоит из источника питания (Raspberry Pi), светодиода, который загорается при подаче питания, и резистора для ограничения тока, протекающего через цепь:

  • Вы будете использовать один из контактов «земля» (GND), который будет действовать как «отрицательный» конец батареи или 0 вольт.

  • «Положительный» конец батареи будет обеспечен GPIO-контактом. Здесь мы будем использовать контакт GPIO18 (который является физическим контактом 12).

  • Когда эти контакты «переводятся в высокое состояние» (high), что означает выходное напряжение 3,3 вольта, светодиод загорится.

Теперь посмотрите на схему ниже:

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

Вам следует выключить Raspberry Pi на время следующих действий, на случай если вы случайно что-то замкнете.

  • Используйте один из соединительных проводов, чтобы подключить контакт земли к рельсу, отмеченному синим, на макетной плате. Гнездовой конец подключается к контакту Raspberry Pi, а штыревой конец вставляется в отверстие на макетной плате.

  • Затем подключите резистор от того же ряда на макетной плате к столбцу на макетной плате, как показано выше.

  • Далее вставьте ножки светодиода в макетную плату, длинной ножкой (с изгибом) справа.

  • Наконец, завершите схему, подключив правую ножку светодиода к GPIO18. Это показано здесь синим проводом.

Код

Теперь вы готовы написать код для включения светодиода. Включите Raspberry Pi и откройте окно терминала.

Создайте новый текстовый файл «LED.py», набрав следующее:

nano LED.py

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

import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(18,GPIO.OUT)
print "LED on"
GPIO.output(18,GPIO.HIGH)
time.sleep(1)
print "LED off"
GPIO.output(18,GPIO.LOW)

После того как вы добавили весь код и проверили его, сохраните и выйдите из текстового редактора, нажав «Ctrl + x», затем «y», затем «Enter».

Запуск кода

Чтобы запустить этот код, введите:

sudo python LED.py

Вы увидите, как светодиод включится на секунду, а затем выключится.

Если ваш код не работает и появляется сообщение об ошибке, отредактируйте код снова, используя nano LED.py.

Объяснение

Итак, что происходит в коде? Давайте разберем его строка за строкой:

import RPi.GPIO as GPIO

Первая строка говорит интерпретатору Python (программе, которая выполняет код Python), что он будет использовать «библиотеку», которая расскажет ему, как работать с GPIO-контактами Raspberry Pi. «Библиотека» дает языку программирования дополнительные команды, которые можно использовать для выполнения чего-то нового, чего он раньше не умел. Это похоже на добавление нового канала на ваш телевизор, чтобы вы могли смотреть что-то другое.

import time

Импортирует библиотеку Time, чтобы мы могли приостановить выполнение скрипта позже.

GPIO.setmode(GPIO.BCM)

У каждого контакта на Raspberry Pi есть несколько разных имен, поэтому вам нужно указать программе, какое соглашение об именовании использовать.

print "LED on"

Эта строка выводит информацию в терминал.

GPIO.output(18,GPIO.HIGH)

Это включает GPIO-контакт. На самом деле это означает, что контакт начинает подавать напряжение 3,3 вольта. Этого достаточно, чтобы включить светодиод в нашей схеме.

time.sleep(1)

Приостанавливает выполнение программы Python на 1 секунду.

print "LED off"

Эта строка выводит информацию в терминал.

GPIO.output(18,GPIO.LOW)

Это выключает GPIO-контакт, что означает, что контакт больше не подает питание.

Вот и все! Теперь вы умеете включать и выключать светодиод.


Мы использовали Fritzing для создания схем подключения на макетной плате для этой страницы.