できること

話題の画面付きRaspberry Pi「reTerminal」でナビを作ろう!

第2回:reTerminalにセンサを追加して計測、ビジュアル表示

こんにちは、ヨシケンです!
この連載では、話題のRaspberry Pi Computeモジュールと液晶画面が一体となったreTerminalでデバイス作りを紹介しています。

 
今回の連載は4回を予定しており、以下のような流れでご紹介していく予定です。
第1回:「reTerminal」の紹介とラズパイ開発環境のセットアップ
第2回: reTerminalにセンサーを追加して計測、ビジュアル表示
第3回: GPSモジュールをセットして現在地を取得、表示
第4回: 各種センサとGPSを組み合わせて本格的なナビシステムの完成!

 
第2回となる今回は、reTerminal内にあるセンサを使って、簡単に明るさやデバイスの動きを計測してみます。また温室度センサなど追加のセンサを足して、その結果をビジュアルに表示してみたいと思います。

 

[ reTerminalを使ったデバイス作り ]

 

今回の記事の流れ

  1. reTerminalのセンサを使って計測
  2. 外部のセンサを追加して計測
  3. ダッシュボードを使ってグラフィカルに表示
  4. まとめ

 

今回必要な部品

reTerminalにGPSや各種センサを追加してナビシステムを作ります。今回必要なセンサ、部品などは以下のようになっています。

reTerminal

Seeed社が提供するRaspberry Pi Compute Moduleを使ったデバイス

 

温湿度センサ

赤外線を発しその反射光を測定して、光の強度や近接度を計測します。

 

ケーブル類など

必要に応じて

1. reTerminalのセンサを使って計測

まずreTerminalに初めから付いている機能を使えるようにしてみます。reTerminalには、光センサや加速度センサなどが予め内蔵されています。それを簡単に使うのに、Node-REDというブロックタイプのプログラムツールを使用したいと思います。

 

 
前回、Node-REDにreTerminalのセンサーを使用できるノードをインストールしました。それを使うために、Raspberry PiのプログラムからNode-REDを選ぶか、コンソール上でnode-red-startとコマンド入力して、Node-REDを立ち上げます。

 

 
その後、ブラウザから http://[hostname].local:1880/ を開きます。reTerminalのノードが追加されていると、Node-Red画面の左側に内蔵されたセンサが使えるようになっています。まず、この中であらかじめ内蔵されたLightセンサを使ってみることにします。この光センサ自身は、reTerminal画面の上方部分、赤枠のところに付いています。

 

 
それでは、左側のreTerminalのところにある「Light Sensor」を、右側のフローに持ってきます。

 

 
このLightセンサノードとdebugをつなぎます。そうしたら右側の「デプロイ」ボタンを押して、この設定をreTerminalに流し込みます。

 

 
これだけで右側のデバッグの部分に計測結果が出てきます。画面の上部についている光センサの部分に光を当てたり、手で遮ったりして、光量を変化させてみると、出力される光量が増減するのが分かります。

 

 

2. 外部のセンサをreTerminalで使用する

次に外付けのセンサをreTerminalにつないで、それをコントロールできるようにしましょう。ここではこのような温湿度センサのDHT11をreTerminalにつないでみます。
 

 
reTerminalのGPIOは上図のようになっていて、Raspberry Piの40 pinに対応しています。ここでDHT11のケーブルを以下のように接続します。
 

DHT11側(左から) reTerminal
GND(黒いケーブル) GND (Pin 20)
VCC(赤いケーブル) 3V3 (Pin 17)
NC(白いケーブル) 接続なし
SIG(黄色いケーブル) GPIO1 (Pin 28)

 

 
次に、Node-RED上の設定を行います。温室度センサを使用するには、Node-RED上のパレットから、DHT用のノードを追加します。dhtと検索して、下図のようにnode-red-contrib-dht-sensorを選んで、インストールします。
 

 
そうすると、左側のRaspberry Piのところにrpi-dht22が追加されます。
 

 
まず計測のトリガーとなる「タイムスタンプ」をフロー上に持ってきて、それとrip-dht22をつなげます。結果を確認するためのdebugもつなぎます。
 

 
左側のノードの「タイムスタンプ」では、1秒おきに計測をおこなうようにします。右側のrpi-dht22ノードでは、先ほどreTerminalとつないだGPIO1を指定するようにします。
 

 
reTerminalのGPIO1にSIGNAL(黄色いケーブル)をつないだ状態で、温湿度を計測し始めます。payload:の部分の21.00などが気温になります。humidity:の部分に33.00と湿度が表示されています。
 

 
これでreTerminalに外部からつないだセンサの値を取得、表示することができました。

 

3. Dashboardを使ってグラフィカルに表示

reTerminalの内部のセンサ、外部接続したセンサの値が取得できたので、せっかくなのでreTerminalの大きな液晶画面にこれを表示できるようにします。Node-REDのダッシュボード機能を使うと、簡単に画面からグラフィカルに計測結果を見ることができます。

まずLightセンサの結果を表示するようにしていきます。それには、Node-RED左側のDashboardのところから「Gauge」を選んで、フロー上に配置します。またChangeノードも選びます。「reTerminal Light」から「Change」につなぎ、そこから「Gauge」に接続します。
 

 
「Change」の部分は、msg.payloadとして取得した情報を加工することができます。msg.payloadのところにlightを指定する事により、light:以後の光量の数値だけを取得できます。

この光量を受け取ったら、それに合わせてゲージの目盛りを変化させて表示させます。Dashboardの「Gauge」を開きます。「新規にdashboard groupを追加…」の右側の鉛筆マークをクリックし、グループを作成します。ここではタブの名前をreTerm Tabとして、新規作成しています。
 

 
これでreTermダッシュボード上のreTerm Tab項目にLight Gaugeを表示する事になります。また、ゲージ上の目盛りとして最大明るさ4000ほどを指定し、明るさに応じて緑、黄色、赤などに色分けしてみます。
 

 
それではこれをreTerminalにデプロイします。デプロイが済んだら右側のDashboardのところから、「表示」を選んでダッシュボード画面を出力させます。以下写真のようにreTerminal上に光量をグラフィカルに表示できるようになりました。

 

 
光センサ部分を指などで隠したりして、Gaugeの色が変化するのを確認して下さい。
 

 
同様に内蔵された加速度センサもNode-REDから呼び出し、計測することができます。

次に温湿度の数値もreTerminal上に表示してみます。同様にChangeノードとGaugeノードを追加します。

 

 
まず、温度を表示するためのTemp tabというタブ・グループを新規作成します。また、Gaugeでは0度から40度までの範囲で、20度から30度の間で色を変えるようにします。

 

 
同様に湿度の設定もおこないます。0から100(パーセント)の間で、色を変える設定を加えます。またchangeでhumidity:の数値を取得するようにします。これをデプロイし、ダッシュボード画面上で見てみます。これで温度と湿度がゲージ表示できるようになりました。光、温度、湿度のそれぞれの表示はこのようになっています。
 

 
また、reTerminal上でも見てみます(ここでは湿度の表示をLevelに変えています)。
 

 

4. まとめ

今回の連載では、RaspberryPi Compute Moduleが入った「reTerminal」を使ったものづくりを紹介していきます。第2回となる今回は、reTerminalに初めから付いているセンサを使って、手軽に明るさや加速度を測ってみました。また温室度センサも追加して、外部のセンサを扱う方法を紹介しました。さらに、Dashboardという画面を作る仕組みを使って、液晶画面にセンサの数値をグラフィカルに表示することもできました。

次回はGPSモジュールをreTerminalに接続できるようにします。GPSからの位置情報を元に今いる場所を取得できるようにしていきます。

お楽しみに!

普通の会社に勤めるサラリーマンですが、モノ作りが好きな週末メイカーで、電子書籍MESHBOOKを出したり、ブログを書いたりしています!

http://blog.ktrips.net

ラズパイと液晶画面で、顔を判別してぴったりの動画を流すデジタルサイネージをつくろう!