OpenCV2 インストール
家のサーバに OpenCV を入れたが、これがちょっと面倒だったのでメモ
まずは、OpenCV に必要なライブラリをインストール
本当にこんなに必要なのか。。
$ sudo apt-get install git cmake build-essential pkg-config $ sudo apt-get install libopencv-dev libopencore-amrnb-dev libopencore-amrwb-dev $ sudo apt-get install libgtk2.0-dev libdc1394-22 libdc1394-22-dev libdc1394-utils $ sudo apt-get install libjpeg-dev libpng12-dev libtiff4-dev libjasper-dev libavcodec-dev libavformat-dev $ sudo apt-get install libswscale-dev libxine-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libv4l-dev libtbb-dev $ sudo apt-get install libqt4-dev libfaac-dev libmp3lame-dev libtheora-dev libvorbis-dev libxvidcore-dev x264 v4l-utils
OpenCV ソースコードを github から取得
※ 現時点で2系の最新は 2.4.13 みたい
$ wget https://github.com/opencv/opencv/archive/2.4.13.zip $ unzip 2.4.13.zip $ cd opencv-2.4.13
cmake の作成
$ mkdir build $ cd build/ $ sudo cmake -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_QT=ON -D WITH_OPENGL=ON -D WITH_VTK=ON ..
ビルド&インストール
$ make $ sudo make install
ちゃんと入っているか確認
$ python >>> import cv2 >>> cv2.__version__ '2.4.13'
あと、opencv インポート時に『libdc1394 error: Failed to initialize libdc1394』が出たら下記で対処
Python で GPIO 制御
以下の図のとおり、Wiiリモコンで GPIO制御して LED を点けたり消したりしたい
まずは、Python でGPIO制御を確認するところまで実施してみる
(電流が LED の定格を多少超えようが気にしない)
RPi.GPIO をインポートして使いたいGPIO を Out設定すれば行けそうなので下記のとおり実施してみる
- GPIO設定
$ python >>> import RPi.GPIO as GPIO >>> GPIO.setmode(GPIO.BCM)
- GPIO Out設定
>>> GPIO.setup(4, GPIO.OUT) >>> GPIO.setup(17, GPIO.OUT) >>> GPIO.setup(18, GPIO.OUT) >>> GPIO.setup(23, GPIO.OUT)
- LED点灯
>>> GPIO.output(4, True) >>> GPIO.output(17, True) >>> GPIO.output(18, True) >>> GPIO.output(23, True)
- LED消灯
>>> GPIO.output(4, False) >>> GPIO.output(17, False) >>> GPIO.output(18, False) >>> GPIO.output(23, False)
問題なく LED が点灯 ⇒ 消灯 できた
あとは、下記で使ったスクリプトに上記手順を組み合わせれば完成だけど、また今度にしよう
Raspberry pi を Wiiリモコンでコントロール
Raspberry pi を外部から制御するように Wiiリモコンを使ってみようと思ったところ下記のように簡単にできるようだ
Raspberry pi から Wiiリモコンが見えているか確認
pi@raspberrypi:~ $ hcitool scan
Scanning ...
00:19:1D:29:F5:34 Nintendo RVL-CNT-01
まずは Python をインストール
$ sudo apt-get update
$ sudo apt-get install python-dev
cwiid をインストール
$ sudo apt-get install python-cwiid
適当なディレクトリを作って、テストプログラムをダウンロード
$ mkdir wiimote
$ cd wiimote
$ wget https://www.raspberrypi.org/learning/robo-butler/code/wii_remote_1.py
実行してみた
pi@raspberrypi:~/wiimote $ python wii_remote_1.py
Press 1 + 2 on your Wii Remote now ...
No wiimotes found
Error opening wiimote connection
なんかエラーが出たと思ったら、sudo を忘れていた
pi@raspberrypi:~/wiimote $ sudo python wii_remote_1.py
Press 1 + 2 on your Wii Remote now ...
Wii Remote connected...
Press some buttons!
Press PLUS and MINUS together to disconnect and quit.
Button 1 pressed
Button 2 pressed
Left pressed
Left pressed
Right pressed
Right pressed
Down pressed
Up pressed
Right pressed
Left pressed
Left pressed
Down pressed
Down pressed
Left pressed
Right pressed
Right pressed
Up pressed
Down pressed
できた。これで Raspberry pi をラジコンとかにして遊んでみようと思う
Raspberry pi にリモートディスクトップ接続
分かってはいたが、4インチ LCD では使い勝手がいまいち悪い。
そのため、Raspberry pi はリモートディスクトップで運用することにした。
$ sudo apt-get install xrdp
Google先生が言うには xrdp をインストールするだけで、リモートディスクトップに接続できるようになるらしいが、何故かセッション確立後に『error - problem connecting』となって先にすすまない
色々調べてみたら vncserver をインストールすれば上手くいくことがあるらしい。
$ sudo apt-get install tightvncserver
上手くいった。
あとは、キーボード入力を日本語対応して完了
$ cd /etc/xrdp/
$ sudo wget http://w.vmeta.jp/temp/km-0411.ini
$ sudo ln -s km-0411.ini km-e0010411.ini
$ sudo ln -s km-0411.ini km-e0200411.ini
$ sudo ln -s km-0411.ini km-e0210411.ini
RaspberryPi が LCD を装着
我が家の Raspberry Pi が眠りについた理由。。
『HDMIケーブルが接続できるモニタがない』
HDMI を繋ぎたかったらテレビしかなく、
RaspberryPi を起動するためにリビングに行き、HDMIを接続し、キーボードやマウスやら、、、めちゃしんどいのである。
ゾンアマでオーダーしてた LCD が週末届いていたのでさっそく装着
Raspbian は『2016-09-23-raspbian-jessie』を使用
4inch RPi LCD (A) - Waveshare Wiki から LCD-show-160811.tar.gz をダウンロード
$ tar xvf LCD-show-160811.tar.gz $ cd LCD-show $ ./LCD4-show
実行直後にいきなり再起動が入るのでびっくりしたが、無事 LCD の表示を確認
タッチスクリーンの反応が反転していたのでキャリブレーションを実施
$ sudo apt-get install xinput-calibrator
$ xinput_calibrator
解像度が低く、多少使いづらいがちょっとした確認には便利になった