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.
Installing Python and Libraries
Let’s start by preparing the environment by installing Python
sudo apt-get install python-dev
Then install the pyA20 library
sudo pip install pyA20
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.
cd /home/pi git clone https://github.com/duxingkei33/orangepi_PC_gpio_pyH3
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).
sudo python setup.py install
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
|Orange Pi||Raspberry Pi|
I2C ID EEPROM
I2C ID EEPROM
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.
#import the library / Import des librairies from pyA20.gpio import gpio from pyA20.gpio import port from time import sleep #initialize the gpio module / initialise le GPIO gpio.init() #setup the port (same as raspberry pi's gpio.setup() function) #Configure la broche PG7 (equivalent au GPIO21 du Raspberry) comme une sortie gpio.setcfg(port.PG7, gpio.OUTPUT) #now we do something (light up the LED) #Maintenant, on allume la LED gpio.output(port.PG7, gpio.HIGH) #turn off the LED after 2 seconds #Et on eteint après 2 secondes sleep(2) gpio.output(port.PG7, gpio.LOW)
We make the script executable
chmod +x test.py
If you are not logged in as root, you must preface the python command with a sudo (you will be prompted for the password).
sudo python test.py
If the wiring is correct, the LED must illuminate for 2 seconds.
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 boards much less convenient (and compact!)
Orange Pi Comparison Chart
[2017/08/10] – Install pyA20 library manually. Thank’s to Daniel
- Install Home Assistant (HASS) on an Orange Pi running under Armbian
- IoT development based on Orange Pi, Arduino (Firmata), Nodejs, Blynk and Johnny-Five
- Blynk + Node.js + Johnny-Five: drive a Pan-Tilt PTZ SG90 kit on Orange Pi with an Arduino / Firmata
- Start programming with Node Js and Johnny-Five: IoT and robotics based on Arduino, Raspberry Pi, Orange Pi
- Orange Pi: test of the OPI.GPIO package for Node-Red (node-red-contrib-opi-gpio)
- Orange Pi (Armbian): replace the GPIO by an Arduino/Firmata, Node-RED and Johnny-Five