Сравните и сопоставьте API-интерфейсы Python GPIO

11

Я только начинаю с Pi и хочу программировать GPIO на Python. До сих пор я сталкивался с пятью библиотеками:

Прежде чем посвятить время его изучению, я хочу знать:

  • Если есть какие-либо ограничения для одного или другого.
  • Какие существенные объективные различия существуют между ними.
spinkus
источник
2
О ~ дубликата raspberrypi.stackexchange.com/questions/27334/...
spinkus
Вы правы, и это, вероятно, будет закрыто как субъективное. Там нет простого ответа. gpiozeroэто простая обертка, предназначенная для начинающих. pigpioВероятно, самый мощный, хотя документация отрывочна и больше подходит для опытного программиста. (Я использую wiringpi, cпотому что это проще, но у меня 40+ лет опыта c).
Milliways
Я предлагаю закрыть этот вопрос как основанный на мнении, если только мы не хотим, чтобы каждый человек, использующий GPIO, поделился своим опытом в ответах.
Дмитрий Григорьев

Ответы:

13

Предупреждение. Я автор pigpio, поэтому буду предвзятым.

Вы можете почувствовать вкус, посмотрев на elinux .

RPi.GPIO был первым и самым популярным. Это будет тот, который вы чаще всего видите примеры.

RPIO основан на RPi.GPIO (он предназначен для замены плагина) и добавляет некоторые возможности. В частности, он добавляет аппаратную синхронизацию по времени, подходящую для светодиодов и сервоприводов, а также аппаратную синхронизацию по импульсам. RPi.GPIO предоставляет только программное обеспечение ШИМ, которое дает видимые сбои в светодиодах и, как говорят, сокращает срок службы сервоприводов. Как уже упоминалось в RPIO github repo :

Этот репозиторий активно не поддерживается!

wiringPi Python - это порт большей части функциональных возможностей C WiringPi для Python. Я не использовал это и не знаю много об этом.

pigpio Python - это порт функциональности C в pigpio для Python. Как и RPIO.GPIO, он обеспечивает аппаратную синхронизацию по времени для светодиодов и сервоприводов, а также аппаратную синхронизацию по импульсам. Уникальная особенность pigpio - это время событий GPIO в источнике, поэтому для любых временных целей pigpio, вероятно, будет наиболее точным. pigpio может работать на сетевом ПК (Windows, Mac, Linux) для управления удаленным Pi.

gpiozero - это упрощенная оболочка практически для всех вышеперечисленных библиотек. По сути, это внешний интерфейс, который пытается максимально удалить пользователя из базовых деталей реализации. gpiozero (я думаю) - это рекомендуемая Фондом начальная точка Python. gpiozero может (я думаю) работать на сетевом ПК (Windows, Mac, Linux) для управления удаленным Pi, если pigpio является бэкэндом.

Внимание, спросите 10 других людей, и у них будет 10 разных взглядов. Все библиотеки имеют свое применение. Они все инструменты. Что лучше для вас, зависит от того, какой вы рабочий.

Джоан
источник
0

Я бы порекомендовал RPi.GPIO, но нулевой GPIO лучше для новичков, но имеет больше ограничений. Тем не менее, я ничего не знаю о других, но если я не слышал о них, это не значит, что там не так хорошо, как остальные.

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