Questo articolo introduce il controllo GPIO diRaspberry Pi Zero We usa il LED per vedere l'effetto.
0.1 Lampone PiMetodo di numerazione GPIO
Pin fisico della funzione
Da sinistra a destra, dall'alto in basso: sinistra dispari, destra pari: 1-40

- BCM
La numerazione si concentra sui registri della CPU, in base alla numerazione dei registri GPIO del BCM2835.
cablaggioPi
La numerazione si concentra sulla logica di implementazione e le porte GPIO estese sono numerate da 0, il che è conveniente per la programmazione. Come mostrato nella colonna WiringPi.

Quando si utilizza GPIO, è necessario prima sapere quale set di numeri utilizzare.
1. Prepararsi
1.1 Hardware
Raspberry Pi Zero W
LED (3 mm o 5 mm)
Resistenza da 1KΩ
3 fili Dupont
Computer (io uso Windows 7)
1.2 Interfaccia GPIO

1.3 Cablaggio
Per prima cosa colleghiamo il LED al Raspberry Pi. Il polo positivo del LED è collegato in serie con un resistore da 1KΩ al GPIO18 (pin12) del Raspberry Pi e il polo negativo è collegato a terra. (Nota che ho preso in prestito un'immagine da altri di seguito. Nella foto, il polo positivo del LED è collegato al pin11 e noi siamo collegati al pin12)

2. Prova
2.1 Collega PC e Pi Zero W
Usa stucco per collegare il computer e Pi Zero W, vedi il documento di riferimento alla fine di questo articolo. Inserisci raspberrypi.local per Nome host, porta 22, nome utente pi e password raspberry.
Nota: nella partizione di avvio è presente un file di testo vuoto denominato ssh. Questo file ssh è facile da perdere. Se non è possibile accedere a ssh, verifica prima se ssh è perso.
2.2 Controllare GPIO direttamente con i comandi Shell
Esponi GPIO18 dallo spazio del kernel allo spazio utente
pi@raspberrypi:~ $ sudo echo 18 > /sys/class/gpio/export
> è il simbolo di reindirizzamento IO. Il reindirizzamento IO si riferisce alla modifica del dispositivo predefinito di input e output standard di Linux in modo che punti a un dispositivo definito dall'utente. echo 18 > export è scrivere 18 nel file di esportazione.
Dopo aver eseguito questa operazione, verrà aggiunta una cartella gpio18 alla directory /sys/class/gpio.
Visualizza il pin GPIO18 (in Liunx, il dispositivo ha la forma di un file e anche il pin è un dispositivo)
pi@raspberrypi:~ $ cd /sys/class/gpio/gpio18
pi@raspberrypi:/sys/class/gpio/gpio18 $ ls

- Imposta GPIO18 in modalità di uscita
pi@raspberrypi:/sys/class/gpio/gpio18 $ sudo echo out > direzione
Immettere 1 nel file del valore, il GPIO emette un livello alto e il LED si accende
pi@raspberrypi:/sys/class/gpio/gpio18 $ sudo echo 1 > valore
Immettere 0 nel file del valore, l'uscita GPIO è bassa e il LED è spento
pi@raspberrypi:/sys/class/gpio/gpio18 $ sudo echo 0 > valore
torna alla home directory
pi@raspberrypi:/sys/class/gpio $ cd ~
Disconnettersi dall'interfaccia GPIO18
pi@raspberrypi:~ $ sudo echo 18 > /sys/class/gpio/unexport
2.3 Controllo di GPIO con lo script della shell
Crea un nuovo script chiamato ledonoff.sh.
pi@raspberrypi:~ $ sudo nano ledonoff.sh
Lo script scrive quanto segue:
echo $1 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio$1/direction
echo 1 > /sys/class/gpio/gpio$1/valore
sonno 5 # ritardo 5 secondi
echo 0 > /sys/class/gpio/gpio$1/valore
echo $1 > /sys/class/gpio/unexport
Nota: lo script della shell può passare parametri, ad esempio, $1 rappresenta il primo parametro, $2 rappresenta il secondo parametro e così via.
Aggiungi il permesso eseguibile per ledonoff.sh
pi@raspberrypi:~ $ sudo chmod +x ledonoff.sh
eseguire lo script
pi@raspberrypi:~ $ sudo ./ledonoff.sh 18
Risultato dell'operazione: il LED si accende e si spegne per 5 secondi.
2.4 Utilizzo di Python per controllare GPIO tramite il comando PRI.GPIO
Il modo più conveniente per controllare GPIO con Python è utilizzare una libreria di classi Python, come RPi.GPIO integrata nelSistema Raspberry Pisi.
Immettere il comando nel terminale ssh di putty:
Accedi all'interfaccia interattiva di Python
pi@raspberrypi:~ $ pitone
>>> Questo è il prompt di Python.
Importa la libreria di classi Python RPi.GPIO, denominata e alias GPIO
>>> importa RPi.GPIO come GPIO
Dopo l'introduzione, puoi utilizzare le funzioni del modulo GPIO.
Imposta il metodo di codifica BOARD, basato su BCM
Lampone Pi 3GPIO è suddiviso nei seguenti tre metodi di codifica: codifica pin fisica BOARD, codifica BCM e codifica wirePi.
>>> GPIO.setmode(GPIO.BCM)
modalità di uscita
>>> GPIO.setup(18,GPIO.OUT)
GPIO18 emette un livello alto, il LED si accende
>>> GPIO.output(18,GPIO.HIGH)
Livello basso dell'uscita GPIO18, LED spento
>>> GPIO.output(18,GPIO.LOW)
Pulisci dopo l'uso
>>> GPIO.cleanup()
Esci dall'interfaccia Python
>>> CTRL+D
2.5 Controllo GPIO con script Python
Crea un nuovo script chiamato blinky.py.
pi@raspberrypi:~ $ sudo nano blinky.py
Lo script scrive quanto segue:
importa RPi.GPIO come GPIO
tempo di importazione
GPIO.setmode(GPIO.BCM)
GPIO.setup(18,GPIO.OUT)
mentre Vero:
GPIO.output(18,GPIO.HIGH)
tempo.sonno(1)
GPIO.output(18,GPIO.LOW)
tempo.sonno(1)
GPIO.cleanup()
Descrizione: il corpo del ciclo in basso mentre True deve essere rientrato, basta usare i tasti spazio o Tab (ma non misti) per indentare.
Aggiungi l'autorizzazione eseguibile a blinky.py
pi@raspberrypi:~ $ sudo chmod +x blinky.py
Esegui lo script Python
pi@raspberrypi:~ $ sudo python blinky.py
Il LED lampeggia.
Smetti di correre
Usa Ctrl+C per interrompere il ciclo.
3. Controlla GPIO in linguaggio C con cablaggioPi GPIO
Il kernel Raspberry Pi è stato compilato con un driver gpio integrato. Usiamo spesso alcune funzioni di libreria scritte da terze parti per completare operazioni specifiche. Le funzioni della libreria delle operazioni più comuni sono:
Python GPIO
Python GPIO è stato integrato nel kernel Raspberry Pi, consigliato nelle informazioni ufficiali di Raspberry Pi e facile da usare. python GPIO è una piccola libreria python che può aiutare gli utenti a completare le operazioni della porta IO relative a raspberry, ma la libreria python GPIO non supporta ancora interfacce bus come SPI, I2C o 1-wire.
Le librerie di linguaggio C comuni sono:
cablaggioPi
cablaggioPi è adatto a coloro che hanno una base nel linguaggio C e sono stati esposti a microcontroller o sviluppo embedded prima di contattare Raspberry Pi. La funzione API di cablaggioPi è molto simile ad arduino, il che lo rende anche popolare. L'autore fornisce molte istruzioni e codici di esempio, che includono anche dispositivi UART, dispositivi I2C e dispositivi SPI, ecc.
Libreria BCM2835 C
La libreria C BCM2835 può essere intesa come driver sottostanti correlati implementati in linguaggio C. La libreria dei driver della libreria C BCM2835 include GPIO, SPI e UART, ecc. Puoi imparare la libreria C BCM2835 per familiarizzare con le operazioni di registro relative a BCM2835. Se hai l'opportunità di sviluppare un driver Linux su Raspberry Pi, o sviluppare il tuo driver di estensione Python o PHP, puoi trovare molta "ispirazione" dalla libreria C BCM2835.
3.1 Installazione di WiringPi GPIO
WiringPi è una funzione di libreria di controllo GPIO applicata alla piattaforma Raspberry Pi. WiringPi è conforme a GUN Lv3. cablaggioPi è sviluppato in C o C++ e può essere impacchettato da altri linguaggi come python, ruby o PHP.
cablaggioPi include una serie di comandi di controllo gpio, che possono essere utilizzati per controllare i pin GPIO del Raspberry Pi. Gli utenti possono utilizzare i comandi gpio per controllare o eseguire query sui pin GPIO tramite script di shell.
installazione di cablaggioPi
elenco di aggiornamento:
pi@raspberrypi:~ $ sudo apt-get update
Aggiornamento software:
pi@raspberrypi:~ $ sudo apt-get upgrade
Installare:
pi@raspberrypi:~ $ sudo apt-get install wiringpi
test
cablaggioPi include una serie di comandi gpio, che possono essere utilizzati per controllare varie interfacce sul Raspberry Pi. I seguenti comandi possono essere utilizzati per verificare se il cablaggioPi è installato correttamente.
pi@raspberrypi:~ $ gpio -v

- Visualizza il diagramma GPIO
pi@raspberrypi:~ $ gpio readall

3.2 Scrittura del codice
Crea un nuovo programma sorgente chiamato led_blink.c
pi@raspberrypi:~ $ sudo nano led_blink.c
Il contenuto è il seguente
#includere
int principale (vuoto) {
cablaggioPiSetup();
pinMode (1, USCITA);
per(;;) {
digitalWrite(1, HIGH); ritardo(500);
digitalWrite(1, LOW); ritardo (500) ;
}
}
Spiegazione: Guardando l'immagine nella sezione precedente, il pin GPIO18 del numero BCM è 1 nel numero cablaggioPi.
3.3 Compilare ed eseguire
compilare
pi@raspberrypi:~ $ gcc led_blink.c -o led_blink -l cablaggioPi
-l wirePi significa caricare dinamicamente la libreria condivisa wirelingPi.
correre
pi@raspberrypi:~ $ sudo ./led_blink
Usa Ctrl+C per interrompere il ciclo.
4. Controllare GPIO in linguaggio C con la libreria C BCM2835
4.1 Scarica e installa
int principale (vuoto) {
cablaggioPiSetup();
pinMode (1, USCITA);
per(;;) {
digitalWrite(1, HIGH); ritardo(500);
digitalWrite(1, LOW); ritardo (500) ;
}
}
Spiegazione: Guardando l'immagine nella sezione precedente, il pin GPIO18 del numero BCM è 1 nel numero cablaggioPi.
3.3 Compilare ed eseguire
compilare
pi@raspberrypi:~ $ gcc led_blink.c -o led_blink -l cablaggioPi
-l wirePi significa caricare dinamicamente la libreria condivisa wirelingPi.
correre
pi@raspberrypi:~ $ sudo ./led_blink
Usa Ctrl+C per interrompere il ciclo.
4. Controllare GPIO in linguaggio C con la libreria C BCM2835
4.1 Scarica e installa

- scarica bcm2835-1.56.tar.gz
pi@raspberrypi:~ $ wget //www.airspayce.com/mikem/bcm2835/bcm2835-1.56.tar.gz
decomprimere
pi@raspberrypi:~ $ tar xvzf bcm2835-1.56.tar.gz
configurare la compilazione
Vai alla directory compressa:
pi@raspberrypi:~ $ cd bcm2835-1.56
Esegui il comando di configurazione:
pi@raspberrypi:~/bcm2835-1.56 $ ./configure
pi@raspberrypi:~/bcm2835-1.56 $ make
eseguire l'ispezione
pi@raspberrypi:~/bcm2835-1.56 $ sudo make check
Installa la libreria bcm2835:
pi@raspberrypi:~/bcm2835-1.56 $ sudo make install
4.2 Scrittura del codice
Crea un nuovo programma sorgente chiamato blink_led.c
pi@raspberrypi:~/bcm2835-1.56 $ cd ~
pi@raspberrypi:~ $ sudo nano blink_led.c
Il contenuto è il seguente
#includere
#definisci PIN RPI_GPIO_P1_12
int main(int argc, char **argv) {
se (!bcm2835_init())
ritorno 1;
bcm2835_gpio_fsel(PIN, BCM2835_GPIO_FSEL_OUTP);
mentre (1) {
bcm2835_gpio_write(PIN, ALTO);
bcm2835_delay(500);
bcm2835_gpio_write(PIN, BASSO);
bcm2835_delay(500);
}
bcm2835_close();
restituire 0;
}
Nota: il metodo di numerazione di GPIO è diverso. Viene utilizzato il numero di interfaccia fisica della scheda PCB e il led è collegato ai 12 pin della scheda Raspberry Pi Zero W.
4.3 Compilare ed eseguire
compilare
pi@raspberrypi:~ $ gcc blink_led.c -o blink_led -l bcm2835
-l bcm2835 significa caricare dinamicamente la libreria condivisa bcm2835
correre
sudo ./blink_led
Usa Ctrl+C per interrompere il ciclo.
English
Deutsch
日本語

