Orange Pi One Python GPIO (basic)

Here's how to get GPIO working in Python on the Orange Pi One.

Note. The GPIO pins on the Orange Pi One are flipped 180 degrees compared to the Orange Pi PC version or a Raspberry Pi!

check out my other Orange Pi tutorials:

https://www.instructables.com/id/Orange-Pi-One-Setup-Guide/

https://www.instructables.com/id/Orange-Pi-One-Analog-Devices-Using-MCP3008-Via-SPI/

Step 1: Download and Install Python Library

To start you will need the python headers and library installed, if you haven't or aren't sure just type:

sudo apt-get install python-dev

Then download the pyH3 library from:

https://github.com/duxingkei33/orangepi_PC_gpio_pyH3

extract the folder and place in '/home/pi'

from the terminal go into that directory:

cd orangepi_PC_gpio_pyH3

then install it using:

python setup.py install

The library is now installed.

Step 2: Test It!

The way the pins are referred to are slightly different to a Raspberry Pi, they are named "ports" & "connectors".

UPDATE 03/05/2016: The new armbian images no longer export the gpios to /gpio_sw. See the above image for the port names. Image Credit: http://forum.armbian.com/index.php/topic/759-tutor...

For example pin 29 (BCM05) is port 'PA7'

To test, connect an LED to pin 29 through a 300ohm resistor then to the ground. (see diagram below)

and created a file called 'test.py':

#import the library
from pyA20.gpio import gpio
from pyA20.gpio import port
from time import sleep

#initialize the gpio module
gpio.init()

#setup the port (same as raspberry pi's gpio.setup() function)
gpio.setcfg(port.PA7, gpio.OUTPUT)

#now we do something (light up the LED)
gpio.output(port.PA7, gpio.HIGH)

#turn off the LED after 2 seconds
sleep(2)
gpio.output(port.PA7, gpio.LOW)

Dont forget to make your test file executable:

chmod +x test.py

and run as root:

sudo su
./test.py

Step 3: .

That's the basics working, more advanced stuff like i2C should work aswell but I haven't tested.

Credit goes to: Duxingkei Chow and Stefan Mavrodiev (examples in git repository)

Share

    Recommendations

    • Build a Tool Contest

      Build a Tool Contest
    • Remix Contest

      Remix Contest
    • Organization Contest

      Organization Contest

    22 Discussions

    0
    None
    Fleder

    2 years ago

    Hi there,

    Ive got a problem executing the test.py file.

    I always get the error "cannot import name >gpio<"

    Can someone help me here? Thanks

    3 replies
    0
    None
    daveaa85Fleder

    Reply 2 years ago

    Hi Fleder,
    I had the same issue. The cause was I created the test.py file in the same directory ('home/pi' ) as the pyA20 module source.

    Moving the 'test.py' file to a different directory resolved the issue.

    0
    None
    Flederdaveaa85

    Reply 2 years ago

    Hello dave,

    thank you very much!
    I will try it out and hope it will resolve this issue.
    I have the .py in the same directory, too.

    Thanks and have a nice day!

    0
    None
    HB___alonFleder

    Reply 1 year ago

    hello Fleder,

    when I use python3(#!/usr/bin/env python3),it caused the same issue.

    and when i change to the python2(#!/usr/bin/env python),it works quite well.

    so there is a doubt

    ,"maybe this module is not compatible for python3".

    0
    None
    AllanP46

    1 year ago

    Your error tells me that you've probably not installed the python-dev library, which is mentioned in the very first step.

    sudo apt-get install python-dev

    0
    None
    Mecheng87

    2 years ago

    hi, having trouble with the tutorial. when i get to the part where i run the "python setup.py intall" i get an error, "permission denied". i have so far followed the steps exactly but i dont know what im doing wrong?

    0
    None
    BeS9

    2 years ago

    Thank you for this statement

    Note. The GPIO pins on the Orange Pi One are flipped 180 degrees compared to the Orange Pi PC version or a Raspberry Pi

    I've
    been hunting everywhere for a diagram that tells me where Pin1 is in
    relation to actual board (plenty of schematics of pins but not in
    relation to where they are on the physical board). I thought the arrow was probably P1 but unlike RPi where P1 P2... are labelled properly,
    OPi doesn't (and the arrow "P1" is flipped 180 compared to RPi thus my
    apprehension).

    0
    None
    KristianK18

    2 years ago

    Hello, i followed your guide but i stuck in:

    from: can't read /var/mail/pyA20.gpio
    from: can't read /var/mail/pyA20.gpio
    from: can't read /var/mail/time
    ./test.py: line 10: syntax error near unexpected token `gpio.setcfg'
    ./test.py: line 10: `gpio.setcfg(port.PA7, gpio.OUTPUT)'

    Can you help me? I'm absolutely beginner at orangepi pc.

    4 replies
    0
    None
    MohithDKristianK18

    Reply 2 years ago

    I had the issue on my Orange Pi lite running Lubuntu solved it by using "python test.py" to execute the script!

    This happens because the default shell will execute it and it will bail out at the from keyword (Incidentally, from is the name of a command line utility which prints names of those who have sent mail to the given username, so that's why it tries to access the mailboxes.

    Hope this helps! :)

    0
    None
    DuncanW10KristianK18

    Reply 2 years ago

    Hi Kristian,

    Its difficult to tell without seeing your code (or is it just the code above?), but it looks like for some reason your code is trying to find the libraries in '/var/mail/'.

    this is unusual because time is a standard library. What OS are you using?

    0
    None
    KristianK18DuncanW10

    Reply 2 years ago

    I'm using the code above (the code on your tutorial), and i'm using this OS:

    Linux 3.4.39-01-lobo/armv7l - Distro: Ubuntu 15.10

    0
    None
    DuncanW10ErtanD1

    Reply 2 years ago

    What is it your trying to read from?

    0
    None
    MegaL2DuncanW10

    Reply 2 years ago

    Hi!

    I'd like to read from a dht11 temp+humidity sensor. Can you help?

    0
    None
    DuncanW10MegaL2

    Reply 2 years ago

    Hi, I think its only possible using C code as python is too slow, here's what I used:

    http://uploaded.net/file/se9ffl4l

    (I had it inserting the data into an sqlite database, so 'ive removed that so it just prints to the terminal)

    0
    None
    manolis.kasos

    2 years ago

    great job my friend keep up the good work

    0
    None
    DuncanW10jps1

    Reply 2 years ago

    Yes, the following 3 lines import the libraries. (Any line with a hash is a comment and describes what the following lines are doing).

    0
    None
    jps1DuncanW10

    Reply 2 years ago

    You are right... I thought that you wanted to import the library in the first line, sorry.

    One question for you. Do you know how to control a servo? Thanks in advance.