GPIO w Raspberry Pi Typ B

By | 13 kwietnia 2014

GPIO (General Purpose Input/Output) jest interfejsem służącym do komunikacji między elementami takimi jak mikroprocesor czy urządzenia peryferyjne. Wyprowadzenia (piny) mogą służyć jako wejścia jak i wyjścia sygnałów. Programista pisząc program obsługujący GPIO ma możliwość ustalenia czy dany port ma obsługiwać wejście czy wyjście sygnałów.

Oczywiście w Raspberry mamy dużo więcej portów, ale w tym artykule napiszę w jaki sposób zaprogramować działanie tylko GPIO. Poniżej prezentuje obrazek, który został pobrany ze strony https://jeena.net/rp-hw-button i pokazuje w jaki sposób wykorzystać Raspberry do zapalania diody led.

gpio-control-example (Small)

DNC to GND (Rev 2)

Porty, które na powyższym schemacie są oznaczone DNC (Do not connect) w wersji Rev 1 nie powinno się używać, a w Rev 2 te porty zostały połączone z GND (opisane niżej). Jeżeli nie wiesz którą wersję Raspbery posiadasz, to wejdź na tę stronę.

GND – Uziemienie (Port 4, 9, 14, 17, 20 i 25)

Aby zrozumieć, co to jest uziemienie, trzeba poznać podstawowe układy sieciowe. Gdy podłączamy jakieś urządzenie to do GND podłączamy – (minus).

I2C (Port 3 i 5)

Porty odpowiadające za I2C znajdują się na wyjściach o numerach 3 i 5. Służą one do przesyłania danych między układami elektronicznymi. Po bardziej szczegółowe informacje odsyłam do wikipedii. Używa się tych portów do komunikacji z niektórymi układami wyświetlaczy, czujników przyspieszenia i odległości.

SPI (Port 19, 21, 23, 24 i 26)

Serial Peripheral Interface to szeregowy interfejs urządzeń peryferyjnych.
MOSI (19) –  dane dla układu peryferyjnego;
MISO (21) – dane z układu peryferyjnego;
SCLK (23) – sygnał zegarowy (taktujący).
CE0 i CE1

UART (Port 8 i 10)

Universal Asynchronous Receiver and Transmitter używany jest do asynchronicznej transmisji danych. W sieci można znaleźć kilka przykładów użycia tych portów do obsługi czujników, czy też do komunikacji z Arduino. Więcej przeczytacie o nim na wikipedii.

Przykładowy skrypt obsługujący GPIO w Pythonie

from socket import *
import time
import RPi.GPIO as GPIO ## Import GPIO Library
import time ## Import 'time' library. Allows us to use 'sleep'

## Ustalam zmienne ktore przechowuja numer portu gpio
gpio0 = 11
gpio1 = 12
gpio2 = 13
gpio3 = 15
gpio4 = 16
gpio5 = 18
gpio6 = 22
gpio7 = 7

## ustawiam wszystkie porty gpio jako wyjscia
GPIO.setmode(GPIO.BOARD) ## Bedziemy uzywac numeracji pinow
GPIO.setup(gpio0, GPIO.OUT) ## GPIO 0
GPIO.setup(gpio1, GPIO.OUT) ## GPIO 1
GPIO.setup(gpio2, GPIO.OUT) ## GPIO 2
GPIO.setup(gpio3, GPIO.OUT) ## GPIO 3
GPIO.setup(gpio4, GPIO.OUT) ## GPIO 4
GPIO.setup(gpio5, GPIO.OUT) ## GPIO 5
GPIO.setup(gpio6, GPIO.OUT) ## GPIO 6
GPIO.setup(gpio7, GPIO.OUT) ## GPIO 7

## ustawiam wszystkie porty na stan wysoki
GPIO.output(gpio0, True)
GPIO.output(gpio1, True)
GPIO.output(gpio2, True)
GPIO.output(gpio3, True)
GPIO.output(gpio4, True)
GPIO.output(gpio5, True)
GPIO.output(gpio6, True)
GPIO.output(gpio7, True)

while 1:
 ## ustawiam wszystkie porty na stan niski
 GPIO.output(gpio0, False)
 GPIO.output(gpio1, False)
 GPIO.output(gpio2, False)
 GPIO.output(gpio3, False)
 GPIO.output(gpio4, False)
 GPIO.output(gpio5, False)
 GPIO.output(gpio6, False)
 GPIO.output(gpio7, False)
 time.sleep(2000) ## 2 sekundy oczekiwania
 ## ustawiam wszystkie porty na stan wysoki
 GPIO.output(gpio0, True)
 GPIO.output(gpio1, True)
 GPIO.output(gpio2, True)
 GPIO.output(gpio3, True)
 GPIO.output(gpio4, True)
 GPIO.output(gpio5, True)
 GPIO.output(gpio6, True)
 GPIO.output(gpio7, True)

## usuwam wszystkie przypisania portow
GPIO.cleanup()

Kod powinien działać bez doinstalowywania dodatkowych składników na dystrybucji Raspbian, która jest oparta o system Debian. Jedyny warunek dodatkowy, to uruchomienie programu Python’owego jako administrator.

One thought on “GPIO w Raspberry Pi Typ B

  1. Pingback: Sterowanie przekaźnikiem Raspberry Pi | Poradnik informatyka

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *