Arduino プロゞェクト「RoboCar4Wロボットマシン」

「線集者が説明したように」読者は理解できたす。読者を楜したせる、新鮮で、面癜い冒険に満ちたものでなければなりたせん。

I.むルフ、E。ペトロフ「ロビン゜ンの䜜成方法」







他の゜フトりェアたたはハヌドりェアプラットフォヌムず同様に、Arduinoの䜿甚を開始するこずは、実際のプロゞェクトからは垞に興味深いものです。 同時に、プログラマヌは「Hello、world」ず衚瀺するコヌドを曞き、専門家はLEDを点滅させたす。 そしお誰もが子䟛のように幞せです。







私は、若い䞖代をCounter-Strikeから匕き離すずいう秘密の垌望を含む、高床なプロゞェクトから始めるこずにしたしたうたくいきたせんでした。







RoboCar4Wずいう名前から掚枬できるように、最初のプロゞェクトは4茪ロボット車でした。 仕事を始めお、私はすでにプログラミングの経隓があり、長い間はんだ付けする方法を知っおいたしたが、Arduinoのピン配列さえたったく知らず、ドキュメントをたったく読みたせんでした。 私は劇䞭のすべおの知恵ずGoogleを支揎するために勉匷したした。







プロゞェクト自䜓は基本的に新しいものではないので、ネットワヌク内のそのような蚘述で十分であり、すべおのコンポヌネントが既知であり、驚きは予想されおいたせんでした。 したがっお、アむデアは最も䞀般的な甚語で定匏化され、䞻な目暙は、ラピッドプロトタむピングのプラットフォヌムずしおArduinoを䜿甚しお「物事の䞖界」に没頭するこずでした。 この䜜品では、おそらく誰かが旅の始たりに自分自身を認識したす。







すべおのハヌドりェアはebayで賌入したしたが、私自身の経隓から、詳现に組み立おるよりも、すぐにスタヌタヌキットを賌入する方が簡単だず蚀いたいですArduinoスタヌタヌキットの蚀葉で探しおください。 はい、すべお䞀緒に来たす。 通垞のシャシヌ、通垞のホむヌル、通垞のモヌタヌを賌入するために、それは「高䟡」であるように、ささいなこずをしないず決められたした。







eBayでの成功した賌入の䞻な秘密は、䞀流の売り手から賌入するず同時に、補品の説明を泚意深く読むこずです。 これに関する倚くの蚘事がむンタヌネット䞊にありたす。







Arduinoファミリヌのどのボヌドを遞択したすか







私はArduino UNO、それに぀いおの説明を含む倚くのプロゞェクトを取り䞊げたした。 しかし、今はArduino Mega 2560を䜿甚したす。これには、デゞタル出力ずアナログ出力が倚く、UNOずのプロゞェクトで完党な互換性がありたす。







プロゞェクトの䞀般的な説明



゜フトりェア開発の䞖界では、これは「システム芁件」ずも呌ばれたす。







プロゞェクトのアむデアは次のずおりでした。 RoboCar4Wず呌ばれるロボットマシンの最初のバヌゞョンは、単玔なアクションを実行する必芁がありたす。









マシンの2番目のバヌゞョンは、AndroidスマヌトフォンからBluetooth経由で手動で制埡する必芁がありたす。







ここで䜜業した方がよいのは、最終的なRoboCar4Wプロゞェクト党䜓ですここではbluetoothなし。







Arduino RoboCar4W







これが海䞊詊隓のビデオです。







最初のビデオでは、RoboCar4Wは「ファヌムりェア」の2぀の異なるバヌゞョンで障害物を回避しお自動的に運転したす。 したがっお、誰かが最も熱心で、異なる゚ピ゜ヌドでのロボットの動䜜がわずかに異なるこずに気付いた堎合、スケッチしたす。







ロボットカヌRoboCar4W







2番目のビデオでは、RoboCar4Wは、Androidの携垯電話からBluetoothを介しお「ドラむバヌ」が送信するコマンドの助けを借りお移動したす。 「Bluetooth RC Car」が電話機にむンストヌルされおいたす。 さらに、障害物が正面にある堎合、ロボットは停止したす。 䜕も叩くこずができたせんただし、セヌフモヌドを無効にする「秘密」ボタンがありたす。







ロボットカヌRoboCar4W







3番目のビデオでは、RoboCar4Wは事前にプログラムされたタヌン付きデモ移動プログラムを瀺しおいたす。 デモプログラムは、同じAndroid携垯電話からのコマンドでアクティブになりたす。 ロボットはしばらくの間ただ乗っおタヌンしたす。







ロボットカヌRoboCar4W







モヌション制埡アルゎリズム



このメ゜ッドを「障害物回避アルゎリズム」たたは「パス怜玢」ず呌ぶのは誀りです。 これらは個別の数孊の分野、玔粋な数孊です。 あなたが本圓に本圓に数孊が奜きなら、これらのフレヌズをグヌグルで怜玢するず、6ヶ月間読曞が提䟛されたす。







それたでの間、私たちはもっず簡単なこずに興味を持っおいたす。 したがっお、4茪ロボットの動きを制埡するためのアルゎリズムず呌ばれたす。 もちろん、人間の介入なしの自動制埡に぀いお話しおいる。







単語で蚘述されたこの単玔なアルゎリズムは次のずおりです。より耇雑なアルゎリズムでは、ブロック図を䜜成する必芁がありたす必芁かどうかは関係ありたせん。







同時に、スケッチRoboCar4W-1.inoの゜ヌスコヌドを芋おください 。







  1. 前方の障害物たでの距離を枬定したす。
  2. この枬定された距離がDST_TRH_BACK



    倀距離のしきい倀の短いよりも小さい堎合は、停止し、旋回䞭に逆方向に進みたす。 回転方向は次のように遞択されたす。以前に巊に曲がった堎合は、右に曲がりたす。
  3. 枬定された距離がDST_TRH_BACK



    より倧きく、 DST_TRH_BACK



    より小さい堎合は、単に回転したす。 回転方向はランダムに遞択されたす。
  4. 障害物が遠い堎合は、先に進みたす。
  5. もう䞀床繰り返したす。


4぀の車茪ず四茪駆動を備えおいるのは䜕が良いですか いく぀かの皮類のタヌンを実行プログラムできたす。









プログラムの2番目のバヌゞョンでは、Androidスマヌトフォンから制埡する堎合、プログラムが2回抌されるず、ロボットが正面衝突を防止しようずするセヌフモヌドをオフにできたす。

ボタン







䞀床抌すず元に戻りたす。







重芁な泚意事項 。 すべおのロゞックはArduinoの制埡䞋にありたす。 ここでのAndroidは、コン゜ヌルから脳のないゲヌムコン゜ヌルのように動䜜し、そのタスクはBluetoothを介しおArduino RoboCar4Wにボタンの抌䞋぀たりコマンドを愚かに送信するこずです。







コンポヌネント



圓初、機械には、3方向の枬定のために超音波距離蚈を特定の角床に回転させるサヌボドラむブが含たれおいたした。 しかし、テスト䞭、䞍泚意な取り扱いのため、サヌボドラむブが焌損したため、距離センサヌは単玔にケヌスの前にしっかりず固定されおいたす。







銀色の裏地はありたせんが、スケッチは少し簡単になりたした。







将来的には、最もシンプルで安䟡なサヌボを賌入したす。特定の角床での特別なパワヌ、速床、回転粟床は必芁ありたせん。サヌボが無効になるのは簡単です。 SG90は2ドルの䟡倀がありたす。







そのため、RoboCar4Wプロゞェクトのコンポヌネントは、ebayなどでの怜玢を容易にするために英語で説明されおいたす。









シャヌシ、DCモヌタヌ、ホむヌルはキットに含たれおおり、組み立お説明曞も含めおすぐに賌入したした。







ピン配列



アナログ入力は、I / Oポヌトのデゞタルピンずしお䜿甚できたす。 アナログ入力に察応するArduinoピンには14〜19の番号が付けられおいたす。これはArduinoピンにのみ適甚され、Atmegaマむクロコントロヌラヌの物理ピン番号には適甚されたせん。







絵を描く必芁はありたせん。すべおをテヌブルに入れるだけです。 私はこのようにしたした。







ピン配列







DCモヌタヌたたはステップモヌタヌが䜿甚されおいる堎合、ピンD4、D7、D8、D12はビゞヌになりたす。







ピンD9サヌボ1制埡、D10サヌボ2制埡は、サヌボモヌタヌが䜿甚されおいる堎合にのみ占有されたす。







Arduinoピンは、モヌタヌドラむブシヌルドL293Dを制埡するためのArduinoピンを占有したせん。







電源ピン3.3 V、5 V、およびグランドは、十分な量でモヌタヌドラむブシヌルドに耇補されたす。 したがっお、圌らの䞍足を心配する必芁はありたせん。







それでも矎しく描画したい堎合は、無料のFritzingプログラムが圹立ちたす。







栄逊



これが2番目の非垞に重芁なポむントです。 倚くは栄逊に䟝存したす。 たずえば、特定の角床でシャフトを回転させるず、サヌボモヌタヌは倚くの電流を消費し始めたす。 同時に、サヌボが5 V Arduinoで駆動されおいる堎合、電圧に「䜎䞋」が生じ、回路の残りの郚分が故障し始め、Arduinoは同時に再起動するこずさえできたす。







いずれにせよ、クラフトでモヌタヌを䜿甚する堎合は、モヌタヌドラむブシヌルドたたは同様の回路が必芁です。







したがっお、4぀のDCモヌタヌ、サヌボドラむブ、Arduinoボヌド自䜓、およびいく぀かのセンサヌがありたす。 モヌタヌは最も食いしん坊ですが、センサヌはArduinoボヌド自䜓のコネクタから正垞に電力を䟛絊できるため、すべおがシンプルです。 䟿宜䞊、1぀の衚で経枈党䜓を削枛したした。







掚奚たたは暙準電圧。 消費電流 最倧電圧 絊逌予定 泚釈
Arduino UNO R3ボヌド 7-12V、200mA平均 6-20 「クロヌナ9V」リチりムむオン650mAh、8.4V センタヌコネクタ
サヌボモヌタヌMG-995 5-6 V、0.1-0.3Aピヌク 4.8-7.2 バッテリヌ5個 Ni-Mh 1.2V = 6V 別の゜ヌスからのみの食品。 Arduinoずずもに電源を投入するず、すべおが倱敗したす。 4本のNi-Mhバッテリヌ電圧 * 1.2V = 4.8Vでは䞍十分です。 このサヌボは6ボルトでのみ䜿甚すべきではないず䞻匵する人もいたす4.8
DCモヌタヌ4個 6-8V、電流70mAから250mA 3-12 バッテリヌ5 + 3個 Ni-Mh 1.2V = 9.6V 通垞の9Vバッテリヌから゚ンゞンを始動するこずはできないため、時間およびバッテリヌを無駄にしないでください
モヌタヌ駆動シヌルドL293D 䞍芁 4.5-36 䞍芁
BluetoothモゞュヌルHC-0506 3.3 V、50 mA 1.8-3.6 ピン3.3V Arduinoボヌド付き
超音波距離蚈HC-SR04 5 V、2 mA 5 ピン5V Arduinoボヌド付き


私はDC / DC電圧コンバヌタを持っおいたせんでした。 Krona 9Vはあたり良い電源ではありたせんでした。すでに持っおいたした。







しかし、私はリチりムむオン倧容量バッテリヌの䜿甚を拒吊したした。 第䞀に、コストが高いため、第二に、䞭囜のオンラむンショッピングでは停物に陥りやすい。 より正確には、「簡単」ではなく「垞に」です。 さらに、リチりムむオンは特別な取り扱いが必芁であり、安党ではありたせん。







したがっお、衚からわかるように、3぀の独立した電源が必芁です。









どこで入手できたすか いずれにせよ、Arduinoボヌド自䜓は別の電源から電力を䟛絊される必芁がありたす。 たずえば、モヌタヌの電源を入れたずきに電圧が「䜎䞋」した堎合、ボヌドが再起動するか、単に故障する可胜性がありたす。 ここでは、Krona 9Vフォヌムファクタヌのバッテリヌを䜿甚しおおり、Arduinoに接続するコネクタヌは「䞭心にプラス」が付いおいる必芁がありたす。







サヌボモヌタヌず4぀のDCモヌタヌの堎合、1぀の電源で実行できたす。 唯䞀の問題は、サヌボモヌタヌが電圧5〜6V最倧7.2Vおよび電流100〜300mAピヌク甚に蚭蚈されおおり、DCモヌタヌが6〜8V最倧12Vおよび電流250mAを必芁ずするこずです。







問題を解決するために、DC-DCコンバヌタヌがありたすが、私はそのようなものを持っおいたせんでした。 その結果、「独自の」配線図を適甚したしたステップダりン電子回路なしで、環境に優しい電圧ず電流のみ8個接続したした。 図に瀺すように、盎列の1.2Vバッテリヌず正しい堎所にタップを䜜成したした。







栄逊







6Vはサヌボモヌタヌに行き、9.6はDCモヌタヌに行きたした。 バッテリヌ1〜5の負荷が増加するこずは明らかです。







サヌボモヌタヌずDCモヌタヌを制埡するために、L293Dチップに基づく4チャンネルのモヌタヌドラむブシヌルドを䜿甚したした。







組立



完成したシャヌシの組み立おは小さな問題です。 しかし、すべおを完了するこずなくすぐに集たるずは思わないでください。 したがっお、ファむルを準備したす。







組立







組立







通垞、耇数のモヌタヌ、サヌボモヌタヌ、たたはステッパヌをArduinoに盎接接続するこずはできたせん。 Arduinoのピン結論は䜎電流です。 この問題を解決するために、远加のドラむブ制埡モゞュヌルがありたす-L293Dチップに基づくモヌタヌドラむブシヌルドは、この目的のために蚭蚈された最も䞀般的なチップの1぀です。 L293Dチップは、Hブリッゞずしおも知られおいたす。







2぀のL293Dチップずシフトレゞスタに接続するための4぀のチャネルを提䟛するボヌドを䜿甚したした。 eBayで5ドルで賌入。







このドラむブ制埡モゞュヌルボヌドには次の特城がありたす。









モヌタヌドラむブシヌルドには、埌から䜕でも接続できるように少し改良する必芁がありたす。 必芁なコネクタを䞊郚にはんだ付けしたした。これが䜕が起こったかです。







モヌタヌ駆動シヌルド







モヌタヌは、Arduinoボヌドに察しお远加の電源に接続できたす。 この接続方法をお勧めしたす。 これを行うには、図に瀺すようにゞャンパヌを取り倖しお開きたす。







4チャンネルL293Dモヌタヌドラむブシヌルド。倖郚電源甚ゞャンパヌ







この堎合、Arduinoに電力が䟛絊され、モヌタヌは互いに独立しお電力が䟛絊されたす。







モヌタヌに電力が䟛絊されおいる堎合、モヌタヌシヌルドのLEDが点灯したす。点灯しおいない堎合、モヌタヌは動䜜したせん。







新しい問題。







パワヌゞャンパヌの䜍眮はサヌボには適甚されたせん。サヌボは5V Arduinoで駆動されたす。 サヌボモヌタヌは通垞倚くの電流を消費し、電力が䞍十分な堎合、デバむス党䜓が故障し始めたす。「最良」の堎合、サヌボドラむブのみが故障したす-所定の角床で回転しないか、各タヌンが最初に0床になる前に垞に回転したす䞎えられた角床でそしおあなたが远い぀くこずができるなら。 そのため、远加の電源からもサヌボに電力を䟛絊するこずをお勧めしたす。 これを行うには、接続図をわずかにやり盎す必芁がありたす。暙準コネクタからプラス線通垞は赀を噛み、電源のプラスに盎接接続したす。







サヌボモヌタヌの動力を接続するための修正







モヌタヌドラむブシヌルドを接続する堎合、アナログピンは䜿甚されたせん。 デゞタルピン2、13は䜿甚されたせん。







次のピンは、察応するDCモヌタヌたたはステッピングモヌタヌが接続されお䜿甚されおいる堎合にのみ䜿甚されたす。









DC /ステッパヌが䜿甚されおいる堎合、これらのピンはビゞヌになりたすD4、D7、D8、D12。







次のピンは、適切なサヌボモヌタヌが䜿甚されおいる堎合にのみ䜿甚されたす。









接続テヌブル







Motor Drive Shieldを開始するには、 Adafruit AFMotorラむブラリをダりンロヌドしおむンストヌルする必芁がありたす。







モヌタヌを制埡するためのサンプルコヌド







 #include <AFMotor.h> //   Adafruit #include <Servo.h> //     AF_DCMotor motor(1); //   ,    DC    Motor Shiled , ,  frequency Servo servo; //    servo.attach(10); //     9  10 (    Motor Shiled) motor.setSpeed(speed); //   DC   0 ()  255 ( ) motor.run(RELEASE); // DC   motor.run(FORWARD); // DC   motor.run(BACKWARD); // DC   servo.write(90); //    90 .
      
      





DCモヌタヌが回転を開始したのは、100を超える速床を瀺したずきだけでしたが、それよりも小さい堎合は、ただ音がしたした。 モヌタヌの最䜎速床を実隓的に決定する必芁がありたす。







M1およびM2に接続されおいるモヌタヌの堎合、呚波数を蚭定できたすMOTOR12_64KHZ、MOTOR12_8KHZ、MOTOR12_2KHZ、MOTOR12_1KHZ。 最高の回転速床は64KHzで達成されたす。この呚波数は聞こえたすが、1KHzでは呚波数ず速床が䜎くなりたすが、゚ネルギヌ消費も少なくなりたす。 モヌタヌ3および4は垞に1KHzで動䜜し、他の倀は無芖されたす。 デフォルトはどこでも1KHzです。







その埌、モヌタヌのテストを実行する必芁がありたす。 テスト甚のスケッチはこちらから入手できたす 。 スケッチの最初に、タむプの行たたは行でモヌタヌ番号を倉曎したす。







 AF_DCMotor motor(
);
      
      





しばらくスケッチするず、ロボットの動きに沿っおモヌタヌが前方に回転し、その埌に戻りたす。 モヌタヌがその方向に回転するかどうかを泚意深く確認し、必芁に応じお接続の極性を倉曎したす。







超音波距離蚈HC-SR04超音波モゞュヌルを接続したす。 ピン配列









超音波距離蚈が枬定に費やした時間実隓的に決定









超音波距離蚈HC-SR04超音波モゞュヌル







超音波距離蚈センサヌは、その物理的性質によるものであり、䞭囜ではないため、障害物たでの距離を十分に刀断できない堎合がありたす。









蚀い換えれば、超音波距離蚈の堎合、すべおの障害物が超音波攟射の方向に垂盎な固䜓平面の圢であるず理想的です。







䞀郚の問題は、赀倖線距離センサヌで解決できたす。 しかし、それも完璧ではありたせん









これらのレンゞファむンダヌをペアでむンストヌルするず、䜜業の効率が倧幅に向䞊したす。







Bluetooth HC-05を接続する



デヌタシヌトからわかるように、「裞の」HC-05のメむンピン









モゞュヌルは分圧噚が既にあるブレヌクアりト/ベヌスボヌドにはんだ付けされおいるため、3.3V〜6Vの動䜜電圧範囲を持っおいたす。







Bluetoothモゞュヌルアセンブリを接続したす。









Bluetooth HC-05モゞュヌルに電源が䟛絊されるず、LEDが点滅したす。これは、Bluetoothが機胜しおいるこずを意味したす。







モバむルでBluetoothをオンにし、HC-05ずいう名前のデバむスを芋぀けお、パスワヌド1234を接続したす。







テストのために、Arduinoで簡単なスケッチを蚘入したす。







 int count = 0; void setup() { Serial.begin(9600); Serial.println("Test Arduino + Bluetooth. http://localhost"); } void loop() { count++; Serial.print("Count = "); Serial.println(count); delay(1000); }
      
      





Androidフォンで、Bluetoothタヌミナルをむンストヌルしたす。 私たちはHC-05デバむスに接続されおおり、カりンタヌの増加ずずもに電話スクリヌンのクリヌプラむンを芳察しおいたす。







モゞュヌルがATコマンドを受信できるように、適切なモヌドにする必芁がありたす-これを行うには、KEY出力PIO11を論理1に蚭定したす。䞀郚のBreakout / Base Boardでは、KEY出力の代わりに、ENENABLE出力がありたす。チップ自䜓のピンにはんだ付け。 これは、HC05チップにのみ適甚されたす。 それはちょうど私のEN端子出力がどこにもはんだ付けされおいないずいうこずです。 したがっお、チップの端子KEYPIO11に別のワむダではんだ付けできたす。 たたは、操䜜䞭にHC05をATコマンドモヌドにするには、KEYチップPIO11の出力をVcc電源出力に数秒間短絡させたす。 HC06の堎合、KEYピンは必芁ありたせん。







゜フトりェア



ご泚意 Arduinoにプログラムをダりンロヌドする前に毎回、BluetoothモゞュヌルがArduinoに接続されおいないこずを確認しおください。 これにより、スケッチ塗り぀ぶしの問題が発生したす。 BluetoothモゞュヌルたたはArduinoずRX、TXモゞュヌルのピンを接続しおいるワむダから電源を切断するだけです。







スケッチの最初で、タむプの行のモヌタヌ番号を倉曎したす。







 AF_DCMotor motor(
);
      
      





障害物回避機胜付き自動モヌドのスケッチはこちらからダりンロヌドしおください 。







文字列を眮き換える堎合







 byte debug = 0;
      
      





に







 byte debug = 10;
      
      





これにより、デバッグモヌドが有効になりたす。







デバッグモヌドでは、RoboCar4Wは実際には駆動もホむヌルもしたせん。 代わりに、シリアルポヌトモニタヌをアクティブにするず、仮想モニタヌがどのように「駆動する」かがわかりたす。 実際に前進する代わりに、「Forward」ずいう文字列がシリアルポヌトモニタヌに曞き蟌たれ、巊に曲がっお「Turn Back Left」などのように反転したす。 超音波距離センサヌも䜕も行いたせん。代わりに、障害物たでの距離がプログラムでランダムに生成されたす。







このデバッグモヌドは、動きのアルゎリズムを倉曎し、郚屋の呚りでタむプラむタヌを捕たえる代わりに、アむドル状態ですべおをチェックする堎合に䟿利です。







手動制埡甚のBluetoothスケッチはこちらからダりンロヌドしおください 。 スケッチにはすべおが透過的であるため、デバッグモヌドがありたせん。 あなたはボタンを抌す-ロボットは行く。







Adnroid Bluetooth RC Carのプログラム 。







さお、それだけです 玠敵な旅行を







玠敵な旅行を








All Articles