読者です 読者をやめる 読者になる 読者になる

Raspberry Π

Raspberry Piでいろんなことをやってみようというブログです。

mincraft

第8回 Raspberry Piでラジコンを作る。

ラズコン

前回、ついにラズコン(ラズパイ+ラジコン)を動かすことに成功しました!

今回からは、その時に新たにあがった課題を対応していきます。

f:id:taka230035:20161126001213p:plain:w300



前回のリンクは以下です。

rasp0035.hatenablog.com





課題の確認

まずは直近で取り組む課題の確認です。
※1,4,5については前回の記事をご確認ください。

2.PCからラズコンを起動する状態はちょっとスマートじゃない
3.ラスコンを止める時どうするのか

両方を同時進行で対応したいと思います。




考察

完全ではないですが、少しイメージできている部分はあります。

* スマートフォンを使って、ラズパイに接続できないか。
* 接続媒体はwebブラウザでできないか。
* ★ブラウザからラズコンを操作するには??

★をつけた3番目の項目がどうやってやるのか想像できていません。


Google先生にお伺いを立ててみます。


以下の複数のサイトを参照しました。

Python を Web 上で使うには HOWTO — Python 2.7.x ドキュメント

Lighttpd - ArchWiki

make.bcde.jp

tool-lab.com


上記サイトの記事を参考に、実際設定したりしてみました。
特に3番目のサイトの記事は、私がもとめているものとドンピシャだと思いました。

ですが、FastCGIというライブラリがどうしてもうまく導入できず。


ちょっと技術的で細かい話ですが。
※サーバ周りの知識はそんなに自身無いので、
 以下の考察内容は誤っている可能性があります。

webサーバについて

まず、参照サイトのように、
Webサーバにlighttpdというものを使うとしました。
ただ、簡単にFastCGIを導入できず、自分の環境ではエラーとなってしまうのです。

解説策が見つからず。
普通のCGIでいいのでは!?ということも考えました。

また、WebサーバにApacheを使えば、簡単にFastCGIを入れられうようです。
lighttpdの代わりにApacheの使用も考えました。


GPIOの設定

今モーターを動かす時使っているPythonプログラムですが、
Webブラウザからどうやって呼び出そうかも考えました。
参照先サイトでは、WebからはJavascriptPythonプログラムを呼び出しており、インスパイアできそうです。

ですが、Pythonプログラム内を見てみるとWSGIServerや初めて見る関数があり、
導入するのにさらに調査する必要があると思わされました。

もっと手軽に呼び出せないかと調べていると、
4番目のサイトより、
Pythonプログラムを使わずともコンソールからGPIOコマンドというもので、
ラズパイのGPIOを直接操作できるということを知りました。


検証してみた結果として

GPIOコマンドはシェルスクリプトでも実行できます。
シェルスクリプトphpで実行できますし、phpの知見は少しあります。
phplighttpdでも入れられることができるようなので、WebページやGPIOコマンドとの連携はphpで作成しようと思います。




構成としては

まとめとして、以下のような構成へと至っております。

・ラズパイにlighttpdというWebサーバを導入する。
・そのWebサーバをスマホから確認できるようにする。
・GPIOのシェルスクリプトを作り、GPIOコマンドでラズコンを動かす。
・Webサーバとシェルスクリプトの連携はPHPで行うようにする。

f:id:taka230035:20161126001213p:plain:w200

と考えております。

次回より、上記の具体的な実装方法を記載していきたいと思います。


以上です。




次回のリンクは以下となります。

rasp0035.hatenablog.com