Jawaban singkatnya
Tidak, kamu (hampir) tidak. Sebenarnya sebaliknya - Anda harus mengatur mereka bukan untuk GPIO tetapi untuk melayani tujuan khusus mereka. Satu-satunya pengecualian adalah pin UART. Juga dan pin I²C entah bagaimana istimewa.
Pin UART
Pin UART digunakan oleh kernel untuk konsol. Anda harus mengkonfigurasi sistem untuk tidak menggunakannya jika Anda ingin mereka tersedia untuk penggunaan Anda:
Sekarang pin tidak boleh digunakan oleh sistem dan Anda dapat menggunakannya
I²C pin
Pin I²C memiliki resistor pull-up 1,8k terpasang. Mereka tidak dapat dinonaktifkan. Ini membatasi penggunaan pin tersebut dalam beberapa situasi (tetapi bisa berguna dalam situasi lain).
Solusi tambahan
Jika kehabisan pin GPIO, Anda kadang-kadang dapat dengan mudah menambah jumlahnya dengan menggunakan beberapa perangkat keras tambahan (tapi sederhana). Untuk output misalnya, Anda dapat menggunakan shift registers
atau I²C I/O expanders
(juga disebut `I²C bus ekspander), keduanya mudah dibeli dan digunakan. Anda dapat menemukan contoh penggunaannya di sini .
PFC8574
(atau serupa dari keluarga ini) sangat populer sehingga ada modul kernel siap pakai yang menangani semua komunikasi untuk Anda ( tidak diaktifkan di kernel RaspberryPi resmi, Anda perlu mengkompilasi kernel Anda sendiri untuk menggunakannya ). Modul ini dipanggil gpio_pcf857x
, asalkan Anda memuatnya modprobe
(bersama dengan driver I²C) dan bahwa Anda memiliki chip yang terhubung ke I²C
bus, Anda dapat mengaktifkannya seperti ini:
echo pcf8574 0x27 > /sys/class/i2c-adapter/i2c-0/new_device
di mana pcf8574
nama chip Anda yang sebenarnya (modul ini dapat menangani beberapa chip yang berbeda seperti pca967x
dan max732x
) dan 0x27
merupakan alamatnya I²C
(Anda dapat mengonfigurasi alamat chip saat memasang kabel).
Ini akan membuat entri dalam /sys/class/gpio/
direktori yang akan memungkinkan Anda untuk menggunakannya dengan cara yang sama seperti port GPIO lain di RaspberryPi, asalkan Anda menggunakan sys
antarmuka (misalnya wiringPiSetupSys()
di wiringPi). Sayangnya, RPi.GPIO
modul Python tidak mendukung mode ini sehingga tidak akan dapat menggunakan pin ini dengan perpustakaan ini. Pin akan memiliki angka tinggi seperti 248-255 atau serupa.
Catatan: PCF8574
adalah sinking current
- ia dapat memberikan drive sink (terima dalam kondisi rendah) sebanyak 20mA tetapi hanya dapat sumber 0,1mA dalam kondisi tinggi. Ini berarti bahwa Anda biasanya akan menggunakannya dalam logika terbalik, yaitu +3.3V -> LED -> RESISTOR -> PCF8574_PIN
.