ついにセンサー情報をBLEで飛ばし、無線化しますよ~
動作結果イメージ
今回は、こんな風にUVインデックスが出てくるようにしたいですね。

ハードウェア
使用するLeafonyのリーフが1枚、追加になります。

AX018 29pin header
今回追加

AC02 BLE Sugar

Al01 4-Sensors

AP01 AVR MCU

AZ01 USB

AV01 CR2032
AZ01 USBは、ソフトウェア書き込み時のみ使用し、動作時には外します。AV01 CR2032は前回同様、ねじ止めとして使用します。
leafの積み重ね方
重ね方は、こんな感じです。
ソフトウェア書き込み時 | ソフトウェア書き込み後 |
---|---|
上から順に 29pin header, USB, AVR MCU, BLE Sugar, CR2032の順につなげてねじ止めします。 | 上から順に 29pin header, 4-Sensors, AVR MCU, BLE Sugar, CR2032の順につなげてねじ止めします。 |
書き込み時に4-Sensorsのリーフを抜いた理由としては付属のネジだと物理的に長さが足りなかったからです。なお、今回、センサーからのデータを取得するのに29pin headerのリーフを使用しました。
このAX018にした理由としては
- 3.3V出力ピンがあること
- ピンヘッダーがすでにあるので、リーフに追加で半田しないで使用できること
というメリットがあったからです。
もともとピンヘッダーが付属しているGrove&5Vのリーフを考えていて、高さも取らないし丁度いいかーと考えていたのですが、改めて仕様書みたとき”5V”出力じゃん”というのに気づきまして今回は3.3V出力ピンがあるAX018になりました…
さらにピンヘッダーがすでにあるので、リーフに追加で半田しないで使用できること。これは大きいです。同じく29pin のリーフだとAX02 29 pinもあるのですが、こちらはセンサからの線を直接半田することになるので、ほかのセンサーや実験に使用しづらくなるためAX018にしました。
ヘッダー分の高さを取らないのでいいのですが、ぶっちゃけきれいに半田を取る自信がなく。。。

ソフトウェア
前回、Leafonyを動かしてみようで使用したソフトウェアをベースに実装していきます。
まず、記事 # UVをセンサで計測してみよう ~センサを実際に動かしてみる~で実装したプログラムから蛍光ペンで示した箇所の処理をベースのプロジェクトに追加します。
Arduino側のプログラム動作手順概要:
(以下引用) >
- 初期設定
- PCとのHardwareSerial通信を開始
- センサのイネーブルピンにHigh出力
- 1secのタイマを開始
- タイムアウト時にセンサの出力ピンからアナログ値を取得
- 取得した値を電圧値に変換
- 電圧値からUVインデックス値に変換してシリアルで表示
>
追加した箇所は、こうなります。
変更箇所 | ➡変更後 |
---|---|
センサのイネーブルピンにHigh出力 | setupPort() 関数内に追加 |
・センサの出力ピンからアナログ値を取得 ・取得した値を電圧値に変換 ・電圧値からUVインデックス値に変換 | loopSensor() 関数内に追加 |
これで定期的にUVインデックス値を求めることができるようになりました。(注) 基本的には上記の処理をベースのプロジェクトに追加すればよいのですが、以下の点は修正が必要です。
また、以下の設定変更も必要です。
- アナログ値を電圧値に変換する際のリファレンス電圧を5Vから3.3Vにする
- センサーとの接続ピンをベースのプログラムで使用していないピンに変更する
ピン変更箇所 | ➡ピン変更後 |
---|---|
センサ値の入力ピン A0 | A3 |
センサへのイネーブル出力ピン D7 | D5 |
UVインデックスの定期無線送信設定
最後に定期的に取得したUVインデックスを無線で送信できるようにします。
ベースのソースコードを読むとbt_sensData() 関数内において無線で送信するデータを設定しているようです。そこで、そのうちもともと照度データを設定している箇所をUVインデックス値に差し替えします。
合わせて小数点以下の値も表示したいのでdstorfの引数の値も変更します。

これでソフトウェアの実装は完了です。
今までに作成したコードのコピペと少ない修正で無線化のプログラムができました!!
動作結果
UVをセンサで計測してみよう ~センサを実際に動かしてみる~のときと同じようにUV LEDネイルライトで実験してみました。動作するかな。。。

照度の欄にUVインデックス値が表示されていますね!!
無事無線化できました!!

次は組み立てたLeafonyを手ごろなケースに入れたいと思います! ケースに入れればこれで準備編も終了です!実計測までもう少しです!!
コメント
この記事へのコメントの受付は締め切りました。