あなたのRCカーをBluetoothRCカーに変えてください
コンポーネントと消耗品
> |
| × | 1 | |||
| × | 1 |
必要なツールとマシン
> |
|
アプリとオンラインサービス
> |
|
このプロジェクトについて
<図> <図> <図> <図>
RCカーはハッキングするのが本当に楽しいです、そして彼らはロボットを作るために低価格で良いシャーシを提供します、しかし作るために1つを選ぶことは何百万ものタイプの灰の苦痛です。私の弟は最近彼の誕生日を迎えました、そして私は彼に本当にクールな何かを与えたかったので、私は彼にこのrcカーを与えることになりました。 RCカーのハッキングも簡単で難しいです。rcカーの製造方法が異なるため、車をハッキングする簡単で明確な方法はありませんが、このハッキングは普遍的です。また、各モジュールの背後にあるすべての部分と理論についての基本をカバーしようとします。モジュールを使用しましたが、プロミニ以外の回路を作成することをお勧めします。
プロミニは小さすぎて本当に不快でしたが、楽しかったです。
ビデオをチェックして、今後のビデオを購読してください
ステップ1:適切なシャーシを入手する <図> <図> <図> <図> <図>
パーツリスト
- ProMini
- L293dモジュール
- hc-05
- Rcカー
適切なシャーシを入手する
シャーシを選択することは、ドライブメカニズムに関する質問です。多くのドライブメカニズムがあります。
最も人気のある2つのメカニズムについて話しましょう。
ディファレンシャルドライブディファレンシャルドライブとは
差動という用語は、2つのエンティティ間の差を意味します。ロボット工学の文脈では、2つのモーター間の速度差にすぎません。この速度差に基づいて、ロボットは2Dレイアウトで任意の方向に移動できます。
2つのモーターが1つのラインでホイールに接続されている場合(1つのシャフトに接続されたホイールのペアのように)、各モーターの回転速度によって運動の方向が決まります。両方の車輪が同じ速度で回転する場合、モーター間の差はゼロです。これにより、ロボットは直線的に前進します。両方のモーターの回転方向を逆にすると、ロボットは逆方向に移動できます。速度差がゼロの場合、これも直線になります。これで、いずれかのモーターの速度を変更すると、直線から離れる方向に移動します。たとえば、右モーターの速度を下げると、速度差が生じて方向が変わります。その結果、ロボットが右に曲がるような力になります。この方向転換は、モーターの速度をさらに下げることで必要な角度に制御できます。モーターが遅いほど右に曲がり、鋭いほど右に曲がります。これは左折でもまったく同じです。
結論として、右モーターが遅く、右折が鋭い。左モーターが遅い左折が鋭い。以下は、差動駆動機構の動作を説明するいくつかのシナリオです。 M1とM2は、それぞれ左右の車輪を駆動するモーターです。
ステアタイプドライブ
ステアタイプドライブとは?
車のタイプのドライブは、現実の世界では最も一般的ですが、ロボットの世界ではそうではありません。これは、1対の駆動輪と1対のステアリングホイールが特徴です。並進と回転は互いに独立しています。しかし、平行移動と回転は相互に関連しているため、このシステムは深刻な経路計画の問題に直面しています。 4輪は3輪または2輪に比べて効率的です。 4つの車輪のうち最初の2つは操縦に使用でき、次の2つはロボットの駆動に使用できます。四輪ロボットのバランスをとることは決して問題ではありません。私たちが使用するほとんどの日常の車は四輪車であり、その例はその存在と能力を証明するのに十分です。
車種ドライブのデメリット :回転機構は正確に制御する必要があります。わずかな不正確さは大きなオドメトリエラーを引き起こす可能性がありますシステムは非ホロノミックであるため、経路計画は非常に困難であり、不正確です直接方向性アクチュエータはありません
そのため、シンプルで使いやすいので、ディファレンシャルドライブを使用する方が良いでしょう。
ステップ2:モーターを制御する <図> <図> <図>
モーターを制御するには、モータードライバーと呼ばれるものが必要です。
モータードライバーとは何ですか?
モータードライバーは小さな電流増幅器です。モータードライバーの機能は、低電流の制御信号を受け取り、それをモーターを駆動できる高電流の信号に変換することです。
私がl293dモータードライバーモジュールを使用しているモータードライバーはたくさんあります。
L293Dは、いずれかの方向に回転するDCモーターを駆動するために使用されるモータードライバー集積回路です。 2つのDCモーターのセットを同時に制御できる16ピンICです。 L293Dはそれ自体の電力に5Vを使用し、モーターを駆動するために外部電源が必要です。これは最大36V、最大600mAを消費する可能性があります。 L293Dは、高電圧をどちらの方向にも流すことができる回路である、典型的なHブリッジの概念に基づいて動作します。 1つのL293DICには、2つのDCモーターを独立して回転させることができる2つのHブリッジ回路があります。
L293dのピンの説明
1モーター1のピンを有効にします。アクティブハイイネーブル1,22モーター1の入力1入力13モーター1の出力1出力14アース(0V)アース5アース(0V)アース6モーター1の出力2出力27モーター1の入力2入力2 8モーターの供給電圧。 9〜12V(最大36V)Vcc 29モーター2のイネーブルピン。アクティブハイイネーブル3,410モーター1の入力1入力311モーター1の出力1出力312アース(0V)アース13アース(0V)アース14モーター1の出力2出力415モーター1の入力2入力416供給電圧; 5V(最大36V)Vcc 1
<図>
ステップ3:アプリについて <図> <図> <図>
私が1つで作成した制御するアプリはたくさんあります。ロジックは非常にシンプルで、Bluetoothを介して押すとすべてのボタンが文字を送信し、arduinoがそれを処理します。
文字機能
Xヌル状態F前進運動B後退運動L左に曲がるR右に曲がる
ステップ4:すべてのパーツを接続する <図> <図> <図> <図> <図>
接続は簡単です
これが次のような接続です
Bluetoothモジュール
Hc-05 Arduino Vcc 5v Gnd Gnd Rx Tx Tx Rx
モータードライバー
モータードライバーArduinoピン28ピン77ピン106ピン49ピン3および6モーター1ピン11およびピン14モーター2ピン15vピン95v
ステップ5:コーディング <図> <図> <図>
void setup(){Serial.begin(9600); pinMode(8、OUTPUT); pinMode(7、OUTPUT); pinMode(9、OUTPUT); pinMode(6、OUTPUT); pinMode(5、OUTPUT); pinMode(4、OUTPUT); digitalWrite(4、LOW); digitalWrite(5、LOW);} //ループ関数は永遠に何度も実行されますvoidloop(){var =Serial.read(); if(var =='F'){digitalWrite(6、LOW); digitalWrite( 7、HIGH); digitalWrite(8、LOW); digitalWrite(9、HIGH);} if(var =='H'){digitalWrite(frled1、HIGH);} if(var =='B'){analogWrite(スピードアップ、150); digitalWrite(6、HIGH); digitalWrite(7、LOW); digitalWrite(8、HIGH); digitalWrite(9、LOW); digitalWrite(bcled1、HIGH);} if(var =='X'){digitalWrite(9、LOW); digitalWrite(8、LOW); digitalWrite(7、LOW); digitalWrite(6、LOW); digitalWrite(frled1、LOW); digitalWrite(bcled1、LOW);} if(var =='L'){digitalWrite(6、LOW); digitalWrite(7、LOW); digitalWrite(8、HIGH); digitalWrite(9、LOW);} if(var =='R'){digitalWrite(6、HIGH); digitalWrite(7、LOW); digitalWrite(8、LOW); digitalWrite(9、LOW);;}}
私がやったようにプロジェクトを楽しんでいただければ幸いです。もうすぐクールなプロジェクトを投稿しますので、フォローしてすべての更新を入手してください。私のページhttps://www.facebook.com/makewithRex/
F09ZCJSIP2UG2XP.ino
コード
- コードスニペット#1
コードスニペット#1 プレーンテキスト
void setup(){Serial.begin(9600); pinMode(8、OUTPUT); pinMode(7、OUTPUT); pinMode(9、OUTPUT); pinMode(6、OUTPUT); pinMode(5、OUTPUT); pinMode(4、OUTPUT); digitalWrite(4、LOW); digitalWrite(5、LOW);} //ループ関数は何度も何度も実行されますforevervoidloop(){var =Serial.read(); if(var =='F'){digitalWrite(6、LOW); digitalWrite(7、HIGH); digitalWrite(8、LOW); digitalWrite(9、HIGH); } if(var =='H'){digitalWrite(frled1、HIGH); } if(var =='B'){analogWrite(speeden、150); digitalWrite(6、HIGH); digitalWrite(7、LOW); digitalWrite(8、HIGH); digitalWrite(9、LOW); digitalWrite(bcled1、HIGH); } if(var =='X'){digitalWrite(9、LOW); digitalWrite(8、LOW); digitalWrite(7、LOW); digitalWrite(6、LOW); digitalWrite(frled1、LOW); digitalWrite(bcled1、LOW); } if(var =='L'){digitalWrite(6、LOW); digitalWrite(7、LOW); digitalWrite(8、HIGH); digitalWrite(9、LOW); } if(var =='R'){digitalWrite(6、HIGH); digitalWrite(7、LOW); digitalWrite(8、LOW); digitalWrite(9、LOW);; }}
回路図
製造プロセス