Arduinoのロボットは基本的な機能を実行することができるので、もう1つの機能、つまりBluetooth経由の遠隔制御でアップグレードします。
他の「ロボットの作り方」チュートリアルと同じ、ここでは例としてArduinoロボットキット(Pirate:Bluetooth 4.0搭載4WD Arduinoモバイルロボットキット)を使用します。その上、私達はまたあなたがブルートゥースを介してあなたのモバイル機器とロボット、モバイルプラットフォーム、ドローンまたは他のもののような何かを接続し制御することを可能にするGoBLE(一般的なBLE APPコントローラー)の助けを必要とします。
レッスンメニュー:
レッスン1:はじめに
レッスン2:基本的なArduinoロボットの製作
レッスン3:ライントラッキングArduinoロボットの構築
レッスン4:障害物を避けることができるArduinoのロボットを作る
レッスン5:光と効果音でArduinoのロボットを製作する
レッスン6:環境を監視できるArduinoロボットの構築
レッスン7:Bluetooth制御Arduinoロボットの製作
準備
iPhoneまたはiPad×1
GoBLE APP×1
用品:
ステップ1:
注:現在、GoBLEはiOSデバイスでのみ使用でき、少なくともインストールされているiOS 8.1を要求します。
iOSユーザーの場合:App StoreからGoBLEをダウンロードしてください。
ステップ2:
テストコードをアップロードする
Romeo BLEをコンピュータに接続してください。テストコード「GoBLE_Test.ino」はソフトウェアパッケージにあります。それはあなたがあなたのデバイスからの信号出力をチェックすることを可能にします。それをダウンロード&それをチェックアウト。テストコードをダウンロードする前に、GoBLEライブラリをロードすることを忘れないでください。
ステップ3:
Bluetoothテスト
それでは、Bluetoothペアリングを始めましょう。モバイルBluetoothをオンにして、GoBLEアプリを開きます。あなたの画面はこんな感じになるでしょう!
ステップ4:
Bluetoothの検索キー(赤い虫眼鏡のように見えます)をクリックします。次に、Romeo BLEの名前に対応するBluetoothデバイスを1つ選択します。 UUIDをクリックするとペアリングが始まります。
ステップ5:
接続すると、Bluetooth検索キーの色が赤から緑に変わります。
ステップ6:
同時に、ボード上のLINKが点灯します。つまり、iPhoneはRomeo BLE(Bluetooth 4.0搭載のArduinoロボットコントロールボード)に接続されています。
ステップ7:
それでは、コントローラがiPhoneから正常に信号を受信できるかどうかをテストしましょう。 Arduino IDEインターフェースに戻り、右上隅にあるシリアルモニターをクリックしてください。
ステップ8:
下の図に示すようなダイアログがポップアップします。まず、シリアルポートのボーレートは、下の赤い丸で示されるように115200に設定されます。
ステップ9:
これでiPhoneを取り出し、仮想ジョイスティックをランダムにスワイプするか、画面上のボタンをクリックすることができます。それ以外の場合は、シリアルモニタに対応する値が表示されます。また、画面上の仮想ジョイスティックをスワイプすると、シリアルモニタのジョイスティック値が変わります。ジョイスティックを上にスワイプすると値が増加し、ジョイスティックを下にスワイプすると値が減少することがわかります。
ボタンIDは、クリックしているボタンを意味します。
ステップ10:
リモートコントロール用のコードをアップロードする
すべて問題なければ、続けてリモートコントロール用のコードをArduinoボードにアップロードしましょう。心に留めておくべき非常に重要なポイントがあります!
最後のテスト段階で、あなたのiPhoneはすでにRomeo BLE Boardに接続されています。ただし、Bluetoothが携帯電話とボードの間で確立されている場合は、コードをRomeo BLEボードにアップロードできません。したがって、最初にBluetoothのペアリングを解除してください。また、ボードが電話から切断されている場合は、もう一度コードをアップロードすることもできます。これはとても重要です!
接続を中断する方法は2つあります。 1つの方法は、Remeo BLEの電源を切ってからもう一度入れることです。他の方法は、単にあなたの携帯電話のBluetoothをオフにするということです。
切断した後は、サンプルコードを再度アップロードできます。コードパッケージでは、コードはGoBLE_APP.inoという名前です。
ステップ11:
正常にアップロードされたら、下の写真の赤い矢印に従ってロボットを操作するためにジョイスティックをスワイプします。また、赤いボタンをクリックして、PIN13で接続されているボードのLEDをオンまたはオフにすることもできます。
ステップ12:
コードの概要
ロボットを遊んだ後は、コードの使い方を学びましょう。 GoBLEテストのテストコードにこれ以上の言葉はありません。それならGoble APPに進みましょう。
基本的なコードについて説明する必要はありません。ただ、ブルートゥースコントロールを含む部分を見てみましょう。ロボットを遠隔操作したい場合は、MetroとGoBLEという2つのライブラリを使用します。
# "Metro.h"を含めます
#include "GoBLE.h"
int joystickX、joystickY。
int buttonState 6;
GoBLEライブラリには、3つの変数であるjoystickX、joystickY、buttonState 6が定義されています。これらは、X軸、Y軸、および6つのボタンの値の状態値を格納するために使用されています。
下のマップは、すべてのボタンのレイアウトを示しています。状態値の変化を分析した場合は、おそらく+ X、-X、+ Y、および-Yの意味を知っているでしょう。
XとYはジョイスティックの動きの方向です。 "+、 - "値の傾向を示します。 「+」は状態値が増加していることを意味します。そして「 - 」は状態値が減少していることを意味します。
ステップ13:
初期設定はSetup()の関数に書かなければならない。
Goble.begin();
この行は、Bluetoothの設定を開始するために使用されます。ボード上でBluetoothコードを使用するたびにそれを見逃すことはできません。
Serial.begin(115200);
実際、この行はテスト段階で使用されています。シリアルポートを起動するために使用されます。シリアルモニタから値を読みたい場合は、セットアップ関数にこのステートメントを記述する必要があります。また、ボーレートを設定する必要もあります。
Bluetoothのボーレートは特別なので、115200に設定する必要があります。ボーレートが設定されていることを確認してください。そうしないと、問題が発生する可能性があります。
見下ろし続けてください。次の行はGoble.available()の機能です。
if(Goble.available()){何かをする。 }
これは、数字がBluetooth経由で受信された後の次のアクションです。
かっこ内に書いたものが次のアクションになります。まず、受け取った数字を分析する必要があります。次の2つのステートメントは、X軸とY軸の値を読み取ることです。
joystickX = Goble.readJoystickX();
joystickY = Goble.readJoystickY();
// Serial.print( "joystickX:");
// Serial.print(joystickX);
// Serial.print( "joystickY:");
// Serial.println(joystickX);
上記の4つのステートメントSerial.print()が何を意味していると思います。それはシリアルに関連しています。シリアルが受け取ったデータを印刷するので、コードのデバッグや最適化に便利です。
「//」は以下の内容の注釈を意味します。これら4つの文は、コードをコンパイルするときには含まれません。つまり、これら4つのステートメントに注釈を使用すると、データはシリアルに送信されません。
詳細については、Arudino Webサイト(www.arduino.cc)の参照ページを参照してください。
buttonState SWITCH_UP = Goble.readSwitchUp();
buttonState SWITCH_DOWN = Goble.readSwitchDown();
buttonState SWITCH_LEFT = Goble.readSwitchLeft();
buttonState SWITCH_RIGHT = Goble.readSwitchRight();
buttonState SWITCH_SELECT = Goble.readSwitchSelect();
buttonState SWITCH_START = Goble.readSwitchStart();
上記のすべての内容は、ボタンの状態に関する情報を読み込むために使用されます。
ボタンの配置は以下の通りです。
SWITCH_UP - 1 SWITCH_RIGHT - 2
SWITCH_DOWN - 3
SWITCH_LEFT - 4
SWITCH_SELECT - 5
SWITCH_START - 6
ステップ14:
使用を開始する前に、読み取ったすべてのデータを処理する必要があります。
ジョイスティックで読み取られた値は、ロボットの車輪の回転速度にマッピングされます。したがって、車輪の回転速度は-255から255の間であることがわかります。
int SpeedX = 2 * joystickX-256;
int SpeedY = 2 *ジョイスティックY-256。
Serial.print( "Speed:");
Serial.print(SpeedX);
Serial.print( "");
Serial.println(SpeedY);
また、シリアルは速度を印刷します。不要な場合は、先頭に「//」を付けて削除してください。
それでは、ロボットを制御して動かしましょう。
(ジョイスティックを上または(||)下に動かす){ロボットが前後に動く。 }
(ジョイスティックを右または(||)左に動かす){ロボットが右または左に動く}
(ジョイスティックのX軸が中央に、ジョイスティックの(&&)Y軸が中央にある場合){ロボットが停止します。 }
対応するコードは次のとおりです。
if(SpeedX> 200 || SpeedX <-200){LeftWheelSpeed = SpeedX; RightWheelSpeed = SpeedX; Robot.Speed(LeftWheelSpeed、RightWheelSpeed); }
そうでなければ(SpeedY> 200 || SpeedY <-200){LeftWheelSpeed = SpeedY-80; RightWheelSpeed = SpeedY-80; Robot.Speed(LeftWheelSpeed、RightWheelSpeed);}
そうでなければ(SpeedX == 0 && SpeedY == 0){Robot.Speed(0,0); }
最後のコードは、PIN13に接続されているボード上のLEDを制御するために使用されます。
int ledPin = 13。
ピン13はコードの最初に定義する必要があります。
pinMode(ledPin、OUTPUT);
setup()の機能を書くことによってLEDのための出力モードを設定します。 ArduinoのWebサイト(www.arduino.cc)のpinMode()の機能の説明を参照してください。
次の式はボタンの状態を示しています。 1番のボタンを押すと、LEDが点灯します。 LEDピンがHIGHに設定されていることを意味します。
if(buttonState 1 == PRESSED){digitalWrite(ledPin、HIGH); }
1番ボタンを離すとLEDが消灯します。 LEDピンがLOWに設定されていることを意味します。
if(buttonState 1 == RELEASED){digitalWrite(ledPin、LOW); }
今日のコーディングはこれですべてです。それは楽しいではないですか?そう、あなたのためにコードを書くことは不可能ではないね。あなたはコードを修正することによってLEDライトを制御するためにボタンを変えようとするかもしれません。あなたのコードでそれを制御することができればそれは間違いなくもっとおもしろいです。さあ、あなたのロボットと一緒に楽しもう!