2017.05.13スマホからBluetooth経由でサーボモータを無線制御してみます。Androidアプリは自作、BluetoothLE(以下BLE)経由で情報を送信し、Arduinoで受けてサーボモータをコントロールしてます。今回はArduino側スケッチ(ソース)作成の内容をメインに紹介したいと思います。スマホ側のアプリ作成方法はこちらで紹介しています。・スマホ側アプリ作成スマホ側をセントラル、Arduino(サーボモータ)側をペリフェラルとしています。使い廻しの動画ですみません。準備するものはArduino101、サーボモータ、スマホとPC(開発環境)です。スマホはBLEに対応している必要があります。Arduinoとサーボモータは直付け。スマホからサーボモータ位置情報を送信して制御、Arduino側のループ処理時間を受信してスマホに表示しています。以下からArduino側スケッチの中身を紹介します。この記事の最後にスケッチ全体を掲載しています。servo;▲BLE通信クラスとサーボモータクラスのインスタンス化をします。オブジェクト名は上記のようにしています。今回、「characteristic」はサーボモータの角度情報(受信用)とループ処理時間(送信用)の2つ準備しました。servoCharacteristicWritten);▲今回、スマホからの受信はイベントハンドラを使って処理します。引数に呼び出される関数名を入れておきます。servo.attach(9);▲サーボモータの制御信号は9番pinを使用します。sendBLE();}▲メインループ処理では、ループの処理時間を計測してBLE送信用の関数を呼び出しているだけです。bufSize);}▲BLE送信部分です。計測したループ処理時間を周波数にして、文字列に変換してます。BLE送信部は最後の一行のみです。floatやint型でもよかったのですが、文字列送信(char型)を試してみたかったのでこのような少し面倒な形になってます。ここで送信した情報をスマホ画面で表示しています。1;}▲BLE受信部分です。イベントハンドラを使用。スマホから受信したデータでサーボモータを制御しています。今回サーボモータの制御はライブラリを使用しています。あとデータの受信に合わせてオンボードのLEDをOn/Offしています。計算式の部分は使用するサーボモータに合わせて調整が必要かと思います。(大体こんなものだと思いますが・・。)ライブラリを使用せずサーボモータを制御する方法はこちらで紹介してます。サーボモータについても少し触れています。・Arduinoからサーボモータの制御Arduino側のスケッチ概要はこんなところです。ライブラリを使用すれば割と簡単にBLE通信を試すことができると思います。23:15こんなにわかりやすく説明してくれてありがとうございます。これからも頑張ってください。19:47匿名希望さん、こんにちは。残念ながら「UNO」のみではBluetooth通信はできません。本稿で紹介した「101」ではBluetooth内蔵してるためその前提でのソースとなります。話が変わりますが少し前(2017/9)にintelがcurieの生産終了を発表したようで、もうすでに「101」を入手するのは困難かもしれません。「UNO」+「Bluetoothモジュール」等であれば開発が可能なので今から検討するのであればそちらをおすすめします。BLE端末を使用して実験してみようと思います。ご教授ありがとうございました。コメントをキャンセルメールアドレスが公開されることはありません。