Câu trả lời ngắn
Không, bạn (gần như) không. Đó thực sự là một cách khác - bạn phải thiết lập chúng không phải là GPIO mà là để phục vụ mục đích đặc biệt của chúng. Ngoại lệ duy nhất là chân UART. Ngoài ra và chân I²C bằng cách nào đó đặc biệt.
Chân UART
Các chân UART được sử dụng bởi kernel cho console. Bạn sẽ phải cấu hình hệ thống không sử dụng chúng nếu bạn muốn chúng có sẵn cho việc sử dụng của bạn:
- chỉnh sửa
/boot/cmdline.txt
và loại bỏ console=ttyAMA0,115200
và kgdboc=ttyAMA0,115200
các tham số
chỉnh sửa /etc/inittab
và nhận xét (đặt #
ký tự trước nó) dòng:
T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100
khởi động lại RaspberryPi của bạn
Bây giờ các chân không nên được sử dụng bởi hệ thống và bạn có thể sử dụng chúng
Chân I²C
Chân I²C có lắp đặt điện trở kéo lên 1,8k. Họ không thể bị vô hiệu hóa. Điều này giới hạn việc sử dụng ghim trong một số trường hợp (nhưng có thể có ích trong những trường hợp khác).
Giải pháp bổ sung
Nếu sắp hết chân GPIO, đôi khi bạn có thể dễ dàng mở rộng số của nó bằng cách sử dụng một số phần cứng bổ sung (nhưng đơn giản). Ví dụ, đối với đầu ra, bạn có thể sử dụng shift registers
hoặc I²C I/O expanders
(còn gọi là bộ mở rộng bus I²C), cả hai đều dễ dàng mua và sử dụng. Bạn có thể tìm thấy ví dụ về việc sử dụng nó ở đây .
PFC8574
(hoặc tương tự từ gia đình này) rất phổ biến đến nỗi có một mô-đun hạt nhân sẵn sàng xử lý tất cả các giao tiếp cho bạn ( nó không được kích hoạt trong kernel RaspberryPi chính thức, bạn sẽ cần phải biên dịch kernel của chính mình để sử dụng nó ). Mô-đun được gọi gpio_pcf857x
, với điều kiện bạn đã tải nó modprobe
(cùng với trình điều khiển I²C) và bạn có chip được kết nối với I²C
xe buýt, bạn có thể kích hoạt nó như thế này:
echo pcf8574 0x27 > /sys/class/i2c-adapter/i2c-0/new_device
nơi pcf8574
là tên con chip thực tế của bạn (mô-đun này có thể xử lý vài chip khác nhau như pca967x
và max732x
) và 0x27
là địa chỉ của nó trên I²C
(bạn có thể cấu hình địa chỉ của chip khi dây nó).
Điều này sẽ tạo các mục trong /sys/class/gpio/
thư mục cho phép bạn sử dụng chúng giống như các cổng GPIO khác trong RaspberryPi, với điều kiện bạn đang sử dụng sys
giao diện (ví dụ như wiringPiSetupSys()
trong WiredPi). Thật không may, RPi.GPIO
mô-đun của Python không hỗ trợ chế độ này nên nó sẽ không thể sử dụng các chân này với thư viện này. Các chân sẽ có một số số cao như 248-255 hoặc tương tự.
Lưu ý: PCF8574
là sinking current
- nó có thể cung cấp cho ổ đĩa (chấp nhận ở trạng thái thấp) nhiều như 20mA nhưng nó chỉ có thể nguồn 0,1mA ở trạng thái cao. Điều này có nghĩa là bạn thường sẽ sử dụng nó trong logic đảo ngược, tức là +3.3V -> LED -> RESISTOR -> PCF8574_PIN
.