ArduinoUnoをBluetooth通信で遠隔Lチカしたい

#やりたいこと
今回はとある事情からArduinoとPCをBluetooth通信させる必要ができてしまったので、それの前段階としてLチカを行いたいと思います。
今回の主な内容としては
・BluetoothでArduinoとPCを接続
・PCから遠隔でLチカ
といった感じです。

#用意するもの
購入したものは
・Arduino Uno Rev3
・RN-42使用Bluetooth無線モジュール評価キット(秋月電子通商で購入可能)
・ピンヘッダ
・ジャンパ線
・ブレッドボード
・USBケーブル(A-B)
・9V電池
・バッテリースナップ
です。

用意したソフトウェアは
・ArduinoIDE(1.8.5)
・TeraTerm(4.97)
です。
これらのインストールについては詳しい記事がたくさんあるので、割愛させてもらいます。

環境としてはOSにWindows10 64bitを使っています。
またFTDIのUSBデバイスドライバがすでにインストールされています。(こちらのインストールについては割愛)

#準備
評価キットはそのままだとピンがないのでピンヘッダをはんだ付けして写真のようにします。
ピンヘッダをつけるのはJ1,J2と書いてあるところです。
![IMG_7531.jpg](https://qiita-image-store.s3.amazonaws.com/0/192311/8e8a34f3-58cf-380a-9619-85852bad6b63.jpeg)
[評価キットの説明](http://akizukidenshi.com/download/ds/akizuki/AE-RN-42_toritsuke.pdf)にもあるように、まっすぐ取り付けるとブレッドボードのピッチに合わないので、気を付けてください。

#Arduinoへの書き込み
ソースコード(スケッチ)は[このサイト](http://masanoriprog.blogspot.jp/2013/08/arduino-bluetooth-serial-led.html)を参考にして次のように書きました。
1番ピンをTXD,0番ピンをRXDとしてデータのやり取りを行っています。
ターミナルソフトウェア(今回はTera Term)で1を入力したら点灯、0を入力したら消灯するようにしています。
またそれぞれの入力に対して返答を行うようにしてあります。

```c:bt_led.ino
#include <SoftwareSerial.h>

#define tx 1
#define rx 0
#define led 13

//Bluetooth Serial
SoftwareSerial btSerial(rx,tx);

int mode = 0;

void setup() {
  //Initialize LED
  pinMode(led,OUTPUT);
  digitalWrite(led,LOW);
  
  //Initialize Bluetooth Serial baud rate
  btSerial.begin(115200);
}

void loop() {
  char c;

  //Store data
  if(btSerial.available()){
    c = btSerial.read();
  }

  //Change mode
  switch(c){
    case '0':
      btSerial.write("LED = disabled\n");
      mode = 0;
      break;
    case '1':
      btSerial.write("LED = enabled\n");
      mode = 1;
      break;
  }

  //Turn on or off LED
  switch(mode){
    case 0:
      digitalWrite(led,LOW);
      break;
    case 1:
      digitalWrite(led,HIGH);
      break;
  }
}
```
このソースコードをArduinoIDEでコンパイルし、USBケーブルを用いてArduinoUnoに書き込みます。

#Arduinoと評価キットの接続
配線は下の図のようになります。
![bt_led.jpg](https://qiita-image-store.s3.amazonaws.com/0/192311/d5508733-1ac4-c13e-edc2-e3f5b66b3af6.jpeg)
図の作成にはFritzing、[こちら](https://github.com/houtbrion/fritzing-parts/tree/master/RN-42-akizuki-eval-kit)のデータを使用させていただきました。

接続している部分は
・3.3Vと評価キットの3.3V
・GNDと評価キットのGND
・1番(TXD)と評価キットのRXD
・0番(RXD)と評価キットのTXD
・評価キットのCTSとRTS
となっています。
これでArduinoから評価キットへの電源供給、送受信が行えるようになってます。

#評価キットとPCの接続
Arduinoにバッテリースナップで電池を取り付け、評価キットの緑色LEDが点滅していることを確認します。
設定＞Bluetoothとその他のデバイス
からデバイスの追加を行い、「RNBT-oooo」となっているものを追加します。
(ooooは評価キットに表示されているMAC IDの下4桁)
これでArduinoとBluetoothを用いた通信を行うことができます。

#Tera Termの起動
Tera Termを起動します。
起動してシリアルを選択しポートを選びます。
![tera-1.JPG](https://qiita-image-store.s3.amazonaws.com/0/192311/34174024-a449-a0c8-7dc6-62e1c0734b25.jpeg)
ポートにいくつか候補がある場合は選んでから少し待ってみて、評価キットの緑色のLEDが点滅から点灯に変わったらOKです。変わらない時は別のポートを選んでみましょう。
接続出来たら、設定＞シリアルポートと選択し次のように設定します。
![tera-2.JPG](https://qiita-image-store.s3.amazonaws.com/0/192311/72f98c53-21de-b19a-6e70-5312b3d9b21b.jpeg)
設定が終わったらこれで準備は終了です。

#Lチカ
実際に入力を行います。
1,0と入力してみるとTera Term上では次のように表示され、ArduinoUno上のLEDを点灯、消灯することができました。
![tera-3.JPG](https://qiita-image-store.s3.amazonaws.com/0/192311/94e9f5f9-5c3c-faae-eebc-d4e74a7b18b3.jpeg)

![IMG_7532.jpg](https://qiita-image-store.s3.amazonaws.com/0/192311/bb841fdf-3f1f-bf4a-c8f8-5138cc7dc138.jpeg)

#終わりに
今回でとりあえずBluetooth通信でLチカするところまではできたので、これからはもっと複雑なことも行いたいと思います。