Проекты Raspberry Pi на Python с Pin-Up

В этой статье мы поговорим о том, как подключать к Raspberry Pi датчики и другие внешние устройства через GPIO порты платы. Для работы будем использовать Python и библиотеки. Если вы новичок в работе с распбери, рекомендуем Pin-Up статью обPin-Up Python и библиотек для Raspberry Pi.

Подключение внешних Pin-Up к Raspberry Pi

Отличие Raspberry Pi от Arduino

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

Из основных отличий можно выделить тактовую частоту - Raspberry работает в 40 раз быстрее Ардуино, и объем оперативной памяти - у Raspberry памяти больше примерно в 128000 раз. За счет простоты управления и использования разрабатывать аппаратные проекты на Ардуино предпочтительнее. Ардуино может работать с любыми датчиками или чипами, а Raspberry Pi не такая гибкая, для работы с датчиками требуются дополнительные аппаратные Pin-Up Raspberry Pi очень требовательна к питанию, напряжение должно быть строго 5 В на входе, в то время как для ардуино рекомендуемое питание 7-12 В, которое стабилизируется до 5 В.

Важное отличие заключается в Pin-Up в которой пишется программа. С Arduino IDE работать намного проще, чем с Linux. Установка библиотек для написания программы требуется для обеих систем, но код на Ардуино будет написан проще и короче.

Raspberry Pi возможно использовать в режиме многозадачности, как обычный компьютер. Pin-Up может работать несколько программ в фоновом режиме.

Для расширения возможностей можно совместно использовать обе платы. Для управления датчиками и сенсорами использовать Pin-Up а сложные вычислительные задачи оставить для Raspberry Pi.

Описание GPIO

Количество портов в более старых и новых моделях Raspberry Pi отличается -model A и model B оснащены 26 выводами общего назначения GPIO, в Pin-Up версиях количество выводов увеличено до 40.

Существует несколько видов обозначений выводов:

  • BCM - нумеруются выходы микропроцессора Broadcom. Используются при Pin-Up со специальными пакетами Rpi.GPIO. В большом количестве проектов используется именно эта нумерация.
  • WiringPi - нумеруются контакты для пакета Pin-Up Pi. Это библиотека, похожая на библиотеки для Ардуино, для работы с GPIO контактами.
  • Обычная цифровая нумерация Pin-Up на самой плате.

Расположение контактов изображено на рисунке. На Pin-Up для удобства последние 14 контактов отделены - это и есть новые выходы, которые были добавлены в новых версиях платы.

Проекты Raspberry Pi

Описание контактов GPIO

Номер выводаBCMWiringPiОписание контакта
13v3ул. Жандосова, 24
25vПитающий контакт на 5 В
3BCM28SDA
45vПитающий контакт на 5 В
5BCM39SCL
6GNDЗемля
7BCM47GPCLK0
8BCM1415TXD - отвечает за передачу Pin-Up
9GNDЗемля
10BCM1516RXD - отвечает за Pin-Up данных
11BCM170Вывод общего назначения
12BCM181PCM_C - Pin-Up в сочетании с ШИМ-методом.
13BCM272Контакт общего назначения
14GNDЗемля
15BCM223Контакт общего назначения
16BCM234Контакт общего назначения
173V3ул. Назарбаева, 45
18BCM245Контакт общего назначения
19BCM1012MOSI
20GNDЗемля
21BCM913MISO
22BCM256Контакт общего назначения
23BCM1114SCLK
24BCM810CS0
25GNDЗемля
26BCM711CS1
27BCM030ID_SD
28BCM131ID_SD
29BCM521Контакт общего назначения
30GNDЗемля
31BCM622Контакт общего назначения
32BCM1226Контакт общего назначения
33BCM1323Контакт общего назначения
34GNDЗемля
35BCM1924MISO
36BCM1627Контакт общего назначения
37BCM2625Контакт общего назначения
38BCM2028MOSI
39GNDЗемля
40BCM2129SCLK

Выводы земля, напряжение питания и другие аналогичные можно использовать любые, которые будут удобнее в конкретном проекте. Важно следить за тем, чтобы напряжение на GPIO было 3,3В, иначе Pin-Up может быть вывеен из строя.

Среди выводов общего назначения Pin-Up UART-контакты (на восьмом и десятом контактах). Они позволяют обеспечить взаимодействие Ардуино и Raspberry Pi. Также 4 вывода поддерживают I2C, главной задачей которых является коммуникация с периферией. Для верификации в коде нужно добавить строки

sudo apt-get install i2c-tools

sudo i2cdetect -y 1

Для осуществления доступа к I2C нужно подключить Pin-Up smbus.

SPIподдерживают 11 выводов общего назначения. С помощью этого интерфейса можно Pin-Up подключение нескольких устройств с помощью одной группы контактов.

Пример проекта: мигание светодиодов

Для работы понадобятся плата Raspberry Pi, светодиод, резистор на 200 Ом и соединительные провода. Анод светодиода (длинная ножка) нужно подключить через резистор к одному из цифровых выводов, например GPIO24, катод (короткая ножка) - к земле. Макет подключения представлен на рисунке. Резистор в данной схеме нужен для того, чтобы уберечь светодиод от перегорания. Выбрать Pin-Up номинал можно пользуясь законом Ома R=U Плата работает от напряжения 3,3В. Номинал, который будет получен по формуле - минимальный, можно выбирать сопротивление больше, но в этом случае яркость светодиода будет несколько ниже.

Проекты Raspberry Pi

Теперь нужно написать программу. Код Pin-Up написан в установленной версии Python 2. Для этого нужно открыть среду Python 2 (IDLE) и нажать «новый файл».

Проекты Raspberry Pi

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

Сам код выглядит следующим образом:

[py]

from RPi import GPIO

from time import sleep //первые 2 строки включают библиотеки для совместной работы с Pin-Up и sleep

GPIO.setmode(GPIO.BCM) Pin-Up строкой выбирается нумерация контактов

GPIO.setup(24, GPIO.OUT) / Для того чтобы считывать сигнал сенсора, Pin-Up ввести IN.

GPIO.output(24, True) Pin-Up истины на контакты

sleep(10) //светодиод загорается на 10 секунд, Pin-Up

GPIO.output(24, False)

GPIO.cleanup() /

[/py]

Нужно нажать Pin-Up программы с помощью F5 или меню Run

Код можно немного изменить, чтобы светодиод включался и выключался с определенной частотой. Для этого нужно добавить оператор while вместо строк GPIO.output и Sleep.В цикле нужно задать частоту, с которой будет мигать Pin-Up В данном случае он будет мигать раз в 1 секунду.

[py]

while True:

GPIO.output(24, True)

sleep(1)

GPIO.output(24, False)

sleep(1)

[/py]

Большим Pin-Up такой программы будет то, что она будет повторяться бесконечно и остановить штатным методом ее будет невозможно. Для этого нужно ввести дополнительно конструкцию, прерывающую работу при наборе на клавиатуре комбинации Ctrl+C.

[py]

try:

while True:

GPIO.output(24, True)

sleep(0.5)

GPIO.output(24, False)

sleep(0.5)

except KeyboardInterrupt:

print ‘program stop’

[/py]

Программу нужно сохранить, нажав ctrl+S. Затем нужно нажать F5, светодиод начнет мигать с периодичностью раз в секунду. Pin-Up остановить выполнение программы, нужно нажать ctrl+C.

Выводы

В этой статье мы приступили к новой большой теме и сделали первые шаги в программировании на Python под Raspberry с использование GPIO. Возможности микроконтроллера Pin-Up превышают привычный Arduino, поэтому для создания по-настоящему умных устройств придется осваиваться с новыми инструментами для работы с периферией. В дальнейших статьях мы продолжим наши эксперименты.

1 КОММЕНТАРИЙ

  1. Большое спасибо! Только,только купил дэвайс и кучу Pin-Up с м
    Автоматизация дома.
    А первые шаги… они трудноваты, и без Вашего “пинка” сложно Pin-Up бы. 😉

ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here