Raspberry pi blog
Содержание
- 1 Что такое колодка GPIO
- 2 Как управлять пинами GPIO на любом языке программирования
- 3 Source/values properties
- 4 Making the GPIO expander work
- 5 GPIO Zero documentation and resources
- 6 Через что возможно взаимодействовать с GPIO Raspberry
- 7 Что может сделать Raspberry Pi 3 Model A +?
- 8 Configuration
- 9 Светодиод и кнопка — правильное и неправильное подключение
- 10 Охлаждение и нагрев
- 11 General Purpose Input Output (GPIO) Pins
- 12 SPI — Serial Peripheral Interface
- 13 Распиновка разъемов GPIO
- 14 Подготовка к включению и первый запуск.
- 15 Pull up / Pull down resistors
- 16 Устройство GPIO
- 17 What is this magic?
- 18 Использование пинов и меры безопасности
- 19 Чем Raspberry Pi 3 Model A + отличается от Raspberry Pi 1 Model A +?
- 20 Developing GPIO Zero
- 21 Типы портов по номерам
- 22 Вывод
- 23 Заключение
Что такое колодка GPIO
GPIO — сокращение, означающая General-Purpose Input-Output, или общий интерфейс ввода/вывода. Он содержит цифровые входы и выходы для подключения датчиков, разнообразных контроллеров, дисплеев, реле и прочей электронной периферии. Внешне GPIO похож на «гребенку» из штырьков-пинов. В Raspberry Pi 3 его внешний вид таков (в верхней части платы):
Колодка GPIO Raspberry чем-то напоминает интерфейс подключения жестких дисков IDE.
Для правильной работы через GPIO необходимо знать конфигурацию пинов. В Raspberry Pi распиновка такова:
Разъемов питания 4. Прочие пины способны выступать в роли входа или выхода. Кроме того, некоторые из них многофункциональны и могут работать как интерфейс UART, I2C, SPI или ШИМ.
Рассмотрим более подробно устройство «гребенки».
Как управлять пинами GPIO на любом языке программирования
Интерфейс GPIO, как и другие устройства в Линукс, представлен в виде директорий и файлов-устройств к которым можно обращаться за чтением, а также выполнять запись необходимых значений тем самым изменяя конфигурацию и состояние пинов порта. Данная система называется SysFS (System File System) — это виртуальная файловая система, которая предоставляется ядром Linux.
Давайте проведем краткий эксперимент, засветим и погасим светодиод, который подключен через гасящий резистор к пину под номером 15 (GPIO22). Для этого укажем драйверу что мы будем работать с пином GPIO22, зарезервируем порт на время работы (другие приложения не смогут его использовать пока мы его не освободим). Делается это при помощи команды:
При помощи следующей команды смотрим создался ли файл для нашего GPIO22:
Увидим примерно вот такой список:
Наш пин готов к работе — появилась папка с названием gpio22. Также можем посмотреть какие файлы в папке создало ядро Linux для нашего пина (к ним можно будет обращаться — писать и считывать информацию с порта):
На выходе команды получим:
А теперь установим при помощи следующей команды направление (direction) пина GPIO22 на вывод (OUTPUT) и сразу же посмотрим второй командой все ли установилось как нужно:
В результате на экране должно появиться слово «out», что свидетельствует о том что все установлено верно. Теперь осталось лишь подать высокий уровень на наш пин чтобы засветить светодиод. Сделаем это выводом числа 1 в файл /sys/class/gpio/gpio22/value, используем вот такую команду:
Светодиод должен зажечься. Прочитать состояние пина можно при помощи команды:
А теперь погасим светодиод — выполним команду:
Ну и на последок, после всей проделанной полезной работы выполним освобождение пина GPIO22, заставим драйвер разрегистрировать его:
Вот таким образом можно общаться с GPIO при помощи обычных запросов к текстовым файлам, можно писать скрипты на любых языках и под любые задачи.
Важно помнить что после резервирования пина (export) и выполнения работ связанных с ним, его нужно разрезервировать (unexport), иначе он останется занят и другие программы и скрипты не смогут получить к нему доступ!
Source/values properties
So how does the thing actually work?
Every GPIO Zero device has a property. For example, you can read a button’s state ( or ), and read or set an LED’s state (so is the same as ). Since LEDs and buttons operate with the same value set ( and ), you could say . However, this only sets the LED to match the button once. If you wanted it to always match the button’s state, you’d have to use a loop. To make things easier, we came up with a way of telling devices they’re connected: we added a property to all devices, and a to output devices. Now, a loop is no longer necessary, because this will do the job:
This is a simple approach to connecting devices using a declarative style of programming. In one single line, we declare that the LED should get its values from the button, i.e. when the button is pressed, the LED should be on. You can even mix the procedural with the declarative style: at one stage of the program, the LED could be set to match the button, while in the next stage it could just be blinking, and finally it might return back to its original state.
These additions are useful for connecting other devices as well. For example, a (LED with variable brightness) has a value between 0 and 1, and so does a potentiometer connected via an ADC (analogue-digital converter) such as the . The new GPIO Zero update allows you to say , and then twist the potentiometer to control the brightness of the LED.
But what if you want to do something more complex, like connect two devices with different value sets or combine multiple inputs?
We provide a set of device source tools, which allow you to process values as they flow from one device to another. They also let you send in artificial values such as random data, and you can even write your own functions to generate values to pass to a device’s source. For example, to control a motor’s speed with a potentiometer, you could use this code:
This works, but it will only drive the motor forwards. If you wanted the potentiometer to drive it forwards and backwards, you’d use the tool to scale its values to a range of -1 to 1:
And to separately control a robot’s left and right motor speeds with two potentiometers, you could do this:
Making the GPIO expander work
If you’re using a PC or Mac and you haven’t set up x86 Debian Stretch yet, you’ll need to do that first. An easy way to do it is to download a copy of the Stretch release from this page and image it onto a USB stick. Boot from the USB stick (on most computers, you just need to press F10 during booting and select the stick when asked), and then run Stretch directly from the USB key. You can also install it to the hard drive, but be aware that installing it will overwrite anything that was on your hard drive before.
Whether on a Mac, PC, or Pi, boot through to the Stretch desktop, open a terminal window, and install the GPIO expander application:
sudo apt install usbbootgui
Next, plug in your Raspberry Pi Zero (don’t insert an SD card), and after a few seconds the GUI will appear.
The Raspberry Pi USB programming GUI
Select GPIO expansion board and click OK. The Pi Zero will now be programmed as a locally connected Ethernet port (if you run , you’ll see the new interface coming up).
What’s really cool about this is that your plugged-in Pi Zero is now running pigpio, which allows you to control its GPIOs through the network interface.
GPIO Zero documentation and resources
On the , we provide beginner recipes and advanced recipes, and we have added remote GPIO configuration including PC/Mac/Linux and Pi Zero OTG, and a section of GPIO recipes. There are also new sections on source/values, command-line tools, FAQs, Pi information and library development.
You’ll find plenty of cool projects using GPIO Zero in our learning resources. For example, you could check out the one that introduces physical computing with Python and get stuck in! We even provide a GPIO Zero cheat sheet you can download and print.
There are great GPIO Zero tutorials and projects in The MagPi magazine every month. Moreover, they also publish Simple Electronics with GPIO Zero, a book which collects a series of tutorials useful for building your knowledge of physical computing. And the best thing is, you can download it, and all magazine issues, for free!
Check out the API documentation and read more about what’s new in GPIO Zero on my blog. We have lots planned for the next release. Watch this space.
Через что возможно взаимодействовать с GPIO Raspberry
Работать с GPIO Raspberry Pi можно практически через любой инструмент. К сегодняшнему дню созданы соответствующие библиотеки почти под все распространенные языки программирования. С GPIO Raspberry Pi возможно взаимодействовать даже через PHP и JavaScript (node.js).
Однако человеку, который только начинает знакомиться с «Малиной», рекомендуется пробовать взаимодействовать с данным интерфейсом посредством Python. Это обусловлено, во-первых, что для GPIO в Raspbian уже предустановлена соответствующая библиотека для Пайтона, а, во-вторых, этот ЯП является основным для рассматриваемого одноплатника.
Однако при желании, конечно, возможно пользоваться и любыми другими инструментами. Найти название библиотек и описание их не составляет никакого труда.
Что может сделать Raspberry Pi 3 Model A +?
Многое из того, что может сделать Raspberry Pi 3 B +.
В тестах обнаружили, что Raspberry Pi 3 A + в целом соответствует как общей производительности процессора, так и 3D-графики Pi 3 B + , что неудивительно, учитывая, что они используют одну и ту же базовую систему на кристалле (SoC).
Та же относительно хорошая производительность также характерна для пропускной способности Wi-Fi: A + обладает приличной полосой пропускания 87 Мбит/с в диапазоне 5 МГц Wi-Fi.
При запуске веб-приложений B + может относительно легко обрабатывать Google Suite G, в то время как A + зависает при попытке запустить Google Drive и Google Docs.
При воспроизведении видео локальное видео работает хорошо: A + обеспечивает плавное воспроизведение файла .mov с разрешением 1920×1080. Но онлайн-видео А+ может воспроизводить видео на YouTube только в формате 480p без заиканий, и даже не совсем гладко.
ff0000
Их отсутствие допускает меньший форм-фактор, который более квадратный по сравнению с Pi 3B +. Как и Pi Zero, новый Pi 3 A + имеет 512 МБ ОЗУ.
Порт HDMI 1.3 поддерживает 1080p мониторы и телевизоры, а также разъем microUSB для питания, а также четырехполюсный стереофонический аудиовыход и композитный видеоразъем.
Configuration
By default, only UART0 is enabled. The following table summarises the assignment of the first two UARTs:
Model | first PL011 (UART0) | mini UART |
---|---|---|
Raspberry Pi Zero | primary | secondary |
Raspberry Pi Zero W | secondary (Bluetooth) | primary |
Raspberry Pi 1 | primary | secondary |
Raspberry Pi 2 | primary | secondary |
Raspberry Pi 3 | secondary (Bluetooth) | primary |
Raspberry Pi 4 | secondary (Bluetooth) | primary |
Note: the mini UART is disabled by default, whether it is designated primary or secondary UART.
Linux devices on Raspberry Pi OS:
Linux device | Description |
---|---|
mini UART | |
first PL011 (UART0) | |
primary UART | |
secondary UART |
Note: and are symbolic links which point to either or .
Светодиод и кнопка — правильное и неправильное подключение
На многих ресурсах в сети можно встретить статьи и обучающие материалы для начинающих по малинке и GPIO, в которых подключают светодиоды и кнопки разными способами.
Иногда встречаются схемы включения, которые даже оказавшись работоспособными могут нести опасность для малинки. Сейчас я приведу парочку примеров и кратко расскажу почему так.
В нижеприведенных примерах используется пин «GPIO4», в реальном проекте вместо него может использоваться любой другой из доступных.
Рис. 5. Правильное и неправильное подключение светодиода к Raspberry Pi.
Как видно из рисунка, в правильном подключении присутствует токоограничивающий (гасящий) резистор, который лимитирует ток через светодиод и используемый пин GPIO4.
При прямом подключении без резистора на светодиод поступит напряжение 3.3В, что является явно больше нормы для светодиодов (2-3В). Прямое напряжение такой величины станет причиной достаточно большого тока в цепи 50+ мА, что может повлечь за собою выгорание светодиода и выхода из строя как отдельного буфера GPIO, так и процессора вцелом.
Рис. 6. Правильное и неправильное подключение кнопки к Raspberry Pi.
Подключать кнопку к GPIO нужно используя опорное напряжение и ограничительне резисторы. Кто-то может спросить: что же это за способ такой подключения избыточный, что для подключения кнопки нужно еще два резистора, не можно ли обойтись одной кнопкой? — нет, нельзя.
И вот почему: в случае прямого подключения есть вероятность подпалить используемый выход, поскольку при инициализации системы (загрузка малинки) или неверной установке режимов порта (сконфигурирован как OUTPUT) на используемый пин может пойти +3.3В, что в свою очередь при замыкании кнопки вызовет короткое замыкание порта с землей GND.
В схеме с резисторами мы получаем вот что:
- Пока кнопка SW1 не нажата то через резисторы R1 и R2 на входе порта установлен высокий уровень 3.3В;
- При замыкании кнопки SW1 через резистор R1 и кнопку пойдет ток, равный I=U/R=3.3В/10000Ом=0.33мА, а через ограничивающий резистор R2 и кнопку на входе порта будет установлен низкий уровень — 0В;
- Если пин порта выставлен неверно (в режиме выхода с высоким уровнем 3.3В) — через цепочку R1-R2 не будет идти никакой ток (3.3В=3.3В), а при нажатии кнопки через R2 и SW1 потечет ток равный R=3.3В/750Ом=4.4мА, что является безопасным значением для порта в режиме выхода и никак не повредит схему и сам порт GPIO.
Резистор R1 можно установить на сопротивление 10 КОм — 20 КОм, а для резистора R2 на 600 Ом — 2 КОм, все должно уверенно работать.
Те, кто подключает кнопку так, как на перечеркнутом рисунке #6 — это экстремалы, которые осознанно или не осознанно испытывают свою удачу!
Не нужно жалеть резисторов, лучше установить последовательно к каждому пину по резистору примерно 1К и настроить схему для уверенной работы с такими значениями сопротивления, чем потом, в случае ошибки, поплатиться ценой целой платы Raspberry pi !
Охлаждение и нагрев
На фотографиях видно, что у чипов не предусмотрено даже пассивного охлаждения в виде радиаторов. В связи с чем может возникнуть вопрос — не перегревается ли устройство в ходе работы?
Для оценки нагрева и проведения нагрузочного тестирования служит утилита stress. Устанавливаем и запускаем 15-минутный прогон.
Загрузка и синтаксис команды:
В среднем температура процессора при такой нагрузке поднимается примерно до 55.1 градуса и стабилизируется на этом уровне. После прекращения теста она начинает постепенно снижаться. В режиме простоя рабочая температура держится в пределах 41.2–42 градуса.
Это доказывает, что дополнительное охлаждение микрокомпьютеру не нужно. Но некоторые энтузиасты все равно дополнительно страхуются, наклеивая небольшие медные или алюминиевые радиаторы и несколько улучшая теплоотвод. Обзор внешнего вида платы с радиатором SoC:
Критическая температура процессора — 100 градусов, а в троттлинг он начинает уходить при 80.
General Purpose Input Output (GPIO) Pins
The GPIO is the most basic, yet accessible aspect of the Raspberry Pi. GPIO pins are digital which means they can have two states, off or on. They can have a direction to receive or send current (input, output respectively) and we can control the state and direction of the pins using programming languages such as Python, JavaScript, node-RED etc.
The operating voltage of the GPIO pins is 3.3v with a maximum current draw of 16mA. This means that we can safely power one or two LEDs (Light Emitting Diodes) from a single GPIO pin, via a resistor. But for anything requiring more current, a DC motor for example, we will need to use external components to ensure that we do not damage the GPIO.
Controlling a GPIO pin with Python is accomplished by first importing a library of pre-written code. The most common library is RPi.GPIO (https://pypi.org/project/RPi.GPIO/) and it has been used to create thousands of projects since the early days of the Raspberry Pi. In more recent times a new library called GPIO Zero (https://pypi.org/project/gpiozero/)has been introduced, offering an easier entry for those new to Python and basic electronics. Both of these libraries come pre-installed with the Raspbian operating system.
GPIO pins have multiple names; the first most obvious reference is their “physical” location on the GPIO. Starting at the top left of the GPIO, and by that we mean the pin nearest to where the micro SD card is inserted, we have physical pin 1 which provides 3v3 power. To the right of that pin is physical pin 2 which provides 5v power. The pin numbers then increase as we move down each column, with pin 1 going to pin 3, 5,7 etc until we reach pin 39. You will quickly see that each pin from 1 to 39 in this column follows an odd number sequence. And for the column starting with pin 2 it will go 4,6,8 etc until it reaches 40. Following an even number sequence. Physical pin numbering is the most basic way to locate a pin, but many of the tutorials written for the Raspberry Pi follow a different numbering sequence.
Broadcom (BCM) pin numbering (aka GPIO pin numbering) seems to be chaotic to the average user. With GPIO17, 22 and 27 following on from each other with little thought to logical numbering. The BCM pin mapping refers to the GPIO pins that have been directly connected to the System on a Chip (SoC) of the Raspberry Pi. In essence we have direct links to the brain of our Pi to connect sensors and components for use in our projects.
You will see the majority of Raspberry Pi tutorials using this reference and that is because it is the officially supported pin numbering scheme from the Raspberry Pi Foundation. So it is best practice to start using and learning the BCM pin numbering scheme as it will become second nature to you over time. Also note that BCM and GPIO pin numbering refer to the same scheme. So for example GPIO17 is the same as BCM17.
Certain GPIO pins also have alternate functions that allow them to interface with different kinds of devices that use the I2C, SPI or UART protocols. For example GPIO3 and GPIO 4 are also SDA and SCL I2C pins used to connect devices using the I2C protocol. To use these pins with these protocols we need to enable the interfaces using the Raspberry Pi Configuration application found in the Raspbian OS, Preferences menu.
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.
Распиновка разъемов GPIO
Для того чтобы использовать разъем GPIO необходимо точно знать какой пин и для каких целей можно использовать. Ниже приведены распиновки разъемов GPIO для разных моделей и разных версий платформы Raspberry Pi.
Рис. 3. Raspberry Pi model A B — расположение пинов на разъеме GPIO.
Важно заметить что у ревизий печатной платы 1.0 (сентябрь 2012 или раньше) и 2.0 расположение пинов немножко отличается:
- Пин 3 = GPIO0, SDA0, I2C (v1.0) | GPIO2 (v2.0);
- Пин 5 = GPIO1, SCL0, I2C (v1.0) | GPIO3 (v2.0);
- Пин 13 = GPIO21 (v1.0) | GPIO27 (v2.0).
Это нужно учесть при проектировании и переделке устройств на платформах с разной ревизией печатных плат.
Рис. 4. Распиновка разъема GPIO в Raspberry Pi A+, B+, 2.
Подготовка к включению и первый запуск.
Для первого запуска Raspberry необходимо следующее:
- микро SD-карта с установленной операционной системой (OC) Raspbian, рекомендуемой для этого устройства (оптимальная емкость карты – 8 Гб, класс скорости – 10);
- монитор с HDMI входом;
- сетевой блок питания с выходным напряжением 5 В и током не менее 2 А, с выходным разъемом micro-USB;
- USB-мышь и USB-клавитура.
Образ операционной системы Raspbian, созданной на основе Linux Debian 8 Jessi, можно скачать в разделе Downloads сайта raspberrypi.org. Для начала можно воспользоваться образом RASPBIAN JESSIE LITE, как наиболее простым в изучении. Записать образ на SD-карту удобно из-под Windows с помощью программы Win32DiskImager. Способ установки и сама программа описаны на сайте Raspberry по адресу.
Вы также можете воспользоваться файлами, размещенными на нашем сайте в карточке Raspberry Pi 3 или напрямую скачать с Яндекс диска:
- образ операционной системы;
- программа Win32DiskImager.
Дальнейшее описание базируется именно на этом образе.
Мышь и клавиатура, подключенные к Raspberry без проблем распознаются системой. Можно также использовать беспроводную мышь и клавиатуру, например Bluetooth, но их надо настроить после запуска Raspberry, а для этого нужна хотя бы USB-мышь. У нас в хозяйстве не нашлось USB-клавиатуры, поэтому для первого запуска мы подключили USB-мышь, а также монитор и питание:
Кстати, на плате нет выключателя питания, она запускается сразу при подключении разъема, и начинается загрузка операционной системы. После загрузки на экране появляется рабочий стол с вполне привычными (но оригинальными) обоями и иконками:
На начальном экране имеются легко распознаваемые иконки Меню, интернет-браузера, менеджера Bluetooth, регулятора громкости, настройки сети и некоторые другие. Из них, пожалуй, самая нужная при настройке и работе – это черный экранчик в правой верхнем углу: терминал. С помощью терминала вводятся команды операционной системы. Поскольку далеко не все программы для Linux имеют графический интерфейс, их можно запустить и работать в них только посредством командной строки. Именно эту возможность и предоставляет терминал. Также все системные операции Linux, например установка и удаление программ осуществляются преимущественно через терминал. В OC используется программа LXTerminal, которая и запускается при щелчке правой кнопкой мыши по иконке. Следует заметить, что многие команды требуют ввода в начале строки приставку sudo (gksudo при запуске программ с графическим интерфейсом), что позволяет выполнить команду от лица администратора компьютера, то есть с наивысшими правами (sudo – Super User Do). Только администратор может устанавливать и удалять программы, а также менять параметры OC и ее конфигурацию.
После первой загрузки системы имеет смысл сразу подключиться к интернету, чтобы обновить файлы ОС до актуальной версии. В правом верхнем углу рабочего стола есть иконка с узнаваемым изображением двух терминалов. При подключении кабеля к разъему Ethernet на плате Raspberry происходит автоматическое подключение к локальной сети. Если щелкнуть мышью по этой иконке, появляется список беспроводных сетей, из которых можно выбрать свою и подключиться к ней, введя соответствующий ключ. При этом вместо терминалов на иконке появится стандартное изображение подключение к беспроводной сети. Именно такая ситуация показана на рисунке выше.
Надо сказать, что по сравнению с ранними версиями Linux многие задачи сейчас автоматизированы. Например, если ранее было необходимо из командной строки монтировать том при подключении обычной флешки, то сейчас флешка распознается при подключении в один из четырех разъемов USB на плате вполне самостоятельно и ей сразу можно пользоваться.
Теперь можно подключить, например, беспроводные мышь и клавиатуру по Bluetooth:
Это делается щелчком на иконке с логотипом Голубого Зуба рядом с индикатором подключение к сети в правом верхнем углу экрана. Далее надо нажать Add Device и выбрать ваши устройства из списка найденных беспроводных устройств.
Следует отметить, что при всем удобстве использовании Bluetooth устройств ввода с Raspberry – они не занимают разъемов USB – эти устройства в нашем случае периодически теряли связь с платой. Поэтому для стабильной работы, все же следует использовать USB-мышь и клавиатуру, а так же, в качестве альтернативного варианта, занимающего только один USB-разъем, комплект мыши и клавиатуры с одним приемопередатчиком по радиоканалу.
После соединения с сетью мы попробовали, используя уже и мышь и клавиатуру, зайти в интернет, щелкнув на иконке браузера. Сайты открывались без проблем, с приемлемой скоростью.
Pull up / Pull down resistors
If you do not have the input pin connected to anything, it will ‘float’. In other words, the value that is read in is undefined because it is not connected to anything until you press a button or switch. It will probably change value a lot as a result of receiving mains interference.
To get round this, we use a pull up or a pull down resistor. In this way, the default value of the input can be set. It is possible to have pull up/down resistors in hardware and using software. In hardware, a 10K resistor between the input channel and 3.3V (pull-up) or 0V (pull-down) is commonly used. The RPi.GPIO module allows you to configure the Broadcom SOC to do this in software:
GPIO.setup(channel, GPIO.IN, pull_up_down=GPIO.PUD_UP) # or GPIO.setup(channel, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
(where channel is the channel number based on the numbering system you have specified — BOARD or BCM).
Устройство GPIO
Число пинов на колодке GPIO Raspberry Pi 3 равняется 40. Они пронумерованы и делятся на три группы:
- питающие (power на схемах);
- заземляющие (GND, Ground);
- порты (часто обозначаются как BCM).
Первые необходимы для подачи электричества разных напряжений — 3.3 и 5 В. Разница между ними была рассмотрена выше. Вторые обеспечивают безопасность работы платы, отводя электричество. А третьи выступают в качестве интерфейсов, принимая и отдавая данные. Именно к ним пользователь подключает свои модули и приборы.
Схема пинов Raspberry Pi 3 Model B:
На данной схеме pinout выводы пронумерованы по следующему принципу:
- 1 — левый в первом верхнем ряду;
- 2 — второй в верхнем ряду, и так далее.
Выходы 1 и 17 обеспечивают питание 3.3 В, 2 и 4 — для 5 В. «Земля» расположена на 9, 25 и 39, и на 6, 14, 20, 30, 34. Прочие контакты — интерфейсные порты.
What is this magic?
Running our x86 Stretch distribution on a PC or Mac, whether installed on the hard drive or as a live image, is a great way of taking advantage of a well controlled and simple Linux distribution without the need for a Raspberry Pi.
The downside of not using a Pi, however, is that there aren’t any GPIO pins with which your Scratch or Python programs could communicate. This is a shame, because it means you are limited in your physical computing projects.
I was thinking about this while playing around with the Pi Zero’s USB booting capabilities, having seen people employ the Linux gadget USB mode to use the Pi Zero as an Ethernet device. It struck me that, using the udev subsystem, we could create a simple GUI application that automatically pops up when you plug a Pi Zero into your computer’s USB port. Then the Pi Zero could be programmed to turn into an Ethernet-connected computer running pigpio to provide you with remote GPIO pins.
So we went ahead and built this GPIO expander application, and your PC or Mac can now have GPIO pins which are accessible through Scratch or the GPIO Zero Python library. Note that you can only use this tool to access the Pi Zero.
You can also install the application on the Raspberry Pi. Theoretically, you could connect a number of Pi Zeros to a single Pi and (without a USB hub) use a maximum of 140 pins! But I’ve not tested this — one for you, I think…
Использование пинов и меры безопасности
Прежде чем что-то подключать к пинам интерфейса GPIO давайте разберемся какие напряжения/токи можно подключать к пинам в режиме входа и какие мы получим на выходе.
Пин GPIO в режиме входа:
- напряжение — 3.3В;
- уровень логической единицы (1) получаем начиная примерно с напряжения 1.8В;
- максимальный ток — 0.5мА!
Пин GPIO в режиме выхода:
- Напряжение — 0 и 3.3В (не 5В, как многие могут подумать);
- Ток — 2-16мА (по умолчанию 8мА);
- Максимальный суммарный ток нагрузки для всех задействованных пинов — 50мА!
Также важно помнить что:
- Внутренние буферы и ключи, которые подключены к пинам GPIO, НЕ защищены от перегрузки по напряжению и току;
- Пины питания с выходным напряжением 3.3В можно нагружать током не более 50мА;
- Пины с выходным напряжением 5В стараемся грузить не более чем на 500мА (для Model A) и не более чем на 300мА (для Model B) — почему так, расскажу ниже.
При проектировании устройств в которых используется большое количество пинов GPIO нужно обязательно делать развязку через дополнительные буферные схемы, преобразователи уровня напряжений, электронные ключи. Для чего это нужно? — чтобы обезопасить малинку от возможного повреждения (выгорания) электронных коммутаторов (ключей) и буферов внутри чипа.
А теперь давайте посмотрим что получится если мы подключим к трем портам GPIO и общему для них выводу 3.3В три светодиода, через каждый из которых будет протекать ток 20мА(сверхъяркие светодиоды): 20мА * 3 = 60мА — что является ПРЕВЫШЕНИЕМ максимально допустимого тока на пине 3.3В и небольшой перегрузкой для пинов GPIO (по 20мА на пин).
В данном случае для питания таких светодиодов нам нужно подключить к выводам GPIO дополнительные ключи на транзисторах или микросхемах, которые будут управлять светодиодами и не будут перегружать пины интерфейса.
Если на каждый из нескольких пинов GPIO мы повесим по светодиоду то можно их общую точку подключить к земле, в таком случае светодиод будет светиться если на пине будет присутствовать высокий (+3.3В) уровень, а для ограничения тока до 15мА последовательно светодиоду подключим токоограничительный резистор.
Пины с напряжением 5В подключены к основной шине питания 5В платы (после стабилизатора), большая нагрузка может повлиять на стабильность работы платформы в целом, а также вывести из строя внутренний стабилизатор напряжения +5В
Нужно с осторожностью отнестись к их использованию, допустимый ток не должен превышать 1А (без учета потребления самой платы): 1А — 700мА (ток потребляемый платой модели B) = 300мА
В действительности потребляемый малинкой ток во многом зависит от загруженности микропроцессора и видеопроцессора (графическая оболочка требует намного больше ресурсов чем консольный режим), а также от количества подключенных устройств к USB портам и их потребления. Значение общего потребляемого тока может варьироваться в пределах от 250мА до 1А.
Raspberry Pi, как и любая другая чувствительная электроника, может быть повреждена статическим электричеством. Перед работой желательно убрать накопившийся на теле статический заряд, снять с себя шерстяную одежду.
Перед пайкой модулей и плат желательно отключить их от разъема GPIO, будет неплохо если есть возможность выполнять монтаж паяльником на напряжение 36В (или ниже) с использованием понижающего трансформатора 220В — 36В и т.п.
Подведем небольшой итог по мерам безопасности:
- Перед работой снять с себя статический заряд;
- Желательно выполнять пайку электроники с отключенным разъемом GPIO;
- Не перегружать пины питания 3,3В (50мА) и не закорачивать их напрямую с другими пинами;
- Не перегружать пины питания 5В (300-500мА) и не закорачивать их напрямую с другими пинами;
- Исключить протекание тока величиной более 8-15мА через пины GPIO;
- Исключить попадание напряжения более 3.3В на пины GPIO;
- Подключать напрямую к Raspberry Pi не более 3х светодиодов (по 2-15мА каждый);
- Внимательно проверить правильность подключения перед подачей питания на схему и малинку.
Чем Raspberry Pi 3 Model A + отличается от Raspberry Pi 1 Model A +?
По сравнению со старой платой, модель Pi 3 Model A + основана на гораздо более новом и быстром оборудовании, примерно в 10 раз быстрее, согласно некоторым тестам ЦП.
Pi 3 A + работает на системе-на-кристалле (SOC) с четырехъядерным процессором 1,4 ГГц – то же самое, что и в Pi 3 B + – по сравнению со старым одноядерным процессором 700 МГц в плате первого поколения A +.
SoC Raspberry Pi 3 Model A+
Самым большим скачком вперед является добавление 802.11ac Wi-Fi к Pi 3 A +, что значительно облегчает начало работы и получение данных на плате и с нее, тогда как в случае с оригинальным A +, который не имел сетевого подключения, ни Ethernet ни Wi-Fi.
Недостатком является то, что новая модель A + стоит дороже по сравнению с ценой первой платы. Она также потребляет гораздо больше энергии 1,13 Вт в режиме ожидания и 4,1 Вт под нагрузкой. Это контрастирует с более ранними тестами, которые предполагают, что Pi 1 A + с USB-ключом Wi-Fi потребляет около 0,8 Вт в режиме ожидания .
Developing GPIO Zero
Nearly two years ago, I started the GPIO Zero project as a simple wrapper around the low-level RPi.GPIO library. I wanted to create a simpler way to control GPIO-connected devices in Python, based on three years’ experience of training teachers, running workshops, and building projects. The idea grew over time, and the more we built for our Python library, the more sophisticated and powerful it became.
One of the great things about Python is that it’s a multi-paradigm programming language. You can write code in a number of different styles, according to your needs. You don’t have to write classes, but you can if you need them. There are functional programming tools available, but beginners get by without them. Importantly, the more advanced features of the language are not a barrier to entry.
Типы портов по номерам
Теперь можно рассмотреть, какой 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-и вольтный), так как не имеют каких-то отличительных особенностей – в каждом ряду они одинаковые.
Вывод
Обзор позволяет заключить, что, несмотря на скромные размеры и не самые выдающиеся технические характеристики, компьютеры серии Pi Zero успешно находят себе применение в разных задачах — от обучения до систем «умного дома» и многих видов контроллеров управления. Этому способствуют низкая цена, разнообразие программного обеспечения, простая и доступная документация, обилие аксессуаров и низкий «порог входа» даже для начинающего интересоваться возможностями одноплатников пользователя. Вероятно, линейку ожидает дальнейшее развитие и появление еще более интересных в плане возможностей устройств.
Удобнее всего использовать Raspberry Pi Zero W из-за наличия беспроводного интерфейса. А для тех, кто не хочет терять время на работу паяльником, подойдет вариант WH с распаянной колодкой GPIO.
Заключение
Надеюсь было не скучно и информация, которую я представил в данной статье, будет полезна для ваших будущих проектов и экспериментов с платформой Raspberry Pi.
Что можно сделать после светодиода и кнопки? — можно подключить три светодиода и сделать небольшой бегущий огонь, также вместо светодиода можно подключить ключевой транзистор и малогабаритное электромагнитное реле для включения и выключения различных устройств с питанием от +12В или ~220В. Количество вариантов ограничивается только вашей фантазией и желанием.
- RPi Low-level peripherals (eLinux)
- RPi Tutorial EGHS:GPIO Protection Circuits
- Схемы, чертежи и документация на процессоры и периферию Raspberry Pi