Построение контроллеров на Raspberry Pi #2: мигание светодиодом

Добавлено 4 ноября 2016 в 15:30

Помигаем светодиодом с помощью Raspberry Pi!

Светодиоды широко используются в потребительском, медицинском, автомобильном и промышленном оборудовании. Они обеспечивают визуальное оповещение о состоянии электронных игрушек, смартфонов и пользовательских устройств во время эксплуатации. Светодиоды также обеспечивают потрясающие эффекты, изменяя цвет, интенсивность света и частоту мигания. Эти электронные источники света из-за своей высокой энергоэффективности, яркости и большого срока службы заменяют собой лампы накаливания. Во втором проекте в серии статей про построение контроллеров на Raspberry Pi мы рассмотрим, как подключить светодиод к Raspberry Pi, и как управлять им с помощью кнопки. Электронное устройство, которое мы соберем, – это светодиодная мигалка, приводимая в действие с помощью кнопки.

Компоненты, которые нам понадобятся

Список компонентов, необходимых для сборки светодиодной мигалки на Raspberry Pi, приведен ниже:

Разнообразие компьютеров 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.
Raspberry Pi Model A+ (вид сверху)
Рисунок 1 – Raspberry Pi Model A+ (вид сверху)

Модель B обеспечивает 512MB RAM, что вдвое больше, чем у A+. Кроме того, в версии B RPi появились дополнительный USB порт и разъем композитного видео. RCA разъем композитного видеосигнала позволяет подключать Raspberry Pi к обычному телевизору. Двухрядный разъем, установленный на модели B RPi, обеспечивает доступ только к 26 выводам GPIO по сравнению с версией A одноплатного компьютера. Стандартная SD карта предназначена для хранения операционной системы Linux и файлов приложений.

Модель B – это расширенная версия одноплатного компьютера Raspberry Pi модели A+, предоставляющая дополнительный USB порт и выходной разъем композитного видеосигнала для подключения телевизора
Рисунок 2 – Модель B – это расширенная версия одноплатного компьютера Raspberry Pi модели A+, предоставляющая дополнительный USB порт и выходной разъем композитного видеосигнала для подключения телевизора

Следующим этапом эволюции Raspberry Pi стала модель B+ одноплатного компьютера. Модель B+ RPi имеет 4 USB порта, вместо двух, как в модели B. Она включает в себя 40-пиновый двухрядный разъем GPIO и слот карты памяти microSD, вместо громоздкой SD карты, как в модели B. HDMI разъем, который был предусмотрен в других моделях RPi, стал стандартным в модели B+.

Модель B+ обеспечивает 40-пиновый двухрядный разъем GPIO и слот карты памяти microSD для хранения операционной системы Linux и файлов приложений
Рисунок 3 – Модель B+ обеспечивает 40-пиновый двухрядный разъем GPIO и слот карты памяти microSD для хранения операционной системы Linux и файлов приложений

Следующей моделью 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 2 модель B с четырехядерным процессором
Рисунок 4 – Raspberry Pi 2 модель B с четырехъядерным процессором

Последней моделью в ряде Raspberry Pi, за исключением Raspberry Pi Zero, является Pi 3. Pi 3 модель B уже имеет четырехъядерный процессор 1,2 ГГц (ARM v8), а также интерфейсы Wi-Fi и Bluetooth. По разъемам Raspberry Pi 3 совместим с версией Pi 2.

Raspberry Pi 3 модель B с четырехядерным процессором 1,2 ГГц, Wi-Fi и Bluetoth
Рисунок 5 – Raspberry Pi 3 модель B с четырехъядерным процессором 1,2 ГГц, Wi-Fi и Bluetoth

В проекте светодиодной мигалки может быть использована любая из этих версий Raspberry Pi.

Структурная схема светодиодной мигалки на RPi

Электронную светодиодную мигалку можно легко собрать, используя микросхему таймера 555, несколько резисторов и конденсаторов и конечно светодиод. Единственное различие между электронной светодиодной мигалкой и устройством на RPi заключается в том, что скорость мигания регулируется с помощью программного обеспечения, вместо изменения значений подключенных резисторов и конденсаторов. Для построения мигалки на RPi необходимо четыре блока на структурной схеме: кнопка, Raspberry Pi, оптоизолятор и светодиод с токоограничивающим резистором. Структурная схема светодиодной мигалки на Raspberry Pi показана ниже.

Компоненты, необходимые для сборки светодиодной мигалки на Raspberry Pi
Рисунок 6 – Компоненты, необходимые для сборки светодиодной мигалки на Raspberry Pi

Ниже приведена схема соединений компонентов светодиодной мигалки на RPi.

Схема соединений компонентов светодиодной мигалки на RPi
Рисунок 7 – Модифицированная структурная схема светодиодной мигалки на RPi с реальными компонентами. Обратите внимание, что входные и выходные компоненты подключены к назначенным им выводам GPIO

Несмотря на то, что я использовал Raspberry Pi модель B, вы можете использовать другие версии одноплатного компьютера, описанные выше. А теперь давайте обсудим работу оптоизолятора.

Что такое оптоизолятор?

Оптоизолятор представляет собой электронную схему, которая отделяет высоковольтные сигналы и источники от низковольтных цепей. Технология электрической сигнальной изоляции осуществляется с помощью пары из светодиода и фототранзистора. Светодиод при правильном подключении и при протекании через него электрического тока испускает невидимый свет или фотоны. Прямое смещение – это технический термин, используемый для описания подключения и управления протеканием электрического тока через фототранзистор. Невидимый свет или фотоны ударяют светочувствительную поверхность фототранзистора, что позволяет ему проводить ток от вывода коллектора к эмиттеру и далее на корпус. Протекание электрического тока означает, что на фототранзистор подано прямое смещение, и он «включился», как электронный коммутатор. Внешняя электрическая цепь или электронный компонент, подключенный к фототранзистору также «включится». Приложенный высоковольтный источник или сигнал изолирован от низковольтной цепи благодаря фотонному интерфейсу между светодиодом и фототранзистором. Высокое напряжение никогда электрически не соединяется с низковольтным источником напряжения.

Условное обозначение оптоизолятора
Рисунок 8 – Условное обозначение оптоизолятора

Использование оптоизолятора в ваших проектах контроллеров на Raspberry Pi являетя хорошим способом для использования высоковольтных источников без угрозы повреждения одноплатного компьютера. Бортовой источник питания +5В будет использоваться для повышения яркости светодиода. Оптоизолятор будет включать фототранзистор, который будет управлять светодиодом с помощью встроенного источника питания +5В на плате Raspberry Pi. Теперь, когда вы знаете об оптоизоляторе, давайте соберем схему светодиодной мигалки на RPi!

Аппаратная часть светодиодной мигалки на RPi

Собрать светодиодную мигалку на RPi, используя схему соединений на беспаечной макетной плате или электрическую принципиальную схему, относительно просто. На рисунках 9 и 10 показаны обе схемы. Если вы только изучаете, как собираются электронные схемы, я предлагаю использовать для сборки данного проекта схему соединений на беспаечной макетной плате. Не забудьте обратить внимание на переходник для RPi, который вы используете. Распиновки различных переходников RPi могут различаться.

Схема соединений на беспаечной макетной плате для сборки светодиодной мигалки на RPi. Обратите внимание на размещение электронных компонентов на печатной плате, особенно оптоизолятор (CNY74-4H-ND) и переходник для RPi
Рисунок 9 – Схема соединений на беспаечной макетной плате для сборки светодиодной мигалки на RPi. Обратите внимание на размещение электронных компонентов на печатной плате, особенно оптоизолятор (CNY74-4H-ND) и переходник для RPi
Светодиодная мигалка на RPi. Схема электрическая принципиальная
Рисунок 10 – Светодиодная мигалка на RPi. Схема электрическая принципиальная

В качестве дополнительного справочного материала, чтобы помочь в сборки схемы светодиодной мигалки на RPi, ниже приведена распиновка микросхемы оптоизолятора. Элемент оптоизолятора на схеме соединений из Fritzing, к сожалению, не дает информацию о тома, как пары светодиод-фототранзистор (оптические каналы) расположены внутри 16-пинового DIP корпуса. Описание выводов оптоизолятора CNY74-4H-ND показано ниже на рисунке 11.

Цоколевка микросхемы четырехканального оптоизолятора CNY74-4H-ND
Рисунок 11 – Цоколевка микросхемы четырехканального оптоизолятора CNY74-4H-ND

После завершения сборки схемы светодиодной мигалки на Raspberry Pi, перед подачей питания на RPi я предлагаю перепроверить всё на наличие ошибок соединения. Ниже приведена фотография собранной светодиодной мигалки. Вы можете использовать при сборке эту фотографию в качестве эталона. И заключительная часть проекта – написать код, который позволит устройству работать должным образом.

Собранная светодиодная мигалка на Raspberry Pi
Рисунок 12 – Собранная светодиодная мигалка на Raspberry Pi

Код на питоне для светодиодной мигалки на 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» мы рассмотрим, как управлять небольшим двигателем постоянного тока с помощью датчика освещенности (фотоэлемента).

Теги

GPIOLED / СветодиодPythonRaspberry PiМакетная плата

На сайте работает сервис комментирования DISQUS, который позволяет вам оставлять комментарии на множестве сайтов, имея лишь один аккаунт на Disqus.com.

В случае комментирования в качестве гостя (без регистрации на disqus.com) для публикации комментария требуется время на премодерацию.