What libraries are available for interfacing with the GPIO?
9 Answers
I'm going to interpret what I think you might be asking more broadly as "How can I control GPIO from userland?"
A very nice way to get started using GPIO is using the /sys
filesytem. You can do it all from the command line.
For example,
cd sys/class/gpio
echo 0 > export
cd gpio0
echo high > direction
More documentation is in linux/Documentation/gpio.txt.
-
1
-
-
1Are there any tutorials that use this method? I have only seen libraries (mainly the python one). Jun 13, 2012 at 13:56
-
2This isn't necessarily a library as per the request of the OP. Jun 18, 2012 at 17:04
-
1The other answers for this question are much better - this answer does not answer the question about libraries.– recanthaJan 2, 2013 at 13:29
RPi.GPIO is a Python package for GPIO control.
This tutorial video shows the basic usage of the package.
quick2wire can be used by regular users (not root):
Quick2Wire Python API
A Python library for controlling the hardware attached to the Raspberry Pi's header pins, without running as the root user.
-
While this link may answer the question, it is better to include the essential parts of the answer here and provide the link for reference. Link-only answers can become invalid if the linked page changes. Feb 7, 2013 at 0:59
-
@MarkBooth : "the essential part of the answer" is "can be used by regular users" unlike other answers.– dugresFeb 7, 2013 at 14:51
I use Wiring PI and it works really great. I use it with language C and had no problems so far. It is easy to understand and simple to handle.
I realize I'm answering a question that is years old, but there is one that hasn't been mentioned yet: gpiozero. https://gpiozero.readthedocs.io/en/stable/
It should already be installed on new versions of Raspbian. You can also install it on other versions of Linux. https://gpiozero.readthedocs.io/en/stable/installing.html
Pi4J allows you to control the GPIO pins using Java. I'm not sure how it works but there's an explanation at http://pi4j.com/
It is really simple to control the GPIO ports in any language as shown on http://elinux.org, so I believe that you actually do not need a framework for the direct control.
You need to know which additional features you expect of a framework, like
- Remote control via a browser
- A pretty browser UI or maybe a standalone program
- Automatic timebased control (cron jobs)
I ended up writing a framework for myself: Control GPIO ports over HTTP and with cron jobs which perfectly fits my needs. I wanted to have something for home-automation. So I needed cron jobs and a JSON web interface to run a native app on my iPhone. Therefore I did not write a browser UI. I believe it would also be good for an alarm system.
I did not find a (complete) list of frameworks yet. There are some mentioned on the forum of raspberrypi.org.
Johny-Five is quite easy to use for those familiar with Node.js or JavaScript. See http://johnny-five.io/examples/raspi-io/
npm install johnny-five raspi-io
var five = require("johnny-five");
var Raspi = require("raspi-io").RaspiIO;
var board = new five.Board({
io: new Raspi()
});
board.on("ready", function() {
var led = new five.Led("P1-13");
led.blink();
});
Specially useful for Pi projects controlling GPIO through a Web server