คำตอบสั้น ๆ
ไม่คุณ (เกือบ) ไม่ จริง ๆ แล้วมันเป็นวิธีอื่น ๆ - คุณต้องตั้งค่าให้ไม่ใช่ GPIO แต่เพื่อให้บริการตามวัตถุประสงค์พิเศษของพวกเขา ข้อยกเว้นเพียงอย่างเดียวคือพิน UART นอกจากนี้และI²Cหมุดพิเศษอย่างใด
หมุด UART
พิน UART ถูกใช้โดยเคอร์เนลสำหรับคอนโซล คุณจะต้องกำหนดค่าระบบเพื่อไม่ให้ใช้หากคุณต้องการให้ระบบพร้อมใช้งาน:
ตอนนี้ระบบไม่ควรใช้พินและคุณสามารถใช้พินได้
I²Cพิน
หมุดI²Cติดตั้งตัวต้านทานแบบดึงขึ้นบน 1.8k พวกเขาไม่สามารถปิดการใช้งาน สิ่งนี้ จำกัด การใช้งานพินเหล่านั้นในบางสถานการณ์ (แต่อาจมีประโยชน์ในบางกรณี)
โซลูชั่นเพิ่มเติม
หากใช้พิน GPIO ต่ำบางครั้งคุณสามารถขยายจำนวนได้อย่างง่ายดายโดยใช้ฮาร์ดแวร์เพิ่มเติม (แต่ง่าย) สำหรับตัวอย่างผลลัพธ์คุณสามารถใช้shift registersหรือI²C I/O expanders( หรือเรียกอีกอย่างว่า `ตัวขยายบัสI²C) ซึ่งทั้งง่ายต่อการซื้อและใช้ คุณสามารถหาตัวอย่างของการใช้งานมันนี่
PFC8574(หรือคล้ายกันจากตระกูลนี้) ได้รับความนิยมมากจนมีโมดูลเคอร์เนลที่พร้อมใช้งานสำหรับจัดการการสื่อสารทั้งหมดสำหรับคุณ ( ไม่ได้เปิดใช้งานในเคอร์เนล RaspberryPi อย่างเป็นทางการคุณจะต้องรวบรวมเคอร์เนลของคุณเองเพื่อใช้ ) โมดูลนี้เรียกว่าgpio_pcf857xโดยที่คุณโหลดด้วยmodprobe(พร้อมกับไดรเวอร์I²C) และคุณมีชิปที่เชื่อมต่อกับI²Cบัสคุณสามารถเปิดใช้งานได้ดังนี้:
echo pcf8574 0x27 > /sys/class/i2c-adapter/i2c-0/new_device
ที่pcf8574เป็นชื่อชิปจริงของคุณ (โมดูลนี้สามารถจัดการชิปที่แตกต่างกันเช่นpca967xและmax732x) และ0x27เป็นที่อยู่I²C(คุณสามารถกำหนดค่าที่อยู่ของชิปเมื่อเดินสายได้)
สิ่งนี้จะสร้างรายการใน/sys/class/gpio/ไดเรกทอรีที่จะช่วยให้คุณใช้งานได้เช่นเดียวกับพอร์ต GPIO อื่น ๆ ใน RaspberryPi ซึ่งจะให้คุณใช้sysอินเทอร์เฟซ (ตัวอย่างเช่นwiringPiSetupSys()wiringPi) น่าเสียดายที่RPi.GPIOโมดูลPython ไม่รองรับโหมดนี้ดังนั้นจึงไม่สามารถใช้พินนี้กับห้องสมุดนี้ได้ หมุดจะมีตัวเลขสูงเช่น 248-255 หรือคล้ายกัน
หมายเหตุ: PCF8574คือsinking current- สามารถให้ไดรฟ์ซิงค์ (ยอมรับในสถานะต่ำ) มากถึง 20mA แต่สามารถแหล่ง 0.1mA ในสถานะสูงเท่านั้น +3.3V -> LED -> RESISTOR -> PCF8574_PINซึ่งหมายความว่าคุณมักจะไปใช้ในตรรกะย้อนกลับคือ