http://www.microchip.com/wwwproducts/en/RN4020
http://microchipdeveloper.com/ble:rn4020-overview
■システム構成
BLE、Bluetoothに共通して言えることですが、通信を行う際、データを送る側である”マスター(親機)”とデータを受ける側である”スレーブ(子機)”に各モジュールの役割を決める必要があります。
・スレーブ(子機)
RN4020では子機は[SR,32000000]コマンドで設定することができます。
・マスター(親機)
RN4020では親機の設定は [SR,92000000]コマンドで設定することができます。
親機設定後は[F]コマンドでBLE子機を探索し、接続したい子機が見つかったら、[E,0,子機ID]で接続することができます。
接続すると”Connected”という返答がきて、マスターとスレーブ共に10pin(PIO1)がHIGHにアサインされます。(通常、インジケータのLEDを接続する端子にしておくと良い)
接続後は、親機に送信したシリアル通信の内容がそのまま子機へフォワードされるようになります。
■回路図
・マスターは簡単に下記のような回路にしました。
USBシリアル変換とPCをUSBで接続し、シリアルコンソール(TeraTermやCoolTermなど)を使用してコマンドを適宜送信します。
・スレーブは下記のような回路図にしました。
秋月で発売されている
Arduino互換機を使ってシリアルで受信した内容によって、フルカラーLEDの色を変えたり止めたりする&&スイッチが押されたら押されたとシリアル送信するような仕組みにしました。
Arduino互換機の中に書いたコードは下記です。
16 | pinMode(RedLED,OUTPUT); |
17 | pinMode(GreenLED,OUTPUT); |
18 | pinMode(BlueLED,OUTPUT); |
28 | while(Serial.available()){ |
29 | recvChar = Serial.read(); |
32 | Serial.println("1 OK"); |
36 | Serial.println("2 OK"); |
44 | if(digitalRead(Button) == 1){ |
45 | Serial.println("Button Pusshed!"); |
55 | analogWrite(RedLED,255 - (RGB*2)); |
56 | analogWrite(GreenLED,0); |
57 | analogWrite(BlueLED,RGB*2); |
58 | }else if(120 < RGB && RGB <= 240){ |
60 | analogWrite(GreenLED,((RGB-120)*2)); |
61 | analogWrite(BlueLED,(255 - ((RGB-120)*2))); |
62 | }else if(240 < RGB && RGB <= 360){ |
63 | analogWrite(RedLED,((RGB-240)*2)); |
64 | analogWrite(GreenLED,(255 - ((RGB-240)*2))); |
65 | analogWrite(BlueLED,0); |
78 | analogWrite(GreenLED,0); |
79 | analogWrite(BlueLED,0); |
実験のため実際にブレットボードで組んでいる様子が下記になります。
コメント
コメントを投稿