普段あまり使わないセンサーを使ってみようということでNefryBTで火炎センサーを動かしたメモです。
GROVE火炎センサを使えるようにプログラム
火炎センサーを買ったものの、しっかりした条件下調べていなかったのでやってみます。
今回、このようにイイ感じの火があったのでテストします。
Nefry DisplayとともにNefryBT、火炎センサーを用意します。
D2に装着します。プログラムはWikiを参考に書きます。
#include <Nefry.h> #include <NefryDisplay.h> void setup() { pinMode(D2, INPUT); NefryDisplay.begin(); NefryDisplay.print("Hello World!"); } void loop() { Serial.println(digitalRead(D2)); if(digitalRead(D2) == true){ Serial.println("ON"); NefryDisplay.print("ON"); } else { Serial.println("OFF"); NefryDisplay.print("OFF"); } Nefry.ndelay(1000); }
動かしてみる
では先ほどの火の前でやってみます。ONがデフォルトの状態で、火炎が反応するとOFFになります。
周辺の状況は間接照明がいくらか入ったアンビエントな空間で、完全に真っ暗という状況ではなく、十分に空間が見える状況です。つまりいろいろな光源がある状況です。
うまくいきました。火に向けるまでは、ONなので反応しておらず、火に向けるとOFFに反応しています。
感度ダイヤルによる変化
火炎センサーには感度を示すダイヤルがついています。
感度ダイヤルを右に回しきる状態でやってみます。
これですと、炎に対して単純に向けた際にONが続いて反応していません。ですが、ほんの少し左斜めに炎にセンサーを向けてやると反応します。右に回すと感度が弱くなるようです。
では次は逆に左に回しきってみましょう。
これですとほぼ同じ位置から炎に向けてますが、わざわざ炎に向けなくても反応します。感度が高いようですね。
ただ、感度調整は、このあと後述しますが、他の光源の影響を受ける可能性があり、場の状況に合わせて調整する必要がありそうです。
他の光源にも影響を受ける
ここまではうまくいく動画をお送りしましたが、他の光源にも影響を受けるので、結構扱いがデリケートです。
GROVE – 火炎センサは、波長760nm~1100 nmの炎や他の光源を感知します。YG1006搭載。
「波長760nm~1100 nm」ってなにということで、Wikipediaの可視光線を調べてみると、このセンサーではちょうど赤外線の端っこあたりから先が反応するようです。
ためしに、野外から強く光が差し込んでいる室内で試してみましょう。
まず、感度ダイヤルを右に回して感度が低い状況。
これだと、反応しません。「炎は反応するが直射日光には反応しない」という求めている状況が実現しています。
つづいて、感度ダイヤルを左に回して感度の高い状況。
はい、残念ながら、強い光源には反応してしまいました。
実際のところ、最初、撮影した空間でも、強いスポットライトが、結構な高さから差し込んでいる箇所では、感度の高くしていると反応してしまっていたので、炎と照明の光源は明確には区別されないように思えます。
現状踏まえての私が思うまとめです。
- 他の光源に負けないくらいの火の大きさと光量があると検知しやすい
- 太陽光のような強い光源がない薄暗い状況で火を検知したい場合は検知しやすい
- 逆に、太陽光のもとで、なにかの着火の反応といったものは検知しにくい
- 場に合わせた感度調整が重要のようだ
ということで火炎検知は判定をしくじると命にかかわるので、こういうデリケートさがあると使いにくいなーと印象だったものの、ひとまずNefry BTでつなげることが出来て良かったです。
それでは、よきNefryBT & 火炎センサー Lifeを!