はじめに
このガイドでは、micro: bitを使って光の照度を測定する方法を学びます。ハードウェアを追加することなく、micro :bitのディスプレイLEDを使って照度を測定することができます。しかし、この機能は、JavaScriptブロックエディタを使用した場合にのみ利用できます
しかし、micro: bitに抵抗とフォトレジスターを取り付け、micro: bitのアナログ入力で照度を測定することができます。
これは、一度やり方を覚えてしまえば、他のアナログセンサーをマイクロビットに取り付けて測定することができるという利点があります。
必要なパーツ 以下のパーツが必要になります。
- 1x micro:bit
- 1x マイクロB USBケーブル
- 1x micro: bit ブレイクアウト (ヘッダー付き)
- 1x ブレッドボード
- 5x ジャンパー・ワイヤー
- 1xフォトセンサー
フォトレジスターについて
フォトセルは、光を検知するためのセンサーです。小型で安価、低消費電力、使い勝手がよく、消耗しないのが特徴です。そのため、玩具やガジェット、家電製品などによく使われています。Cd Sセル(硫化カドミウムでできている)、LDR(Light-Dependent Resistors)、フォトレジスターなどと呼ばれることもある。
フォトセルは基本的に、表面に光が当たっているかどうかで抵抗値(単位はΩ)が変化する抵抗器である。
暗いところでは、フォトレジスタの抵抗値は数MΩにもなる。
暗いところでは、フォトレジスターの抵抗値は数MΩにもなるが、明るいところでは、数百Ωにもなる。
フォトセルは非常に低コストで、サイズや仕様も豊富で入手しやすいが、非常に精度が悪い。
同じロットのフォトセルセンサーであっても、それぞれのフォトセルセンサーは他のフォトセルセンサーとは少しずつ異なる動作をします。そのばらつきは、50%以上になることもあります。そのため、ルクスやミリカンデラといった単位で正確な光量を測ろうとする場合には使用すべきではありません。むしろ、基本的な光の変化を知ることができる程度と考えたほうがいいでしょう。
このグラフは、照度を変えたときのセンサーの抵抗値の目安です。
今回の学習では、以下のような光センサーモジュールを使用します。
特徴はこちらで確認できます。
- 感光性抵抗センサーを使う
- コンパレータの出力信号がきれいで、波形がよく、駆動能力があり、15mA以上であること。
- 光検出の明るさを調整するための調整用ポテンショメータ付き
- 動作電圧:3.3V~5V
- 出力形式は DOデジタルスイッチング出力(0と1)とAOアナログ電圧出力
- 取り付けが容易な固定ボルト穴
- プリント基板サイズ:3.2cm×1.4cm
- 広い電圧対応のLM393コンパレータを使用
Connection
<class=”headline”>
Software
ソフトウェア光のレベルを測定するためにどの言語を使用しても、プログラムは同じ基本パターンに従います。
2番ピンで電圧を読み取り、0~9の数値になるようにスケーリングして、micro: bitのLEDディスプレイに表示します。
JavaScriptブロックコード
JavaScript Blocks Codeのエディタは、以下のこのページに直接埋め込まれています。
エディタから、右下のダウンロードボタンをクリックして、ダウンロードしたファイルをマイクロビットにコピーすることができます。また、ここをクリックすると、別のブラウザタブでエディタを開くことができます。
アナログリードピンブロックの結果は、0から1023までの数値になります(0は0V、1023は3V)。
この値は、変数readに格納されます。その後、50で割って1桁の数字になるようにスケーリングされます。
この50という数字を変えることで、対象とする光の範囲に応じて、光の読み取り感度を高くしたり低くしたりすることができます。例えば、室内の光量は晴れた日の屋外よりもかなり低い。
MicroPython
Micro Pythonバージョンのコードを実行するには、ここでオンラインPythonエディタを開き、以下のコードをエディタウィンドウに貼り付けます。
- from microbit import *
-
- while True:
- reading = pin0.read_analog()
- number = int(reading / 50)
- display.show(str(number))
ディスプレイに一桁しか表示されないように、int関数を使って数値を整数部(小数点以下)に変換しています。
次に、整数値をshowが期待する文字列に変換するために、showメソッド内でstr関数を使用する必要があります