GPIO w Raspberry Pi 4 to najprostszy sposób, żeby minikomputer zaczął sterować światem fizycznym: diodą, przyciskiem, czujnikiem, przekaźnikiem czy magistralą I2C. W praktyce liczą się trzy rzeczy: który pin za co odpowiada, jak bezpiecznie podać napięcie 3,3 V oraz kiedy Pi 4 jest wygodny, a kiedy lepiej od razu sięgnąć po mikrokontroler. W tym tekście pokazuję to bez nadmiaru teorii, z naciskiem na realne podłączenia i typowe błędy.
Najważniejsze fakty, które warto znać przed pierwszym podłączeniem
- Raspberry Pi 4 udostępnia 28 linii BCM2711 przez standardowe 40-pinowe złącze.
- Sygnały logiczne pracują na 3,3 V; piny 5 V służą do zasilania, nie do sterowania logiką.
- Do najwygodniejszych startowych pinów należą GPIO17, GPIO18, GPIO22 i GPIO27.
- GPIO2 i GPIO3 mają stałe podciągnięcie, więc często trafiają do I2C.
- Do LED daj rezystor, a silników i modułów 5 V nie podłączaj bezpośrednio.
- Na Raspberry Pi OS najprościej zacząć od GPIO Zero i komendy
pinout.
Według dokumentacji Raspberry Pi Model 4B udostępnia 28 linii BCM2711 przez standardowe 40-pinowe złącze, a sam header jest zgodny wstecznie z innymi płytkami z 40-pinowym układem. To dobra wiadomość, bo większość akcesoriów i nakładek HAT działa bez niespodzianek, ale nie oznacza to, że każdy pin można traktować tak samo. Na headerze są piny zasilania 5 V, zasilania 3,3 V, masy i linie sygnałowe, a każda z tych grup ma inną rolę.
W praktyce Raspberry Pi 4 zachowuje się jak minikomputer, który potrafi sterować elektroniką, ale nie jest mikrokontrolerem z twardym czasem rzeczywistym. To oznacza, że świetnie sprawdza się w automatyce domowej, prostych układach pomiarowych, interfejsach i projektach edukacyjnych, a gorzej tam, gdzie liczy się deterministyczny czas reakcji co do mikrosekundy.
Najważniejsza różnica dla początkującego jest prosta: GPIO służy do sygnałów logicznych, a nie do „podawania mocy”. Z tego powodu najpierw trzeba dobrze rozróżnić numerację i poziomy napięć, bo właśnie tam pojawia się najwięcej błędów.
Jak czytać numerację pinów i nie pomylić zasilania z sygnałem
Ja w projektach wybieram numerację BCM, bo wtedy kod i schemat mówią tym samym językiem. Gdy w Pythonie ustawiam LED(17), od razu wiem, że chodzi o GPIO17, niezależnie od tego, gdzie ten styk leży fizycznie na listwie.
| System | Co oznacza | Kiedy go używam |
|---|---|---|
| Fizyczny | Numer styku na złączu 1-40 | Przy okablowaniu i na schemacie montażowym |
| BCM | Numer linii SoC Broadcom, np. GPIO17 | W kodzie i dokumentacji projektowej |
| BOARD | Numeracja zgodna z pinem na płytce | Rzadziej, głównie w starszych materiałach |
Jeśli chcesz szybko sprawdzić układ na samej płytce, uruchom w terminalu pinout. Na Raspberry Pi OS ta komenda pokazuje mapę złączy i jest dostępna z GPIO Zero, więc to najszybszy sposób, żeby uniknąć pomyłki przy pierwszym okablowaniu. Trzeba też pamiętać, że GPIO0 i GPIO1 są wyprowadzone na fizycznych pinach 27 i 28, ale służą do bardziej zaawansowanych zastosowań, a GPIO2 i GPIO3 mają stałe podciągnięcia i najczęściej trafiają do I2C.
Gdy numeracja przestaje być zagadką, można przejść do pinów, które najczęściej wykorzystuję w realnych projektach.
Najważniejsze piny, które wykorzystasz najczęściej
W praktyce nie trzeba pamiętać wszystkich 40 styków. Wystarczy opanować kilka, które pojawiają się najczęściej w prototypach, a resztę dociągnąć z mapy pinów wtedy, gdy projekt naprawdę tego wymaga.
| Pin fizyczny | BCM | Typowe użycie | Krótki komentarz |
|---|---|---|---|
| 1 | 3.3 V | Zasilanie czujników 3,3 V | To nie jest GPIO |
| 2, 4 | 5 V | Zasilanie modułów | To nie jest linia sygnałowa |
| 6, 9, 14, 20, 25, 30, 34, 39 | GND | Wspólna masa | Potrzebna zawsze przy zewnętrznym układzie |
| 3 | GPIO2 / SDA1 | I2C data | Ma stałe podciągnięcie |
| 5 | GPIO3 / SCL1 | I2C clock | Ma stałe podciągnięcie |
| 7 | GPIO4 | Ogólne wejście/wyjście | Dobry pin startowy |
| 11 | GPIO17 | LED, wyjście | Często używany w przykładach |
| 12 | GPIO18 | PWM, LED, sygnał | Jeden z pinów sprzętowego PWM |
| 13 | GPIO27 | Przycisk, wejście | Wygodny do prostych testów |
| 15 | GPIO22 | Ogólne wejście/wyjście | Bezpieczny wybór na start |
| 19, 21, 23, 24, 26 | GPIO10, 9, 11, 8, 7 | SPI | Przydaje się przy ekranach, pamięciach i przetwornikach |
| 32, 33, 35 | GPIO12, 13, 19 | PWM / sterowanie sygnałem | Najbardziej praktyczne przy regulacji jasności lub mocy |
| 40 | GPIO21 | Ogólne wejście/wyjście | Dobry pin zapasowy |
W tym zestawie szczególnie ważne są piny PWM i magistral, bo one najczęściej zmieniają projekt z prostego testu w sensowny układ roboczy. Zanim jednak cokolwiek podłączysz na stałe, trzeba przejść przez bezpieczeństwo.
Jak bezpiecznie podłączyć LED, przycisk i prosty moduł
Oficjalna dokumentacja Raspberry Pi OS poleca GPIO Zero jako najprostszy sposób sterowania z Pythona. Ja korzystam z niego szczególnie wtedy, gdy chcę szybko sprawdzić LED albo przycisk, bo eliminuje zbędny boilerplate i pozwala skupić się na kablach, a nie na walce z biblioteką.
from gpiozero import LED
from time import sleep
led = LED(17)
while True:
led.on()
sleep(1)
led.off()
sleep(1)Ten przykład steruje diodą podłączoną do GPIO17, czyli fizycznego pinu 11. W obwodzie LED zawsze daję rezystor ograniczający prąd, najczęściej 330 Ω lub 470 Ω, bo bez niego bardzo łatwo przeciążyć wyjście. Dokumentacja sprzętowa traktuje 16 mA jako bezpieczną wartość dla pinu, ale ja i tak wolę pracować niżej, szczególnie przy zwykłej sygnalizacji świetlnej.
- LED podłączam przez rezystor, nigdy bezpośrednio do GPIO.
- Wejścia trzymam w logice 3,3 V, nawet jeśli moduł „na papierze” wygląda niewinnie.
- Moduły 5 V łączę przez konwerter poziomów, a nie przewodem „na skróty”.
- Silniki, przekaźniki i większe obciążenia steruję przez tranzystor, MOSFET albo H-bridge.
- Wspólna masa z zewnętrznym zasilaniem jest obowiązkowa, inaczej sygnał nie ma punktu odniesienia.
Przyciski są prostsze niż LED-y, ale też mają swój haczyk: trzeba zdecydować, czy używasz podciągania do plusa, czy do masy. W GPIO Zero da się to zrobić bardzo czytelnie, a przy pierwszym projekcie naprawdę warto iść tą drogą, zamiast od razu walczyć z niskopoziomową konfiguracją. Kiedy układ działa bezpiecznie, naturalnie pojawia się pytanie, czy Pi 4 jest do tego najlepszym narzędziem.
Pi 4 czy mikrokontroler do projektu z GPIO
Tu różnica jest bardziej praktyczna niż ideologiczna. Raspberry Pi 4 wygrywa, gdy projekt ma mieć sieć, interfejs, zapis danych, analizę obrazu albo prostą automatyzację opartą o Linuksa. Mikrokontroler wygrywa tam, gdzie liczy się prostota firmware’u, niski pobór mocy i bardzo przewidywalny czas reakcji.
| Kryterium | Raspberry Pi 4 | Mikrokontroler |
|---|---|---|
| System | Linux, usługi sieciowe, Python, bazy danych, web UI | Prosty firmware, mały narzut, mniej warstw pośrednich |
| Czas reakcji | Wystarczający dla automatyki użytkowej i edukacji | Lepiej przy precyzyjnym, powtarzalnym sterowaniu |
| Złożoność projektu | Łatwo dodać kamerę, panel WWW, MQTT czy logowanie | Łatwiej utrzymać bardzo prosty układ i niski pobór energii |
| GPIO | 28 linii na headerze | Zależy od modelu |
| Najlepsze zastosowanie | Robotyka edukacyjna, monitoring, IoT, bramki komunikacyjne | Sterowanie silnikami, projekty bateryjne, timing, zadania standalone |
Jeśli brakuje Ci linii wejścia/wyjścia, często rozsądniejszy jest ekspander GPIO niż próba upchania wszystkiego na samej listwie. Ja traktuję Pi 4 jako mózg projektu, a nie jako jedyne źródło wszystkich sygnałów, bo to zwykle daje lepszą stabilność niż bezpośrednie „dopchnięcie” kolejnych urządzeń do headera.
Co sprawdzam, zanim rozbuduję projekt o kolejne wyjścia
- Najpierw potwierdzam, czy patrzę na numer fizyczny, czy na BCM.
- Sprawdzam, czy urządzenie po drugiej stronie naprawdę akceptuje 3,3 V.
- Przy każdym obciążeniu większym niż LED dodaję element pośredni: rezystor, tranzystor albo driver.
- Łączę wspólną masę między Raspberry Pi a zewnętrznym zasilaniem.
- Testuję jeden sygnał naraz, zamiast odpalać cały układ od razu.
- Gdy coś przestaje działać po zmianie systemu, wracam do komendy
pinouti weryfikuję mapę połączeń.
Najlepiej myśleć o GPIO w Raspberry Pi 4 jak o warstwie sterującej, a nie zasilającej: to jedno rozróżnienie oszczędza większość błędów początkujących. Jeśli trzymasz się napięcia 3,3 V, dobierasz odpowiednią numerację i nie próbujesz napędzać silnika bezpośrednio z pinu, ten zestaw sprawdza się świetnie w edukacji, prototypowaniu i małej automatyce.