Wi-Fi制御FPVローバーロボット(ArduinoおよびESP8266を使用)
コンポーネントと消耗品
> |
| × | 1 | |||
| × | 1 | ||||
| × | 1 | ||||
| × | 2 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 2 | ||||
| × | 1 | ||||
| × | 2 | ||||
| × | 1 | ||||
| × | 12 | ||||
| × | 12 | ||||
| × | 8 | ||||
| × | 8 | ||||
| × | 3 | ||||
| × | 6 | ||||
| × | 1 | ||||
| × | 2 | ||||
| × | 1 |
必要なツールとマシン
| ||||
|
アプリとオンラインサービス
| ||||
| ||||
| ||||
| ||||
|
このプロジェクトについて
<図> <図> <図> <図>
このチュートリアルでは、ESP8266Wi-fiモジュールと2つのステッピングモーターに接続されたArduinoUnoを使用して、Wi-Fiネットワーク上でリモート制御される2輪ロボットローバーを設計する方法を示します。ロボットは、HTMLで設計されたインターフェイスを使用して、通常のインターネットブラウザから制御できます。 Androidスマートフォンは、ロボットからオペレーターの制御インターフェースにビデオとオーディオをブロードキャストするために使用されます。
さまざまな形状、寸法、価格のロボットキットがオンラインで多数入手できます。ただし、アプリケーションによっては、どれも適合しないため、実験には高すぎることがわかる場合があります。または、完全なものを購入するのではなく、単に機械構造を作成したい場合もあります。このチュートリアルでは、自分のロボットプロジェクト用に低コストのアクリルフレームを設計および構築する方法も示します。それらの高価な3Dプリンターまたはレーザーカッターへのアクセス。シンプルなロボットプラットフォームが紹介されています。
このガイドは、その形状または制御インターフェースを変更するように適合されている場合があります。これは、他のロボットプロジェクト(「RobôdaAlegria」)に適合しており、以下のリンクで確認できます:
https://hackaday.io/project/12873-rob-da-alegria -...
https://github.com/ferauche/RoboAlegria
https://hackaday.io/project/12873-rob-da-alegria -...
[警告:デザインがさらに改善されたため、一部の写真は古くなっています。ただし、ここで提示されたアイデアは引き続き有効です。]
ステップ1:ツール <図> <図> <図> <図> <図> <図>
このプロトタイプの作成には、次のツールが必要です。
- ハンドソー(アクリルシートの初期カットを実行するため)
- スクリュードライバー(ボルトとナットの配置用)
- 定規(寸法測定用)
- 万能ナイフ(アクリルシートを切るため)
- ボール盤(ボルト用の穴を作成するため)
- サンドペーパー(粗いエッジを滑らかにするため)
ステップ2:機械的構造と材料 <図> <図> <図> <図> <図> <図> <図> <図> <図> <図>
カスタムロボットを構築するには、最初に機械的構造を設計する必要があります。アプリケーションによっては簡単な場合もあれば、詳細や制約に満ちている場合もあります。モデルの複雑さに応じて、3D CADソフトウェアで設計するか、2Dで描画する必要がある場合があります。
独自の機械的構造を構築したくない場合は、完全な構造をオンラインで購入することもできます。オンラインで利用できるロボットキットはたくさんあります。この場合、ステップ6にジャンプできます。
このチュートリアルでは、モーターやその他のコンポーネントを取り付けるための低コストのアクリルフレームを設計しました。このチュートリアルで紹介する構造は、123D DesignCADソフトウェアを使用して3D設計されたものです。各パーツは、後でDraftsightソフトウェアを使用して2Dに変換されました。
次の材料が使用されました:
- 2mmアクリルシート
- ゴム製トレッドタイヤ付き42x19mmホイール(x2)
- 49x20x32mmスチールボールオムニホイール(x1)
- M2 x 10mmボルト(x12)
- M2 x 1.5mmナット(x12)
- M3 x 10mmボルト(x8)
- M3 x 1.5mmナット(x8)
- 5/32 "x 1"ボルト(x3)
- 5/32 "ナット(x6)
- ハンドヘルド自撮り棒クリップ
- 3 x 3 cmアルミニウムブラケット(x4)
ベースの構造の構築は、次のステップに分かれています。
- 2D図面の寸法に従ってアクリルベースをカットします。
- 2D図面に示されている位置に穴を開けます。
- 3D図面に従ってボルトとナットでコンポーネントを取り付けます。
残念ながら、ステッピングモーターシャフトの直径はホイールのオリフィスよりも大きくなっています。したがって、これらのコンポーネントを結合するには、おそらく接着剤を使用する必要があります。このチュートリアルでは、モーターシャフトとホイールの間の木製カップリングを即興で作成しました。
FMAR9JBITKJE83H.123dx F21RD24ITKJE8AJ.dwg FPTGSODITKJE8AN.pdf
ステップ3:構造を切断する <図> <図> <図>
まず、モデルの寸法をアクリルシートに転写する必要があります。通常のプリンターを使用して2D図面を粘着紙に印刷し、適切な寸法に紙をカットして、アクリルの表面にそのマスクを適用します。
ハンドソーを使用して、寸法に応じてアクリルをカットするか、以下に説明するブレークテクニックを使用することができます。
ユーティリティナイフを使用し、定規またははかりを使用して、アクリルを直線にカットします。シート全体をカットする必要はありません。スコアを付けるだけで、後でカットされるトラックを作成できます。
アクリルを平らな面に置き、クランプで所定の位置に保持し、シートが2つに割れるまで圧力をかけます。すべてのカットが完了するまで、このプロセスを繰り返します。その後、サンドペーパーを使用して粗いエッジを滑らかにすることができます。
ステップ4:ベースをドリルする <図> <図> <図>
2D図面(マスクに示されている)に示されている位置に、ボール盤で穴を開けます。
アクリルは比較的簡単に穴を開けることができます。したがって、ボール盤を廃棄しない場合は、カッターナイフなどの鋭利な工具を使用して手動で穴を開けることができます。ボルトのサイズに合わせて小さな穴を拡大するためにも使用できます。
マスクを外すとベースの準備が整います。
ステップ5:構造を組み立てる <図> <図> <図> <図>
画像に従ってボルトとナットでコンポーネントを取り付ければ、構造の準備が整います。
M3ボルトはステッピングモーターの取り付けに使用され、5/32 "ボルトは前輪とスマートフォンクリップの取り付けに使用されます。
次に、休憩を取り、次の手順で回路のアサンブルを開始します...
ステップ6:電子機器 <図> <図> <図> <図> <図> <図>
次の電子部品が必要です:
- Arduino Uno(購入)
- ESP8266(購入)
- プロトシールド(よりコンパクトなバージョンの場合)または通常のブレッドボード(購入)
- 1キロオームの抵抗(x2)
- 10kオーム抵抗(x1)
- いくつかのジャンパー線
- ULN2003ドライバー付きステッピングモーター(x2)(購入/購入)
- コンピューター(Arduinoコードのコンパイルとアップロード用)
- パワーバンク(購入)
- USBケーブル
回路の組み立てに特別な工具は必要ありません。すべてのコンポーネントは、お気に入りのeコマースストアでオンラインで見つけることができます。この回路は、ArduinoのUSBポートに接続されたパワーバンクから電力を供給されます。
回路図に従ってすべてのコンポーネントを接続します。 ESP-8266モジュールとステッピングモーターを接続するには、ジャンパー線が必要です。プロトシールド(よりコンパクトな回路用)、通常のブレッドボード、または独自のArduinoシールドを設計することができます。USBケーブルをArduino Unoボードに接続して、次の手順に進みます。
ステップ7:Arduinoコード
最新のArduinoIDEをインストールします。このプロジェクトでは、ステッピングモーターの制御にstepper.hライブラリが使用されました。 ESP-8266モジュールとの通信に追加のライブラリは必要ありませんでした。 ESP8266のボーレートを確認し、コードで適切に設定してください。
Arduinoコード(stepperRobot.ino)をダウンロードし、XXXXXをwifiルーターSSIDに、YYYYYをルーターパスワードに置き換えます。 ArduinoボードをコンピューターのUSBポートに接続し、コードをアップロードします。
FG1K5KJITKJFW2R.ino
ステップ8:AndroidIPカム <図>
Androidスマートフォンを使用して、ロボットから制御インターフェースにビデオとオーディオをブロードキャストしました。このアプリは、Google Playストア(https://play.google.com/store/apps/details?id=com.pas.webcam)で見つけることができます。
インストールして次のステップに進みます。
ステップ9:回路をロボットに配置します <図> <図> <図>
画像に示すように、いくつかのM1ボルトを使用してロボットの上部に回路を取り付けます。
その後、両面テープを使用してロボットの背面にパワーバンクを接着し(後で簡単に取り外せるため)、スマートフォンをクリップに入れます。
ステップ10:Webベースの制御インターフェース <図>
ロボットの制御用にHTMLインターフェースが設計されました。
interface.rarをダウンロードし、すべてのファイルを特定のフォルダーに抽出します。次に、Firefoxで開きます。
そのインターフェースでテキストボックスフォームを使用して、ESPモジュールおよびビデオ/オーディオサーバー(Android IP Webcamアプリから)のIPアドレスを入力します。
テストがありますが、noterコマンドを受信するまでロボットを回転させます。キーボードの矢印キーは、ロボットを前後に動かしたり、左右に回転させたりするために使用されます。
FQTAWF5ITKJFW4O.rar
ステップ11:使用法
Arduinoを再起動すると、Wi-Fiネットワークに自動的に接続しようとします。シリアルモニターを使用して、接続が成功したかどうかを確認し、ルーターによってESP-8266に割り当てられたIPを取得します。インターネットブラウザ(Firefox)でhtmlファイルを開き、テキストボックスでこのIPアドレスを通知します。
また、ルーターがデバイスに割り当てたIPアドレスを見つけるために他の手段を使用することもできます。
Arduino Unoをコンピューターから切断し、パワーバンクに接続します。再び接続されるのを待ちます。
ロボットに接続されたスマートフォンでIPWebcamアプリを起動します。コントロールインターフェイスにビデオ/オーディオIPを入力し、サーバーに接続すると、準備が整います。送信中の遅延を減らすために、アプリのビデオの解像度を下げる必要がある場合があります。
キーボードの矢印ボタンをクリックしたままにして、ロボットを回転させたり、前後に動かしたりして、環境を探索して楽しんでください。
コード
- Arduino
- html制御インターフェース
Arduino Arduino
Arduinoコード。// includelibrary#include#include SoftwareSerial esp8266(3、2); // RXピン=3、TXピン=2 //変数の定義#defineDEBUGtrue //シリアルポートでESP8266とArduino間のメッセージを表示constint StepsPerRevolution =500; int state =5; Stepper rightStepper(stepsPerRevolution、8,10、 9,11); Stepper leftStepper(stepsPerRevolution、4,6,5,7); // ***** // SETUP // ***** void setup(){//通信を開始Serial.begin(9600 ); esp8266.begin(19200); sendData( "AT + RST \ r \ n"、2000、DEBUG); //モジュールをリセットsendData( "AT + CWMODE =1 \ r \ n"、1000、DEBUG); //ステーションモードを設定sendData( "AT + CWJAP =\" XXXXX \ "、\" YYYYY \ "\ r \ n"、2000、DEBUG); // Wi-Fiネットワークに接続while(!esp8266.find( "OK")){//接続を待機} sendData( "AT + CIFSR \ r \ n"、1000、DEBUG); // IPアドレスを表示sendData( "AT + CIPMUX =1 \ r \ n"、1000、DEBUG); //複数の接続を許可sendData( "AT + CIPSERVER =1,80 \ r \ n"、1000、DEBUG); //ポート80でWebサーバーを起動します//モーター速度を定義しますrightStepper.setSpeed(60); leftStepper.setSpeed(60); } void loop(){if(esp8266.available())//受信データを確認する{if(esp8266.find( "+ IPD、"))//メッセージがある場合{String msg; esp8266.find( "?"); //メッセージを探しますmsg =esp8266.readStringUntil( ''); //メッセージ全体を読み取るStringcommand =msg.substring(0、3); //最初の3文字=コマンドStringvalueStr =msg.substring(4); //次の3文字=value int value =valueStr.toInt(); if(DEBUG){Serial.println(command); Serial.println(value); } //前に進むif(command =="cm1"){state =1; } //後方に移動if(command =="cm2"){state =2; } //右に曲がるif(command =="cm3"){state =3; } //左に曲がるif(command =="cm4"){state =4; } //何もしないif(command =="cm5"){state =5; }}} //前に進むif(state ==1){rightStepper.step(1); leftStepper.step(-1); } //後方に移動if(state ==2){rightStepper.step(-1); leftStepper.step(1); } //右に移動if(state ==3){rightStepper.step(1); leftStepper.step(1); } //左に移動if(state ==4){rightStepper.step(-1); leftStepper.step(-1); } //何もしないif(state ==5){}} // ******************* //補助関数// ******** *********** String sendData(String command、const int timeout、boolean debug){String response =""; esp8266.print(コマンド); long int time =millis(); while((time + timeout)> millis()){while(esp8266.available()){char c =esp8266.read();応答+ =c; }} if(debug){Serial.print(response); }応答を返す;}
htmlコントロールインターフェース HTML
プレビューなし(ダウンロードのみ)。
カスタムパーツとエンクロージャー
123Dデザインファイル。 回路図
回路回路図回路のブレッドボード接続回路のフリッティングファイル製造プロセス
- Bluetoothで制御されるRaspberryPi Robot
- ArduinoとRaspberryPiを使用してインターネット制御のビデオストリーミングロボットを構築する
- 紫外線によるロボットの消毒
- サーボモーター付きロボット回避障害物
- ArduinoまたはESP8266を搭載した静電容量式指紋センサー
- ArduinoとAndroidデバイスでルンバロボットを制御する
- Nunchuk制御ロボットアーム(Arduino付き)
- Arduino Nano:ジョイスティックで2つのステッピングモーターを制御
- 音声制御ロボット
- TinyMLで植物の健康状態を判断する
- ArduinoとMPU6050によるサーボモーターの制御