Raspberry Pi GPIO - nomrand/__basics GitHub Wiki
Layout
for real view, use command bellow. (if gpio installed)
gpio readall
PIN No. | PIN No. | |||
---|---|---|---|---|
3.3V | 1 (*1) | 2 | 5V | |
GPIO 2 (*2) | 3 | 4 | 5V | |
GPIO 3 (*2) | 5 | 6 | GND | |
GPIO 4 | 7 | 8 | GPIO 14 | |
GND | 9 | 10 | GPIO 15 | |
GPIO 17 | 11 | 12 | GPIO 18 | |
GPIO 27 | 13 | 14 | GND | |
GPIO 22 | 15 | 16 | GPIO 23 | |
3.3V | 17 | 18 | GPIO 24 | |
GPIO 10 | 19 | 20 | GND | |
GPIO 9 | 21 | 22 | GPIO 25 | |
GPIO 11 | 23 | 24 | GPIO 8 | |
GND | 25 | 26 | GPIO 7 | |
ID_SD(*3) | 27 | 28 | ID_SC | |
GPIO 5 | 29 | 30 | GND | |
GPIO 6 | 31 | 32 | GPIO 12 | |
GPIO 13 | 33 | 34 | GND | |
GPIO 19 | 35 | 36 | GPIO 16 | |
GPIO 26 | 37 | 38 | GPIO 20 | |
GND | 39 | 40 | GPIO 21 |
- *1 Solder (reverse side) is square
- *2 GPIO with Resist
- *3 I2C EEPROM
Output Limit
- Max 16mA per GPIO 1pin
- Amount 50mA on All out GPIO pins
Input Limit
- range 0V - 3.3V
- 0V - 0.8V -> read 0V
- 0.8V - 1.3V -> unknown
- 1.3V - 3.3V -> read 3.3V
Controll by Shell
/sys/class/gpio (ex. for GPIO 21)
- write GPIO No. to use (Not pinNo)
echo 21 > /sys/class/gpio/export
will create "/sys/class/gpio/gpio21" directory
- write in/out to gpio direction file (ex. for output pin)
echo out > /sys/class/gpio/gpio21/direction
- read/write to in/out
# for In pin (read)
cat /sys/class/gpio/gpio21/value
# for Out pin (write)
## ON 3.3V
echo 1 > /sys/class/gpio/gpio21/value
## OFF
echo 0 > /sys/class/gpio/gpio21/value
- use finished
echo 21 > /sys/class/gpio/unexport
will delete "/sys/class/gpio/gpio21" directory
Controll by Python
Example
import RPi.GPIO as GPIO
import time
## GPIO No. mode
GPIO.setmode(GPIO.BCM)
# or
## PIN No. mode
# GPIO.setmode(GPIO.BOARD)
## IN/OUT setting
# PinNo = 20
# GPIO.setup(PinNo, GPIO.OUT)
# GPIO.setup(PinNo, GPIO.IN)
## OUT
# GPIO.output(PinNo, 1)
# GPIO.output(PinNo, 0)
## IN
# GPIO.input(PinNo)
# Example
PinNo = 20
GPIO.setup(PinNo, GPIO.OUT)
try:
for i in range(30):
GPIO.output(PinNo, 1)
time.sleep(1)
GPIO.output(PinNo, 0)
time.sleep(1)
finally:
## GPIO use Finished
GPIO.cleanup()