Что нужно знать о портах ввода-вывода raspberry pi. часть 2
Содержание:
- Распиновка
- Принципы ШИМ
- Тестирование Raspberry Pi 4
- Подключение к 5-вольтовй логике
- SPI — Serial Peripheral Interface
- Характеристики Raspberry Pi 4 model B
- Элементы платы
- Вступление
- Исходный код программы
- Объяснение программы для Arduino Uno
- Распиновка
- Распиновка GPIO Raspberry Pi 4 model b
- GPIO
- Генератор тональных сигналов
- Заключение
Распиновка
На Raspberry Pi Zero расположены два ряда по 20 контактов в виде луженных отверстий.
Пины питания
- 5V: На вывод поступает напряжение 5 В при подключении платы через USB.
- 3V3: Пин от стабилизатора напряжения с выходом 3,3 вольта и максимальных током 1 А. Регулятор обеспечивает питание процессора и других элементов платы.
- GND: Выводы земли.
Порты ввода/вывода
В отличие от платформ с логическим напряжением 5 В, напряжение логических уровней Raspberry Pi является 3,3 В. Выходы для логической единицы выдают 3,3 В, а в режиме входа ожидают принимать не более 3,3 В. Более высокое напряжение может повредить одноплатник.
Будьте внимательны при подключении периферии: убедитесь, что она может корректно функционировать в этом диапазоне напряжений.
-
Цифровые входы/выходы: На плате расположено 26 контактов пинов ввода-вывода GPIO.
Логический уровень единицы — 3,3 В, нуля — 0 В. Максимальный ток выхода — 16 мА. В мире Raspberry Pi закрепилось три нумерации контактов:- Board Pin Name: физическое нумерация контактов на гребенке.
- BCM Pin Name: нумерация контактов процессора Broadcom.
- WiringPi Pin Name: нумерация контактов для пакета Wiring Pi.
-
PWM: Два канала ШИМ по два потока в каждом.
-
PWM0: пин или
-
PWM1 пин или
-
-
пины и
-
пины и
-
-
SPI0: пины , , , и
-
SPI1: пины , , , , и
К SPI0 можно подключить два ведомых устройства, а к SPI1 — три. Выбор осуществляется сигналом на пине .
-
Принципы ШИМ
Для формирования ШИМ в Raspberry Pi используется один из цифровых выходов, на котором генерируется серия импульсов высого и низкого уровня. Управляя долей времени, в течение которого подаются импульсы высокого уровня, можно управлять общей подачей мощности на интересующее нас устройство (например, двигатель или светодиод).
Принцип ШИМ (широтно-импульсной модуляции) показан на следующем рисунке.
Если выключатель на этой схеме будет постоянно замкнут, то светодиод в схеме будет постоянно гореть. Если выключатель будет замкнут первые полсекунды, а вторые полсекунды будет разомкнут, то светодиод будет гореть только первые полсекунды. Отношение длительности импульса к периоду его следования называется коэффициентом заполнения (duty cycle)
В некоторых источниках его также называют скважностью или рабочим циклом. Его можно рассчитать по следующей формуле:
Duty Cycle =Turn ON time/ (Turn ON time + Turn OFF time)
Если импульсы соответствуют включенному состоянию на протяжении лишь 5% всего времени цикла (коэффициент заполнения равен 5%), то на двигатель будет поступать не слишком много энергии, и он станет вращаться очень медленно (либо светодиод будет светить тускло). Стоит повысить коэффициент заполнения до 50% — и двигатель или светодиод получат половину мощности, соответственно, скорость вращения или яркость составят примерно половину от максимума. Если коэффициент заполнения возрастет до 90% , то двигатель будет вращаться почти с полной скоростью, а светодиод — светить в полную силу.
Тестирование Raspberry Pi 4
Стресс-тест
Прежде чем приступать к тестированию я оценил эффективность использующегося охлаждения, установив утилиту stress:
sudo apt-get install stress
И выполнив следующую команду:
while true; do vcgencmd measure_clock arm; vcgencmd measure_temp; sleep 10; done& stress -c 4 -t 2100
Эта команда запускает выполнение утилиты stress, обеспечивающей 100% нагрузку на все 4 ядра в течение 35 минут. Параллельно выводятся текущие значения температуры и частоты процессора.
Начальная температура процессора составляла 45°C. При повышении нагрузки она быстро повысилась до 54°C, затем вышла на плато с колебаниями в пределах 56°C – 59°C. За первые 15 минут температура доросла до 61°C. К моменту окончания тестирования максимальное значение температуры составило 64°C.
Напомню, что предельная рабочая температура процессора Raspberry Pi составляет 85°C, а троттлинг начинается на 82°C.
Таким образом, использующийся в обзоре корпус подтвердил свою эффективность при использовании в качестве пассивного охлаждения и я могу рекомендовать его к покупке.
Использование в качестве десктопа: субъективные впечатления
Когда я тестировал Khadas Edge, то отметил, что при наличии 4 Гб оперативной памяти и более-менее производительного процессора использовать ARM-микрокомпьютер в качестве десктопа становится комфортно.
Нет, система не летает как на современных компьютерах с традиционной x86 архитектурой. Но уже и не выводит из себя постоянными микроподтормаживаниями после каждого действия.
С Raspberry Pi ситуация аналогичная: система не летает, но работает достаточно сносно для того, чтобы не вызывать дискомфорта. Ей вполне можно пользоваться в качестве десктопа. Особенно если речь идет о гараже, даче, мастерской – тех местах, где наличие компьютера не требуется на повседневной основе, но все же не помешало бы.
Веб-серфинг и YouTube
“Тяжелые” сайты на Raspberry Pi 4 грузятся медленнее, чем на ПК. Там, где на хорошем ПК загрузка страницы займет пару секунд, на малине придется подождать секунд 5-6. Но уже прогруженной страницей можно нормально пользоваться, ничего не дергается и не подвисает при скролле.
Видео в 1080p на YouTube идет с едва заметными подергиваниями. Зато в 720p все идеально.
Проблемы с Wi-Fi
Так и не смог оценить качество беспроводного соединения при подключении к беспроводной сети в 5 Ггц диапазоне.
Во-первых, Wi-Fi-адаптер “малинки” обладает очень низкой чувствительностью и даже будучи вытащенным из металлического корпуса и расположенным в метре от роутера умудряется иногда отображать низкий уровень сигнала.
Во-вторых, соединение с 5 Ггц беспроводной сетью постоянно рвется по непонятным для меня причинам. Попытки переключения каналов ситуацию не улучшили. Возможно предназначенный для китайского рынка Xiaomi Mi Router 4 имеет какие-то особенности, несовместимые с микрокомпьютером, создававшимся в первую очередь для рынка британского, но подобных проблем с другими устройствами у меня никогда не возникало.
Впрочем, проблемы с работой Wi-Fi я не считаю серьезными, поскольку убежден что при наличии у устройства Ethernet-адаптера нужно пользоваться именно проводным подключением к сети. А тут у Raspberry Pi 4 все обстоит хорошо.
Тестирование производительности
Для тестирования производительности использовался пакет Phoronix Test Suite и браузерный бенчмарк Octane 2.0.
Khadas Edge | Raspberry Pi 3 | Raspberry Pi 4 | |
PostMark (Disk perfomance) больше – лучше |
1282 | 88 | 94 |
RAMSpeed SMP (Integer) больше – лучше |
4713.37 | 1692.45 | 3941.44 |
RAMSpeed SMP (Floating point) больше – лучше |
4691.84 | 1580.41 | 3814.39 |
C-Ray (CPU perfomance) меньше – лучше |
632.93 | 2831.820* | 648.866 |
Octane 2.0 | 7024 | 2685 | 8382 |
* во время проведения теста начался троттлинг
Непонятными для меня остаются результаты теста C-Ray: и в случае с Khadas Edge и в случае с Raspberry Pi 4 я ожидал значительно лучших результатов. И если в случае с Edge имеющийся результат можно было оправдать перегревом, то в случае с Raspberry Pi 4 троттлинга в процессе проведения этого теста не было.
Подключение к 5-вольтовй логике
Прямое подключение устройств с 5-вольтовыми логическими выходами к входам RPi может вывести плату из строя. В этом случае есть множество решений.
Если состояние 5-вольтового логического выхода меняется относительно медленно, можно рассмотреть возможность использования резистивного делителя на входе RPi, но к быстрым схемам такой способ не применим. Тогда намного более хорошим решением будет использование буферной микросхемы. Для средних скоростей (до 100 кГц) вполне подойдет схема на N-канальном MOSFET ZVN2110A (Рисунок 16). Эта схема также инвертирует входной сигнал.
Рисунок 16. | Схема простого преобразователя логических уровней. |
Показанный на схеме транзистор можно заменить на ZVNL120A или VN10LP.
При пайке полевых транзисторов следует соблюдать основные меры предосторожности. При сборке устройства сначала установите резистор R3 и только после этого извлеките MOSFET из защитной упаковки и запаяйте в схему
Резистор R3 обеспечит некоторую защиту.
SPI — Serial Peripheral Interface
SPI is another protocol for connecting compatible devices to your Raspberry Pi. It is similar to I2C in that there is a master slave relationship between the Raspberry Pi and the devices connected to it.
Typically SPI is used to send data over short distances between microcontrollers and components such as shift registers, sensors and even an SD card. Data is synchronised using a clock (SCLK at GPIO11) from the master (our Pi) and the data is sent from the Pi to our SPI component using the MOSI (GPIO GPIO10) pin. MOSI stands for Master Out Slave In. If the component needs to reply to our Pi, then it will send data back using the MISO pin (GPIO9) which stands for Master In Slave Out.
Характеристики Raspberry Pi 4 model B
В стандартную комплектацию входят следующие элементы: материнская плата, блок питания 5В с USB, пластиковый корпус с вентилятором, сетевой кабель CAT.5e, кабель microHDMI-HDMI (длина 2 м), карта памяти microSD 1 ГБ с установленной операционной системой Raspbian. Таким образом вам не нужно беспокоиться о поиске совместимого источника питания, об установке и настройке ОС и дополнительных аксессуарах.
Технические характеристики Raspberry Pi 4
- Частота: 1500 МГц, Broadcom BCM2711, Cortex-A72
- Количество ядер: Четыре
- Оперативная память: 1 ГБ, 2 ГБ, 4 ГБ, LPDDR4, SDRAM
- Интегрированная графика: VideoCore VI 500 МГц
- Контроллер звука: Интегрированный
- Интерфейс: Wi-Fi 802.11ac, Bluetooth 5.0 LE, гигабитовый Ethernet RJ-45
- Скорость передачи данных по LAN: 1000 Мб Ethernet RJ-45
- Порты: microHDMI, UART, SPI, I2C, аудиовыход 3.5 мм, USB 3.0, USB 2.0
- Постоянная память: microSD
- Питание: 5 В, 3 А через microUSB
- Интерфейсы взаимодействия: DSI, CSI, 40-pin GPIO
Миниатюрный компьютер Raspberry Pi 4 model B 8Gb
Настройка одноплатного компьютера
Операционная система, установленная по умолчанию на карту памяти, Raspbian основана на популярном и стабильном программном обеспечении Linux Debian 10, используемая на серверах. Для менее производительных компьютеров в Raspbian используется облегченная среда рабочего стола. Все управление производится, как в Microsoft Windows с помощью левого и правого щелчка кнопок мыши.
В Raspbian панель задач находится вверху, в нем размещены предустановленные программы, включая Libre Office (аналог MS Office), браузер Chromium, инструменты для программирования и простые аксессуары — все это знакомо для пользователей, которые ранее работали в Linux. При необходимости программы можно установить с помощью утилиты «Установка и удаление программного обеспечения».
Raspberry Pi 4 операционные системы
Кого не устроит интерфейс Raspbian, есть возможность установить операционную систему на Raspberry Pi 4 b от других поставщиков программного обеспечения — Windows 10 IoT Core (для привыкших к среде Microsoft) или OSMC (для создания мультимедийного центра). Можно протестировать и другие ОС, например, LibreELEC, Ubuntu MATE или RISC OS, которые подходят для выполнения разных задач.
Raspberry Pi 4 операционные системы (Raspberry Pi 4 8Gb)
Что можно сделать на Raspberry Pi 4b
Raspberry — это компьютер, который имеет огромный потенциал, при этом размер его платы сравнимы с кредитной картой. Мини-компьютер можно превратить в медиаплеер, игровую консоль, сетевой диск или создать на его базе систему Smart Home. По словам разработчиков, последняя версия Распберри настолько эффективна, что плату можно использовать в качестве небольшого домашнего компьютера.
Заключение. «Малинка» четвертой версии — впечатляет своими возможностями, кроме образовательных целей, устройство можно использовать в качестве полноценного компьютера, который будет иметь два порта microHDMI, двухдиапазонный Wi-Fi, Bluetooth 5.0 и гигабитовый Ethernet RJ-45. Raspberry Pi 4Gb способен научить программированию или основам робототехники.
Элементы платы
Чип 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 — это проект, который уже много лет пользуется большой популярностью. Это компьютер размером с кредитную карту, который недорог и имеет огромный потенциал. Его можно превратить в медиаплеер, консоль в стиле ретро, сетевой диск, а также создать на его базе систему мониторинга или Smart Home. Кроме того, не многие образовательные приложения производят впечатление, а маленький Raspberry Pi способен научить программированию или основам робототехники. По словам производителя, последняя версия настолько эффективна, что ее даже можно использовать в качестве домашнего компьютера. Действительно ли такое возможно? Этот обзор станет ответом на заданный вопрос.
Официальная дата выхода 4-ой малинки — 24 июня 2019 года. Чуть позже он был выпущен в продажу. Поклонники микрокомпьютеров достаточно тепло встретили эту модель. Надо сказать, они имели на это причины. Пользователи предыдущих моделей Малинки (так многие нежно называют этот компьютер) привыкли к широкому спектру возможностей, сравнимых с более слабыми настольными ПК.
Исходный код программы
Комментарии к коду программы поясняют смысл отдельных команд.
Python
import RPi.GPIO as IO # подключение библиотеки для работы с контактами ввода/вывода
import time # подключение библиотеки для работы с задержками
IO.setwarnings(False) # отключаем показ любых предупреждений
IO.setmode (IO.BCM) # мы будем программировать контакты GPIO по их функциональным номерам (BCM), то есть мы будем обращаться к PIN35 как ‘GPIO19’
IO.setup(19,IO.OUT) # инициализируем GPIO19 в качестве цифрового выхода
p = IO.PWM(19,100) # настраиваем GPIO19 в качестве ШИМ выхода с частотой ШИМ сигнала 100 Гц
p.start(0) # начинаем формирование ШИМ сигнала с коэффициентом заполнения 0%
while 1: # бесконечный цикл
for x in range (50): # исполняем цикл 50 раз, x инкрементируется от 0 до 49.
p.ChangeDutyCycle(x) # изменяем коэффициент заполнения ШИМ чтобы изменить яркость свечения светодиода
time.sleep(0.1) # задержка на 100 мс
for x in range (50): # исполняем цикл 50 раз, x инкрементируется от 0 до 49.
p.ChangeDutyCycle(50-x) # изменяем коэффициент заполнения ШИМ чтобы изменить яркость свечения светодиода
time.sleep(0.1) # задержка на 100 мс
1 |
importRPi.GPIO asIO# подключение библиотеки для работы с контактами ввода/вывода importtime# подключение библиотеки для работы с задержками IO.setwarnings(False)# отключаем показ любых предупреждений IO.setmode(IO.BCM)# мы будем программировать контакты GPIO по их функциональным номерам (BCM), то есть мы будем обращаться к PIN35 как ‘GPIO19’ IO.setup(19,IO.OUT)# инициализируем GPIO19 в качестве цифрового выхода p=IO.PWM(19,100)# настраиваем GPIO19 в качестве ШИМ выхода с частотой ШИМ сигнала 100 Гц p.start()# начинаем формирование ШИМ сигнала с коэффициентом заполнения 0% while1# бесконечный цикл forxinrange(50)# исполняем цикл 50 раз, x инкрементируется от 0 до 49. p.ChangeDutyCycle(x)# изменяем коэффициент заполнения ШИМ чтобы изменить яркость свечения светодиода time.sleep(0.1)# задержка на 100 мс forxinrange(50)# исполняем цикл 50 раз, x инкрементируется от 0 до 49. p.ChangeDutyCycle(50-x)# изменяем коэффициент заполнения ШИМ чтобы изменить яркость свечения светодиода time.sleep(0.1)# задержка на 100 мс |
Объяснение программы для Arduino Uno
В качестве ведомой стороны (Slave) в нашем проекте выступает плата Arduino Uno, которая будет получать данные от ведущей стороны (Master). Сервомотор будет поворачиваться на угол, значение которого будет приниматься от ведущей стороны. Также значение этого угла будет высвечиваться на экране ЖК дисплея. Таким образом, в программе для Arduino нам необходимо использовать библиотеку для работы с сервомотором и библиотеку для работы с ЖК дисплеем. Для программирования платы Arduino будет использоваться среда Arduino IDE.
Примечание: поскольку плата Arduino Uno будет принимать с ведомого модуля RS-485, то на контакты DE & RE модуля необходимо подать напряжение низкого уровня (LOW).
Первым делом в программе нам необходимо подключить используемые библиотеки.
Arduino
#include <LiquidCrystal.h>
#include <Servo.h>
1 |
#include <LiquidCrystal.h> #include <Servo.h> |
Далее нам необходимо сообщить плате Arduino к каким ее контактам подключен ЖК дисплей и инициализировать объект сервомотора.
Arduino
LiquidCrystal lcd(8,9,10,11,12,13); // Define LCD display pins RS,E,D4,D5,D6,D7
Servo servo;
1 |
LiquidCrystallcd(8,9,10,11,12,13);// Define LCD display pins RS,E,D4,D5,D6,D7 Servoservo; |
Затем на экране ЖК дисплея покажем приветственное сообщение и после этого очистим его.
Arduino
lcd.begin(16,2);
lcd.print(«CIRCUIT DIGEST»);
lcd.setCursor(0,1);
lcd.print(«RS_485»);
delay(3000);
lcd.clear();
1 |
lcd.begin(16,2); lcd.print(«CIRCUIT DIGEST»); lcd.setCursor(,1); lcd.print(«RS_485»); delay(3000); lcd.clear(); |
Далее инициализируем последовательную связь со скоростью 9600 бод/с.
Arduino
Serial.begin(9600);
1 | Serial.begin(9600); |
Подаем на контакты DE & RE модуля RS-485 напряжение низкого уровня (LOW) чтобы он работал в качестве ведомого устройства (slave).
Arduino
digitalWrite(enablePin, LOW);
1 | digitalWrite(enablePin,LOW); |
Сервомотор подключен к контакту 3 платы Arduino (на нем можно использовать ШИМ), поэтому подключаем к нему объект сервомотора в программе.
Arduino
servo.attach(3);
1 | servo.attach(3); |
Далее в бесконечном цикле loop мы будем использовать функцию Serial.paseInt() чтобы принимать данные целого типа (Angle) из последовательного порта, которые передаются нам платой Raspberry Pi.
Arduino
int angle = Serial.parseInt();
1 | intangle=Serial.parseInt(); |
Затем принятое значение угла используем в команде управления сервомотором.
Arduino
servo.write(angle);
1 | servo.write(angle); |
И, наконец, показываем принятое значение угла поворота сервомотора на экране ЖК дисплея.
Arduino
lcd.setCursor(0,0);
lcd.print(«Angle From RPi «);
lcd.setCursor(0,1);
lcd.print(angle);
1 |
lcd.setCursor(,); lcd.print(«Angle From RPi «); lcd.setCursor(,1); lcd.print(angle); |
Распиновка
На Raspberry Pi Zero расположены два ряда по 20 контактов в виде луженных отверстий.
Пины питания
- 5V: На вывод поступает напряжение 5 В при подключении платы через USB.
- 3V3: Пин от стабилизатора напряжения с выходом 3,3 вольта и максимальных током 1 А. Регулятор обеспечивает питание процессора и других элементов платы.
- GND: Выводы земли.
Порты ввода/вывода
В отличие от платформ с логическим напряжением 5 В, напряжение логических уровней Raspberry Pi является 3,3 В. Выходы для логической единицы выдают 3,3 В, а в режиме входа ожидают принимать не более 3,3 В. Более высокое напряжение может повредить одноплатник.
Будьте внимательны при подключении периферии: убедитесь, что она может корректно функционировать в этом диапазоне напряжений.
-
Цифровые входы/выходы: На плате расположено 26 контактов пинов ввода-вывода GPIO.
Логический уровень единицы — 3,3 В, нуля — 0 В. Максимальный ток выхода — 16 мА. В мире Raspberry Pi закрепилось три нумерации контактов:- Board Pin Name: физическое нумерация контактов на гребенке.
- BCM Pin Name: нумерация контактов процессора Broadcom.
- WiringPi Pin Name: нумерация контактов для пакета Wiring Pi.
-
PWM: Два канала ШИМ по два потока в каждом.
-
PWM0: пин или
-
PWM1 пин или
-
-
пины и
-
пины и
-
-
SPI0: пины , , , и
-
SPI1: пины , , , , и
К SPI0 можно подключить два ведомых устройства, а к SPI1 — три. Выбор осуществляется сигналом на пине .
-
Распиновка GPIO Raspberry Pi 4 model b
GPIO Raspberry Pi 4b распиновка платы
Интерфейс новинки был обновлен и значительно расширен по сравнению с 3 моделью «малинки». На верхней стороне платы находится 40-контактный разъем GPIO, выходы MIPI DSI и MIPI CSI для дисплеев и камер. Рядом с разъемами GPIO размещен экранированный модуль для Wi-Fi и Bluetooth 5.0. Слот для microSD размещен внизу платы. Рядом с процессором находится ОЗУ DDR4, заменившая модуль DDR2.
На длинной стороне размещен аудиовыход 3,5 мм и два входа microHDMI, на короткой стороне размещено USB 2.0 и два USB 3.0. Корпус микрокомпьютера имеет продуманный дизайн, состоит из пластиковых панелей, которые собираются на защелки и винты из комплекта. Вентилятор следует установить на корпусе непосредственно над процессором и подключить для питания к разъемам GPIO — 4 и 6.
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.
Генератор тональных сигналов
Более интересным примером может служить использование нескольких портов GPIO для управления тональным генератором. У RPi есть разъем для подключения наушников, но часто для оповещения о событиях (например, для будильника) достаточно простого сигнала или серии сигналов разной тональности.
Рисунок 5. | Генератор звуковых сигналов, управляемый от RPi по двум линиям GPIO. |
Принципиальная схема простого генератора звуковых сигналов, выполненного на микросхеме интегрального таймера ICM7555, изображена на Рисунке 5. Вид конструкции, собранной на макетной плате, показан на Рисунке 6. Меняя номиналы резистора и конденсатора, можно создавать разные тональные сигналы и звуки.
Рисунок 6. | Генератор звуковых сигналов, собранный на беспаечной макетной плате. |
Управление генератором осуществляется посредством двух портов GPIO RPi. Один выход (GPIO22) используется для включения или выключения звука, а второй (GPIO27) – для переключения между двумя альтернативными частотами сигнала. При желании можно выбрать другие тона, изменив номиналы компонентов C1, R1 и R2.
Исходный код программы на языке Python, генерирующей несколько звуковых эффектов, приведен в Листинге 4. Сохраните код в файле с именем tone-test.py и затем запустите на выполнение командой
sudo python tone-test.py.
Листинг 4. Программа управления генератором звуковых сигналов.
import time
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(22, GPIO.OUT) # Вкл/Выкл генератора
GPIO.setup(27, GPIO.OUT) # Изменение тональности
GPIO.output(22, True)
for x in range(0,5):
GPIO.output(27, True)
time.sleep(0.1)
GPIO.output(27, False)
time.sleep(0.2)
GPIO.output(22, False)
time.sleep(0.5)
for x in range(0,5):
GPIO.output(22, True)
time.sleep(0.1)
GPIO.output(22, False)
time.sleep(0.2)
GPIO.output(27, True)
time.sleep(0.2)
for x in range(0,5):
GPIO.output(22, True)
time.sleep(0.05)
GPIO.output(22, False)
time.sleep(0.05)
for x in range(0,10):
GPIO.output(22, True)
time.sleep(0.1)
GPIO.output(22, False)
time.sleep(0.1)
time.sleep(1)
GPIO.cleanup()
Обратите внимание, что схема питается напряжением 3.3 В (вывод 1 разъема GPIO). Используйте этот источник только в том случае, если уверены, что ваша схема не потребляет значительный ток
Шину питания 3.3 В можно нагружать током до 50 мА. При необходимости можно воспользоваться отдельным регулятором напряжения 5 В – 3.3. В и подключить его к источнику питания 5 В, доступному на выводе 2 разъема GPIO.
Заключение
Закончить обзор можно выводом, что Raspberry четвертой версии — впечатляющий микрокомпьютер. Его возможности огромны и на этот раз, кроме образовательных и профессиональных приложений, прибор можно использовать в качестве компьютера для серфинга в сети, офисных программ и мультимедиа. Учитывая цену и габариты, нетребовательных пользователей он удовлетворит полностью. Новый интерфейс USB C, два microHDMI, быстрые порты USB 3.0, гигабитный интернет, двухдиапазонный Wi-Fi и Bluetooth 5.0 — тоже производят немалое впечатление.
Тем не менее, его рабочая температура высокая, поэтому в некоторых случаях невозможно обойтись без вентилятора. Могут возникнуть проблемы с совместимостью с кабелями USB Type-C и блоками питания.
Стоит ли тогда покупать Pi 4B? Скорее всего, да. Стоит он в среднем 25 долларов за версию с 1 ГБ ОЗУ, $45 за 2 ГБ ОЗУ и около $50 за 4 ГБ ОЗУ. Этого достаточно, чтобы использовать его в роли ПК, применять инструменты разработки и получить доступ к экосистеме. Есть одно условие — необходимо быть продвинутым пользователем. Неопытные люди могут не справиться с некоторыми проблемами, но на форумах всегда найдется помощь.