【RN4020編】ESP32とRN4020の通信準備

⑴MacOSでESP-IDF開発環境を整える

⑵RN4020をESP32と通信させる準備(イマココ!)

⑶ESP32とRN4020をBLEで通信させる

⑷ESP32からIFTTTを使ってLINEにメッセージを送る

 

「ヨメガンバッテルヨ!」

RN4020の準備編です。

 

トラ技Jrで紹介している専用回路は作るのが面倒なので、

とりあえずシステムの構成を試してみたい時にオススメの方法。

 

RN4020は秋月のボードに乗ったものを買ってきます。(下記URL)

RN4020@秋月

 

PCとシリアル通信で色々設定するので、USBシリアル変換モジュールも買っておきます。(下記URL)

USBシリアル変換モジュール@秋月

 

ブレッドボードで接続していきます。

接続は下記のようにしてください。

写真も載せておきます。

 

 

 

 

【RN4020の役割】

RN4020はボタンを押されたらそれをトリガーとしてBLE通信を開始することを目的としています。

また、ボタンを押された時に、”旦那or嫁”を判別するためのスライドスイッチの値を読み取ります。

これらの簡単なタスクはマイコンで制御しなくてもRN4020のスクリプト機能を使用することで実現可能です。

 

■RN4020をスクリプトだけで動かす
RN4020には、デバイス内のROM領域ににちょっとしたプログラムを書き込んでおけるようになっています。
これをRN4020ではスクリプト機能と呼んでいて、スクリプトは上から順に実行されていきます。
複雑な演算はできませんが、以下に記述する単純な機能が使えるので、
その範囲でできることであれば、スクリプトを使用した方がMCUも必要なくなるのでシステム構成を簡単にすることができます。

 

◉スクリプトで出来ること
①イベントの監視。
スクリプトはイベントをトリガーとして動作を開始します。
対応しているイベントは以下の11種類です。
②コメントアウト
スクリプト内にコメントを記入することができます。
③変数が使える
変数が2つ使用できます。変数名が決まっているので使用するときは合わせるように。
$VAR1、$VAR2という名前です。
変数には値を入れたり、ポートで読みだした値を代入したりできます。
ポートで読みだした数値を代入するときは、下記のような書き方をします。
$VAR1 = @I,1  ←AIO1(hogehoge pin)から読んだ値を代入
⑤変数のレンジを指定できる
変数は<>(大なり小なり)を使用して、レンジを決めることができます。
また、レンジの条件は&&と||でつなげることができます。
例えば、$VAR1 > “0050” && $VAR1 < “0120”とかくと、
0x0050~0x0120の範囲内に$VAR1の値がなければ、$VAR1に関するスクリプトは実行されないようになっています。
⑥変数をASCIIコマンド内で使用できる
例えば以下のような使い方が可能です。
SHW,0019,$VAR1

 

◉スクリプトの書き方
①やりたいことがスクリプトで実現できるか考える
嫁頑張ってるアピール機器を例にとります。
やりたいことを書き出すと以下になります。
・ボタンが押されたらESP32に押されたことを伝えたい(ピン割込みからのBLE探索、接続開始)
・ボタンが押されたときに、ボタンを押したのが嫁なのか旦那なのか判断したい(GPIOピンの読み出しと判別)
・ボタンが押されていないときはなにもしない(BLE接続解除)
上で書いた「スクリプトでできること」で十分実現可能な単純なシステムなので、スクリプトで書いていきます。

①イベントを選ぶ
使いたいイベントを選びます。
嫁頑張ってるアピールの場合、使うイベントは下記になります。
_@PIOH : PIO4( ピン13) の入力がHigh へ変化—ボタンが押された割り込みとして使用します
_@CONN : 接続完了—ボタンが押されたらESP32へ接続を開始します
_@DISCON : 切断完了—ESPへ情報を送り終わったら接続を切断し、待機モードに入ります
_@PW_ON : 電源ON—

②テキストファイルにスクリプトを書き出す。
上記を踏まえて、今回嫁頑張ってるアピールボタンに書いたスクリプトを下記に載せます。

スクリプトができたら、RN4020のUART経由でRN4020の設定と、実際にスクリプトを書き込む作業に移ります。

 

RN4020のスクリプトは以下です。

/**RN4020 CMD**/
/*
 
F  --- Search ESP
find ESP
X  --- Stop Search

SR,81000000

WC
WW
 
@PIOH
|O,01,05
E,0,240AC4049E4A
@CONN
$VAR1=|I,02
CUWV,FF01,$VAR1
SM,1,00300000
@TMR1
K
@DISCON
|O,01,00

(ESC)

R,1

*/
/**RN4020 CMD**/

◉コマンド操作例
・RN4020に好きな名前を付けます。
>>SN,HOGEHOGE0
・HOGEHOGE0の機能を設定する
今回、RN4020はESP32へ接続しに行く側です。つまり役割としてはセントラルということになります。
また、今回MCUなしのスクリプトでRN4020単体動作をさせるので電源ON後はスクリプトが自動的に起動するようにしておくべきです。
デバッグのため、スクリプト実行中もUART経由でコマンドが流れてくるようにしましょう。
>>SR、0x81000000  (Centralの0x80000000 + Run Script After Power Onの0x01000000を足して入力)
・スクリプトを書き込む
>>WC (一応初めにスクリプトをクリアする)
>>WW (スクリプトの書き込み開始)
>>上記で書いたすくリプとを書き込み
>>ESCキーを押す
>>LW (スクリプトを全文表示して、間違いがないか確認する)
・再起動してASCIIコマンドを反映させる
>>R,1 (再起動コマンド)
ボタンを押して、動作確認しましょう。

 

 

コメントを残す

メールアドレスが公開されることはありません。