RN4020を使ったIoTセンサのサンプル作成


RN4020

ここで紹介したmicrochip製のBLE module RN4020 を設定してみたので紹介する。

想定するのはマイコンで計測したデータをRN4020を通してスマートフォンに送信するシーン。

 

serviceとスクリプトの設定

まずrn4020をサーバーとしてサービスを設定する。

4桁のasciiコードを送る特性を作成する。

UUIDはランダムに決定した。

SF,1                                           //factory default
SS,00000001                         //set server service
SR,00000000         //set features
PZ                                             //clear service
//set private service UUID
PS,0000F7AE00001000800000805F9B34FB
//set private charactristic UUID
PC,0000C2AE00001000800000805F9B34FB,12,04
PC,0000A97600001000800000805F9B34FB,02,04

これで簡単なサービスが作成できる。
また、電源投入時に勝手にアドバタイズし、コネクションが絶たれた後も自動的にアドバタイズされたほうが便利なので、スクリプトを設定する。

WC     //script clear
WW   //write script

でスクリプト入力モードへ

@PW_ON
A
@DISCON
A
SR,01000000

と入力してESCでスクリプトモード終了しリブート。

R,1

この設定で勝手にアドバタイズが可能である。

 

deepsleepの設定

せっかくのlow energyなので省電力化を実現したい。

RN4020はbaurateを2400に設定したうえでwake_swピンをlowに落とすとdeep sleep modeで動作する。

このときの消費電力はdatasheetによると5uW程度と非常に小さい。(多分アドバタイズ間隔にもよる。)

[追記]

アドバタイズ間隔を4[s]程度にすると消費電流は1-3 [μA]ぐらい

 

 

マイコン側の設定

マイコン側からはUART経由で設定したサーバサービスの特性値を変更する。

マイコンはUARTのbaurateを2400へ設定し、標準入出力で例えば以下のようにする。


printf("SHW,000E,%x%x%x%xrn",buf[0],buf[1],buf[2],buf[3]); //bufは数字データの文字列

SHWはサービスの特性値を変更するコマンドである。

一定時間をきにマイコンで得たセンサデータを上記のコマンドで送信することで、スマートフォン経由で設定したサーバの特性値を確認することが可能。

 

これで簡単にIoTできます。

 

The following two tabs change content below.
miyamoto
IoT/ DIY / music / 日本語ラップ
miyamoto

About miyamoto

IoT/ DIY / music / 日本語ラップ

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Post Navigation