Bluetooth制御障害物回避ロボット
コンポーネントと消耗品
> |
| × | 1 | |||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 2 | ||||
| × | 1 |
アプリとオンラインサービス
> |
| |||
|
このプロジェクトについて
このプロジェクトでは、携帯電話を使用してBluetooth経由でロボットと通信します。私はいつもロボットを作って携帯電話で操作したいと思っていました。 12年以上の長いギャップを経て、ロボットを作って操作する仕事を引き受けました。これは、Arduinoプロジェクトハブでの私の最初のプロジェクトでもあります。エレクトロニクスとロボット工学は私のお気に入りの趣味の1つであるため、Covid19による封鎖の時期に、ロボットを構築する作業を引き受けました。
<図>ロボットは携帯電話から送信されたBluetooth信号を感知します。 HC-05 Bluetoothモジュールを使用して、携帯電話からのコマンド信号を検知し、ロボットを制御します。 ArduinoBlueControlアプリを使用してロボットを制御しました。
<図><図>
<図>
ロボットの心臓部はArduinoNanoです。シリアル通信を介してHC-05モジュールから信号を受信し、L298Nモータードライバーモジュールを介してモーターを制御し、前進、後進、左、右方向に動きます。
<図>HC-05モジュールのTXピンとRXピンをArduinoNanoに接続するように注意する必要があります。ロジックレベルコンバータも同様に使用されます。
ロボットは、HC SR-04超音波センサーモジュールを使用して、経路内の障害物を検出します。前進中に障害物を感知すると、ロボットは停止します。RGBLEDを使用して、ロボットのステータスを示します。
<図>ロボットは、2つのギア付き駆動モーターで構成される2輪ベースに組み立てられています。回路は、電源(3.3vおよび5v)を備えたブレッドボード上に組み立てられます。 Arduino Nanoは、モーターに必要な電流がはるかに大きいため、モーターを直接駆動することはできません。したがって、L298Nモータードライバーモジュールを使用してモーターを駆動します。 Arduino NanoからのPWM信号は、L298NモータードライバーモジュールのENAピンとENBピンを介してモーターの速度を制御するために使用されます。
<図><図>
動作中のロボットの短いビデオは次のとおりです。
私のBluetooth制御障害物回避ロボットが気に入っていただけたら幸いです。このロボットは、ホームオートメーション、製造現場の障害物回避車両など、その他多くの用途に使用できるように変更および拡張できます。
コード
- Bluetooth制御のRobot_Arduinoコード。
Bluetooth制御のRobot_Arduinoコード。 C / C ++
/ * Bluetooth制御障害物回避ロボット作成者:Alok Talukdar日付:09.05.2020 * /#include// Arduinoの任意のピンをシリアル通信に使用する// L298モーターのデジタルピンを定義する制御モジュール。#defineIN1 5 //右モーター用#defineIN2 4 //右モーター用#defineIN3 3 //左モーター用#defineIN4 2 //左モーター用#defineENA 9 // PWM制御用にAを有効にするof right motor#define ENB 10 //左モーターのPWM制御用にBを有効にする// RGB LED制御用のデジタルピンを定義する#defineredLED 8#define greenLED A0#define blueLED 11 // HC-SR04超音波センサーmoduleconstを設定するint trigPin =6; // ArduinoNanoconstのピンD6に接続されたTRIGピンintechoPin =7; // Arduino NanointのピンD7に接続されたECHOピンi、j、k =0;フロート持続時間、距離; //距離測定用の変数// HC05Bluetoothモジュールを設定しますSoftwareSerialmySerial(12,13); //(12-> RX、13-> TX)文字列データ; // Bluetooth制御の変数intbtVal; void setup(){//セットアップコードをここに配置して、1回実行します:pinMode(trigPin、OUTPUT); //超音波パルスを送信するようにピンD6を構成しますpinMode(echoPin、INPUT); //ピンD7を超音波パルスを受信するように構成しますmySerial.begin(9600); //ソフトウェアシリアルをボーレート9600で構成しますpinMode(IN1、OUTPUT); //モーターを制御するためにIN1-IN4をOUTPUTとして構成しますpinMode(IN2、OUTPUT); pinMode(IN3、OUTPUT); pinMode(IN4、OUTPUT); pinMode(ENA、OUTPUT); pinMode(ENB、OUTPUT); pinMode(redLED、OUTPUT); pinMode(blueLED、OUTPUT); pinMode(greenLED、OUTPUT); digitalWrite(IN1、LOW); // IN1-IN4のステータスをLOWに設定しますdigitalWrite(IN2、LOW); digitalWrite(IN3、LOW); digitalWrite(IN4、LOW); analogWrite(redLED、255); // LEDをオフにします。 RGBLEDは一般的なアノードタイプです。 digitalWrite(blueLED、HIGH); digitalWrite(greenLED、HIGH);} void loop(){//メインコードをここに配置して繰り返し実行します:while(mySerial.available()){data =mySerial.readStringUntil( '\ n'); } btVal =(data.toInt());スイッチ(btVal){ケース1:forward(); digitalWrite(greenLED、LOW); analogWrite(redLED、255); digitalWrite(blueLED、HIGH); dist();壊す;ケース2:reverse(); digitalWrite(greenLED、HIGH); analogWrite(redLED、255); digitalWrite(blueLED、LOW);壊す;ケース3:left();壊す;ケース4:right();壊す;ケース5:stoprobot(); digitalWrite(greenLED、HIGH); analogWrite(redLED、0); digitalWrite(blueLED、HIGH);壊す;デフォルト:digitalWrite(greenLED、HIGH); analogWrite(redLED、255); digitalWrite(blueLED、HIGH);壊す; } if(mySerial.available()<0){// Serial.println( "Bluetoothデータなし"); }} //モーター制御関数の宣言voidforward(){for(i =0; i <=100; i ++){analogWrite(ENA、i); analogWrite(ENB、i); digitalWrite(IN1、HIGH); digitalWrite(IN2、LOW); digitalWrite(IN3、LOW); digitalWrite(IN4、HIGH); }} void reverse(){for(j =0; j <=100; j ++){analogWrite(ENA、j); analogWrite(ENB、j); digitalWrite(IN1、LOW); digitalWrite(IN2、HIGH); digitalWrite(IN3、HIGH); digitalWrite(IN4、LOW); }} void left(){analogWrite(ENA、127); analogWrite(ENB、0); digitalWrite(IN1、HIGH); digitalWrite(IN2、LOW); digitalWrite(IN3、HIGH); digitalWrite(IN4、HIGH); } void right(){analogWrite(ENA、0); analogWrite(ENB、127); digitalWrite(IN1、HIGH); digitalWrite(IN2、HIGH); digitalWrite(IN3、LOW); digitalWrite(IN4、HIGH); } void stoprobot(){analogWrite(ENA、0); analogWrite(ENB、0); digitalWrite(IN1、LOW); digitalWrite(IN2、LOW); digitalWrite(IN3、LOW); digitalWrite(IN4、LOW); } void dist(){digitalWrite(trigPin、LOW); // HC-SR04のTRIGピンを介してパルスを送信するdelayMicroseconds(2); digitalWrite(trigPin、HIGH); delayMicroseconds(10); digitalWrite(trigPin、LOW);期間=pulseIn(echoPin、HIGH); //パルス距離の持続時間を読み取ります=(duration * 0.0343)/ 2; //距離をcmで測定します。音速は340m / sまたは0.0343cm / us if(distance <20)//距離が<20 cmsの場合、STOP robot {stoprobot(); digitalWrite(greenLED、HIGH); analogWrite(redLED、0); digitalWrite(blueLED、HIGH); } delay(1000); }
回路図
ロボットの回路図。 製造プロセス
- 視覚ベースの障害物回避を備えた移動ロボット
- Bluetoothで制御されるRaspberryPi Robot
- ArduinoとRaspberryPiを使用してインターネット制御のビデオストリーミングロボットを構築する
- RaspberryPiを使用したジェスチャー制御ロボット
- ANDROID SMARTPHONEから制御されるRASPBERRYPI WIFI ROBOT
- Windows 10 IoT Core:音声制御ロボット
- RaspberryPiを使用したWifi制御ロボット
- ROObockey:リモート制御の照準支援ストリートホッケーロボット
- 人工知能を使用した障害物の回避
- 音声制御ロボット
- イーサネットを介して制御されるロボットアーム