目的
BLEペリフェラルとして,以下のときにBLEセントラルに通知するデバイスを作る.
- ドアが閉まっていること
- 部屋の中が暗いこと(≒シーリングライトが消灯)
ただし,通知するのはドアが閉まっているときのみ
この記事では,上記2.のほうの部屋の明暗判定について記載する.
- 事前にSoftDevice書込み等,Arduino IDEで作成したArduinoスケッチが書込みできる環境の整備:
☞STM32 Nucleoを用いたnRF51向けのArduino開発環境をつくる - GPIOやADC,シリアルインターフェースの機能確認:
☞Arduino環境でAE-TYBLE16のピンファンクションを確かめる - BLEの接続/非接続の確認:
☞Arduino環境でAE-TYBLE16のBLEを始める(その1:接続/非接続) - BLE経由のLチカ確認:
☞Arduino環境でAE-TYBLE16のBLEを始める(その2:BLE経由のLチカ) - 照度センサー明暗判定原理試作(本記事)
- リードスイッチドア開閉判定原理試作:
☞Arduino環境でAE-TYBLE16のBLEペリフェラルデバイスを作る~ドア開閉判定編~
結論
フォトトランジスターNJL7302L-F3と1[kΩ]の抵抗で構成した回路で,A/D変換を利用して部屋の明暗判定ができることを確認した.
BLEは直接関係ないけど、照度センサーこれでヨシ! pic.twitter.com/M5y0JbUHGn
— AKETO, Tomu (@so2akt) 2023年1月22日
本記事で紹介するおもな環境は下表のとおり:
ハードウェア名称 | 規格 | 製造会社 | 備考 |
---|---|---|---|
BLEモジュール | AE-TYBLE16 | 秋月電子通商 | 購入時1,280JPY 太陽誘電製EYSGJNAWY-WX(SoCはNordic Semiconductor製nRF51822) |
デバッガー | NUCLEO-L053R8(STSW-LINK009 2.0.2) | STMicroelectronics | タダ 201X年にSTの営業が会社に来たときのもの,ST-Link/V2-1として使用する |
BLEモジュール用ソケット | 2227P-16G-03 | 寬德 | 購入時100JPY ハンダ不要でブレッドボード挿入に使える |
ブレッドボード | BB-801 | 万捷电子 | ブレッドボードなら何でもよい |
ジャンパーケーブル(オス・メス) | DG01032-0024-RD-015など | 協威亞洲 | 間違えないように色をわけたほうがよい ※C-17228のほうが安い |
USBケーブル(mini B) | LDUC1011-1.5m | EverU Electronics | 充電専用でなければ何でもよい |
黄緑色LED | OSNG5113A,2.0[V],20[mA] | OptoSupply | 購入時500JPY |
フォトトランジスター | NJL7302L-F3 | 日清紡マイクロデバイス(旧:新日本無線) | 購入時45JPY |
照度検出用抵抗 | CF25J1KB,1[kΩ],1/4[W] | ||
ホストPC | マザーボードB450 AORUS M,CPU:Ryzen 7 3700X,メモリー:32[GB] | - | |
IDE | Arduino IDE 1.8.19 | ARDUINO | |
nRF5ライブラリー | Nordic Semiconductor nRF5 Boardsパッケージ | Sandeep Mistry | |
BLEライブラリー | BLEPeripheralパッケージ 0.4.0 | Sandeep Mistry | |
Nordic SoftDevice | S130 2.0.1 | Nordic Semiconductor | BLEプロトコルスタック |
ホストPCのOS | Windows 10 Pro 64ビット版 | Microsoft | 英語版(インターナショナル) |
また,nRF5ライブラリーの設定は以下のとおり:
項目名 | 設定値 | 備考 |
---|---|---|
ボード | Generic nRF51 | |
Chip | 32kB RAM, 256kB flash (xxac) | データシートよりEYSGJNZWYは32kB |
SoftDevice | S130 | |
Low Frequency | RC Oscillator | データシートよりEYSGJNZWYは水晶振動子が未実装で内蔵RC発振回路で代替指示 |
ポート | COMn | 環境による |
Programmer | ST-Link V2-1 (ST-Link On-Board) | ☞以前の私の記事参照 |
詳細
ハードウェア
照度センサーを使用して,暗くなったらLEDを点灯させる,明るくなったらLEDを消灯させる動作を確認する.
照度センサーとして,入手性がよい日清紡マイクロデバイス製フォトトランジスターNJL7302L-F3を使用した*1.この部品は,明るさ[lux]に応じた電流が流れ,明るさに従ってその電流(光電流)が大きくなる.
設計においては,最大の明るさを決めて,そのときの光電流値を抵抗に流したときの電圧がA/D変換入力値の許容範囲内(≒ICの電源電圧)に収まっていればよいと考えられる.
明るさの目安のひとつは,以下のとおりで,今回はオフィス内の室内を想定しているため,1,000[lux]以内とする.また,データシート上の光電流と明るさのグラフにおいても,1,000[lux]までの記載となっている.
照度[lux] | 明るさの目安 |
---|---|
>100,000 | 雪山・真夏の海岸 |
100,000 | 晴天昼太陽光 |
65,000 | 晴天午前10時太陽光 |
25,000 | 曇天午前10時太陽光 |
2,000 | 曇天日出1時間後太陽光 |
1,000 | 晴天日入1時間前太陽光,パチンコ店内 |
700 | 百貨店売場 |
500 | 蛍光灯照明事務所 |
300 | 日出入時,30[W]蛍光灯2灯使用8畳間 |
200 | 夜のアーケード |
100 | 街灯下 |
15 | ライター(30[cm]),ろうそく(20[cm]) |
1 | 月明かり |
光電流と明るさのグラフより,明るいときを1,000[lux],暗いときを5[lux]とすると,下表のとおりの電流値が読み取れる*2.
部屋の状態 | 明るさ[lux] | 電流[μA] |
---|---|---|
明るい | 1,000 | 2,000 |
暗い | 5 | 10 |
また,これらの電流値より,明るいときの2,000[μA]のときに,その電流を抵抗に流して両端に生じる電圧が3.3[V](≒A/D変換入力値の許容範囲内)に収まっていればよいため,おおよそ1~1.5[kΩ]が適切となる.実在する抵抗値と合わせると,以下のとおりである.今回は手元にあった1[kΩ]を選んだ.
抵抗値[kΩ] | 端子間電圧[V] | 備考 |
---|---|---|
1.0 | 2.0 | E12,E24系列 |
1.1 | 2.2 | E24系列 |
1.2 | 2.4 | E12,E24系列 |
1.3 | 2.6 | E24系列 |
1.5 | 3.0 | E12,E24系列 |
1.6 | 3.2 | E24系列 |
最終的に,照度センサー部の回路は以下のとおりとして,AE-TYBLE16との結線は以下の写真のとおりとした.
結線写真 | 結線図 |
---|---|
TBD |
ソフトウェア
Arduinoプログラムは以下のとおりで,本当にシンプルな構成としている(上記,結線写真も参照のこと).
void setup() { Serial.begin(115200); pinMode(5, OUTPUT); /* DIP9(P0.05) */ pinMode(4, INPUT); /* DIP11(P0.04,AIN5) */ analogReference(AR_DEFAULT); /* 0~VDD[V]の範囲 */ analogReadResolution(10); /* 分解能10ビット(0~1023) */ } void loop() { int adval = analogRead(4); digitalWrite(5, (20 >= adval) ? HIGH : LOW); /* 20は本当にテキトーな値 */ Serial.println(adval); delay(500); /* 500もテキトーな値 */ }
私の部屋では,adval
の値は以下のとおりとなった
adval の概略値 |
シーリングライトの状態 |
---|---|
150 | 全点灯(≒白色・電球色両方) |
80 | 白色または電球色のみ |
10 | 全消灯 |
なお,UARTのシリアル出力のためには,%USERPROFILE%\AppData\Local\Arduino15\packages\sandeepmistry\hardware\nRF5\0.7.0\variants\Generic\variant.h
の以下の記載を,使用したい任意のピンに割り付けるように設定する必要がある.
/* * Serial interfaces */ // Serial #define PIN_SERIAL_RX (0) // P0.00 #define PIN_SERIAL_TX (1) // P0.01
データシート等
参考文献
- 国野亘ほか:超特急Web接続!ESPマイコン・プログラム全集[CD-ROM付き],pp.60-63,CQ出版,2019
参考サイト
リンク先はすべて2023/01/22現在のもの