前回まででraspberry piの基本設定をしましたが 今回はVNCでのリモート操作、sambaでのファイル共有、LEDの制御、サーボモータの制御 を紹介しようと思います。

VNCサーバのインストール

まずはGUIを使いたいときに毎回、ディスプレイキーボード、マウスを切り替えるのも
苦なのでおなじみのVNCを入れます。(SSHで基本操作をするので、あまりGUIを使うことは無いのですが
DHCPで動作させた場合に割り当てられたIPを確認する時などにたまに利用します。)

apt-getでインストールします。(楽ですね~)

$ sudo apt-get update
$ sudo apt-get install tightvncserver

以下のコマンドで起動します。初回起動時にパスワードを聞かれるので設定します。

$ tightvncserver

view-only password も聞かれますが使わないのでNで良いでしょう。

これで準備完了です。

停止する際には以下のコマンドで停止します。

$ vncserver -kill :1

※自動起動にもできますがそこまでGUI使わないと思うので割愛します。

あとはクライアントにVNCViewerを入れて接続します。

http://www.realvnc.com/download/viewer/

サーバにIPアドレスとポート5901を指定して接続します。

例)192.168.1.99:5901

暗号化されてない旨の警告がでますがそのまま進んで先ほど設定したパスワードを入力します。

これでリモートからGUIの接続完了です。

sambaのインストール

画面キャプチャやインストールファイルをPCと相互に利用するために ファイル共有のsambaを導入します。
いつもどおりapt-getでインストールできます。

$sudo apt-get install samba

コンフィグを設定します。共有フォルダ名「share」での作成例です。

$sudo vi /etc/samba/smb.conf

[share]
path = /home/pi/share
read only = no
browsable = yes
force user = pi

パスワードを設定します。

$ sudo smbpasswd -a pi

これでWindowsからファイル名を指定して実行で
\raspberry piのIPアドレス
でアクセスすると共有フォルダが見えます。

これで色々作業する準備はほぼ完了しました。

 

GPIO操作

次にせっかくGPIOインタフェースを持っているraspberry piなので
その操作をしてみようと思います。pythonなどでいきなり制御も良いのですが
まずは基本的な動きをみるためコマンドのみで制御してみようと思います。

LED制御

まずは代表的なLEDの操作です。

以下の工作キットを購入して実装しています。
ハック ラズベリーパイ Raspberry Pi 電子工作入門キット


まずは物理配線です。

raspberry pi2のGPIOの配置は以下のようになっています。

GPIO_Pi2

 

GPIOとLEDをブレッドボードを利用して以下のように配線します。

breadboard_001

 

GPIO端子は26を利用。抵抗を挟んでLEDを接続します。
GPIO26→抵抗(270)→LED(長い足)→LED(短い足)→GND(06)
という配線になっています。

これで物理的な準備は整いました。

次にraspberry piからLEDを制御します。

raspberry piのGPIOの制御では仮想ファイルに0を書き込む(OFF)
1を書き込む(ON)という制御をして操作します。

今回はGPIO26を利用する例を紹介します。

rootになって操作します。以下のコマンドでGPIO25ピンを使う宣言をします。

 echo 26 > /sys/class/gpio/export

すると/sys/class/gpio/にgpio26というディレクトリができます。

次にGPIO26ピンを出力(out)ピンとして設定します。

 echo out > /sys/class/gpio/gpio26/direction

これで/sys/class/gpio/gpio26のvalueに0か1を書き込みLEDの点灯、消灯が制御できるようになります。

LED点灯

 echo 1 >/sys/class/gpio/gpio26/value

LED消灯

 echo 0 >/sys/class/gpio/gpio26/value

GPIO25ピンの制御を終わる場合は使わない宣言をします。

 echo 26 > /sys/class/gpio/unexport

 

これらは基本動作でこの原理を利用してpythonやPHPなどで制御可能です。

サーボモータ制御

次は小さな機械を動作させるためにサーボモータの制御をしてみます。

まずはLEDの時、同様にブレッドボードで物理配線です。

以下のように組みました。(LEDの配線は後の工作で使うのでそのまま)今回はモータを動かすので電力不足になる可能性があるので電池ボックスを用意して乾電池からモータへ電力を供給しています。

breadboard_002
サーボモータには3本配線がありそれぞれ
茶 → GND
赤 → 電源(プラス)
橙 → GPIO制御用
となっています。

今回の配線は
・GPIO18→抵抗(1k)→サーボモータ(橙)
・電池ボックスプラス→サーボモータ(赤)
・電池ボックスマイナス→GND
・サーボモータ(GND)→GND
という配線にしています。

次に制御側の準備です。

サーボモータの制御にはServoBlasterというコンポーネントを利用します。
http://oohito.com/nqthm/archives/2151

gitHub よりプログラムをクローンします。

 $ git clone git://github.com/richardghirst/PiBits.git

ServoBlaster/user に移動し、インストールを実行します。

$ cd PiBits/ServoBlaster/user
$ make servod
$ sudo make install

以下のコマンドで起動します。

 servod

起動時に以下のようにマッピング情報が表示されます。
ServoBlasterでは独自の番号を利用して制御をします。

Servo mapping:
0 on P1-7 GPIO-4
1 on P1-11 GPIO-17
2 on P1-12 GPIO-18
3 on P1-13 GPIO-27
4 on P1-15 GPIO-22
5 on P1-16 GPIO-23
6 on P1-18 GPIO-24
7 on P1-22 GPIO-25

今回はGPIO18を使うので2になります

※ServoBlaster起動中は上記のGPIOは他で使えません。
(LED等を繋げて前述のLED制御の際の”echo 1 >/sys/class/gpio/gpio25/value”とやってもvalueが変更できません。)

LEDの時と同様に仮想ファイルにechoで書き出し制御します。
%で指定や周波数での指定が可能です。
以下のコマンドを叩くとモータが動きます。
動かしたいもので調整しながら数値をいじれば思い通りに動かす事が可能です。

echo 2=0% > /dev/servoblaster
echo 2=100% > /dev/servoblaster

LEDとサーボモーターの制御が可能になったので
次回は簡単なシェルスクリプトを組んで
前回ケース作成時に登場した20年前のレゴと合わせて工作をしてみようと思います。