Schritt 4: ServoBlaster Installation
Eine Greta-Bibliothek verwendet werden, um Servos zu steuern ist ServoBlaster
Dies ist Software für die RaspberryPi, bietet eine Schnittstelle, um mehrere Servos über die GPIO-Pins zu fahren. Sie steuern die Servo-Positionen durch Senden von Befehlen an den Fahrer sagen welche Impulsbreite ein bestimmtes Servo-Ausgang verwenden sollten. Der Fahrer behält die Impulsbreite, bis Sie einen neuen Befehl einige andere breite anfordern senden.
Standardmäßig ist es Laufwerk 8 Servos, konfiguriert, obwohl Sie es um bis zu 21 fahren konfigurieren können. Servos benötigen in der Regel eine aktive high-Pulse von irgendwo zwischen 0. 5ms und 2.5ms, wo die Impulsbreite die Position des Servos steuert. Der Puls sollte etwa alle 20ms, wiederholt werden, obwohl Pulsfrequenz nicht kritisch ist. Die Pulsbreite ist kritisch, da das direkt an die Servoposition übersetzt.
Neben dem Servos fahren, kann ServoBlaster konfiguriert werden, Impulsbreiten zwischen 0 und 100 % der Zykluszeit generieren eignet sich somit für die Steuerung der Helligkeit von bis zu 21 LEDs, zum Beispiel.
Der Treiber erstellt eine Gerätedatei, / Dev/Servoblaster, im schicken Befehle. Das Befehlsformat ist entweder
[Servo-Nummer] = [Servoposition]
(Bsp.: Echo P1 - 11 = 80 % >/Dev/Servoblaster)
oder
P [Header]-[Pin] = [Servoposition]
(ex: echo P0 = 80 % >/Dev/Servoblaster)
Erstens Mal Klonen Richardghirst Projekt von GITHUB:
CD
Sudo Git clone https://github.com/richardghirst/PiBits
Dir zu ändern:
CD PiBits
CD ServoBlaster
CD-Benutzer
Liste der Inhalte und überprüfen, ob das Verzeichnis die Datei "servod.c enthält"
LS
Kompilieren Sie und installieren Sie die Datei served.c:
Sudo Make servod
Sudo machen installieren
In diesem Moment muss das Programm Servod installiert werden. Ändern Sie die Berechtigungen, und führen Sie das Programm um es zu testen:
Sudo Chmod 755 servod
Sudo. / Servod
Wenn alles in Ordnung ist, sehen Sie auf den Monitor, die folgenden Informationen:
Board model: 2 GPIO configuration: P1 (40 pins) Using hardware: PWM Using DMA channel: 14 Idle timeout: Disabled Number of servos: 8 Servo cycle time: 20000us Pulse increment step size: 10us Minimum width value: 50 (500us) Maximum width value: 250 (2500us) Output levels: Normal Using P1 pins: 7,11,12,13,15,16,18,22 Servo mapping: 0 on P1-7 GPIO-4 1 on P1-11 GPIO-17 2 on P1-12 GPIO-18 3 on P1-13 GPIO-27 4 on P1-15 GPIO-22 5 on P1-16 GPIO-23 6 on P1-18 GPIO-24 7 on P1-22 GPIO-25
Beachten Sie das Servo Mapping oben. Wir benötigen nur 2 Servos, sodass wir die Stifte verwendet werden einschränken müssen. Betrachten wir:
- GPIO.17 (P1-11) wird für TILT verwendet werden
- GPIO.23 (P1-16) wird verwendet für PAN
Um die Stifte verwendet werden zu definieren, müssen die folgenden Parameter verwendet werden:
Sudo. / Servod--p1pins = 11, 16
Den obigen Befehl ausführen, zeigt der Monitor nun in seinem unteren Teil:
Mit Hilfe der P1-Pins: 11,16
Servo-Mapping:
0 auf P1-11 GPIO-17
1 auf P1-16 GPIO-23
Beachten Sie auch, dass wenn Sie RPi neu starten, die Konfiguration wird l, so verloren werden. Es ist wichtig, den letzten Befehl in /etc/rc.local aufnehmen
Sudo Nano /etc/rc.local
...
CD /home/pi/PiBits/ServoBlaster/user
Sudo. / Servod--p1pins = 11, 16
CD
...
Auch ist es wichtig das Skript unten:
Sudo Nano /etc/init.d/servoblaster
...
Case "$1" in
Start)
/usr/local/sbin/servod $OPTS >/Dev/null
ändern Sie:
/usr/local/sbin/servod --p1pins = 11, 16 $OPTS >/Dev/null
...
;; ;;#!/bin/sh ### BEGIN INIT INFO # Provides: servoblaster # Required-Start: hostname $local_fs # Required-Stop: # Should-Start: # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start/stop servod. # Description: This script starts/stops servod. ### END INIT INFO PATH=/sbin:/usr/sbin:/bin:/usr/bin . /lib/init/vars.sh OPTS="--idle-timeout=2000" STATUSFILE="/tmp/servoblaster-status" if [ $( id -u ) != 0 ]; then echo "ERROR: Must be run as root" exit 1 fi case "$1" in start) /usr/local/sbin/servod --p1pins=11,16 $OPTS >/dev/null<br> ;; restart|reload|force-reload) killall servod /usr/local/sbin/servod $OPTS >/dev/null ;; stop) killall servod ;; status) if [ ! -e /dev/servoblaster ]; then echo "ERROR: /dev/servoblaster does not exist" exit 2 fi rm -f $STATUSFILE echo "status $STATUSFILE" > /dev/servoblaster sleep 0.2 if [ ! -e $STATUSFILE ]; then echo "ERROR: servod not responding" exit 3 elif grep -q "^OK" $STATUSFILE; then echo "OK" exit 0 elif grep "^ERROR:" $STATUSFILE; then exit 4 else echo "ERROR: No status from servod" exit 5 fi ;; *) echo "Usage: servoblaster [start|stop|status]" >&2 exit 6 ;; esac exit 0
jetzt starten Sie Ihr System neu, damit die Änderungen dauerhaft sind
Sudo reboot
Das war's. Servo-Blaster ist installiert. Beachten Sie, dass an dieser Stelle ServoBlaster nur zwei Servos erkennt:
Servo 0 == > p1-11
Servo 1 == > 01-16
Der Echo-Befehl kann auf eine von den Balg-Formaten, mit gleichen Ergebnis durchgeführt werden:
Echo P1 - 11 = 40 % >/Dev/Servoblaster
Echo P1 - 16 = 60 % >/Dev/Servoblaster
oder
0 = 40 % Echo >/Dev/Servoblaster
Echo 1 = 60 % >/Dev/Servoblaster