Vergleichen und kontrastieren Sie Python GPIO-APIs


11

Ich fange gerade mit Pi an und möchte GPIO in Python programmieren. Bisher bin ich auf fünf Bibliotheken gestoßen:

Bevor ich Zeit zum Lernen einsetze, möchte ich wissen:

  • Wenn es irgendwelche Einschränkungen für das eine oder andere gibt.
  • Welche signifikanten objektiven Unterschiede gibt es zwischen ihnen?


Sie haben Recht, und dies wird wahrscheinlich als subjektiv geschlossen. Es gibt keine einfache Antwort. gpiozeroist eine einfache Hülle für Anfänger. pigpioist wahrscheinlich die leistungsstärkste, obwohl die Dokumentation lückenhaft ist und eher für einen erfahrenen Programmierer geeignet ist. (Ich benutze Wiringpi, cweil es einfacher ist, aber ich habe mehr als 40 Jahre Erfahrung.)
Milliways

Ich schlage vor, diese Frage als meinungsbasiert zu schließen, es sei denn, wir möchten, dass jede einzelne Person, die GPIO verwendet, ihre Erfahrungen in den Antworten teilt.
Dmitry Grigoryev

Antworten:


13

Warnung. Ich bin der Autor von Pigpio und werde daher voreingenommen sein.

Sie könnten einen Vorgeschmack bekommen, wenn Sie sich elinux ansehen .

RPi.GPIO war das erste und ist das beliebteste. Es wird das sein, für das Sie am häufigsten Beispiele sehen.

RPIO baut auf RPi.GPIO auf (es soll ein Plug-In-Ersatz sein) und fügt einige Funktionen hinzu. Insbesondere werden Hardware-zeitgesteuerte PWM hinzugefügt, die für LEDs und Servos geeignet sind, sowie Hardware-Zeitimpulsketten. RPi.GPIO bietet nur Software-PWM an, die sichtbare Störungen in LEDs verursacht und die Lebensdauer von Servos verkürzen soll. Wie in RPIO Github Repo erwähnt :

Dieses Repository wird nicht mehr aktiv gepflegt!

WiringPi Python ist ein Port eines Großteils der C-Funktionalität von WiringPi für Python. Ich habe es nicht benutzt und weiß nicht viel darüber.

pigpio Python ist eine Portierung der C-Funktionalität von pigpio für Python. Wie RPIO.GPIO bietet es Hardware-PWM für LEDs und Servos sowie zeitgesteuerte Hardware-Impulsketten. Ein einzigartiges Merkmal von Pigpio ist, dass es GPIO-Ereignisse an der Quelle zeitlich festlegt, sodass Pigpio für jeden Timing-Zweck wahrscheinlich das genaueste ist. pigpio kann auf einem Netzwerk-PC (Windows, Mac, Linux) ausgeführt werden, um einen Remote-Pi zu steuern.

gpiozero ist ein vereinfachender Wrapper für so ziemlich jede der oben genannten Bibliotheken. Tatsächlich handelt es sich um ein Front-End, das versucht, den Benutzer so weit wie möglich aus den zugrunde liegenden Implementierungsdetails zu entfernen. gpiozero (glaube ich) ist der von der Foundation empfohlene Python-Startpunkt. gpiozero kann (glaube ich) auf einem vernetzten PC (Windows, Mac, Linux) ausgeführt werden, um einen Remote-Pi zu steuern, wenn pigpio das Backend ist.

Warnung, fragen Sie 10 andere Personen und sie werden 10 verschiedene Ansichten haben. Alle Bibliotheken haben ihre Verwendung. Sie sind alle Werkzeuge. Welches für Sie am besten ist, hängt davon ab, welche Art von Arbeiter Sie sind.


0

Ich würde RPi.GPIO empfehlen, aber GPIO Null ist am besten für Anfänger, hat aber mehr Einschränkungen. Ich habe jedoch keine Kenntnisse über die anderen, aber wenn ich nicht von ihnen gehört habe, heißt das nicht, dass sie nicht so gut sind wie die anderen.


GPIO Zero macht alles, was RPi.GPIO macht, da gibt es keine Einschränkungen. Es gibt erweiterte Funktionen in pigpio, die noch nicht in GPIO Zero implementiert sind, aber für das, was es unterstützt, bietet es eine nette API über jeder Bibliothek.
ben_nuttall
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.