2016年6月11日土曜日

wiringPiをpythonから呼び出す。

wiringPiをpythonから呼び出す。

Raspberry PI3のGPIOを制御するにはwiringpi2を使ったほうがよいらしいので、試してみました。

1.wiringpi2のインストール

$ sudo apt-get update
$ sudo apt-get install python3-dev python3-pip
$ sudo pip3 install wiringpi2

2.wiringPi2-Pythonのインストール

$ git clone https://github.com/Gadgetoid/WiringPi2-Python.git
cd WiringPi2-Python
$ sudo python3 setup.py install

3.動作確認

$ sudo python3
>> import wiringpi2

以下のエラーがでた。

Traceback (most recent call last):
  File "/home/rpi3/Work/WiringPi2-Python/wiringpi2.py", line 18, in swig_import_helper
    fp, pathname, description = imp.find_module('_wiringpi2', [dirname(__file__)])
  File "/usr/lib/python3.5/imp.py", line 296, in find_module
    raise ImportError(_ERR_MSG.format(name), name=name)
ImportError: No module named '_wiringpi2'

解決方法

wiringpi_wrap.cを修正する必要があるらしい。

$ vi wiringpi_wrap.c
PyString_FromStringAndSize(x, len) PyUnicode_FromStringAndSize(x, len)を追加

追加する場所は以下の「+」のところです。

 #define PyString_FromString(x) PyUnicode_FromString(x)
+#define PyString_FromStringAndSize(x, len) PyUnicode_FromStringAndSize(x, len)
#define PyString_Format(fmt, args)  PyUnicode_Format(fmt, args)

再度、インストールし、実行することでうまくいきました。
結構、調べてるとpython2.xとpython3.xでだいぶ違う。。。

$ sudo python3 setup.py install
$ sudo python3
>> import wiringpi2
エラーがでなくなった!
>> wiringpi2.piBoardRev()

これでpythonからGPIOが制御できるようになったので少し遊んでみようかと思います。

0 件のコメント :

コメントを投稿