A R C H L I N U X

- my preferred distribution -

D E B I A N

- also a favourite -

LINKS - RASPBERRY PI


IMPRESSIVE LINKS

DID YOU KNOW ...




MEIN TIPP: 'pigpio'

Eine tolle Lösung für Steuerungen über die GPIO Pins
Für alle Modelle geeignet!

Problemstellung

Der (auch) hardwaremässig bastelwillige User wird seine Ideen durch Anschluß entsprechender Bauteile an den GPIO Pins realisieren. Hierzu zählen z.B. Taster, LEDs, Servo-Motoren, Sensoren , etc.

Das Ein-/Ausschalten einer LED über einen GPIO Pin ist softwaremässig noch recht einfach zu realisieren.
Ein Servomotor verlangt bereits eine Frequenz von 50 Hz. Es ist 50x pro Sekunde ein präziser Wechsel zwischen HIGH und LOW erforderlich. Pulsweitenmodulation, kurz PWM, ist dafür das Schlagwort.

Lösungsmöglichkeiten

Der übliche Linuxkernel ist für solche interruptgesteuerten Aufgaben kaum geeignet, da die zeitliche Präzision insbesondere bei höheren Frequenzen nicht erreicht werden kann. Idealerweise würde man dafür einen Microcontroller verwenden. Obwohl äusserst preiswert, wird (kann) ihn nur der erfahrene Bastler im Zusammenspiel mit dem RPi einsetzen und die entsprechende Kommunikation herstellen.

Eine saubere Lösung ist trotzdem auch ohne uC möglich: 'pigpio' !

'pigpio' kann noch viel mehr als "nur" PWM (siehe weiter unten).

Mein Tipp: pigpio

Auf dem RPi wird oft 'wiringPI' verwendet - es ist für geringere Ansprüche ausreichend und vermutlich etwas einfacher zu programmieren (Arduino User sind bereits mit der Syntax vertraut).

'pigpio' wurde von 'joan (siehe auch raspberry.org)' effizient in C programmiert und steht als Bibliothek (lib) zur Verfügung. Einstellungen und Änderungen im lfd. Betrieb werden über einen Dämon vorgenommen. Durch diese universelle Schnittstelle zum Anwendungsprogramm bleibt man unabhängig von einer bestimmten Programmiersprache.

Der Trick:

'pigpio' klinkt sich -am Kernel vorbei- direkt in den DMA-Takt des RPi ein. Eine saubere Taktung (PWM) bis zu 1 MHz ist so möglich!

'pigpio' kann verschiedene PWM Frequenzen an mehreren GPIOs gleichzeitig bereitstellen (Simultanbetrieb)! Trotzdem bleibt die CPU-Last erstaunlich niedrig, z.B. bei 5 Servos gleichzeitig nur ca. 25 %!

Es kann aber noch viel mehr:

Features

  • sampling and time-stamping of gpios 0-31 between 100,000 and 1,000,000 times per second.
  • provision of PWM on any number of the user gpios simultaneously.
  • provision of servo pulses on any number of the user gpios simultaneously.
  • callbacks when any of gpios 0-31 change state (callbacks receive the time of the event accurate to a few microseconds).
  • notifications via pipe when any of gpios 0-31 change state.
  • callbacks at timed intervals.
  • reading/writing all of the gpios in a bank (0-31, 32-53) as a single operation.
  • individually setting gpio modes, reading and writing.
  • socket and pipe interfaces for the bulk of the functionality in addition to the underlying C library calls.
  • the construction of arbitrary waveforms to give precise timing of output gpio level changes (accurate to a few microseconds).
  • software serial links using any user gpio.
  • rudimentary permission control through the socket and pipe interfaces so users can be prevented from "updating" inappropriate gpios.
  • creating and running scripts on the pigpio daemon.
Many thanks to Joan for this really great piece of software !!

Eigentlich nennt es sich 'PI-GPIO',
ich sage lieber 'PIG-PIO',
weil es einfach 'schweinisch' gut ist. :)

MORE INFOS AND DOWNLOAD




Desweiteren gibt es viele Videos und Beispiele. Einfach in youtube oder einer Suchmaschine nach 'pigpio' suchen.





© my avatar

© my mascot




1956 / 1