Sie erwähnen kein Betriebssystem wie Milliways. Ich nehme an, Sie meinen Raspbian oder ein anderes GNU / Linux. Windows IoT wäre separat.
Alle Python-Bibliotheken sind Wrapper für C-Bibliotheken, was nicht ungewöhnlich ist. Das Erstellen der Bibliotheken von Grund auf in etwas anderem als C wäre. Dort sind drei:
Diese gibt es seit mindestens einigen Jahren und werden aktiv gewartet (z. B. war die letzte Version von libbcm2835 vor 3-4 Monaten).
Sie benötigen jedoch keine Bibliothek, je nachdem, was Sie tun möchten. Wie dort erwähnt, gibt es zusätzlich zur sysfs-Schnittstelle für grundlegende Dinge tragbare C-Level-Benutzeroberflächen für I2C und SPI , die Kerneltreiber verwenden. Damit bleibt nur PWM übrig - um auf die Hardwarekanäle zuzugreifen und diese zu verwenden, müssen Sie eine dieser drei Bibliotheken verwenden. Oder, wie Joan in einem Kommentar zu dieser anderen Frage erwähnt, wenn Sie versuchen, sehr schnelle Impulse zu zählen (ich würde in diesem Fall mit einigen Methoden experimentieren).
Ich habe nicht jede Kombination ausprobiert, aber vorausgesetzt, die pi-spezifischen Bibliotheken sind ordnungsgemäß codiert, sollten Sie in der Lage sein, sie mit den tragbaren Schnittstellen zu mischen und abzugleichen (z. B. die reguläre I2C-API und WiringPi für PWM zu verwenden), solange Sie sie verwenden separate Stifte. Dies mag seltsam erscheinen, ist jedoch sinnvoll, wenn Sie mit modularem Code arbeiten und einzelne Teile so portabel wie möglich gestalten möchten. Wenn Sie beispielsweise eine Schnittstelle für einen I2C-Sensor schreiben möchten, basieren Sie auf der Kernel-Treiber-API. Wenn Sie dies in einem Programm mit PWM verwenden möchten, verwenden Sie eine der drei Bibliotheken für PWM. Mit pigpio / wiringPi / libbcm2835 geschriebener Code funktioniert nur auf einem Raspberry Pi. Code, der mit den Kernel-Treiber-APIs geschrieben wurde, funktioniert auf jedem Linux-System.