Raspberry PiでIO制御 1
Raspberry PiでIO制御をしてみます。
InterFace12月号の記事を元に、まずは設定とLEDの点灯テストを行います。
手順
- raspi-blacklist.confの編集。spiとi2cが使えるようにコメントアウトします。
sudo vim /etc/modprobe.d/raspi-blacklist.conf
として、先頭に#を入れてコメントアウトします。# blacklist spi and i2c by default (many users don't need them)
#blacklist spi-bcm2708
#blacklist i2c-bcm2708
- デバイス作成時のアクセス権の設定。
sudo vim /etc/udev/rules.d/50-udev.rules
として、以下の文を書き込みます。KERNEL=="spidev*", SUBSYSTEM=="spidev", GROUP="spi", MODE="0666"
- Pythonモジュールをインストールします。
sudo apt-get install python-dev python-smbus python-setuptools i2c-tools
と打ち込むと、パッケージリストを読み込んでいます... 完了
となれば成功です。失敗した時は、sudo apt-get updateを行って、もう一度トライして下さい。
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下のパッケージが自動でインストールされましたが、もう必要とされていません:
libblas3gf liblapack3gf
これを削除するには 'apt-get autoremove' を利用してください。
以下の特別パッケージがインストールされます:
libssl-dev libssl-doc python-pkg-resources python2.7-dev
提案パッケージ:
libi2c-dev python-distribute python-distribute-doc
以下のパッケージが新たにインストールされます:
i2c-tools libssl-dev libssl-doc python-dev
python-pkg-resources python-setuptools python-smbus
python2.7-dev
アップグレード: 0 個、新規インストール: 8 個、削除: 0 個、保留: 1 個。
32.0 MB のアーカイブを取得する必要があります。
この操作後に追加で 43.2 MB のディスク容量が消費されます。
続行しますか [Y/n]? y
.........
man-db のトリガを処理しています ...
libssl-dev (1.0.1e-2+rpi1) を設定しています ...
libssl-doc (1.0.1e-2+rpi1) を設定しています ...
python2.7-dev (2.7.3-6) を設定しています ...
python-dev (2.7.3-4+deb7u1) を設定しています ...
python-pkg-resources (0.6.24-1) を設定しています ...
python-setuptools (0.6.24-1) を設定しています ...
i2c-tools (3.1.0-2) を設定しています ...
/run/udev or .udevdb or .udev presence implies active udev. Aborting MAKEDEV invocation.
python-smbus (3.1.0-2) を設定しています ... - 次にpythonのソースリストを入手します。
git clone git://github.com/doceme/py-spidev
次の様になれば成功です。Cloning into 'py-spidev'...
更に、次のコマンドを打ち込みます。
./hello
./hello
remote: Counting objects: 9, done.
remote: Compressing objects: 100% (8/8), done.
remote: Total 9 (delta 2), reused 5 (delta 1)
Receiving objects: 100% (9/9), 5.56 KiB, done.
Resolving deltas: 100% (2/2), done.
cd py-spidev/
次の様になれば成功です。
chmod 755 setup.py
sudo ./setup.py install
running install
running build
running build_ext
building 'spidev' extension
creating build
creating build/temp.linux-armv6l-2.7
gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -I/usr/src/linux/include -I/usr/include/python2.7 -c spidev_module.c -o build/temp.linux-armv6l-2.7/spidev_module.o
creating build/lib.linux-armv6l-2.7
gcc -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-z,relro build/temp.linux-armv6l-2.7/spidev_module.o -o build/lib.linux-armv6l-2.7/spidev.so
running install_lib
copying build/lib.linux-armv6l-2.7/spidev.so -> /usr/local/lib/python2.7/dist-packages
running install_egg_info
Writing /usr/local/lib/python2.7/dist-packages/spidev-2.0.egg-info
- 次にWiringPi(GPIO Interface library for the Raspberry Pi)のソースをダウンロード、インストールします。
git clone git://git.drogon.net/wiringPi
次の様になれば成功です。Cloning into 'wiringPi'...
次に、以下のコマンドを実行します。
remote: Counting objects: 599, done.
remote: Compressing objects: 100% (541/541), done.
remote: Total 599 (delta 425), reused 96 (delta 58)
Receiving objects: 100% (599/599), 233.09 KiB | 121 KiB/s, done.
Resolving deltas: 100% (425/425), done.
cd wiringPi/
途中でワーニングが出ますが、おそらく成功でしょう。
$git pull origin
chmod 755 build
./build
wiringPi Build script ===================== WiringPi Library [UnInstall] [Compile] wiringPi.c [Compile] wiringSerial.c [Compile] wiringShift.c [Compile] piHiPri.c [Compile] piThread.c [Compile] wiringPiSPI.c [Compile] wiringPiI2C.c [Compile] softPwm.c [Compile] softTone.c [Compile] mcp23008.c [Compile] mcp23016.c [Compile] mcp23017.c [Compile] mcp23s08.c [Compile] mcp23s17.c [Compile] sr595.c [Compile] pcf8574.c [Compile] pcf8591.c [Compile] mcp3002.c [Compile] mcp3004.c [Compile] mcp4802.c [Compile] mcp3422.c [Compile] max31855.c [Compile] max5322.c [Compile] sn3218.c [Compile] drcSerial.c [Link (Dynamic)] [Install Headers] [Install Dynamic Lib] WiringPi Devices Library [UnInstall] [Compile] ds1302.c [Compile] maxdetect.c [Compile] piNes.c [Compile] gertboard.c [Compile] piFace.c [Compile] lcd128x64.c [Compile] lcd.c [Compile] piGlow.c [Link (Dynamic)] [Install Headers] [Install Dynamic Lib] GPIO Utility [Compile] gpio.c gpio.c:85:12: warning: ‘decodePin’ defined but not used [-Wunused-function] [Compile] extensions.c [Compile] readall.c [Link] [Install] All Done. NOTE: This is wiringPi v2, and if you need to use the lcd, Piface, Gertboard, MaxDetext, etc. routines then you must change your compile scripts to add -lwiringPiDev
pythonで使える様にWiring-pythonをインストールします。
- コマンドラインからテストをします。適当な発光ダイオードと抵抗(330Ω位でいいでしょう)を図の様GPIO25とGroundに繋ぎます。
次のコマンドを入力します。gpio -g mode 25 out
最初の行は、25番ピンを出力にしますよ。と言う意味です。
gpio -g write 25 1
gpio -g write 25 0
次のwrite 25 1でLEDが点灯します。(25番ピンがHi=3.3Vになる。)
次のwrite 25 0でLEDが消灯します。(25番ピンがLo=0.0Vになる。)
git clone https://github.com/WiringPi/WiringPi-Python.git
以下の様になれば成功です。
Cloning into 'WiringPi-Python'...
remote: Counting objects: 195, done.
remote: Compressing objects: 100% (96/96), done.
remote: Total 195 (delta 98), reused 181 (delta 91)
Receiving objects: 100% (195/195), 255.08 KiB | 134 KiB/s, done.
Resolving deltas: 100% (98/98), done.
cd WiringPi-Python/
git submodule update --init
Submodule 'WiringPi' (https://github.com/WiringPi/WiringPi.git) registered for path 'WiringPi'
Cloning into 'WiringPi'...
remote: Counting objects: 206, done.
remote: Compressing objects: 100% (119/119), done.
remote: Total 206 (delta 113), reused 173 (delta 86)
Receiving objects: 100% (206/206), 149.91 KiB | 111 KiB/s, done.
Resolving deltas: 100% (113/113), done.
Submodule path 'WiringPi': checked out 'dda3305ce14a750e7529ff20b0acf9e53bd8eb7a'
sudo python setup.py install
以下の様になれば完了です。running install Checking .pth file support in /usr/local/lib/python2.7/dist-packages/ /usr/bin/python -E -c pass TEST PASSED: /usr/local/lib/python2.7/dist-packages/ appears to support .pth files running bdist_egg running egg_info writing wiringpi.egg-info/PKG-INFO writing top-level names to wiringpi.egg-info/top_level.txt writing dependency_links to wiringpi.egg-info/dependency_links.txt .................... Extracting wiringpi-1.1.0-py2.7-linux-armv6l.egg to /usr/local/lib/python2.7/dist-packages Adding wiringpi 1.1.0 to easy-install.pth file Installed /usr/local/lib/python2.7/dist-packages/wiringpi-1.1.0-py2.7-linux-armv6l.egg Processing dependencies for wiringpi==1.1.0 Finished processing dependencies for wiringpi==1.1.0
0 件のコメント:
コメントを投稿
コメントをどうぞ