2014年2月11日火曜日

Raspberry Pi の超簡単設定4 遠隔操作ApacheサーバーとPHPから操作する

目次
Raspberry Pi Noobsで簡単リモートデスクトップ
WiringPiのセットアップ・・・C言語でGPIOを動かしてみる
Pythonのセットアップ・・・人気のPythonで動かしてみる

WebからPHPで簡単アクセス・・・PHP、Pythonで遠隔GPIO

                                      

update こちらのサイトに新型があります。
mille-feuille(ミルフィーユ)


前回までにPythonまでインストールしました。今回はwebからのアクセスです。
リモートデスクトップでも遠隔操作が可能ですが、HTMLやPHPなどを組み合わせて簡単にアクセスしたいときがあります。
今回のサンプルではタブレットから簡単にブラウザからアクセスできるように、PHPを使うことにしました。
(PHPからPythonのプログラムを叩きますが、C言語でも同じことができるはずです。)




そのためにはRaspberry Pi にサーバーを用意して動かします。
Pythonだけの簡易サーバーもありますが、ハードを動かすGPIOを動かすにはApacheとPHPを組み合わせて動かした方が簡単でストレスなく動かせます。

ブラウザが動作する端末でプログラムを動かすことができるので、利用価値は高いと思います。
他のwebアプリを組み合わせると使いやすくなると思います。
また、Pythonコード内のprintもHTMLに反映させることができるので、Pythonでwebページを記述することも簡単にできるはずです。

まずApatchとPHPをインストールします。


sudo apt-get update

sudo apt-get upgrade
sudo apt-get install apache2 php5
sudo chown pi -R /var/www
sudo update-rc.d apache2 defaults

この時点で/var/www/フォルダにHTMLファイルを入れると閲覧できます。

sudo nano /etc/sudoers

テキストエディタが起動するので、sudoersの最後の行に

www-data ALL=(root) NOPASSWD: ALL
と入れます。
ctrl + x で保存するか尋ねて来るので、Yを押し、最後にファイル名を確認してきますが上書き保存するのでそのままエンターを押して終了します。



これでWebでアクセスした人もsudoコマンドが必要なプログラムを使用できます。外部に公開するときはセキュリティ等に気を付けてください。(最低でもアクセスにパスワードで制限を付けるなどしてください)


sudo wget http://mcugear.org/RPitest/MCUGear.tar

tar xvf MCUGear.tar
sudo mv -f MCUGear /usr/lib/cgi-bin

一旦再起動します。

sudo reboot

基本的にcgi-binフォルダでroot権限は変えたくない場合は、/home/pi/フォルダ以下で編集してから

sudo mv [filename] /usr/lib/cgi-bin/[folder] と移動させてください。
削除するときは
sudo rm -rf /usr/lib/cgi-bin/[folder]/[filename]
とすると消せます。
権限を変えると簡単に編集ができます。

手持ちのパソコンやタブレットのブラウザに
http://raspberrypi.local/cgi-bin/MCUGear/index.php
または
http://[IPアドレス]/cgi-bin/MCUGear/index.php
と入れるとアクセスできるはずです。





操作方法

1、MCU Gearの電源を入れる。
2、Init Baseboardボタンを押して、ベースボードを初期化します。

以下のsystem関数を組み合わせてPHPを操作すると、ハードウェアをPHPから動かすことができます。PHPのfor やif 等と組み合わせることで複雑な連続動作ができるはずです。


・Read Input Pins はUniversal Moduleのすべての端子を読みます。


・Write Output Pins はSignal Hold Moduleから出力します。


・Read AD 2ch はAD2chモジュールから信号を受け取ります。(HTML5が対応しているブラウザから動かすとメーターが表示されます。)


・Read AD 8ch はAD8chモジュールから信号を受け取ります。・Read DA はDAモジュールから信号を受け取ります。(HTML5が対応しているブラウザから動かすとメーターが表示されます。)


・Move RC Servo はマルチファンクションモジュールにPWMモードのプログラムを書き込んで使用します。



仕組み等

一番下ではPythonがハードを動かしています。
PHP側からsysteコマンドでPythonファイルを動かす仕組みになっているので、Pythonの中でprint するとその内容もすべて表示されます。表示したくないときはprintをコメントアウトするか、PHPのsystem関数周辺をHTMLのコメントアウト<!--  -->で囲ってください。

PHPからはsystem関数で

sudo python ~.py [address] [command]
という順番で実行しています。
モジュールアドレスはモジュール基板裏面の設定と、ゲート開閉に利用しているPCA9674のデータシートを見てください。

オリジナルの基板などで複雑な処理が必要なときは、取り付ける場合はハードに合わせてPython側を書き換えてください。


0 件のコメント:

コメントを投稿