記事の詳細

Pocket

Raspberry Piに機能を一個だけ追加する「ゼロワン」シリーズ、今回は21日に発売となる第三弾ラインナップより「ジャイロ」「赤外線リモコン」を使って、LEDストラップをコントロールしてみました!

作例

1. ジャイロセンサ読み取りPython

今回は、公開しているサンプルプログラムを改造し、ジャイロセンサのデータから必要な情報を取り出して出力するようにしました。
実行中のPythonスクリプトからprint文で出力を得ることが出来なかったため、OSのechoコマンドを利用して実行中に出力を行っています。
スクリプトはこちら

2. ジャイロデータ送信Node-RED

ジャイロ基板のNode-REDはこのようになりました。

機能ブロックはこのように分かれています。

今回、Pythonスクリプトは一度起動したらずっと動き続けデータを出力します。そのため、デプロイの度に新しいプロセスで立ち上がってしまいます。
それを回避するため、プロセス番号を取得・保存し、デプロイの度に以前のプロセスを終了させる仕組みを構築しました。
手動でPythonスクリプト単体の終了・開始も行えるようになっています。

また、Pythonスクリプトより得られる情報に応じ、ジャイロ基板上のLEDを点灯させる機構を作成しました。

今回、通信するデータ量が比較的多く、またリアルタイム性が求められるため、インターネット経由の通信にMQTTではなくUDPを使用しました。

ノードファイルはこちら

3. 赤外線リモコンシステム

リモコン側のフローはこのようになりました。

UDPで受け取ったデータを対応するリモコンコードに変換し、Pythonスクリプトにより赤外線送信を行っています。 赤外線コードは1行1コードの形でファイルに格納され、受信したコマンドをchangeノードで行番号に変換しファイルからコードを読みだしています。
スクリプトはこちら

4. 動作

実際に動かしてみました。
今回作成したシステムの動作は以下のようになります。

ジャイロ基板操作LED動作
縦に振るON/OFF切り替え
横方向に斜めにするカラー切り替え
平面上で回転させる明るさ変化

ジャイロ基板の動きに応じて、LEDの光り方が変化していることがわかります。
ジャイロ基板上のLEDにより、どんな操作を受け付けたか、現在どのような状態かがわかります。

今回、傾けてのカラー切り替えや回転による明るさ変化については上手く動作せず、動きがぎこちないものになってしまいました。
赤外線送信に利用したPythonスクリプトのオーバーヘッドが大きいためと考えられます。

使用するリモコンコードや、ジャイロセンサの動き方を変更することで、さまざまな機器をモーションコントロールすることが出来ます。自分だけのコントローラをゼロワンシリーズで作ってみてはいかがでしょうか?

関連記事

ページ上部へ戻る