I already purchased my first Raspberry Pi in 2011, but have been postponing connecting any electronics to its GPIO interface. Instead, I have been using it for more general computing applications (media center, web server, remote ssh access and tunnel, etc.). Rather than using the Raspberry Pi for in refacing with hardware and IOT, I have been using a bunch of Arduino’s to implement sensors and actuators for home automation.
Since I recently have been brushing off my Python programming skills for the EEGsynth project and been teaching myself Node JS, I was triggered to revisit the Raspberry Pi for GPIO electronics. With the Raspberry Pi it will be easier to implement my own web server and to use webhooks to integrate my home automation hardware projects with online platforms such as IFTTT.
I decided to try Python first and after browsing the web decided to use the WiringPi interface, as it supports C programming in the same style as on the Arduino, but also has wrappers for more high-level languages (Python, PHP, Ruby and Perl).
I started with installing the WiringPi library as per instructions
git clone git://git.drogon.net/wiringPi cd wiringPi/ ./build
and tested it with a LED in series with a 680 Ohm resistor attached to the first GPIO pin, aka pin 17 on the Pi cobbler. I still have to wrap my head around the pin numbering, but understand that there are different numbering schemes.
Subsequently I ran the test from
cd examples/ make blink sudo ./blink
and also tried out this on the Linux command line
gpio write 0 1 gpio write 0 0 gpio write 0 1 gpio write 0 0
This all worked as expected and the LED would nicely blink. I subsequently moved on with Python. Instead of following the detailed installation instructions, I simply tried
sudo pip install wiringpi
which worked like a charm. The following Python code
#### this is blink1.py #### import wiringpi import time wiringpi.wiringPiSetup() wiringpi.pinMode(0,1) while True: time.sleep(0.5) wiringpi.digitalWrite(0,1) time.sleep(0.5) wiringpi.digitalWrite(0,0)
works with sudo, i.e.
sudo python blink1.py
As with the pin numbering, it is still a bit of a puzzle to me when super user rights are needed and when not. But the following worked for me without sudo
#### this is blink2.py #### import wiringpi import time import os wiringpi.wiringPiSetupSys() os.system('gpio export 17 out') wiringpi.pinMode(17,1) while True: time.sleep(0.5) wiringpi.digitalWrite(17,1) time.sleep(0.5) wiringpi.digitalWrite(17,0)
and then on the Linux command line
python blink2.py
It is already rewarding to see a simple LED blink. Next challenges will include combining it with a RFM12B or RFM69CW module to have the Rasperry Pi receive the messages from the (battery operated) Arduino’s for which I use the RFM12B for communication.
Furthermore, Adafruit has a nice tutorial showing how to use Node JS with a Raspberry Pi. That is also something to explore…