私たちの作った赤外線カメラを取り付けたESP8266とiPhoneをWiFiで接続するという発想のThermal Cam はFLIR LEPTON 1.0,3.0,3.5 で動作が可能です。
今回は同じような仕組みを使って、より精細な画像とスピードを持つFLIR BOSON QVGA(以下BOSON)で実現させました。さらにThermal Cam3Xと同じように、皆さんが変更可能なAI画像認識機能を加えて様々な応用ができます。
この画像の最初の方は、チョキを認識したら手の温度を表示して、一番温度が高い温度に丸印を表示、更に英語でピースと発生させる設定にしています。画像認識エンジンにはYOLOv3を利用していますが、標準データ(Tinyではありません)で入力画像が416x416です。推論スピードが30fpsを超えることがお分かりいただけると思います。
起動終了方法は下記「15 起動終了方法」を確認して下さい。AIの使用方法、学習済みファイルのインストール方法はThermal Cam3Xと同じです。こちらを参考にして下さい。
Thermal Cam for BOSONは、安価で小型のRaspbery PI Zero をFLIR BOSON に接続し、Wi-FiテザリングI経由でiPhoneに画像を再現できます。動画スピードは、10Mhz(10fps)以上のBOSONでは最高30fps前後です。
PI ZeroとiPhoneはWi-Fiで相互に交信し合います。PI側ではカメラの持つ性能を最大に発揮させるため8bit処理したRAW16グレースケール画像をiPhoneへ送っています。制御命令はiPhoneから送信しているので、市販のBOSON単体とコンピュータをつないだだけでは実現できない暫定温度測定・感度の微調整・自由な色づけが可能になりました。さらに画像データはmjpegなどで圧縮していないためBOSON本来のノイズの少ないくっきりした画像が再現されます。iPhone側では画像を特性に合った方法で拡大しているので、緻密な画像表現が可能です。市販されているBosonは温度測定機能を持っていませんが、後述したキャリブレーションを行うことで、ある程度正確な温度測定が可能になりました。
iPhoneまたはiPad用のアプリは、app Storeから w&t 、kansaidenki、thermal で検索できます。(2020/4/18)
1.Thmal Cam for BOSONの機能
Thermal Cam for BOSONは、以下のような機能があります。
カラーレンジONの場合、高画質なiPhone画像は、ソースの工夫で輪郭強調やコントラストを上げなくても、自然な画質で緻密さを失なっていません。FLIRのAGC画像と決定的に違うことは、下記比較画像で理解できると思います。
今までのLEPTON画像より画素が多くなったため3D画像は息をのむような美しさです。
iPad動かした例です。あらかじめ記憶した顔の温度を元に、AIで認識した全ての顔について何度の差があるかを表示しています。基準値を超えると音声またはアラート音やフラッシュで警告が設定できます。
画像のカラーは3種類のポスタリゼーションカラーを含む12色から選択できます。
このほかにiPhoneの設定でReverseをONにすることで、画像の左右が反転できます。
2.1クラス上の美しい画像が表示できます
この画像はBOSON QVGAを直接パソコンにつないだキャプチャー画像です。接続が簡単でWEBカメラとして取り扱えますが、AGC処理後の画像のためノイズ(縦に現れる縞)が多く、コントラストを上げているためか、画像そのものは決して美しいとは言えません。
BOSON QVGAキャプチャー画像
次の画像は今回のBOSON QVGA(320x256画素)を使ったThermal Cam for BOSONの画像です。落ち着いた画質でノイズが取れ、細かなところまで画像が再現できているのが分かると思います。 (屋内で最高最低温度の差が殆ど無い場面ではノイズが発生します)
Thrmel Cam for BOSON QVGA(320x256画素)の画像
次の画像はBOSON QVGA(320x256画素)の上位機種VGA(640x512画素)を同じiPhoneアプリで再現したものです。一見QVGAと見分けが付かないと思います。ただし引き延ばすと違いが分かりますが、赤外線カメラを使う一般用途であれば価格の安いQVGAでも十分対抗できることがおわかりいただけると思います。
Thrmel Cam for BOSON VGA(640x512画素)の画像
3. 応用例
赤外線画像を利用したAIによる画像認識の応用例です。ここではLEPTONを使っていますが、すでにBOSONでも実現できています。
Maker Faire Kyoto に向けて - W&T's diary
さらにiPhone 11シリーズを使った本格的な「おうちくらうど」も開発中です。
4.必要部品とソフト
この記事で紹介するアプリは、あくまでもPI Zeroを使ったインストール手順で、これだけではThermal Cam for BOSONは動きません。現在アプリストアに申請中のiPhoneアプリが必要です。
PI3、PI4の場合は、Openframeworks及びOfxCVが動く環境であれば以降6,8,9,10番の作業で動作可能です。
FLIR BOSON QVGA (10Mhz以上の機種)
USBケーブル USBC及びマイクロUSBコネクタが付いているもの
Raspbery PI Zero(インストール時はHDMI、キーボード、マウスを接続)
インストール後はキーボード、マウス、ディスプレイは必要ありません
マイクロUSBカード(16Gbyte)
pimoroni OnOff SHIM 日本ではスイッチサイエンスで取り扱っていて768円です
対応 iPhone
- iPhone SE,7,7Plus,8,8Plus,X,XR,XS,Xs max,11,11 Pro,11 Pro Max
- 格安SIMを使う場合は、テザリング可能な契約をしてください
- AI機能を使うにはXs以上が必要となります
Thermal Cam for BOSON PI側アプリ:以下を参考にしてインストールして下さい
Thermal Cam for BOSON iPhone側アプリ:Apple アプリストアからダウンロードして下さい
kansai,kansaidenki,w&t で検索
Thermal Cam for BOSON性能
- WIFI接続範囲:見通しが良く、電波条件の良いところで最大35m
- 動画再生スピード:最大30fps(Wi-F-接続条件による)
端末側の機能
- 最高最低温度表示、指定点の暫定温度表示(体温中心の温度帯で±5℃程度)と指定点周りの温度表示(81カ所)
- 画像のコントラスト指定(Dynamic Range)
- 画像コントラスト安定化指定(Color Range)
- 画像中に極端な温度の対象物が存在してもコントラストに変化が無くなる(Color Range)
- 動画のリアルタイム画像録画機能-->写真アプリ連動
- 動画の3D表示-->温度変化をポイントクラウドで確認できる
- リバース表示:左右反転表示
- 画像のAI判定と判定結果のカスタマイズ
- 学習済みデータの入れ替え可能
FLIR BOSON QVGAは320x256 の画素をもつ赤外線カメラで、一般的には10fpsの動画再生能力を持ちます。このカメラは購入前にFLIR代理店と利用手続きを取り交わすことで、最高30fpsまたは60fpsの製品を指定できます。今回はそのカメラを対象としていますが、10fpsのカメラでも作動させることが可能です。
5.RaspiOSのインストール
PI Zeroは他のPIシリーズに比べてスピードや起動が遅いことから、OSのやソースのインストールなど非常に時間がかかります。その代わり他のPIでは実現できない携帯性が加わることになります。RaspiOSを含めて全体のインストールは慣れていても1日くらいの作業量です。途中でエラーが出た場合は最初に戻って再度挑戦して下さい。
NoobsをコピーしてOSをインストールするのは非常に簡単ですが、Pi Zeroでは起動が15秒以上遅くなります。今回はimgファイルを直接SDカードに書き込む必要があります。
開発環境としてOpenframeworksを使用しますが、Raspbianの最新バージョン「Buster」との相性が悪いので、1つ前のバージョンの「Stretch」 をインストールする必要があります。Raspbian付属ソフトが起動スピードの邪魔をするのでrecommended softwareでない標準のものをインストールしてください。
http://ftp.jaist.ac.jp/pub/raspberrypi/raspbian/images/raspbian-2019-04-09/
インストール方法は以下を参考にして下さい。
https://www.raspberrypi.org/documentation/installation/installing-images/README.md
OSの初期設定では必ず自宅の無線ルーターに繋いでください。
IDやPASSはなるべく簡単な方が後々接続が簡単になることと、最終的にiPhoneテザリング接続に限定するので、あまり神経質になる必要はないと思います。今回は ID:pi0 Pass:pi0 にしています
6.ダウンロードファイルの内容
PI Zero側で使用するソースはここからダウンロードして下さい。
ThermalCam_BOSON.zip - Google ドライブ
下記のファイルがすべて入っています。一応PI Zeroの /home/pi にダウンロードしたフォルダ内部のファイルをすべてコピーして下さい。
PI_BOSON1X メインプログラムフォルダ
./bashrc 初期設定ファイル(すでに存在している./bashrcへ重ね書きになります)
start.sh start.pyを起動後iPhoneテザリングアドレスを指定してメインプログラムを起動
start2.sh iPhoneのテザリングを確認してつながっていなければ再接続
aID.txt iPhoneの新しいIDとPASS
damy.txt 前回スタート時のiPhoneのIDとPASS
start.py iPhoneのID PASS 設定確認プログラム
config.txt PIの初期設定ファイル
boson.service 自動起動用のファイル
boson メインプログラムを手動で動かす場合のshファイル(拡張子なし)
boson_temp.txt 温度補正用のテキストファイル
boson_temp.50 画角50°のBOSON用補正ファイル(使う場合は数値拡張子をtxtに変更)
boson_temp.90 画角90°のBOSON用補正ファイル(使う場合は数値拡張子をtxtに変更)
7.PI Zeroの一時設定
config.txt を /boot にsudoでコピー
sudo cp config.txt /boot/config.txt
Thermal Cam for BOSONに適したPI Zeroのスピードアップなどの設定です。コピーが完了したら必ずrebootします 。
8.BosonSDK のコンパイル
GitHubからBosonLinuxSDKをダウンロードして、/home/pi に移動します。
GitHub - FLIR/BosonLinuxSDK: This is C code Boson SDK for Linux
移動後は解凍したフォルダの場所を確認して下さい----> /home/pi/BosonLinuxSDK
まず BdonLinuxSDK/EmulatorFiles/ に入りmakeを実行
次に、 BdonLinuxSDK/ClientFiles_C/
に入り以下のコマンドを実行してsoファイルを6個作成します。
gcc -fpic -c Client_API.c -o boson1.lo
gcc -shared -Wl,-soname,boson1.so boson1.lo -o boson1.so
gcc -fpic -c Client_Packager.c -o boson2.lo
gcc -shared -Wl,-soname,boson2.so boson2.lo -o boson2.so
gcc -fpic -c Client_Dispatcher.c -o boson3.lo
gcc -shared -Wl,-soname,boson3.so boson3.lo -o boson3.so
gcc -fpic -c Serializer_BuiltIn.c -o boson4.lo
gcc -shared -Wl,-soname,boson4.so boson4.lo -o boson4.so
gcc -fpic -c Serializer_Struct.c -o boson5.lo
gcc -shared -Wl,-soname,boson5.so boson5.lo -o boson5.so
gcc -fpic -c UART_Connector.c -o boson6.lo
gcc -shared -Wl,-soname,boson6.so boson6.lo -o boson6.so
9.Openframeworksのインストール
他のSSD接続したパソコンからでもインストール可能ですが、とりあえずPI Zeroでインターネットを立ち上げ
から、of_v0.10.1linux armv6l_release.tar.gzをダウンロードします。最新バージョン0.11.0ではないことに注意して下さい
さらにofxCv addonが必要なので
https://github.com/kylemcdonald/ofxCv
からofxCvをダウンロードします。
解凍したOFは/home/pi にフォルダごと移動し、フォルダ名称を of_v101に変更してください。
ofxCVは、ofxCV-masterからofxCvに名称を変えて
/home/pi/of_v101/addons に移動します。
OF自体はコンパイルが必要です。
https://openframeworks.cc/setup/raspberrypi/ に従ってコンパイルを実施します。
PI Zeroの場合最低2時間は必要です。
ここまで終わったら、上手くコンパイルできているかどうか確認するため、サンプルファイルを実行してみます。
cd /home/pi/of_v101/ examples/3d/ 3DPrimitivesExample
make
make run
3DPrimitivesExampleを実行した結果です。この画像はMacのものですが、PIの場合は画像が左上に固定され、マウスでWindowが移動できません。また、PIはコマンドモードでも実行画像が表示できます。
10.Thermal Cam for BOSONをコンパイル
ダウンロードしたPI_BOSON1Xをフォルダごとapps/myapps へ移動
さらにこのフォルダに入りBosonSDKの必要ファイルをコピーして、リンクファイルを作成します。
cd /home/pi/of_v101/apps/myApps /PI_BOSON1X/src
ln -s /home/pi/BosonLinuxSDK/ClientFiles_C BOSON
cp /home/pi/BosonLinuxSDK/BosonLinuxSDK/EmulatorFiles/*.h
cp /home/pi/BosonLinuxSDK/BosonLinuxSDK/EmulatorFiles/*.so
そしてmake を実行します。
cd PI_BOSON1X
make
これもかなり時間がかかります(1時間程度)のでゆっくり待ってください。
エラーがなければ一応一連のインストール作業は完了です。
ここで本当に画像が表示されるかどうかテストします・
まずiPhoneにアプリをインストールして起動しておきます。この時iPhoneは自宅の無線ルーターに接続してください
iPhoneの「設定」から現在接続されているIPを調べます。設定-->Wi-Fi
iPhoneのID PASSを以下のように変更します(一時的に変更しても他のアプリには影響が出ないと思います)
設定-->一般-->情報で名前を選択
ABiPhone
設定-->インターネット共有-->WI-FIのパスワードで
12345678
設定が完了したら、iPhone側でThermal Cam Bを立ち上げておきます。そしてiPhoneと同じ無線ルーターに接続したPI Zeroでプログラムを起動します。このとき最後にiPhoneのIPアドレスを加えます(xxx.xxx.xx.xx部分)。
/home/pi/of_v101/apps/myApps/PI_BOSON1X/bin/PI_BOSON1X xxx.xxx.xx.xx
BOSONがPI ZeroのUSBに接続されていれば、PIに接続したディスプレイとiPhone側にBOSONの画像が表示されるはずです。
画像表示が確認できたらctrl cでプログラムを一旦終了します。元のID・PASSに戻す場合は、すべてのテスト完了後としてください。
11.On Off Shimの組み立て
On Off Shimと同封のコネクタを半田付けしてPI Zeroに取付後、以下プログラムをインストールします
curl https://get.pimoroni.com/onoffshim | bash
これはなかなかインストールが進みません(時間が必要で一見ハングアップしているように思えてしまう)が、諦めずにじっと待つ必要があります。
インストールが終了したら、一旦shutdownして、USB電源をOn Off Shim側のコネクタに入れ替え、スイッチを軽く押し、起動するかどうか確認します。
起動したら、ボタンを1秒以上押し離して、自動シャットダウンするか確認します。
これでスイッチによるPI Zeroのオンオフが可能になります。
12.自動起動の設定
今回のプログラムはiPhoneのテザリング機能を利用してデータの送受信を行うため、PI側にiPhoneのIDとパスワードを記憶させる必要があります。後々のために以下の設定を行います。
まずaID.txtを /boot にコピーします
sudo cp aID.txt /boot/aID.txt
ファイルの内容は、1行目がiPhoneのID、2行目がiPhoneのパスワードです。
PIのOSが入ったSDカードは、Windows又はMacで/bootの中身を変更できます。パスワードなどの変更があった場合にはこれらのコンピューターにPIのSDカードをセットして/boot/aID.txtを変更して下さい。ただしその他のファイルを変更したり、削除したりするとPI が起動しなくなりますので、細心の注意が必要です。
次にpiのsystemdの設定を行います。ダウンロードしたboson.serviceを所定の場所にコピーします。
sudo cp boson.service /etc/systemd/system/boson.service
上手くコピーできないときは以下を直接書き込んで下さい
sudo nano /etc/systemd/system/boson.service
で、内容は
[Unit]
Description=Capture BOSON Image Service
After=network.target
[Service]
Type=simple
ExecStart=/home/pi/start.sh
StandardOutput=nul
WorkingDirectory=/home/pi/
#Restart=always
[Install]
WantedBy= multi-user.target
コピーしたら以下のコマンドを入力して、boot後の起動ファイルを設定します。
sudo systemctl enable boson.service
13.PI Zero起動のスピード化
以下のコマンドで時間のかかる不必要なプログラムを停止させます。この操作により本体のキーボードも使えなくなりますが、以降は他のコンピューターからssh接続してください。元に戻したい場合は disableをableに、purge -y --auto-remove部分をinstallに変更すれば可能です。
まずraspy-configを起動してコマンドライン起動に変更します。ディスクトップ画面に設定するとメモリを消費する上に、Pi Zeroでは起動に非常に時間がかかります。
Linux初心者の方、起動時間が気にならない方は、以下コマンド実行は避けた方が無難です。
再起動後他のコンピューターからsshでpiに入り次のコマンドを実行
sudo systemctl disable dphys-swapfile.service
sudo systemctl disable keyboard-setup.service
sudo systemctl disable apt-daily.service
sudo systemctl disable wifi-country.service
sudo systemctl disable hciuart.service
sudo systemctl disable raspi-config.service
sudo systemctl disable triggerhappy.service
sudo systemctl disable ntp.service
sudo apt-get purge -y --auto-remove exim4 "exim4-*"
sudo apt-get purge -y --auto-remove dphys-swapfile
sudo apt-get purge -y --auto-remove plymouth
sudo apt-get purge -y --auto-remove alsa-utils
さらに
/boot/cmdline.txt
を以下の通りに変更します。(バックアップファイルを忘れずに!!)
dwc_otg.lpm_enable=0 root=PARTUUID=dec2b11e-02 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
これで20秒程度で起動できるようになります。
これですべて終了です。PIをrebootするとプログラムが自動で立ち上がるようになります。
次に起動する時点で、PIに繋いだディスプレイやキーボードが必要なくなります。
14.PIの設定などを変えたい時
無事起動できた場合、その後の設定は必要ないと思いますが、PIは上記の設定でキーボードやマウスが使えません。また、シリアル通信も止めているためPI本体では修正が不可能です。SSH接続になりますが、この場合は、iPhoneのテザリングをONにしてコンピューター側でルーターをiPhoneに指定してから、ターミナルでPIとSSH接続します。
- iPhone の設定-->インターネット共有 でインターネット共有をONにします。
- PIのスイッチを入れ、iPhoneに接続されたことを確認します。
- メインコンピューターがMacの場合は 設定-->ネットワーク 出てきたダイアログボックスの左のWIFIを選択してネットワーク名称でiPhone の IDを選択します。
- 後はターミナルを立ち上げて ssh pi@XXX.local でPI Zeroにつながります
15.起動・終了の方法
- 導入当初はiPhone又はiPadのユーザー名・パスワードを変更する必要があります。初期設定値 ABiPhone 12345678 です。ユーザー名は、設定->一般->概要->名前。パスワードは、設定->インターネット共有->"Wi-Fi"のパスワード で変更します。
- iPhoneとPIを接続するときは、非常につながりにくくなる可能性があるので、なるべくiPhone側のBluetoothと位置情報サービスをOFFにしてください(OFFにしないと接続後もアプリの動作がもたつく可能性があります)。iPadに関しては特に問題ありません。
- 一番最初にアプリを使う前に、iPhone又はiPadの電源を落とし、再起動をして下さい。
- 終了処理はPI ZeroのOnOff Shimボタンを長押しします。3秒ほどで終了します。PI側のON OFFは必ずOn Offスイッチを利用してPI ZeroのLED消灯を確認して下さい。(②参照)プログラム動作中に電源等が遮断された場合、SDカードに書き込まれたOSが損傷を受ける可能性があります。
① 基本的な起動方法
iPhoneを先にテザリングON し(コントロールセンターの設定画面は接続できるまでそのままにする)、そのあとPIを立ち上げた場合、約45秒ほどで画像が表示されます。 iPhone側アプリ立ち上げは、PIとの接続前後どちらでもかまいません。
テザリングON:コントロールセンターを表示させ、Wi-Fiマーク長押しし、モバイル通信がオフの場合はオンにした後、インターネット共有ボタンを押します。
② PI側でアプリが稼働しているかどうかの確認方法
PI側では自動でiPhoneとの接続を確認した後、PI側アプリを起動します。以下のようにPIのLED(本体付属の緑のLED)点滅状態でアプリが立ち上がったことを確認することができます。
- PIスイッチON-->システムを読み込んでいるので20秒ほど激しく点滅する。
- Wi-Fiの接続トライ中-->起動後LEDは点灯したままになり、定期的に点滅する。
- Wi-Fi接続が確認された場合-->アプリを読み込んでいるため3秒ほど激しく点滅する
③ テザリング接続(インターネット共有)が上手くいかない場合など
このシステムはiPhoneまたはiPadのテザリング機能を使って通信しています。iOS13以降、特にiPhoneではテザリングがつながりにくい傾向にあります。通常PI起動から約20秒後「1件の接続」表示の後、一旦切れて再度「1件接続」が表示され、アプリ読み込み状態になって画像出力が始まります。通常2〜3回目の自動トライ接続で安定するようです。また、接続が確立するまでコントロールセンターはそのまま表示させておきます。
なかなか接続できない場合は、
- 機内モードを一度OFFにしてその後ONにしてみます。1分ほど様子を見て、「1件接続」が表示された後2〜3秒激しくLEDが点滅すれば正常に接続できています。つながらない場合は機内モードON・OFFを繰り返して見て下さい
- PIを再起動してみてください。
この段階で、たいてい接続できると思いますが、それでもなかなかつながらない場合は、
- iPhoneを再起動してみて下さい
- iPhoneの再起動を行っても改善されない場合、Bluetoothと位置情報サービスがONの場合は両方ともOFFにしてみてください
- 電波の状況により、アプリが止まる場合があります(Bluetoothと位置情報サービスONの場合が多い)が、その場合はアプリを再起動して下さい。
- 周囲に多数の携帯端末や、Wi-Fi中継点の存在する場所では、テザリング接続が失敗する場合があります。
- モバイルデータ通信のできない環境では使用できません。
一度接続が確立すれば、かなり安定して動作します。
④ iPhone またはiPadのユーザー名パスワードを元に戻したい場合
上記設定で自分の端末のユーザー名パスワードを変更した後、元に戻したい場合はPI側の設定を変更する必要があります。
- 自分のiPhoneまたはiPadのユーザー名とパスワードを設定する(ユーザー名変更:設定->一般->情報->名前、パスワード変更:インターネット共有->"Wi-Fi"のパスワード
- PI ZeroのSDカードを抜き取り、コンピューター(WindowsまたはMac)に読み込ませる。
- SDカード名称:bootの中のaID.txtを開き、1行目はユーザー名、2行目はパスワードを書き込み、保存する。(他のファイルを触るとPIが起動しなくなりますので充分に気をつけて、また余計なスペースなどは入れないでください)
- PIにSDカードを設定して完了
⑤ WIFIが障害物や遠距離のため、切れた場合
常にiPhoneのテザリングIPを確認しているため、通信圏内(iPhoneから35m以内)に入り最大20秒待つと再び動画が表示されます。
⑥ 動作中の注意
- AI機能をONにしている場合、iPhoneの場合コントロールセンターでの動画録画機能を使うと不安定になる場合がああります
- iPad pro(2020/4月以降最新機種)の場合はコントロールセンターでの動画録画機能が使用可能です。
- このアプリ自体録画機能を持っていますので、動画を録画する場合は、アプリの録画ボタンを使用して下さい。
- 動作中は本体がかなり熱くなりますので、長時間使用する場合は市販のファンなどで本体を冷却して使って下さい。
16.BOSONの温度キャリブレーションについて
現在手に入るBOSONは温度補償されておらず、SDKにも対応命令がないため、温度測定ができません。内部的には対象物の放射温度に反応し、0~65535(16bit整数値)の範囲でデジタル出力しています。この出力値は線形にはなっていないことと、BOSON本体の温度とレンズ焦点距離、BOSON自体の温度変化により、出力値が大きく変わることが測定により確認できました。ただし、以下の手順で近似式を想定し、補正を加えることで実際の対象物の温度が測定できます。算出された温度はあくまでも近似値であることにご注意下さい。
- 温度差があらかじめ分かっていて、大きく温度の異なる3つの物体を用意する
- BOSONの温度が安定してきた時点でこの3物体のRAW数値とBOSON本体の温度を記録する
- PIの設定ファイルを変更する
測定範囲内でなるべく温度差のある3つの物体を用意することになりますが、一番身近に用意できるのは、0°に近い氷水と100°付近の熱湯、それに36°前後の自分の顔です。
今回PIに組み込んだプログラム(PI_BOSON1X)は、ターミナル画面上でカメラに写った物質の最高、最低のRAW数値、及びBOSONの現在温度を表示できます。
一般的な室内で氷水と熱湯を写し、すぐにカメラの向きをを変えれば顔が最高温度として表示されます。この測定値をキャリブレーションファイルとして保存すれば、PI_BOSON1Xアプリは、測定値を読み込み-->近似式の係数を算出-->補正を加えて対象物の温度としてiPhoneへ送信といった動作を行います。手順は以下の通りで少々大変ですが、一回の設定でOKです。設定が終了すれば、BOSONが冷えている状態からスタートさせても、ほぼ近似温度を測定することが可能です。
- BOSONの画像がiPhoneで確認できる状態にして、パソコンをiPhoneテザリングアドレスに接続(すなわちiPhoneがルーターになる)
- iPhone側でThermal Cam for BOSONが立ち上がっていれば、一旦終了させる
- パソコン側からPI Zeroにsshで接続する(iPhoneにssh接続ができるアプリをインストールしていればパソコンは不要です。以降ssh接続した後のターミナル画面での操作となります。接続は「14.PI側の設定を変えたいとき」参照)
- すでに立ち上がっているPi側のBOSONプログラムを終了させる(PI側ではすでにPI_BOSON1Xがバックグラウンドで立ち上がっているので、そのプログラムを終了させる)
top と入力してPI_BOSON1Xのプロセス番号を調べCtrl+Cで topコマンドを終了させ
sudo kill xxxx でPI_BOSON1Xを終了させる(xxxxはプロセス番号)
- そのままBOSONの温度が安定するまで30分程度待つ
- できれば黒いコップ(使い捨てプラスチックコップに黒色の色を塗ればOK)に温水と(黒い容器に入った電気ポットでもOK)、氷をたくさん入れ温度の変化がないうように水を用意。
- あらかじめ顔とこの2つのコップを赤外線温度計(ホームセンターで1800円前後)で測定(顔については温度変化があるのでなるべくその場所を動かないように)
- 用意ができたらプログラムをスタート。最初に氷水と温水を測定。画像はアプリが起動していれば確認可能。
プログラムのスタートは ./boson です。
対象物から60cm程度程度離してカメラをセットするとこんな画面になります。
- すぐレンズの向きを変え顔を写す(10秒程度そのまま)。
- プログラムを終了させ、RAWをメモして、結果をファイルに書き込む
上のように5秒毎に最低最高のRAW数値とBOSON温度がターミナルに出力されますが、Maxの数値を確認することで顔のRAW値が確認できます。この例の場合4行目のMin(氷水),Max(熱湯)値及び5行目のMax(顔の温度)を採用。測定時のBOSON本体温度は42.2°となります。顔を測定する場合は、事前に背景が体温より低い温度であることを確認して下さい。BOSONの温度が安定するとTempの値は殆ど変化がなくなりますが、Tempの値に変化がないことに注意して下さい。測定範囲は-60℃〜+200℃前後のようです。
次にnano boson_temp.txt で数値を変更します。変更内容は以下の通りです。
mimTempD= 1.0 <---氷水の温度℃
mimTempR= 15616 <---氷水の上記RAW数値
midTempD= 35.5 <---顔の温度℃
midTempR= 21692 <---顔の上記RAW数値
maxTempD= 100.0 <---熱湯の温度℃
maxTempR= 40019 <---熱湯の上記RAW数値
nawTempD= 42.2 <---上記BOSONの温度℃
ファイルは数値のみ訂正して下さい。訂正が終わったら Ctrl+oで保存Ctrl+xでnano終了
- 再度プログラムを動かし(./boson)実際の温度との差があれば、Dの部分の温度(氷水、顔、熱湯)を微調整します。最終的にiPhone側のアプリを起動することで設定した温度が確認できます。
※BOSON50°、90°に関してはすでにキャリブレーション済みファイルを用意しています。boson_temp.50及びboson_temp.90 です。もし同じカメラの場合は拡張子の数値部分をtxtに変更して使って下さい。ただし、製品によりばらつきがあるので、温度が合わない場合にはキャリブレーションの必要があります)
以上