Raspberry pi’s RPI GPIO Module of python
Tags: gpiomodule, raspberrypython
Published: 2019-07-07 14:31:31

### Basic setup and working with raspberry pi’s RPI GPIO Module of python

The first post is about basic setup and working with raspberry pi’s RPI GPIO module of python.

**Brief intro to Raspberry Pi:**

Raspberry Pi is a credit card-sized computer designed for education. The first model was launched in 2012 which was basically used for education

![](https://cdn-images-1.medium.com/max/800/1*yEkMTqLi4ZzCcPd6Hl7yaw.jpeg)
<span class="figcaption_hack">Source: [https://www.raspberrypi.org](https://www.raspberrypi.org/)</span>

Features:

* *Small size*
* *Low-cost Device*
* *Complete linux computer*
* *Low power consumption*

**GPIO pins:**

There are 40 powerful General Purpose Input/Output(GPIO) pins which are part of
core components of the Raspberry pi. There are two 5V pins and two 3.3v, ground
pins and general purpose pins.

![](https://cdn-images-1.medium.com/max/800/0*BCO8L5pCB4LCak1y.)
<span class="figcaption_hack">Source:
[https://www.raspberrypi.org/documentation/usage/gpio/images/gpio-numbers-pi2.png](https://www.raspberrypi.org/documentation/usage/gpio/images/gpio-numbers-pi2.png)</span>

*****

**RPI GPIO Module:**

Python can be used to write applications in Raspberry pi. It comes with a powerful package manager called PIP which can be used to install third-party packages.

RPI GPIO Module is a third-party package which can be used to configure and control the GPIO pins.

The basic setup is pretty easy. After setup, we define whether a pin’s value should be high or low.

#### Basic setup

* Make sure that python>2.7 is installed in the raspberry Pi.
* Install the module using PIP
```bash
    sudo pip install RPi.GPIO
```
  *Note:* If you face any problem in installing the package install python-dev and try again

* Import the modules to script
* Set the pin numbering schemes (explained below)
```bash
    GPIO.setmode(GPIO.BCM)
```
* Configure the required pins
```bash
    GPIO.setup(18, GPIO.OUT)

    # PIN 18(BCM) is now used as output
```
**Pin numbering schemes:**

There are two types of pin numbering schemes

*GPIO.BOARD:* Board numbering scheme

The option specifies that you are referring to the pins by the number of the pin the plug i.e the numbers printed on the board.

*GPIO.BCM:* Broadcom chip-specific pin numbers.

The option means that you are referring to the pins by the “Broadcom SOC channel” number.

*****

Once the basic setup is completed, Based on the requirement we set the pins to
high or low
```python
    # Import modules
    import RPi.GPIO as GPIO
    import time
    Import atexit

    #PIN setup
    GPIO.setmode(GPIO.BCM)
    GPIO.setup(4, GPIO.OUTPUT)

    # Loop to send HIGH and LOW to the mentioned pin
    While True:
        GPIO.output(4,GPIO.HIGH)
        time.sleep(1)
        GPIO.output(4,GPIO.LOW)
        time.sleep(1)

    #Garabage Cleaner
    def clean_up():
        GPIO.cleanup()

    atexit.register(clean_up)
```
The above program sends a HIGH signal to 4th pin(BCM) for one second and LOW signal for the next one second continuously until the program is exited. To verify the output of the process we can connect LED and test it.

The first 5 lines of the program are a basic setup and the following loop
continuously sends a HIGH and LOW signal to the 4th pin until the program is
existed.

`GPIO.cleanup()` function is used as a garbage cleaner and is recommended to use in
every program which uses GPIO pins of the raspberry pi.

atexit.register() function is used to trigger a function before exiting.

Based on the requirement of the application, we can set the pin in different
modes.

Eg: To generate an Analog Output


**Execution:**

Once the program is completed, It can run by providing the following command into
the terminal

`sudo python <program_name>.py`

To exit the program

press `ctrl+c`

Sources:

Rpi.GPIO Module:
[https://pypi.python.org/pypi/RPi.GPIO](https://pypi.python.org/pypi/RPi.GPIO)

Raspberry Pi Documentation:
[https://www.raspberrypi.org/documentation](https://www.raspberrypi.org/documentation/usage/gpio/images/gpio-numbers-pi2.png)