Чому GPIO Zero краще, ніж RPi.GPIO для проектів Raspberry Pi

Raspberry Pi - ідеальний комп'ютер для навчання. В ОС Raspbian на основі Linux вбудований Python, що робить її відмінною першою системою для програмістів-початківців. Його висновки введення/висновку загального призначення (GPIO) дозволяють виробникам-початківцям експериментувати з електронними проектами.

Це особливо легко, коли ви використовуєте бібліотеки коду, які керують цими висновками, і популярна бібліотека Python RPi.GPIO є відмінним прикладом такої бібліотеки. Але чи це найкращий шлях для початківців? Приєднуйтесь до нас, як ми розслідуємо.


Що таке GPIO Zero?

Бібліотека GPIO Zero - це бібліотека Python для роботи з висновками GPIO. Він був написаний менеджером спільноти Raspberry Pi Беном Наттолом. Спрямований на те, щоб бути інтуїтивно зрозумілим і «дружнім», він оптимізує код Python для більшості звичайних випадків використання Raspberry Pi.

Поєднуючи прості методи іменування та описові функції, GPIO Zero більш доступний для початківців. Навіть досвідчені користувачі бібліотеки RPi.GPIO можуть віддати перевагу їй - і щоб зрозуміти чому, давайте подивимося, як RPi.GPIO порівнюється з GPIO Zero.

Що не так з RPi.GPIO?

Нічого такого. Взагалі нічого RPi.GPIO був випущений на початку 2012 року розробником Беном Кростоном. Це надійна бібліотека, що дозволяє користувачам керувати висновками GPIO з коду. Він присутній практично в кожному проекті ми вже розглянули.

Незважаючи на широке використання, RPi.GPIO ніколи не був призначений для кінцевих користувачів. Це свідчення хорошого дизайну RPi.GPIO, який використовують багато початківців.

Що хорошого в GPIO Zero?

Коли ви вивчаєте код Python, ви дізнаєтеся, що він повинен бути легким для читання і максимально коротким. GPIO Zero прагне охопити обидві точки. Створений на основі RPi.GPIO як інтерфейсної мовної оболонки, він спрощує налаштування та використання GPIO.

Розгляньмо наступний приклад налаштування та включення світлодіоду:


Наведений вище код повинен бути знайомий всім, хто використовував свої пі для управління світлодіодами.

Бібліотека RPi.GPIO імпортована, і оголошено висновок для світлодіоду. Тип розташування виводів (режими BCM і BOARD описано в нашому підручнику з GPIO.) , і цей висновок налаштовується як вихід. Потім штифт увімкнено.

Цей підхід має сенс, але спосіб GPIO Zero зробити це набагато простіше:

GPIO Zero має модуль для світлодіодів, імпортований під час запуску. Це означає, що ви можете оголосити номер пін- коду і викликати метод led.on ().

Чому підхід GPIO Zero кращий?

Є кілька причин, чому цей метод роботи є поліпшенням RPi.GPIO.

По-перше, він відповідає вимозі «легко читати, як можна менше». Хоча оператори налаштування RPi.GPIO досить прості для розуміння, вони не потрібні. Світлодіод завжди буде виходом, тому GPIO Zero встановлює контакти за лаштунками. Результат - всього три рядки коду для налаштування, а потім загоряється світлодіод.

Ви можете зауважити, що у прикладі GPIO Zero немає налаштування режиму плати. Бібліотека використовує лише нумерацію Broadcom (BCM) для виводу. Дизайнер бібліотеки Бен Наттолл пояснює, чому в інтерв'ю RasPi.tv 2015 року:


"Нумерація плати може здатися більш простою, але я б сказав, що це змушує нових користувачів думати, що всі висновки мають спільне призначення, а це не так. Підключіть світлодіод до контакту 11, чому б не підключити ще кілька до контактів 1, 2, 3 і 4? Свердловина 1 3V3. 2 і 4 5В. Недостатня обізнаність про призначення контактів може бути небезпечною ".

Таким чином, має сенс використовувати цифри BCM. Враховуючи, що GPIO Zero буде стандартом у документації Raspberry Pi, варто вчитися!

Чи справді GPIO Zero кращий?

Хоча це здається більш простим на перший погляд, чи є у нової бібліотеки якісь проблеми? Як і з будь-якою новою бібліотекою кодування, це питання думки. З одного боку, видалення установчого коду відмінно підходить як для початківців, так і для досвідчених програмістів. Написання коду простіше і швидше.

З іншого боку, знання того, що відбувається, важливе для навчання. Візьміть приклад налаштування кнопки з документації GPIO Zero:

Додаток кнопок спрощує налаштування кнопок. Він знає, що кнопки є вхідними даними, тому використовує заявлений номер контакту для налаштування. Перевірити натискання кнопки також простіше, за допомогою .is_pressed для виявлення натискань кнопок.


Ми використовували цю точну функціональність у підручнику, це відмінний спосіб ознайомитися з відмінностями в бібліотеках.

Користувачі бібліотеки RPi.GPIO помітять, що внутрішні знижувальні/знижувальні резистори Pi не задані в коді. Це піднімає цікаве питання. Чи обов'язково для новачків знати резистори з підвищенням/пониженням? І знову у Бена Наттолла є відповідь на це питання:

"Ви можете стверджувати, що добре знати про підтягування і спуски, і ви були б праві, але чому я повинен вчити цього в перший день? […] Якщо ви хочете навчити електроніці більш глибоко, є багато можливості для цього - але це не повинно бути обов'язковим, якщо ви тільки починаєте ".

В цілому, простий підхід GPIO Zero, ймовірно, корисний як для початківців, так і для ветеранів. Крім того, RPi.GPIO нікуди не дінеться. Він завжди буде там, щоб переключитися назад у разі необхідності.

Чи є Python єдиним варіантом?

Python - це мова, якою відомий Pi, але це не єдиний варіант. Якщо ви вже знайомі з програмуванням мовою Сі, то Wiring Pi вам допоможе.


Крім того, якщо ви вже програмуєте на JavaScript, Node.js можна легко встановити на Pi. Доступ до GPIO доступний через бібліотеку rpi-gpio npm. Ruby on Rails також може бути встановлений на Raspberry Pi, хоча Pi може бути не найкращим способом вивчення Rails!

Всі ці альтернативи, разом з багатомовними бібліотеками, такими як чудовий pigpio, можуть зробити вибір бібліотеки заплутаним. Саме тут GPIO Zero виділяється: для початківців, які задаються питанням, як і з чого почати.

Якщо ви знаходитеся в точці, де вам потрібно щось, чого вона не надає, ви будете більш ніж готові зануритися в ці інші бібліотеки в своєму власному темпі.

Початок роботи з GPIO Zero Yourself

GPIO Zero є новітньою бібліотекою, створеною для Pi, і для цього є всі підстави. Для більшості користувачів це робить кодування для висновків GPIO більш простим для читання і більш швидким.


Враховуючи використання Raspberry Pi в освіті, все, що робить навчання більш природним, є хорошою річчю. Хоча RPi.GPIO досі був ідеальним, GPIO Zero бере хорошу ідею і робить її ще кращою.

Відмінний спосіб почати роботу з GPIO Zero - це взяти проект для початківців, наприклад, «Музичний датчик дверей». і перенесіть його в нову бібліотеку.

COM_SPPAGEBUILDER_NO_ITEMS_FOUND