Построение контроллеров на Raspberry Pi #2: мигание светодиодом
Помигаем светодиодом с помощью Raspberry Pi!
Светодиоды широко используются в потребительском, медицинском, автомобильном и промышленном оборудовании. Они обеспечивают визуальное оповещение о состоянии электронных игрушек, смартфонов и пользовательских устройств во время эксплуатации. Светодиоды также обеспечивают потрясающие эффекты, изменяя цвет, интенсивность света и частоту мигания. Эти электронные источники света из-за своей высокой энергоэффективности, яркости и большого срока службы заменяют собой лампы накаливания. Во втором проекте в серии статей про построение контроллеров на Raspberry Pi мы рассмотрим, как подключить светодиод к Raspberry Pi, и как управлять им с помощью кнопки. Электронное устройство, которое мы соберем, – это светодиодная мигалка, приводимая в действие с помощью кнопки.
Компоненты, которые нам понадобятся
Список компонентов, необходимых для сборки светодиодной мигалки на Raspberry Pi, приведен ниже:
- Raspberry Pi (модель A+, B, B+, Pi 2 или Pi 3);
- микросхема оптоизолятора CNY74-4H-ND (корпус DIP 16 выводов);
- кнопка;
- резисторы 330 Ом (маркировка: оранжевый, оранжевый, коричневый, золотой), 0,25 Вт, 5%;
- светодиод (любого цвета);
- переходник для Raspberry Pi на макетную плату;
- беспаечная макетная плата;
- перемычки;
- USB кабель.
Разнообразие компьютеров Raspberry Pi
Прежде, чем продолжить сборку нашей светодиодной мигалки на RPi, давайте кратко поговорим о разнообразии компьютеров Raspberry Pi, доступных на рынке. Существует шесть типов дешевых одноплатных компьютеров RPi (Raspberry Pi), из которых производители, инженеры, преподаватели и студенты могут выбрать наиболее подходящий.
Модель A+ – это одноплатный компьютер с 256MB RAM, ARM процессор 700 МГц и возможностью работать от батареи 9В. Основные разъемы для подключения периферии к A+:
- разъем LCD;
- разъем камеры;
- HDMI;
- USB 2.0;
- аудио разъем 3,5 мм;
- 40-пиновый двухрядный разъем GPIO (входы/выходы общего назначения);
- разъем Ethernet.
Модель B обеспечивает 512MB RAM, что вдвое больше, чем у A+. Кроме того, в версии B RPi появились дополнительный USB порт и разъем композитного видео. RCA разъем композитного видеосигнала позволяет подключать Raspberry Pi к обычному телевизору. Двухрядный разъем, установленный на модели B RPi, обеспечивает доступ только к 26 выводам GPIO по сравнению с версией A одноплатного компьютера. Стандартная SD карта предназначена для хранения операционной системы Linux и файлов приложений.
Следующим этапом эволюции Raspberry Pi стала модель B+ одноплатного компьютера. Модель B+ RPi имеет 4 USB порта, вместо двух, как в модели B. Она включает в себя 40-пиновый двухрядный разъем GPIO и слот карты памяти microSD, вместо громоздкой SD карты, как в модели B. HDMI разъем, который был предусмотрен в других моделях RPi, стал стандартным в модели B+.
Следующей моделью Raspberry Pi является Pi 2. Pi 2 модель B имеет 1GB RAM, четырехъядерный процессор 900 МГц (BCM2836, ARM v7), по сравнению с предыдущими моделями RPi, использующими одноядерный процессор (BCM2835, ARM v6). Pi 2 обладает теми же разъемами подключения периферии, что и модель B+, тем самым обеспечивая совместимость для аппаратных проектов. Тем не менее, ваши существующие образы SD карт для Raspberry Pi могут не заработать, так как встроенное программное обеспечение и ядро должны быть перекомпилированы для нового процессора. Поэтому обновление встроенного программного обеспечения и операционной системы Linux потребуют дополнительного внимания при модификации аппаратного обеспечения.
Последней моделью в ряде Raspberry Pi, за исключением Raspberry Pi Zero, является Pi 3. Pi 3 модель B уже имеет четырехъядерный процессор 1,2 ГГц (ARM v8), а также интерфейсы Wi-Fi и Bluetooth. По разъемам Raspberry Pi 3 совместим с версией Pi 2.
В проекте светодиодной мигалки может быть использована любая из этих версий Raspberry Pi.
Структурная схема светодиодной мигалки на RPi
Электронную светодиодную мигалку можно легко собрать, используя микросхему таймера 555, несколько резисторов и конденсаторов и конечно светодиод. Единственное различие между электронной светодиодной мигалкой и устройством на RPi заключается в том, что скорость мигания регулируется с помощью программного обеспечения, вместо изменения значений подключенных резисторов и конденсаторов. Для построения мигалки на RPi необходимо четыре блока на структурной схеме: кнопка, Raspberry Pi, оптоизолятор и светодиод с токоограничивающим резистором. Структурная схема светодиодной мигалки на Raspberry Pi показана ниже.
Ниже приведена схема соединений компонентов светодиодной мигалки на RPi.
Несмотря на то, что я использовал Raspberry Pi модель B, вы можете использовать другие версии одноплатного компьютера, описанные выше. А теперь давайте обсудим работу оптоизолятора.
Что такое оптоизолятор?
Оптоизолятор представляет собой электронную схему, которая отделяет высоковольтные сигналы и источники от низковольтных цепей. Технология электрической сигнальной изоляции осуществляется с помощью пары из светодиода и фототранзистора. Светодиод при правильном подключении и при протекании через него электрического тока испускает невидимый свет или фотоны. Прямое смещение – это технический термин, используемый для описания подключения и управления протеканием электрического тока через фототранзистор. Невидимый свет или фотоны ударяют светочувствительную поверхность фототранзистора, что позволяет ему проводить ток от вывода коллектора к эмиттеру и далее на корпус. Протекание электрического тока означает, что на фототранзистор подано прямое смещение, и он «включился», как электронный коммутатор. Внешняя электрическая цепь или электронный компонент, подключенный к фототранзистору также «включится». Приложенный высоковольтный источник или сигнал изолирован от низковольтной цепи благодаря фотонному интерфейсу между светодиодом и фототранзистором. Высокое напряжение никогда электрически не соединяется с низковольтным источником напряжения.
Использование оптоизолятора в ваших проектах контроллеров на Raspberry Pi являетя хорошим способом для использования высоковольтных источников без угрозы повреждения одноплатного компьютера. Бортовой источник питания +5В будет использоваться для повышения яркости светодиода. Оптоизолятор будет включать фототранзистор, который будет управлять светодиодом с помощью встроенного источника питания +5В на плате Raspberry Pi. Теперь, когда вы знаете об оптоизоляторе, давайте соберем схему светодиодной мигалки на RPi!
Аппаратная часть светодиодной мигалки на RPi
Собрать светодиодную мигалку на RPi, используя схему соединений на беспаечной макетной плате или электрическую принципиальную схему, относительно просто. На рисунках 9 и 10 показаны обе схемы. Если вы только изучаете, как собираются электронные схемы, я предлагаю использовать для сборки данного проекта схему соединений на беспаечной макетной плате. Не забудьте обратить внимание на переходник для RPi, который вы используете. Распиновки различных переходников RPi могут различаться.
В качестве дополнительного справочного материала, чтобы помочь в сборки схемы светодиодной мигалки на RPi, ниже приведена распиновка микросхемы оптоизолятора. Элемент оптоизолятора на схеме соединений из Fritzing, к сожалению, не дает информацию о тома, как пары светодиод-фототранзистор (оптические каналы) расположены внутри 16-пинового DIP корпуса. Описание выводов оптоизолятора CNY74-4H-ND показано ниже на рисунке 11.
После завершения сборки схемы светодиодной мигалки на Raspberry Pi, перед подачей питания на RPi я предлагаю перепроверить всё на наличие ошибок соединения. Ниже приведена фотография собранной светодиодной мигалки. Вы можете использовать при сборке эту фотографию в качестве эталона. И заключительная часть проекта – написать код, который позволит устройству работать должным образом.
Код на питоне для светодиодной мигалки на Raspberry Pi
Заключительный этап проекта светодиодной мигалки на RPi – добавить код на Python. Для разработки контроллеров на RPi скриптовый язык Python очень прост в использовании при чтении состояния электрических выключателей, электронных датчиков и при управлении светодиодами, двигателями постоянного тока и электромеханическими реле. Как было показано в первой части этой серии статей, подключение кнопки и программирование Raspberry Pi на чтение состояние ее электрических контактов выполнить было относительно просто. Этот проект является продолжением первой части, где нажатие кнопки позволит начать светодиоду мигать с заданной скоростью. При отпускании кнопки светодиод перестанет мигать. Чтобы объяснить работу программы, в коде на питоне приведено множество комментариев. В листинге 1, приведенном ниже, показан хорошо прокомментированный код на Python для светодиодной мигалки на Raspberry Pi. Скрипт называется pbswitch_flasher.py. Откройте редактор nano в LXTerminal или Python IDLE и наберите код светодиодной мигалки, показанный ниже в листинге 1.
# *********** Светодиодная мигалка *************
#
# При нажатии/удержании кнопки светодиод мигает
# При отпускании кнопки светодиод выключается
# Добавить библиотеки в скрипт
import RPi.GPIO as GPIO
import time
# Добавить BCM нумерацию выводов и определить номера выводов
GPIO.setmode(GPIO.BCM)
pbswitch_pin = 4
LED_pin = 18
# Создать вывод кнопки, как коммутатор с активным низким уровнем
# (используем встроенные подтягивающие резисторы RPi), и
# определить вывод светодиода, как выход
GPIO.setup(pbswitch_pin, GPIO.IN, pull_up_down = GPIO.PUD_UP)
GPIO.setup(LED_pin, GPIO.OUT)
# Определить и задать начальное состояние выхода светодиода, как False
LED_state = False
# Цикл мониторинга событий кнопки: проверить pbswitch_pin
# и мигать светодиодом при новом событии ввода, которое равно False
while True:
new_input_event = GPIO.input(pbswitch_pin)
if new_input_event == False:
LED_state = not LED_state
GPIO.output(LED_pin, GPIO.HIGH)
time.sleep(.1)
GPIO.output(LED_pin, GPIO.LOW)
time.sleep(.1)
Чтобы запустить код на своем RPi, наберите в LXTerminal следующую команду
pi@raspberrypi ~ sudo python pbswitch_flasher.py
Теперь нажмите и удерживайте кнопку, светодиод должен начать мигать. Поздравляю с созданием второго контроллера на Raspberry Pi! Эксперимент со скоростью мигания путем изменения значения времени (в секундах) до 1 секунды. Строка кода, которую необходимо изменить показана ниже:
time.sleep(.1) # измените .1 на 1
Должны быть изменены обе строки с инструкциями, чтобы сохранить равное время, когда светодиод горит и когда погашен. Создайте другие шаблоны мигания с помощью установки неравных значений времени в функциях time.sleep()
.
В третьей части «Построения контроллеров на Raspberry Pi» мы рассмотрим, как управлять небольшим двигателем постоянного тока с помощью датчика освещенности (фотоэлемента).