Dieser Artikel stellt die GPIO-Steuerung vonRaspberry Pi Zero W, und verwendet LED, um den Effekt zu sehen.
0.1 Himbeer-PiGPIO-Nummerierungsmethode
Funktion Physikalischer Pin
Von links nach rechts, von oben nach unten: links ungerade, rechts gerade: 1-40

- BCM
Die Nummerierung konzentriert sich auf die CPU-Register, entsprechend der GPIO-Registernummerierung des BCM2835.
VerdrahtungPi
Die Nummerierung konzentriert sich auf die Implementierungslogik, und die erweiterten GPIO-Ports sind ab 0 nummeriert, was für die Programmierung praktisch ist. Wie in der WiringPi-Spalte gezeigt.

Beim Betrieb von GPIO müssen Sie zunächst wissen, welche Zahlengruppe verwendet werden soll.
1. Vorbereiten
1.1 Hardware
Raspberry Pi Zero W
LED (3mm oder 5mm)
1KΩ Widerstand
3 Dupont-Drähte
Computer (ich benutze Windows 7)
1.2 GPIO-Schnittstelle

1.3 Verkabelung
Zuerst verbinden wir die LED mit dem Raspberry Pi. Der Pluspol der LED wird mit einem 1KΩ Widerstand in Reihe zum GPIO18 (Pin12) des Raspberry Pi geschaltet, der Minuspol wird geerdet. (Beachten Sie, dass ich unten ein Bild von anderen ausgeliehen habe. Auf dem Bild ist der positive Pol der LED mit Pin11 verbunden, und wir sind mit Pin12 verbunden.)

2. Testen
2.1 PC und Pi Zero W verbinden
Verwenden Sie Putty, um den Computer und den Pi Zero W zu verbinden, siehe Referenzdokument am Ende dieses Artikels. Geben Sie raspberrypi.local für Hostname, Port 22, Benutzername pi und Passwort raspberry ein.
Hinweis: In der Boot-Partition befindet sich eine leere Textdatei namens ssh. Diese SSH-Datei kann leicht verloren gehen. Wenn ssh nicht angemeldet werden kann, überprüfen Sie zuerst, ob ssh verloren gegangen ist.
2.2 GPIO direkt mit Shell-Befehlen steuern
Setzen Sie GPIO18 vom Kernel-Space zum User-Space frei
pi@raspberrypi:~ $ sudo echo 18 > /sys/class/gpio/export
> ist das IO-Umleitungssymbol. IO-Umleitung bezieht sich auf das Ändern des Standardgeräts der Linux-Standardeingabe und -ausgabe, sodass es auf ein benutzerdefiniertes Gerät zeigt. echo 18 > export soll 18 in die exportdatei schreiben.
Nach Durchführung dieses Vorgangs wird ein gpio18-Ordner zum /sys/class/gpio-Verzeichnis hinzugefügt.
Zeigen Sie den GPIO18-Pin an (in Liunx hat das Gerät die Form einer Datei und der Pin ist auch ein Gerät)
pi@raspberrypi:~ $ cd /sys/class/gpio/gpio18
pi@raspberrypi:/sys/class/gpio/gpio18 $ ls

- Stellen Sie GPIO18 auf Ausgabemodus
pi@raspberrypi:/sys/class/gpio/gpio18 $ sudo echo out > direction
Tragen Sie 1 in die Wertedatei ein, der GPIO gibt einen High-Pegel aus und die LED leuchtet
pi@raspberrypi:/sys/class/gpio/gpio18 $ sudo echo 1 > value
Geben Sie 0 in die Wertedatei ein, der GPIO-Ausgang ist niedrig und die LED ist aus
pi@raspberrypi:/sys/class/gpio/gpio18 $ sudo echo 0 > value
zurück zum Home-Verzeichnis
pi@raspberrypi:/sys/class/gpio $ cd ~
Melden Sie sich von der GPIO18-Schnittstelle ab
pi@raspberrypi:~ $ sudo echo 18 > /sys/class/gpio/unexport
2.3 GPIO mit Shell-Skript steuern
Erstellen Sie ein neues Skript namens ledonoff.sh.
pi@raspberrypi:~ $ sudo nano ledonoff.sh
Das Skript schreibt folgendes:
echo $1 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio$1/direction
echo 1 > /sys/class/gpio/gpio$1/value
sleep 5 # Verzögerung 5 Sekunden
echo 0 > /sys/class/gpio/gpio$1/value
echo $1 > /sys/class/gpio/unexport
Hinweis: Das Shell-Skript kann Parameter übergeben, beispielsweise steht $1 für den ersten Parameter, $2 für den zweiten Parameter und so weiter.
Ausführbare Berechtigung für ledonoff.sh hinzufügen
pi@raspberrypi:~ $ sudo chmod +x ledonoff.sh
Skript ausführen
pi@raspberrypi:~ $ sudo ./ledonoff.sh 18
Ergebnis der Operation: LED ist ein und aus für 5 Sekunden.
2.4 Verwendung von Python zur Steuerung von GPIO über den PRI.GPIO-Befehl
Der bequemste Weg, GPIO mit Python zu steuern, ist die Verwendung einer Python-Klassenbibliothek, wie z. B. RPi.GPIO, die in die integriert istRaspberry Pi-Systemselbst.
Geben Sie den Befehl im SSH-Terminal von Putty ein:
Rufen Sie die interaktive Python-Schnittstelle auf
pi@raspberrypi:~ $python
>>> Dies ist die Python-Eingabeaufforderung.
Importieren Sie die Python-Klassenbibliothek RPi.GPIO mit dem Namen und Alias GPIO
>>> RPi.GPIO als GPIO importieren
Nach der Einführung können Sie die Funktionen des GPIO-Moduls nutzen.
Legen Sie die BOARD-Codierungsmethode basierend auf BCM fest
Himbeer-Pi 3GPIO ist in die folgenden drei Codierungsmethoden unterteilt: Physical Pin BOARD-Codierung, BCM-Codierung und WiringPi-Codierung.
>>> GPIO.setmode(GPIO.BCM)
Ausgabemodus
>>> GPIO.setup(18,GPIO.OUT)
GPIO18 gibt High-Pegel aus, die LED leuchtet
>>> GPIO.Ausgang (18,GPIO.HIGH)
GPIO18-Ausgang Low-Pegel, LED aus
>>> GPIO.Ausgang (18,GPIO.LOW)
Nach Gebrauch aufräumen
>>> GPIO.cleanup()
Beenden Sie die Python-Oberfläche
>>> Strg+D
2.5 GPIO mit Python-Skript steuern
Erstellen Sie ein neues Skript namens blinky.py.
pi@raspberrypi:~ $ sudo nano blinky.py
Das Skript schreibt folgendes:
RPi.GPIO als GPIO importieren
Importzeit
GPIO.setmode(GPIO.BCM)
GPIO.setup(18,GPIO.OUT)
während wahr:
GPIO.Ausgang (18,GPIO.HIGH)
time.sleep(1)
GPIO.Ausgang (18,GPIO.LOW)
time.sleep(1)
GPIO.cleanup()
Beschreibung: Der Schleifenkörper unten muss eingerückt werden, während True eingerückt werden muss. Verwenden Sie zum Einrücken einfach die Leertaste oder die Tabulatortaste (aber nicht gemischt).
Ausführbare Berechtigung zu blinky.py hinzufügen
pi@raspberrypi:~ $ sudo chmod +x blinky.py
Führen Sie das Python-Skript aus
pi@raspberrypi:~ $ sudo python blinky.py
LED blinkt.
Hör auf zu rennen
Verwenden Sie Strg+C, um die Schleife zu unterbrechen.
3. Steuern Sie GPIO in C-Sprache mit wiringPi GPIO
Der Raspberry Pi-Kernel wurde mit einem eingebauten gpio-Treiber kompiliert. Wir verwenden häufig einige Bibliotheksfunktionen, die von Drittanbietern geschrieben wurden, um bestimmte Vorgänge auszuführen. Die gebräuchlicheren Funktionen der Operationsbibliothek sind:
Python-GPIO
Python GPIO wurde in den Raspberry-Pi-Kernel integriert, was in den offiziellen Raspberry-Pi-Informationen empfohlen wird und einfach zu bedienen ist. Python GPIO ist eine kleine Python-Bibliothek, die Benutzern helfen kann, Himbeer-bezogene IO-Port-Operationen abzuschließen, aber die Python-GPIO-Bibliothek unterstützt noch keine Busschnittstellen wie SPI, I2C oder 1-Draht.
Gängige C-Sprachbibliotheken sind:
VerdrahtungPi
WiringPi ist für diejenigen geeignet, die über Grundkenntnisse in der Programmiersprache C verfügen und mit Mikrocontroller- oder Embedded-Entwicklung vertraut waren, bevor sie sich an Raspberry Pi wandten. Die API-Funktion von wiringPi ist arduino sehr ähnlich, was es auch beliebt macht. Der Autor gibt viele Anweisungen und Beispielcodes, die auch UART-Geräte, I2C-Geräte und SPI-Geräte usw. enthalten.
BCM2835 C-Bibliothek
Die BCM2835-C-Bibliothek kann als verwandte zugrunde liegende Treiber verstanden werden, die in der Sprache C implementiert sind. Die Treiberbibliothek der BCM2835 C-Bibliothek umfasst GPIO, SPI und UART usw. Sie können die BCM2835 C-Bibliothek lernen, um sich mit BCM2835-bezogenen Registeroperationen vertraut zu machen. Wenn Sie die Möglichkeit haben, einen Linux-Treiber auf dem Raspberry Pi zu entwickeln oder Ihren eigenen Python- oder PHP-Erweiterungstreiber zu entwickeln, können Sie in der BCM2835-C-Bibliothek viel „Inspiration“ finden.
3.1 WiringPi GPIO-Installation
WiringPi ist eine GPIO-Steuerungsbibliotheksfunktion, die auf die Raspberry Pi-Plattform angewendet wird. WiringPi entspricht GUN Lv3. wiringPi wird in C oder C++ entwickelt und kann von anderen Sprachen wie Python, Ruby oder PHP paketiert werden.
WiringPi enthält eine Reihe von GPIO-Steuerbefehlen, mit denen die GPIO-Pins des Raspberry Pi gesteuert werden können. Benutzer können gpio-Befehle verwenden, um GPIO-Pins über Shell-Skripte zu steuern oder abzufragen.
WiringPi-Installation
Aktualisierungsliste:
pi@raspberrypi:~ $ sudo apt-get update
Software aktualisieren:
pi@raspberrypi:~ $ sudo apt-get upgrade
Installieren:
pi@raspberrypi:~ $ sudo apt-get install wiringpi
Prüfung
WiringPi enthält eine Reihe von gpio-Befehlen, mit denen verschiedene Schnittstellen auf dem Raspberry Pi gesteuert werden können. Mit den folgenden Befehlen kann getestet werden, ob wiringPi erfolgreich installiert wurde.
pi@raspberrypi:~ $ gpio -v

- Sehen Sie sich das GPIO-Diagramm an
pi@raspberrypi:~ $ gpio readall

3.2 Code schreiben
Erstellen Sie ein neues Quellprogramm namens led_blink.c
pi@raspberrypi:~ $ sudo nano led_blink.c
Der Inhalt ist wie folgt
#enthalten
int Haupt(leer) {
VerkabelungPiSetup();
PinMode (1, AUSGANG);
zum(;;) {
digitalWrite (1, HOCH); Verzögerung (500);
digitalWrite (1, NIEDRIG); Verzögerung (500) ;
}
}
Erklärung: Wenn Sie sich das Bild im vorherigen Abschnitt ansehen, ist der GPIO18-Pin der BCM-Nummer 1 in der wiringPi-Nummer.
3.3 Kompilieren und ausführen
kompilieren
pi@raspberrypi:~ $ gcc led_blink.c -o led_blink -l wiringPi
-l wiringPi bedeutet, dass wiringPi die gemeinsam genutzte Bibliothek dynamisch laden.
Lauf
pi@raspberrypi:~ $ sudo ./led_blink
Verwenden Sie Strg+C, um die Schleife zu unterbrechen.
4. Steuern Sie GPIO in C-Sprache mit der BCM2835 C-Bibliothek
4.1 Herunterladen und installieren
int Haupt(leer) {
VerkabelungPiSetup();
PinMode (1, AUSGANG);
zum(;;) {
digitalWrite (1, HOCH); Verzögerung (500);
digitalWrite (1, NIEDRIG); Verzögerung (500) ;
}
}
Erklärung: Wenn Sie sich das Bild im vorherigen Abschnitt ansehen, ist der GPIO18-Pin der BCM-Nummer 1 in der wiringPi-Nummer.
3.3 Kompilieren und ausführen
kompilieren
pi@raspberrypi:~ $ gcc led_blink.c -o led_blink -l wiringPi
-l wiringPi bedeutet, dass wiringPi die gemeinsam genutzte Bibliothek dynamisch laden.
Lauf
pi@raspberrypi:~ $ sudo ./led_blink
Verwenden Sie Strg+C, um die Schleife zu unterbrechen.
4. Steuern Sie GPIO in C-Sprache mit der BCM2835 C-Bibliothek
4.1 Herunterladen und installieren

- bcm2835-1.56.tar.gz herunterladen
pi@raspberrypi:~ $ wget //www.airspayce.com/mikem/bcm2835/bcm2835-1.56.tar.gz
entpacken
pi@raspberrypi:~ $ tar xvzf bcm2835-1.56.tar.gz
Zusammenstellung konfigurieren
Wechseln Sie in das komprimierte Verzeichnis:
pi@raspberrypi:~ $ cd bcm2835-1.56
Führen Sie den Konfigurationsbefehl aus:
pi@raspberrypi:~/bcm2835-1.56 $ ./configure
pi@raspberrypi:~/bcm2835-1.56 $ machen
Inspektion durchführen
pi@raspberrypi:~/bcm2835-1.56 $ sudo make check
Installieren Sie die bcm2835-Bibliothek:
pi@raspberrypi:~/bcm2835-1.56 $ sudo make install
4.2 Code schreiben
Erstellen Sie ein neues Quellprogramm namens blink_led.c
pi@raspberrypi:~/bcm2835-1.56 $ cd ~
pi@raspberrypi:~ $ sudo nano blink_led.c
Der Inhalt ist wie folgt
#enthalten
#define PIN RPI_GPIO_P1_12
int main(int argc, char **argv) {
wenn (!bcm2835_init())
Rückgabe 1;
bcm2835_gpio_fsel (PIN, BCM2835_GPIO_FSEL_OUTP);
während (1) {
bcm2835_gpio_write (PIN, HOCH);
bcm2835_delay(500);
bcm2835_gpio_write (PIN, NIEDRIG);
bcm2835_delay(500);
}
bcm2835_close();
0 zurückgeben;
}
Hinweis: Die Nummerierungsmethode von GPIO ist anders. Die physische Schnittstellennummer der Platine wird verwendet, und die LED wird mit dem 12-Pin der Raspberry Pi Zero W-Platine verbunden.
4.3 Kompilieren und ausführen
kompilieren
pi@raspberrypi:~ $ gcc blink_led.c -o blink_led -l bcm2835
-l bcm2835 bedeutet, dass die gemeinsam genutzte Bibliothek bcm2835 dynamisch geladen wird
Lauf
sudo ./blink_led
Verwenden Sie Strg+C, um die Schleife zu unterbrechen.
English
lingua italiana
日本語
