元祖 [熱の実験室] 第27回 - ラズパイ2で超アナログ温度測定

「熱の実験室」のコーナーでは、熱を利用した身近な実験を行なっています。

第27回(2015年8月)の実験
 カードサイズのコンピューター、ラズパイ2(Raspberry Pi 2)は、小型・低価格で、LinuxベースのOS上でいろいろなことができます。処理能力も高くて、あまりに何でもできるので、何に使ったら良いのか? 困ってしまうほどです。
 ラズパイ2が普通のパソコンと違うのは、GPIOという入出力の端子があることです。温度を測定する場合も、ここにセンサーなどの回路を接続することで、割と簡単にデータロガーとして使うことができます。けれども、今回やろうとしたのは、あえてGPIOを使わず、カメラで温度計を読んで、画像から温度を取得するという、超アナログな温度測定です。

 ● 実験に使用した器具

 左から、Raspberry Pi 2 Model B(ラズパイ2)、アルコール温度計、USBカメラ。
 ラズパイ2の USBポートには、無線LAN子機を取付けてあります。USBカメラも、ラズパイ2のUSBポートに接続します。

 ● 予備確認

 画像から温度を取得するためには、アルコール温度計の赤い液体の上端と、目盛りの位置関係を知る必要があります。プログラム言語はPHPを使用しましたが、ラズパイ2でPHPをインストールしても、画像を扱うのに必要なGDライブラリは入っていないので、別にインストールする必要があります。ラズパイ2を標準的にセットアップした状態から、以下を実行すると、必要な環境が整います。
sudo apt-get install apache2 php5 php5-gd
 カメラからの画像を処理する前に、下のような図を書いてjpeg画像に変換し、プログラム方法を検討しました。
  • 赤い部分がある、下の方を左から読んでいって、赤い部分の中心のX座標(Xr)を取得する。
  • Xrより少し左のX座標を上から読んでいって、各温度目盛りのY座標(Y40, Y30, Y20, Y10, Y0)を取得する。
  • X座標Xrを上から読んでいって、赤い部分の上端のY座標(Yt)を取得する。
  • YtをY40~Y0と比較して、温度を得る。
 jpeg画像では、色の境目がにじんでいるので、赤の判別は、[ R > 200 & G < 100 & B < 100 ]、黒の判別は、[ R < 100 & G < 100 & B < 100 ] としました、なお、RGBは赤・緑・青で、RGBともに255なら白、ともに0なら黒です。
 このプログラムで、画像から温度を得られることが、確認できました。