Home | Mini PC : Orange Pi, Raspberry Pi, Board computer... | Orange Pi One/Lite (Tutorial): use the GPIO in Python, pinouts

Orange Pi One/Lite (Tutorial): use the GPIO in Python, pinouts

Orange Pi has a 40-pin extension connector (GPIO) compatible with the Raspberry Pi (model B +). In this tutorial, we will install python as well as the pyA20 library adapted to the GPIO of Orange Pi. On paper, the connector is compatible, only flat the call of the pins is different which requires to resume Python programs developed for The Raspberry. This is a bit of a shame but the very attractive price of the Orange Pi range remains a weighty argument.

For this tutorial, I used Armbian installed on an Orange Pi Lite (Wi-Fi version). The GPIO is the same throughout the Orange Pi range except the Orange Pi Zero which has a 26-pin GPIO.

Installing Python and Libraries

Let’s start by preparing the environment by installing Python

Now we need to install the library to manage the Orange Pi GPIO. Place yourself in your home folder (eg / home / ft) and then clone the pyH3 library (https://github.com/duxingkei33/orangepi_PC_gpio_pyH3). This is an adaptation made by Duxingkei Chow of the library “python control orangepi_PC ext GPIO ALLwinner H3” based on the “pyA20 0.2.1” library.

Enter the library directory

And run the installation (it is better to do the previous command with a sudo if you are not logged in as root).

Correspondence of pins between Orange Pi and Raspberry Pi (model B+)

As I mentioned in the introduction, the expansion slot is compatible with the Raspberry B + (40-pin). However, the location is different.

Raspberry Pi Orange Pi Pin

(Left column)

Broche

(Right column)

Orange Pi Raspberry Pi
3V3 1 2 +5V  +5V
GPIO2

SDA1 I2C

PA12 3 4 +5V  +5V
GPIO3

SCL I2C

PA11 5 6 GND GND
GPIO4 PA6 7 8 PA13 GPIO14

UART_TXD

GND GND 9 10 PA14 GPIO15

UART_RXD

GPIO17 PA1  11 12 PD14 GPIO18

PCM_CLK

GPIO27 PA0  13 14 GND GND
GPIO22 PA3  15 16 PC4 GPIO23
3V3 3V3  17 18 PC7 GPIO24
GPIO10

SPI0_MOSI

PC0 19 20 GND GND
GPIO9

SPI0_MISO

PC1 21 22 PA2 GPIO25
GPIO11

SPI0_SCLK

PC2 23 24 PC3 GPIO8

SPI0_CE0_N

GND GND 25 26 PA21 GPIO7

SPI0_CE1_N

ID_SD

I2C ID EEPROM

PA19 27 28 PA18 ID_SC

I2C ID EEPROM

GPIO5 PA7 29 30 GND GND
GPIO6 PA8 31 32 PG8 GPIO12
GPIO13 PA9 33 34 GND GND
GPIO19 PA10 35 36 PG9 GPIO16
GPIO26 PA20 37 38 PG6 GPIO20
GND GND 39 40 PG7 GPIO21

Just like the Raspberry Pi, the output voltage is 3.3V.

Finally the last difference (and not least!), The connector is turned 180 degrees compared to that of the Raspberry. Needless to say that it will be necessary to use a connection for breadboard with a flexible cable if you want to connect the Orange to a breadboard (breakout) connection.

Lighting a Python Led

For this first tutorial on the GPIO of Orange Pi, we will not go far. Either way it’s exactly the same as Raspberry. There is only the call of the pins that differs.

Create a new file. For example test.py

Paste the following code and save with Ctrl + X then Y. This code is very simple, it lights for 2 seconds a LED connected to the PG7 pin (equivalent to the Raspberry GPIO21). Connect a LED on pin PG7 (the last one in the right column) to a GND via a 220Ω resistor.

We make the script executable

If you are not logged in as root, you must preface the python command with a sudo (you will be prompted for the password).

If the wiring is correct, the LED must illuminate for 2 seconds.

orange pi one lite raspberry gio python
Click to enlarge

Now you have everything you need to use the Orange Pi GPIO. It’s a shame the calls are different. Existing programs will not be directly usable. Other regret, the rotation of the connector makes the use of HAT cards much less convenient (and compact!)