光センサーモジュール (GY‑2561)で光を測定‼(Arduino編)
こんにちは!
今回は、普通の光センサーよりも少しハイテクな光センサーを紹介したいと思います‼
モデルはGY‑2561という物になりますが、このセンサーはTSL2561というチップを内蔵しており、
赤外線と可視光線を区別して取得するため、人間の目が感じる明るさに近い数値を出してくれるそうです!
そのため、普通の人感センサーよりも、より思い通りの明るさで信号を与え、何かを光らしたり検知できたりすることが期待できます。
・「仕様」
チップ:TSL2561
動作電圧:3V~5V
検出範囲:0.1〜40000Lux
インターフェイス:I2C
温度範囲:-30〜80℃
価格相場:1000円前後
①「 部品準備」
・光センサーモジュール (GY‑2561)
電子工作ステーション 760円(送料無料)
※この部品のみはんだ付けが必要です。
尚、電子工作ステーションのはんだ付けオプションを付ければ、はんだ付けが不要になりますので、はんだこてが無い方はおすすめです。
・Arduino Uno R3
電子工作ステーション 1100円(送料無料)
※Arduino Nanoなど、なんでもOKです。
・ジャンパーワイヤー(オス・メス)(4本)
電子工作ステーション 100円+送料(500円以上で無料)
※ブレッドボードを使う場合は(オス・オス)
・ブレッドボード
(必要であれば)
②「回路」
回路は下記の様に、4線だけで簡単に接続が可能です。
(ブレッドボードを介さなくても大丈夫です。)
③「ライブラリー準備」
下記githubからTSL2561ライブラリーをダウンロードし、解凍してArduinoのライブラリーフォルダーに入れます‼
③「プログラム」
光を取得する簡単なプログラムです。
TSL2561ライブラリーが問題なく入っていれば、下記のコードをコピペするだけで取得できるようになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
#include <Wire.h> #include "TSL2561.h" TSL2561 tsl(TSL2561_ADDR_FLOAT); void setup(void) { Serial.begin(9600); if (tsl.begin()) { Serial.println("Found sensor"); } else { Serial.println("No sensor?"); while (1) ; } //より明るい/より暗い光の状況に適応するために、その場でゲインを変更できます。 //tsl.setGain(TSL2561_GAIN_0X); // set no gain (for bright situtations) tsl.setGain(TSL2561_GAIN_16X); // set 16x gain (for dim situations) //積分時間を変更すると、光を感知する時間が長くなります。タイムラインが長いと速度は遅くなりますが、非常に暗い状況では良好になります。 tsl.setTiming(TSL2561_INTEGRATIONTIME_13MS); // shortest integration time (bright light) //tsl.setTiming(TSL2561_INTEGRATIONTIME_101MS); // medium integration time (medium light) //tsl.setTiming(TSL2561_INTEGRATIONTIME_402MS); // longest integration time (dim light) } void loop(void) { uint16_t x = tsl.getLuminosity(TSL2561_VISIBLE); Serial.print(x, DEC); Serial.print("\t"); uint32_t lum = tsl.getFullLuminosity(); uint16_t ir, full; ir = lum >> 16; full = lum & 0xFFFF; Serial.print("IR: "); Serial.print(ir); Serial.print("\t\t"); Serial.print("Full: "); Serial.print(full); Serial.print("\t"); Serial.print("Visible: "); Serial.print(full - ir); Serial.println("\t"); delay(1000);//1秒後に取得 } |
④「結果」
接続に問題なければシリアルポートに下記の様に表示されます。
手をかざすとすぐに数値が反映され、数値の安定性も結構ありますね!
お値段も少し高いだけあって、精度は良い感じです‼