Raspberry pi gpio

Настройки

Чтобы воспользоваться Raspberry Pi 2B в качестве автономного компьютера, необходимо задействовать как минимум три порта и питание:

  1. Подключить SD-карту с установленным дистрибутивом операционной системы.
  2. Задействовать вывод изображения на экран. При использовании HDMI передается картинка и звук на подключаемый дисплей.
  3. Подсоединить манипулятор (клавиатура, мышь) для управления выводимой информацией.
  4. Включить питание через USB-порт.

В качестве операционной системы можно использовать:

  • Raspbian — это официальная операционка с нужным набором программ. Ее и рекомендуют разработчики платы для любых операций.
  • OSMC (Raspbmc) — проигрыватель медиа файлов, выполненный на базе Kodi Media Center и Debian с отрытым исходным кодом.
  • OpenELEC — медиапроигрыватель на базе ОС Linux.
  • Windows 10 IoT Core — версия ОС Windows для разработчиков. Возможна совместимость только с ПК версией Windows 10. Взаимодействие без Visual Studio невозможно.
  • Android TV (кастомная) device_brcm_rpi2 — с открытым исходным кодом на GitHub. К сожалению, официальный Android доступен начиная с Raspberry Pi 3.

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

Если же одноплатный ПК будет заточен на трансляцию видео, в нем можно настроить IPTV. Для этих целей рекомендуется установить программное обеспечение:

  • Tano Player;
  • ZVVOnlineTV;
  • Myth TV.

ПО собирается в deb-пакетах (есть поддержка Raspbian). Альтернативный вариант — установка Kodi Media Center из стандартного репозитория.

GPIO

GPIO — интерфейс ввода-вывода общего назначения.

Логический уровень:

Диаметр контактов:

Нумерация начинается с левого верхнего угла платы.

Назначение Назначение
Питание 3.3В 1 2 Питание 5В
GPIO 2 (SDA1 ) 3 4 Питание 5В
GPIO 3 (SCL1 ) 5 6 Земля
GPIO 4 (GPIO_GCLK) 7 8 GPIO 14 (TXD0)
Земля 9 10 GPIO 15 (RXD0)
GPIO 17 (GPIO_GEN0) 11 12 GPIO 18 (GPIO_GEN1)
GPIO 27 (GPIO_GEN2) 13 14 Земля
GPIO 22 (GPIO_GEN3) 15 16 GPIO 23
Питание 3.3В 17 18 GPIO 24
GPIO 10 (SPI_MOSI) 19 20 Земля
GPIO 9 (SPI_MOSO) 21 22 GPIO 25
GPIO 11 (SPI_SCLK) 23 24 GPIO 8
Земля 25 26 GPIO 7
ID_SD 27 28 ID_SC
GPIO 5 29 30 Земля
GPIO 6 31 32 GPIO 12
GPIO 13 33 34 Земля
GPIO 19 35 36 GPIO 16
GPIO 26 37 38 GPIO 20
Земля 39 40 GPIO 21

Что такое колодка GPIO

GPIO — сокращение, означающая General-Purpose Input-Output, или общий интерфейс ввода/вывода. Он содержит цифровые входы и выходы для подключения датчиков, разнообразных контроллеров, дисплеев, реле и прочей электронной периферии. Внешне GPIO похож на «гребенку» из штырьков-пинов. В Raspberry Pi 3 его внешний вид таков (в верхней части платы):

Колодка GPIO Raspberry чем-то напоминает интерфейс подключения жестких дисков IDE.

Для правильной работы через GPIO необходимо знать конфигурацию пинов. В Raspberry Pi распиновка такова:

Разъемов питания 4. Прочие пины способны выступать в роли входа или выхода. Кроме того, некоторые из них многофункциональны и могут работать как интерфейс UART, I2C, SPI или ШИМ.

Рассмотрим более подробно устройство «гребенки».

Телевизор или монитор

Проще всего подключить к Raspberry Pi отдельный экран.

Хотя можно и удаленно управлять Raspberry Pi через SSH и VNC.

Экраном может быть телевизор или монитор компьютера. Если на экране есть встроенные динамики, Raspberry Pi сможет воспроизводить через них звук.

Подключить Raspberry Pi к экрану можно используя кабель подключения.

HDMI

Raspberry Pi имеет выходной порт HDMI, совместимый с портом HDMI большинства современных телевизоров и компьютерных мониторов. Многие компьютерные мониторы также могут иметь порты DVI или VGA.

Raspberry Pi 4 имеет два порта , что позволяет подключать два отдельных монитора.

Для подключения Raspberry Pi 4 к экрану вам понадобится кабель micro-HDMI к HDMI.

Можно использовать стандартный кабель HDMI к HDMI с адаптером micro-HDMI к HDMI.

Raspberry Pi 1, 2 и 3 имеют один полноразмерный порт , поэтому вы можете подключить их к экрану с помощью стандартного кабеля HDMI к HDMI.

Raspberry Pi Zero имеют один порт . Подключить их к экрану можно с помощью кабеля к . Или можно использовать стандартный кабель HDMI к HDMI с адаптером mini-HDMI к HDMI.

VGA

На некоторых экранах есть только порт VGA.
Чтобы подключить Raspberry Pi к такому экрану, вы можете использовать адаптер к .

Принципы работы интерфейса последовательной связи RS-485

RS-485 представляет собой асинхронный интерфейс последовательной связи, не требующий для своей работы импульсов синхронизации. Для передачи двоичных данных от одного устройства к другому протокол использует дифференциальный сигнал.

Если следовать определению из википедии, дифференциальный сигнал представляет собой способ электрической передачи информации с помощью двух противофазных сигналов. В данном методе один электрический сигнал передаётся в виде дифференциальной пары сигналов, каждый по своему проводнику, но один представляет инвертированный сигнал другого, противоположный по знаку. Пара проводников может представлять собой витую пару, твинаксиальный кабель или разводиться по печатной плате. Приёмник дифференциального сигнала реагирует на разницу между двумя сигналами, а не на различие между одним проводом и потенциалом земли.

В нашем случае дифференциальный сигнал образуется при помощи использования положительного и отрицательного напряжения 5V. Интерфейс RS-485 обеспечивает полудуплексную связь (Half-Duplex) при использовании 2-х линий (проводов) и полноценную дуплексную связь (Full-Duplex) при использовании 4-х линий (проводов).

Основные особенности данного интерфейса:

  1. Максимальная скорость передачи данных в интерфейсе RS-485 – 30 Мбит/с.
  2. Максимальная дистанция связи – 1200 метров, что значительно больше чем в интерфейсе RS-232.
  3. Основным достоинством интерфейса RS-485 по сравнению с RS-232 является использование нескольких ведомых (multiple slave) при одном ведущем (single master) в то время как RS-232 поддерживает только одного ведомого.
  4. Максимальное число устройств, которое можно подключить по интерфейсу RS-485 – 32.
  5. Также к достоинствам интерфейса RS-485 относится хорошая помехоустойчивость вследствие использования дифференциального сигнала.
  6. RS-485 обеспечивает более высокую скорость передачи по сравнению с интерфейсом I2C.

Распиновка CSI разъема камеры

Pin Название Описание
1 Ground Ground
2 CAM1_DN0 Data Lane 0
3 CAM1_DP0
4 Ground Ground
5 CAM1_DN1 Data Lane 1
6 CAM1_DP1
7 Ground Ground
8 CAM1_CN MIPI Clock
9 CAM1_CP
10 Ground Ground
11 CAM_GPIO
12 CAM_CLK
13 SCL0 I²C Bus
14 SDA0
15 +3.3 V Power Supply

CAM1_CN и CAM1_CP

Эти контакты обеспечивают тактовый импульс для полос данных MIPI для первой камеры. Они подключаются к контактам MIPI Clock Positive (MCP) и MIPI Clock (MCN) ICC камеры. Эти тактовые сигналы обычно поступают от модуля камеры, генерируемого схемой MIPI.

SCL0 и SDA0

Меньшая последовательная шина, состоящая из контактов SCL и SDA, обеспечивает последовательную связь, которая позволяет пользователю управлять функциями камеры, такими как выбор разрешений. Эти контакты подключаются непосредственно к ведомому интерфейсу SCCB внутри IC камеры.

Вывод SCL обеспечивает стандартный входной тактовый сигнал последовательного интерфейса и стандартный последовательный интерфейс SDA для ввода/вывода данных.

4.1. Preparing the Raspberry Pi¶

If you’re using Raspbian (desktop — not Raspbian Lite) then you have everything
you need to use the remote GPIO feature. If you’re using Raspbian Lite, or
another distribution, you’ll need to install pigpio:

$ sudo apt install pigpio

Alternatively, pigpio is available from abyz.me.uk.

You’ll need to enable remote connections, and launch the pigpio daemon on the
Raspberry Pi.

4.1.1. Enable remote connections

On the Raspbian desktop image, you can enable Remote GPIO in the Raspberry
Pi configuration tool:

Alternatively, enter on the command line, and enable
Remote GPIO. This is functionally equivalent to the desktop method.

This will allow remote connections (until disabled) when the pigpio daemon is
launched using systemctl (see below). It will also launch the pigpio
daemon for the current session. Therefore, nothing further is required for the
current session, but after a reboot, a systemctl command will be
required.

4.1.2. Command-line: systemctl

To automate running the daemon at boot time, run:

$ sudo systemctl enable pigpiod

To run the daemon once using systemctl, run:

$ sudo systemctl start pigpiod

Способы работы с RPi2

Плату Распберри можно использовать практически для любых целей. О первом, популярнейшем среди владельцев Raspberry Pi 2 model B решении было упомянуто выше. Это полноценный медиаплеер для трансляции аудио, фото и видео с различных источников (сеть, носители информации). Среди альтернатив, менее, но все еще популярными способами остаются:

  1. Игровая консоль. Установив эмуляторы для консольных игр, подключив джойстики по USB и дисплей через HDMI, можно использовать Pi2 в качестве неплохого заменителя консоли. В сети можно найти уже готовую операционную систему RetroPie, в которой предрасположен загрузчик старых игр NES, SEGA, что 20–30 лет назад приобретались на картриджах и дисках, и были на пике популярности.
  2. Умный дом. Мощности миниатюрной платы с лихвой хватит для контроля и управления датчиками, модулями, дисплеями и для передачи информации по сети.
  3. Робототехника. RPi2 можно заметить в роботизированной технике. Плату часто используют в качестве вычислительной базы для проектирования. Дополнительные модули служат мощным инструментом для создания управляемого робота.
  4. Аналоги производственных вычислительных машин. Raspberry Pi 2 model B в силу своих размеров, характеристик и цены может использоваться в производственных масштабах и быть запрограммированным на выполнение конкретных задач.

В родной операционной системе доступна своя версия Minecraft. Производительности миниатюрного ПК хватит, чтобы без лагов играть эмулированные игры из первой «плойки».

GPIO

Из википедии: GPIO или Интерфейс ввода/вывода общего назначения (англ. general-purpose input/output, GPIO) — интерфейс для связи между компонентами компьютерной системы, к примеру микропроцессором и различными периферийными устройствами. Контакты GPIO могут выступать как в роли входа, так и в роли выхода — это, как правило, конфигурируется. GPIO контакты часто группируются в порты.

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

Как я написал ранее, GPIO — это Интерфейс ввода/вывода общего назначения.

Универсальный интерфейс ввода/вывода — это, собственно, то, что означает GPIO и прекрасно описывает работу контактов плат Raspberry Pi. Они очень похожи на штыревые порты Arduino, так как их можно настроить для чтения входов или записи выходов. Эти контакты позволяют вашему Pi взаимодействовать с различными компонентами, такими как кнопки, потенциометры и зуммеры.

По теме: Управление GPIO Raspberry Pi через Node.js

Есть две схемы именования, с которыми вы должны ознакомиться: нумерация WiringPi и Broadcom. Последняя — это то, как официально называют каждый пин, отображен зеленым цветом на изображении выше. WiringPi, библиотека интерфейса GPIO, которую вы, скорее всего, будете использовать. Имеет собственную аппаратно-независимую систему нумерации. Не забывайте проверять, с какому выводом вы на самом деле работаете при программировании Pi.

Элементы платы

Чип BCM2835

Сердце компьютера Raspberry Pi Zero — чип Broadcom BCM2835, который выполнен по технологии SoC (англ. System-on-a-Chip — система на кристалле). Кристалл включает в себя процессор CPU ARM1176JZ-F разогнанный до частоты 1 ГГц и графический двухъядерный сопроцессор GPU VideoCore IV с частотой 250 МГц.

Сверху на чипе BCM2835 по технологии PoP (англ. Package-on-Package — корпус на корпусе) расположена оперативная память Elpida B4432BBPA-10-F объёмом 512 МБ.

Mini-HDMI порт

Разъём предназначен для вывода цифрового видео и звука на мультимедийные устройства. Для коммуникации понадобиться HDMI-кабель с переходником.

Разъём подключения периферии

Порт формфактора micro-USB для подключения мультимедийных устройств со стандартным USB-разъёмом.

Для коммуникации понадобится OTG-переходник USB (F) — USB Micro (M). Для подключения нескольких устройств используйте USB-хаб.

Разъём питания

Разъём формфактора micro-USB предназначен для питания Raspberry Pi.

Потребляемый ток может достигать до 3 ампер. Для стабильной работы
используйте зарядник 5 В совместно с кабелем USB (A — Micro USB).

Cлот для microSD

Слот для карты памяти формата microSD. Используйте карту с установленной Raspberry Pi OS или запишите образ самостоятельно.

Композитный видео выход

Выход аналогового видео сигнала в виде двух пинов под пайку. Сигнал используется для подключения к «тёплым ламповым телевизорам» через RCA-разъём или в просто народе «тюльпан».

Разъём камеры (CSI)

Разъём для подключения камеры Raspberry Pi.

Разъем для камеры на RPi Zero отличается от полноценной Raspberry Pi. Используйте специальную камеру для Raspberry Pi Zero

Регулятор напряжения

Двухканальный импульсный понижающий регулятор напряжения PAM2306AYPKE с выходами 3,3 В и 1,8 В. Максимальный ток каждого канала 1 A.

Добавление кнопки сброса

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

На плате есть два отверстия рядом друг с другом, одно круглое, второе — квадратное. На модели B они отмечены как P6 и находятся рядом с портом HDMI. На более поздних платах они размещаются ближе к портам GPIO и обозначены RUN.

Вы можете приобрести любую кнопку и припаять ее контакты к этим портам. Все что нужно для сброса процессора — это замкнуть эти выходы.

Распиновка разъемов GPIO Raspberry Pi

Внимание! В отличие от плат Arduino, напряжение логических уровней Raspberry Pi является 3,3 В. Максимальное напряжение, которое могут выдержать вход/выходы составляет 3,3 В а не 5 В

Подав напряжение, например 5 В, можно вывести одноплатник из строя.

Таблица распиновки GPIO pin (WiringPi Pin)

WiringPi Pin Назначение Physical Pin Назначение WiringPi Pin
Питание 3.3В 1 2 Питание 5В
8 GPIO 2 (SDA1) I²C 3 4 Питание 5В
9 GPIO 3 (SCL1 ) I²C 5 6 Земля
7 GPIO 4 (GPCLK0) 7 8 GPIO 14 (TXD0) 15
Земля 9 10 GPIO 15 (RXD0) 16
GPIO 17 (GPIO_GEN0) SPI1_CE1 11 12 GPIO 18 (PWM0) SPI1_CE0 1
2 GPIO 27 (GPIO_GEN2) 13 14 Земля
3 GPIO 22 (GPIO_GEN3) 15 16 GPIO 23 4
Питание 3.3В 17 18 GPIO 24 5
12 GPIO 10 (SPI0_MOSI) 19 20 Земля
13 GPIO 9 (SPI0_MISO) 21 22 GPIO 25 6
14 GPIO 11 (SPI0_SCLK) 23 24 GPIO 8 SPI0_CE0 10
Земля 25 26 GPIO 7 SPI0_CE1 11
ID_SD 27 28 ID_SC
21 GPIO 5 (GPCLK1) 29 30 Земля
22 GPIO 6 (GPCLK2) 31 32 GPIO 12 (PWM0) 26
23 GPIO 13 (PWM1) 33 34 Земля
24 GPIO 19 (PWM1) (SPI1_MISO) 35 36 GPIO 16 SPI1_CE2 27
25 GPIO 26 37 38 GPIO 20 (SPI1_MOSI) 28
Земля 39 40 GPIO 21 (SPI1_SCLK) 29
  • Physical Pin: нумерация, отвечающая за физическое расположение контакта на гребенке.
  • GPIO: нумерация контактов процессора Broadcom. Может пригодиться при работе с пакетом .
  • WiringPi Pin: нумерация контактов для пакета Wiring Pi. Это Arduino-подобная библиотека для работы с GPIO-контактами.
  • ШИМ: плата имеет два канала ШИМ по два потока в каждом.

    • PWM0, ;
    • PWM1, .
  • I²C: SDA1, SCL1. Для общения с периферией по синхронному протоколу, через два провода.
  • SPI: К  можно подключить два ведомых устройства, а к  — три. Выбор осуществляется сигналом на пине CEx.

    • SCLK — Serial CLocK
    • CE — Chip Enable (often called Chip Select)
    • MOSI — Master Out Slave In
    • MISO — Master In Slave Out
    • MOMI — Master Out Master In
  • UART: , . Асинхронный протокол последовательной передачи данных по двум проводам  и 

Типы портов по номерам

Теперь можно рассмотреть, какой PIN на Rapsberry Pi за что конкретно отвечает.

Первый ряд:

  • питающие (Power) – 1 и 17 штырек;
  • заземляющие (Ground или RND) – 9, 25 и 39;
  • порты (BCM) – все остальные.

Второй ряд (тот, который предназначен для 5-вольтных устройств) Raspberry распиновку имеет немного другую:

  • питающие являются смежными – 2, 4 пины;
  • заземляющие – 6, 14, 20, 30 и 34;
  • порты – все остальные.

Как можно заметить, нумерация в «Малине» выполняется не сверху вниз по рядам, а по горизонтали. То есть: 1 – 3,3V, 2 – 5V, 3 – порт, 4 – 5V, 5 – порт, 6 – заземление, 7 – порт, 8 – первый порт для 5-вольтных устройств и т.д.

Существует два способа нумерации – по порядку и в соответствии с номерами, использующимися в чипе. Это обусловлено тем, что питающие и заземляющие не имеют своих номеров в формате BCM.

Выше указана нумерация по порядку, тогда как второй вариант обозначается буквами BCM. Именно номера BCM используются при написании программ, однако есть исключения. Например, WiringPi (библиотека для взаимодействия с GPIO) имеет собственную нумерацию. К примеру, 3-у порту, который процессор считает BCM 2, назначает номер WiringPi 8. При написании кода с применением WiringPi нужно ознакомиться с соответствующей схемой.

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

Change Log

0.7.0

  • Updated RPI_INFO to include RPi 4B
  • Fixed pull up/down for Pi4 (issue 168)
  • Fix spelling mistake in docstrings
  • Tested and working on Raspbian Buster + Python 3.8.0b2
  • Fix board detection for aarch64 (Issues 161 / 165)
  • Fix checking mmap return value in c_gpio.c (issue 166)

0.6.4

  • Event cleanup bug (issue 145)
  • Raise exception for duplicate PWM objects (issue 54 — Thijs Schreijer <thijs@thijsschreijer.nl>)
  • Fix build warnings (Issue 146 — Dominik George)
  • test.py runs unchanged for both python 2+3
  • Soft PWM stops running fix (Issues 94, 111, 154)
  • Soft PWM segfault fix (Luke Allen pull request)

0.6.1

  • Update RPI_INFO to detect more board types
  • Issue 118 — add_event_detect sometimes gives runtime error with unpriv user
  • Issue 120 — setmode() remembers invalid mode

0.6.0a3

  • Now uses /dev/gpiomem if available to avoid being run as root
  • Fix warnings with pull up/down on pins 3/5
  • Correct base address on Pi 2 when devicetree is disabled
  • caddr_t error on compile (Issue 109)
  • Error on invalid parameters to setup() (issue 93)
  • Add timeout parameter to wait_for_edge() (issue 91)

0.5.11

  • Fix — pins > 26 missing when using BOARD mode
  • Add getmode()
  • Raise exception when a mix of modes is used
  • GPIO.cleanaup() unsets the current pin mode

0.5.9

  • Issue 87 — warn about pull up/down on i2c pins
  • Issue 86/75 — wait_for_edge() bugfix
  • Issue 84 — recognise RPi properly when using a custom kernel
  • Issue 90 — cleanup() on a list/tuple of channels

0.5.8

  • Allow lists/tuples of channels in GPIO.setup()
  • GPIO.output() now allows lists/tuples of values
  • GPIO.wait_for_edge() bug fixes (issue 78)

0.5.7

  • Issue 67 — speed up repeated calls to GPIO.wait_for_event()
  • Added bouncetime keyword to GPIO.wait_for_event()
  • Added extra edge/interrupt unit tests
  • GPIO.wait_for_event() can now be mixed with GPIO.add_event_detect()
  • Improved cleanups of events
  • Issue 69 resolved

0.5.5

  • Issue 52 — ‘unallocate’ a channel
  • Issue 35 — use switchbounce with GPIO.event_detected()
  • Refactored events code
  • Rewrote tests to use unittest mechanism and new test board with loopbacks
  • Fixed adding events after a GPIO.cleanup()
  • Issue 64 — misleading /dev/mem permissions error
  • Issue 59 — name collision with PWM constant and class

0.5.4

  • Changed release status (from alpha to full release)
  • Warn when GPIO.cleanup() used with nothing to clean up (issue 44)
  • Avoid collisions in constants (e.g. HIGH / RISING / PUD_DOWN)
  • Accept BOARD numbers in gpio_function (issue 34)
  • More return values for gpio_function (INPUT, OUTPUT, SPI, I2C, PWM, SERIAL, UNKNOWN)
  • Tidy up docstrings
  • Fix /dev/mem access error with gpio_function

0.5.3a

  • Allow pydoc for non-root users (issue 27)
  • Fix add_event_detect error when run as daemon (issue 32)
  • Simplified exception types
  • Changed from distribute to pip

0.5.2a

  • Added software PWM (experimental)
  • Added switch bounce handling to event callbacks
  • Added channel number parameter to event callbacks (issue 31)
  • Internal refactoring and code tidy up

0.5.0a

  • Added new edge detection events (interrupt handling)
    — Added add_event_detect()
    — Added remove_event_detect()
    — Added add_event_callback()
    — Added wait_for_edge()
  • Removed old experimental event functions
    — Removed set_rising_event()
    — Removed set_falling_event()
    — Removed set_high_event()
    — Removed set_low_event()
  • Changed event_detected() for new edge detection functionality
  • input() now returns 0/LOW == False or 1/HIGH == True (integers) instead of False or True (booleans).
  • Fix error on repeated import (issue 3)
  • Change SetupException to a RuntimeError so it can be caught on import (issue 25, Chris Hager <chris@linuxuser.at>)
  • Improved docstrings of functions

0.4.0a

  • Added support for Revision 2 boards
  • Added RPI_REVISION
  • Added cleanup() function and removed automatic reset functionality on program exit
  • Added get_function() to read existing GPIO channel functionality (suggestion from Eric Ptak <trouch@trouch.com>)
  • Added set_rising_event()
  • Added set_falling_event()
  • Added set_high_event()
  • Added set_low_event()
  • Added event_detected()
  • Added test/test.py
  • Converted debian to armhf
  • Fixed C function short_wait() (thanks to Thibault Porteboeuf <thibaultporteboeuf@gmail.com>)

0.3.0a

  • Rewritten as a C extension
  • Now uses /dev/mem and SoC registers instead of /sys/class/gpio
  • Faster!
  • Make call to GPIO.setmode() mandatory
  • Added GPIO.HIGH and GPIO.LOW constants

0.2.0

  • Changed status from alpha to beta
  • Added setmode() to be able to use BCM GPIO 00.nn channel numbers
  • Renamed InvalidPinException to InvalidChannelException

0.1.0

  • Fixed direction bug
  • Added MANIFEST.in (to include missing file)
  • Changed GPIO channel number to pin number
  • Tested and working!

Программная реализация ШИМ

GPIO23

Напишем скрипт pwm_soft.py:

Текст скрипта:

Запустим его:

Светодиод будет плавно загораться и плавно гаснуть.

Программная реализация ШИМ позволяет сформировать ШИМ-сигнал на любому выводе. В этом примере мы используем RPi.GPIO для программной генерации ШИМ сигнала. А это значит, что тратятся вычислительные ресурсы микрокомпьютера. Если микрокомпьютер будет отвлекаться на другие задачи, ШИМ сигнал будет искажаться и не будет стабильным. Это не принципиально, если ШИМ применяется для управления яркостью светодиода. Но может стать неприемлемым, когда ШИМ применяется для формирования управляющего сигнала. Например, при управлении сервоприводами программная реализация ШИМ не может стабильно удерживать сервоприводы в заданном положении. Это заметно на видео ниже.

Raspberry Pi имеет техническую возможность использовать аппаратный ресурс для генерации ШИМ.

Пины питания и заземления

Контакты питания и заземления используются для питания внешних цепей. Все Raspberry Pi со стандартными контактами 40 GPIO будут иметь два контакта 5В и два контакта 3.3В, всегда в одном и том же месте.

Наряду с контактами 5 В и 3,3 В доступны 8 заземляющих контактов (GND). Контакты питания и заземления позволяют питать ваши компоненты Raspberry Pi, такие как светодиоды и двигатели. Однако помните, что перед тем, как на что-либо подавать питание через эти контакты, всегда следует устанавливать надлежащие компоненты или внешнюю схему. Питание чего-либо со слишком большим током или значительными скачками напряжения, например, двигатель без соответствующего контроллера мотора, повредит контакты и может сделать их непригодными для использования.

Оцените статью
Рейтинг автора
5
Материал подготовил
Илья Коршунов
Наш эксперт
Написано статей
134
Добавить комментарий