前回は赤外線リモコン操作でモーターを動かすように出来たが、やっぱり今時はIoTがはやりなのでスマホとかで操作できる方が良いよなと思い、BlueTooth通信を利用したリモートコントロールのシステムを勉強がてら導入してみることにした。
以前買ったロボットの部品にBluetooth通信用基板を使用していたのでそれから借用し、Arduino側のシリアルポートと接続。
ロボットの操作ではスマホを使用していたが、完成されたプログラムからどうやって通信しているのかとか具体的な解説もコメントも無かったので全く読み取れなかった。
やっぱりいろいろ試すには単体部品の状態から一つずつやらないと理解が深まらないわ。
ArduinoとBluetooth基盤のハード配線が済めば、あとはスマホ側でBluetoothでBluetooth基盤のデバイス名を選択して通信開始。
スマホ側からデータを送ってPC側のモニタでちゃんと受信できるか確認。
おお、シリアルプリントで設定した文字が返ってきた。
スマホ側のアプリは『Arduino Bluetooth』という無料アプリを利用。
当初は汎用性がありそうな『Bluetooth Terminal』というアプリで試していたが、コマンドを入力してデーターを送るだけの物だったので使い勝手が悪く、見た目的にも赤外リモコンと変わり映えが無かった。そのため、前述の『Arduino Bluetooth』の方がゲームコントローラーのようなインターフェイスで使えるようなシステムがあったり、同じようにTerminalのようにコマンド入力したり出来そうだったため、こちらのアプリをメインで使ってみることにした。アプリケーション開発までは到底無理だしね。
各ボタンに任意の値を割り当ててその情報をBluetooth接続しているArduinoに送るという仕組みだ。
受信された値にArduinoの動きを割り当てたら良いだけなので、リモコン操作のプログラムをちょっと変えるだけで仕様変更できそう。
ボタンを押して信号の送信が出来たらスマホ側のバイブレーションが振動するのでコントローラーとしては優秀な使用のようだ。
中にはコントローラーも自作する人もいるが、一先ずはスマホで色々操作が出来ればいいかな。
入力部分を無線で出来るので、何か機器の試験的な動作には便利かもしれない。
余計な配線をしなくて済むしね。
そしてお約束の『Lチカ』。スマホ側の↑ボタンに0の数値、↓ボタンに1の数値を割り当てて1の入力を受け付けたらLED点灯、0の入力を受けたらLED消灯。
備忘録。
スケッチ(プログラム)はコンパイルするものの書き込みにえらい時間がかかり、最終的に、『Programmer is not rsepoing』というエラーが発生して、どうにもいかない状況に陥った。どうやら書き込みにはいっているが返事が無いというような状況の様で、1/10、2/10・・・と10/10になって同エラーを発生。
10回トライしてだめだ!というような様子。
結論から言うと、Bluetoothの基盤が接続されているとArduino側と何かしらの通信をやっているようで、そこに書き込み操作をすると応答が出来ない状況に陥るようだ。
結局Bluetoothの基盤の接続を外し、Arduinoのリセットボタンを押すことで書き込みを無事完了することが出来た。
プログラムコードを使いこなすことも重要なのだが、こういったエラーに対応できるトラブルシューティングが結構大変なんだなぁ。結構くじけそうになるわ。
WiFi経由からアクセス!なんてのも今後使ってみるにはよさそう。
データーを収集して家庭菜園の自動水やり器なんてのは定番DIYらしい。
Bluetooth通信についてはこちらのサイトを参考にさせてもらいました。