ロボット工学では、正確な制御のためにサーボモーターを使用するのが一般的です。ここでは、このチュートリアルで、Bluetooth接続を介してArduinoUNOとAndroidデバイスでサーボモーターをワイヤレスで使用する方法を紹介します。すでにArduinoでサーボを制御していますが、今回はArduinoとBluetoothを使用してサーボモーターを制御しています。
必要な材料
- Arduino UNO
- HC-05またはHC-06Bluetoothモジュール
- サーボモーター
- PlaystoreのRoboremoアプリ
- ブレッドボード
- 接続線
HC-06Bluetoothモジュール
Bluetoothは、次の2つのモードで動作できます。
- コマンドモード
- 動作モード
では コマンドモード 我々はBluetooth信号の名前のようなBluetoothのプロパティを設定することができるようになります、そのパスワード、オペレーティングボーレートなどザ・ 動作モードは、 私たちはPICマイクロコントローラとの間でデータを送受信することができるようになりますものですおよびBluetoothモジュール。したがって、このチュートリアルでは、動作モードのみを試してみます。コマンドモードはデフォルト設定のままになります。デバイス名はHC-05(私はHC-06を使用しています)で、パスワードは0000または1234で、最も重要なのは、すべてのBluetoothモジュールのデフォルトのボーレートが9600です。
モジュールは5V電源で動作し、信号ピンは3.3Vで動作するため、3.3Vレギュレータがモジュール自体に存在します。したがって、それについて心配する必要はありません。6つのピンのうち、4つだけが動作モードで使用されます。ピン接続表を以下に示します。
S.No | HC-05 / HC-06のピン | MCUのピン名 | PICのピン番号 |
1 | Vcc | Vdd | 31番目の ピン |
2 | Vcc | Gnd | 32番目の ピン |
3 | Tx | RC6 / Tx / CK | 25番目の ピン |
4 | 処方箋 | RC7 / Rx / DT | 26番目の ピン |
5 | 状態 | NC | NC |
6 | EN(有効) | NC | NC |
他のマイクロコントローラーを備えたBluetoothモジュールHC-05の詳細については、他のプロジェクトを確認してください。
- Arduinoを使用したBluetooth制御のおもちゃの車
- 8051を使用したBluetooth制御のホームオートメーションシステム
- RaspberryPiを使用した音声制御ライト
- ArduinoとProcessingを使用したスマートフォン制御のFMラジオ
- BluetoothモジュールHC-06とPICマイクロコントローラーのインターフェース
また、ここですべてのBluetooth関連プロジェクトを確認してください。
回路図
このArduinoBluetoothサーボモーター制御 プロジェクトの回路図を以下に示します。
サーボを制御するためのRoboremoアプリの構成:
ステップ1: -Android PlayストアからRoboremoアプリをダウンロードし、スマートフォンにインストールします。インストール後、図1に示すようなアプリウィンドウが表示され、 [メニュー] ボタンをクリックすると、以下の図2に示すウィンドウが表示されます。
ステップ2:-次に 接続 ボタンをクリック する と、下の図3に示すウィンドウが表示されます。次に、「 Bluetooth RFCOMM」 を選択する必要があります。そうすると、HC-06BluetoothモジュールをAndroidアプリ「Roboremo」に接続できるようになります。
ステップ3: -HC-06 bluetoothモジュールに接続した後、figure2ウィンドウに戻り、「 edit ui 」をクリックして、必要に応じてユーザーインターフェイスを作成します。
[ UIの編集]をクリックすると、図1に示すウィンドウが再び表示され、画面の任意の場所をクリックすると、図4のようなアプリウィンドウが表示され、[ボタン]を選択してボタンの構造を取得します。
ステップ4:-ボタンを選択すると、編集するボタン構造が画面に表示されます。構造のサイズを変更したり、画面上の任意の場所に移動したりできます。ここで、Bluetooth経由でクリック時に送信される値を設定するには、 「プレスアクションを設定」し (図6を参照)、その特定のボタンから送信する値を入力します。同様に、RoboremoAndroidアプリケーションの「開始」ボタンを押してサーボを回転させるための「1」を送信しています。
後のセクションの表で、さまざまなボタンをクリックすると送信されるすべての値を確認できます。
ステップ5:-最後に、スマートフォンを使用してサーボモーターを制御するためのユーザーインターフェイスがあります。
コードと説明
Bluetooth経由のArduino制御サーボモーターの完全なコードは最後に記載されています。
Arduinoにはサーボモーター用のライブラリがあり、サーボを回転させるためにすべてのPWM関連のものを処理します。回転させたい角度を入力するだけで、関数 servo1.write(angle)があります。 サーボを希望の角度に回転させます。
したがって、ここではサーボモーターのライブラリを定義することから始め、ソフトウェアシリアルライブラリを使用してRxピンとTxピンを定義します。
#include
以下のコードでは、RxとTxのArduinoピンを初期化し、サーボなどの変数を定義しています 。
サーボmyServo; int TxD = 11; int RxD = 10; intサーボポジション; intservopos; int new1; SoftwareSerial bluetooth(TxD、RxD);
ここで、すべての変数とコンポーネントを初期段階に設定します。ここでは、Arduinoの9番目のピンにサーボを取り付け、サーボの初期位置を0度にしました。シリアルおよびBluetooth通信のボーレートも9600に設定されています。
void setup(){ int pos = 0; myServo.attach(9); myServo.write(0); Serial.begin(9600); // 9600bpsでシリアル通信を開始し ますbluetooth.begin(9600); }
では 、ボイドループ 機能、Arduinoのは、すべての時間を入力値をチェックされ、スマートフォンから受信した値に応じてサーボを回転させます。すべての値は、シリアル通信を使用して受信されます。
値が0の場合、サーボは0度に回転します。同様に、Bluetoothアプリケーションから45、90、135、および180を送信すると、サーボはそれぞれ45、90、135、および180度の角度に回転します。
void loop(){ if(bluetooth.available()){ 文字列値= bluetooth.readString(); サーボ位置= value.toInt(); if(value.toInt()== 0){ Serial.println(servoposition); myServo.write(0); } if(value.toInt()== 45){ Serial.println(servoposition); myServo.write(45); } if(value.toInt()== 90){ Serial.println(servoposition); myServo.write(90); } if(value.toInt()== 135){ Serial.println(servoposition); myServo.write(135); } if(value.toInt()== 180){ Serial.println(servoposition); myServo.write(180); }
スタート ボタンを押して値「1」を送信すると、 停止 ボタンが押されるまでサーボが連続的に回転します。ここでは、 停止 ボタンを押すと「2」を送信します。これはArduinoによって読み取られ、 while ループが中断され、サーボが停止します。
while(value.toInt()== 1){if(bluetooth.available()){value = bluetooth.readString(); Serial.println(value); if(value.toInt()== 2){Serial.println( "YYY"); ブレーク; }}サーボポス++; delay(30); Serial.println(servopos); myServo.write(servopos); if(servopos == 180){servopos = 0; break;}}}}
Bluetoothを使用したサーボモーター制御の動作:
このプロジェクトでは、Androidアプリケーション「Roboremo」を使用してサーボモーターを制御しています。このアプリケーションのインターフェースでは、前に説明したように、サーボモーターを制御するための5つのボタンを作成しました。すべてのボタンの動作を以下の表に示します。
S.No. |
ボタン名 |
価値を送る |
説明 |
1.1。 |
開始 |
1 |
このボタンは、サーボの回転を0⁰から180⁰に開始するために使用されます。 |
2.2。 |
やめる |
2 |
このボタンは、任意の時点でサーボを停止するために使用されます。 |
3.3。 |
0⁰ |
0 |
このボタンは、サーボを0⁰に回転させるために使用されます。 |
4.4。 |
90⁰ |
90 |
このボタンは、サーボを90⁰に回転させるために使用されます。 |
5.5。 |
180⁰ |
180 |
このボタンは、サーボを180⁰に回転させるために使用されます。 |
そのため、Androidアプリ Roboremo でこれらのボタンを押すと、データはスマートフォンのBluetoothを介してHC- 06Bluetooth モジュールに送信されます。そのHC-06モジュールデータからArduinoが受信し、Arduinoは特定のボタンのコードで定義された角度でサーボを回転させます。角度45と135もコーディングしましたが、Roboremoアプリの制限により、作成できるボタンは5つだけなので、2つのボタンをスキップしました。
これが、Bluetoothを使用してスマートフォンからArduinoにデータを送信し、サーボをワイヤレスで制御する方法です。これは、おもちゃの車、ロボットなどの多くのアプリケーションで使用できます。