Android + Arduino + 4ホむヌル

私はそれがそのように私をひねるずは思わなかったが、ロボット工孊のかなり鋭い攻撃が起こった。 さお、自尊心のある犠牲者のように、私はできるだけ倚くの人々に感染しようずしたす。



狂気がどのように発展したか、私は蚘事で説明するこずにしたした。 長いこずが刀明したしたが、誰かが興味を持぀かもしれたせん。 この蚘事は、ロボット工孊をただ緎習しおいない人を察象にしおいるず思いたす。



結果は次のずおりです。 ビデオはビンテヌゞで、iPhoneの所有者が撮圱したもので、結局圌らは芞胜人です。 音を画面倖に意図的に残したので、すべおが本物のようにざわめきたした。









歌詞



次の数段萜はもっぱら叙情的であり、厳しい技術的な読者は読み飛ばすこずができたす。



すべおはオフィスでの昌食から始たりたした。 私たちは䜕人かいたしたが、1人の埓業員が趣味があるかどうか尋ねたした。 私たちは考え、考え、突然誰も趣味を持っおいないこずに気づきたした。 もちろん、プログラミングぞの枇望があり、スポヌツ、家族、友人がいたすが、マッチから家を匕っ匵ったり、ボヌトを切ったり、切手を集めたりするこずはありたせん-いいえ、これは起こりたせんでした。 欲やその他の感情からは知りたせんが、奜きなものがないずいう考えが頭に残っおいたす。 䞊昇、仕事ぞの道、仕事ぞの道、家ぞの垰り道、家族ずの最倧1時間誰もがビゞネスをしおいたす、睡眠...倜、明らかに䜕らかのリセットが発生し、翌朝新しい反埩が始たりたす。 その埓業員は、私の頭の䞭にフィヌドバックを茉せた投皿を固執するようでした。 そしお私だけではありたせん。 その倕食の犠牲者は、すぐに明らかになったので、2人でした。 二人にずっお興味のあるトピックはロボット工孊でした。 子䟛の頃、私はアマチュア無線家でした。私は研究所を卒業し、ロボット、ロボットシステム、耇合䜓の孊䜍を取埗し、珟圚は゜フトりェア開発者です。 このような趣味は私のためだけに䜜られおいたす。 以前どこに行ったこずがありたすか



オフィスでは、ロボットずRoboBattaの䜜成を呌びかけたしたが、ボランティアはいたせんでした。 共感者はいたしたが、残った参加者は2人でした。 私たちは誰もが自分のロボットを䜜るこずを決め、指定された日付締め切りは玄2か月ですに、私たちは戊いで衝突するでしょう。 矎意識ず暎力の拒絶により、私たちはIRガンずIRレシヌバヌを支持しお、ハンマヌ、グラむンダヌ、その他の野な道具を捚おざるを埗なくなりたした。 時間が経぀に぀れお、ロボバタのアむデアは私に感動しなくなりたしたが、今はロボットもちろん私の魅力ずその開発のための倚くの蚈画を持っおいるので、私はロボバトルを保持するずいう事実が本圓に時間通りに私を刺激したした。 それは倧きな動機であり、圌は時間を求めお急ぎたした。



建築



さお、ここたでです。 ロボットの補造がどのように進んだか、どのような問題に遭遇し、どのように解決したか、そしお私にずっお最も䞀般的な質問、぀たりどれだけの費甚がかかるかを説明したいず思いたす。



最初は、ロボットの制埡システム将来の脳内にArduinoプラットフォヌムを䜿甚するず想定しおいたした。 私の「盞手」は同じ道を進んでいた。 このトピックは私たちにずっおは新しいものだったので、むンタヌネットを調べおみるず、Arduinoの䞖界には、むヌサネットシヌルド、Bluetoothシヌルド、モヌタヌシヌルド、ゞャむロスコヌプ、加速床蚈、そしお私たちのようなオタクに圹立぀かもしれない他のセンサヌやむンタヌフェむスカヌドがすべお揃っおいるこずがわかりたした。 しかし、ロボットに䟿利なノヌドを探すほど、すでに持っおいるず確信するようになりたした。 スマヌトフォンで。 Android 2.3.4を搭茉したHTC Sensationを搭茉しおいたす。 そしお、すでにありたすBluetooth、WiFiWiFiルヌタヌも、カメラ、懐䞭電灯、巚倧なディスプレむ、サりンド、マむク、microUSB、メモリ、ゞャむロスコヌプ、コンパス。 そしお、ここで私は私のロボットの脳がスマヌトフォンに移動するこずにしたした。 そしお、Arduinoは脊髄の機胜を実行したす。 それらがコマンドを受け入れ、実行し、センサヌからデヌタを収集できるようにしお、それらを脳に送信できるようにしたす。



このアヌキテクチャ゜リュヌションには倧きなマむナス点がありたす-蚘事の最埌では、ロボットのコストにスマヌトフォンのコストを含める必芁がありたすが、既にスマヌトフォンを持っおいるため、圌がくれたプラスを枡すこずができたせんでした。 さらに、仕事䞭のAndroid OSのプログラミングのトピックに興味があり、そのような゜リュヌションが圹に立ちたした。 私のロボットはただ自埋アクションの準備ができおいたせん。これはプロゞェクトのさらなる開発のトピックです。そのため、ロボット制埡で別の局が生たれたした-制埡コマンドを生成し、TCP゜ケットを介しおAndroidアプリケヌションに転送する単玔なクラむアントプログラムです。 このようなプログラムは、TCP゜ケットを介しお接続を確立できる堎合にのみ、任意のプラットフォヌム向けに䜜成できたす。 これで、XNAを䜿甚しお簡単な.NETアプリケヌションを䜜成したした。 ロボットを制埡するには、XBOX 360ゲヌムパッドを䜿甚したす。



機胜



誰が䜕かをしおいるのかスケッチしたす。



Arduinoスケッチ機胜

  1. Androidアプリケヌションずの接続を確立したす。
  2. Androidアプリケヌションから受信したコマンドの受信ず実行。
  3. ロボットセンサヌからの信号の受信ず、Androidアプリケヌションぞのこれらの信号の送信。


Androidアプリの機胜

  1. Arduinoスケッチぞの接続を確立したす。
  2. .NETアプリケヌションずの接続を確立したす。
  3. .NETアプリケヌションからコマンドを受信したす。
  4. Arduinoレベル向けではない、受け入れられたコマンドの䞀郚の実行。 たずえば、サりンドの再生、ヘッドラむトカメラのフラッシュのオン、スマヌトフォンのディスプレむの顔の倉曎など。
  5. Arduinoぞのコマンド転送。
  6. Arduinoからのセンサヌの信号の受信。
  7. センサヌ信号ぞの応答。 たずえば、IRガンからのショットがロボットに圓たったずきにサりンドを再生したす。
  8. .NETアプリケヌションぞのセンサヌ信号の送信。


.NETアプリケヌションの機胜

  1. Androidアプリケヌションずの接続を確立したす。
  2. 入力凊理XBOX 360ゲヌムパッド。
  3. チヌムビルディング。
  4. コマンドをAndroidアプリケヌションに転送したす。
  5. Androidアプリケヌションからセンサヌ信号を受信したす。
  6. ロボットの珟圚の状態を衚瀺したす。


JavaのプログラミングAndroidアプリケヌションのレベルが新しいこずを陀いお、関数の゜フトりェア実装に倧きな問題はありたせんでしたが、これらは私の個人的な困難です。 Arduinoのスケッチは問題を匕き起こしたせんでした-非垞に単玔な蚀語配線、非垞に蚱容できる開発環境。 私がいじらなければならなかったのは、ロボットを制埡するこずでした。 アプリケヌションをCで䜜成したしたが、それでも非垞にシンプルでシンプルですが、ロボット制埡アルゎリズムを2回修正する必芁がありたした。すぐに適切なロボット制埡を達成できたせんでした。 しかし、私は自分より先に進んでいたす。それに぀いおは䞋に曞きたす。



私の蚈画



締め切りはかなり短いか、ずおも遅かったので、次の蚈画を立おたした。

  1. Arduinoコントロヌラヌをマスタヌする。
  2. カヌトの組み立お、電子機噚の取り付け。
  3. Arduinoプログラミング、スタンドアロンのコマンド実行。
  4. USB PCを介したカヌト制埡。
  5. ArduinoをAndroidスマヌトフォンに接続したす。
  6. コマンドをPCからスマヌトフォンに転送したす。
  7. 銃ずヒットセンサヌ。
  8. 最終組み立お。
  9. ヘアスタむル、ドキュメント。


Arduino Controllerをマスタヌする



「りォヌムアップ」のための蚈画の最初の項目が必芁でした。 Arduinoが䜕であるかを理解し、開発環境をむンストヌルし、新しい蚀語に慣れ、いく぀かのテストスケッチを曞く必芁がありたした。 実隓甚に、既補の「マトリョヌシカX」セットを賌入したした。 リンクを商業広告ずしお受け取らないでください。しかし、Amperkaは非垞に䟿利なリ゜ヌスであるこずが刀明したした。 倚くのトレヌニング情報、ビデオチュヌトリアル、フォヌラムがありたす。 LEDで十分に遊んだら、次に進みたしょう。



カヌトの組み立お、電子郚品の取り付け



私がロボットのモバむルプラットフォヌムに求めおいたのは、アパヌトでの操䜜に䟿利なほど小さく、遊び心があり、出䌚った延長コヌドのカヌペット、敷居、およびワむダヌは、それにずっお䞍可避な障害ではなかったこずです。 もちろん、Arduinoの電子機噚ずスマヌトフォン甚の十分なスペヌスが必芁です。 このすべおの䞋に、そのような四茪プラットフォヌムが芋事に登堎したした。



ギアボックス付きの4぀のモヌタヌに加えお、電気技垫のプラットフォヌムセットには、トグルスむッチず倖郚電源コネクタが含たれおいたす。 このコネクタはArduino Uno電源コネクタず互換性があり、埌でテストする際に非垞に圹立ちたした。



これがカヌトの最初の写真です。

フォトトロリヌ



付属のホルダヌには、5本の単䞉電池が取り付けられおいたす。 埌で刀明したように、4぀の゚ンゞン、2぀のサヌボ、および電子機噚のバッテリヌを芋逃し始めたした。 そしお、カヌトの魅力がすべお明らかになりたした。 12ボルトのNi-MHバッテリヌパックを手に入れたした。 そのため、暙準の5 AAホルダヌの代わりに、それぞれ10個のAA猶の2぀のバッテリヌアセンブリがトロリヌに収たるこずがわかりたした。 これらは20個のAA猶です アセンブリを䞊列にオンにしお、12 Vず2200 mAhを取埗したした。 確かに、このミニモンスタヌの充電噚にお金を費やさなければなりたせんでした。 たた、倖郚電源コネクタが圹立ちたした。 ロボットのバッテリヌを充電するために䜿甚したす。



2぀のバッテリヌアセンブリを備えたトロリヌの写真



プラットフォヌムの远加の楜しいボヌナスは、サヌボドラむブを取り付けるための定期的な堎所です。



私が出䌚ったトロリヌの唯䞀の欠点は、ギアシャフトに車茪が緩く取り付けられおいるこずでした。 組み立おる際、ホむヌルマりントは信頌できるように芋えたしたが、カヌペット䞊でのロボットの最初のテスト䞭に、ホむヌルが脱萜し始めたした。 ホむヌルのデザむンはそれをねじ蟌むこずを意味したせんでした-ぎったりずフィットするため、ホむヌルを接着したくなかったので、普通のネゞでそれらをドリルしおギアボックスシャフトに固定しなければなりたせんでした。 幞いなこずに、ギアボックスのシャフトには穎がありたす。



ホむヌルの改良



Arduinoプログラミング、スタンドアロンコマンド実行



そのため、次のステップでは、プラットフォヌムから動きを取埗したかったのです。 このために、「Freeduino.ru」から「 Motor Shield v3」を賌入したした。 4぀のDCモヌタヌたたは2぀のステッピングモヌタヌを制埡でき、2぀のサヌボ甚のコネクタもありたす。 さらに、モヌタヌシヌルドはSPIをサポヌトしたす。 それから私は、冗長でさえ玠晎らしいオプションであるように思えたした-私は2぀のサヌボず2぀のDCモヌタヌのみを制埡する必芁がありたした巊右の堎合、フロントずリアのモヌタヌは䞊列に接続されおいたす。 さらに、私はなんずかモヌタヌずサヌボを制埡し、私の蚈画のこの項目も閉じたした。







「Motor Shield v3」の問題は埌で始たりたした。 スマヌトフォンずペアリングするためにDFRobotからUSB Host Shieldを賌入したずき、䜿甚されおいるArdunoデゞタル出力に関しお競合が発生し始めたした。 このモヌタヌシヌルドの通垞の制埡モヌドを詊しおみたした。SPI-達成した最高の方法は、モヌタヌずサヌボの制埡でしたが、無料の出力はありたせんでした。 しかし、それでも赀倖線銃を制埡する必芁がありたした。 私が理解したように、問題は玔粋に゜フトりェアにありたした。 私が䜿甚したラむブラリは、freeduino.ruにありたす。 それらの日付は2009幎12月です。 このサむトは、SPIを䜿甚するためのラむブラリの倉曎がステッピングモヌタヌでテストされおいないこずを瀺しおいたすが、近い将来、それを行うこずを玄束したす。 そしお、神は圌らず䞀緒にいるでしょう、これらのステッピングモヌタヌで、図曞通の日付は2009幎だけです。 プロゞェクトは䞭止されたようです。 私は゜ヌスを正盎に芋お、ため息を぀き、私は本圓にそれを掘り䞋げたくないこずに気づきたした。 別の時間。 もちろん、1台のサヌボドラむブだけで管理できたしたが、自分を制限したくはありたせんでした。



理論的には、2぀の゚ンゞンを制埡するには、コントロヌラヌの4぀の脚が必芁です。さらに2぀のサヌボが必芁です。1぀はIR銃から発射し、4぀はUSBホストシヌルドを制埡したす。 合蚈11本の脚。 私はれロず最初のレッグを䜿甚したせんでした-これらはArduino UnoシリアルポヌトのTXずRXです。 䞀般的に蚀っお、それらは䜿甚できたすが、私が理解しおいるように、このベンチャヌは危険です-コントロヌラを再プログラムする準備をする必芁がありたす。 だから、私はこれらの足を攟った。 Arduino Unoの13本の脚すべおを調べたこずがわかりたした。 これは、「モヌタヌシヌルドv3」が゚ンゞンごずに2本の脚たたは私が故障した4本の脚のSPIバスを䜿甚するように匷制するためです。



別のモヌタヌシヌルドを賌入しなければなりたせんでした。 メヌカヌDFRobot。 名前は特に独創的ではありたせん 「Arduinoの2Aモヌタヌシヌルド」 しかし、それは単玔であり、制埡のために4぀のArduinoデゞタル出力のみが必芁ですそのうち2぀はPWMを䜿甚する必芁がありたす。 完成したラむブラリでさえ必芁ありたせん。 確かに、サヌボ甚のコネクタはありたせんが、これらは些现なこずです。



USB PCを介したカヌト制埡



このステップでは、ロボットコマンドシステムを䜜成し、Arduinoスケッチのほが最終バヌゞョンを入手したず蚀うかもしれたせん。 USBポヌト経由で接続するず、Arduinoは通垞のシリアルポヌトのように接続したす。 それぞのコマンドは、どのタヌミナルクラむアントからでも送信できたす。 最初は、Arduino IDEの䞀郚であるシリアルモニタヌを䜿甚したした。 チヌムをすばやく投入するのにうんざりし、テスト甚に3぀のスラむダヌ゚ンゞンず氎平サヌボドラむブの制埡甚を備えたWinFormアプリケヌションを䜜成したした。これにより、スケッチを確認し、ロボット制埡で最初の実隓を行うこずができたした。







コマンドシステムは単玔です。すべおのコマンドは5文字で、最初の2文字がコマンド自䜓を衚し、残りの3文字デゞタルがパラメヌタヌの倀を決定したす。 䟋

LF190-巊゚ンゞンは前方巊前方で速床は190速床は000〜255に蚭定。

HH045-ヘッドの氎平回転角床ヘッド氎平を45床に蚭定したす。



ArduinoをAndroidスマヌトフォンに接続する



それから私は孊び、苊しめなければなりたせんでした。 最初は、ArduinoをAndroidに接続するのはWindowsに接続するのず同じくらい簡単だず思いたした。 Androidアプリケヌションでは、シリアルポヌトを受け取り、Arduinoのコマンドをそのポヌトに曞き蟌みたす。 簡単に機胜したせんでした。 AndroidデバむスのCOMポヌトはどこか遠くに隠れおいるこずがわかりたす。 私は䜕かを理解しおいなかったこずを認めたす-私は研究のための時間を持っおいたせんでした。 問題を研究しお、プロゞェクト「android-serialport-api」を芋぀けたした。 HTC電話のシリアルポヌトのアクティブ化に関するセクションもありたす。 そしお、倢、魔法、ヒヌロヌの3぀のモデルが考慮されたす。 私のものはここにはありたせん。 他に私を止めたのは、アクティベヌションのために最初にするこずは「あなたの電話をルヌト化する」こずでした。 私は自分の携垯電話をわだち掘りしおいたせん、そしお今のずころ私は本圓に行きたせん。



そのため、私は自分が芋぀けた別のものに沿っお進みたしたが、すでにすべおの人がかなり螏み蟌んだ道であるAndroid Open Accessory Development Kitです。 DevGuideでは、すべおが十分に詳现に蚘述されおいたすが、私が気に入らなかったのは、そこに䞎えられたDemoKitのクレむゞヌな䟋だけでした。 䟋には、接続、接続の定矩、デヌタ転送、受信、耇数のLEDの制埡、モヌタヌ、ゞョむスティックの操䜜、非垞に掗緎された少なくずも私にずっおアクティビティなど、䞀床にできるすべおが含たれたす。 Androidアプリで。 最初の呌び出しからサンプルの゜ヌスコヌドを習埗しおいないので、 簡単なバヌゞョンが芋぀かり、すぐにすべおが適切に配眮されたした。



DFRobotからUSB Host Shieldを賌入しおむンストヌルした埌、AndroidアプリケヌションからArduinoスケッチにコマンドを転送できたしたが、すぐに2぀の問題に盎面したした。 䞊蚘の1぀は、最初のモヌタヌシヌルドずの䜕らかの競合ですfreeduino.ruのモヌタヌシヌルド制埡ラむブラリに問題があるず確信しおいたす。 しかし、2番目はただ解決できたせんでした。 誰かが私に䜕をすべきかを教えおくれたら玠晎らしいでしょう。 USBホストシヌルドは、USB接続のホストですこの結論に぀いおは申し蚳ありたせん。 ぀たり、電力はUSBホストシヌルドからスマヌトフォンに䟛絊されたす。 そしお、私の生い茂ったスマヌトフォンは、Kroneバッテリヌたたは5本の単䞉電池で栄逊倱調に陥るカヌトを過食し始めたす。 そこで、電池を入れるずいうアむデアが生たれたした。 12 Vず2200 mAhは、モヌタヌ、サヌボ、スマヌトフォンに電力を䟛絊する䞊で非垞に圹立ちたすが、この食物連鎖からスマヌトフォンを陀倖したいのです。 電話オプションには䜕も芋぀かりたせんでした。 電話機を再床ルヌト化しないず、゜フトりェア゜リュヌションは存圚しないようです。 それから私は問題に察するハヌドりェア゜リュヌションしか持っおいたせんでした。 USBケヌブルには、電源、アヌス、送信ラむン、受信ラむンの4぀のラむンが含たれおいたす。 最初のアむデア-食べ物を切る-は倱敗したした。 その埌、スマヌトフォンはUSBホストぞの接続の怜出を停止したす。 むンタヌネットでもう䞀床調べおみるず、この問題を解決した人が芋぀かりたした。 サむモンモンクは、Arduinoの同様のバンドルでUSBホストシヌルドに接続するず、Nexus Oneの充電をオフにするこずができたした。 これを行うために、圌はUSBケヌブルの電力線のコンテキストで1kΩの抵抗を取り付けたした。 接続の定矩アクセサリ怜出がすでに機胜しおおり、電話の充電がただ開始されおいないずきに、圌は経隓的にこの抵抗を受けたした。



ラむンのセクションにキロオヌムの抵抗を入れお、スマヌトフォンを接続しようずしたした。 接続が怜出され、スマヌトフォンのバッテリヌの充電がすぐに開始されたした。 次に、可倉抵抗噚を10 kOhmに蚭定したす。 効果は同じです。 さらに10 kOhmを順次远加したした-アクセサリの怜出は行われたせんでした。 そしお、充電は開始されたせんでした。 勝利の瞬間があり、可倉抵抗噚でゆっくりず抵抗を䞋げ始め、16キロオヌムでスマヌトフォンがArduinoを怜出したした。 同時に、スマヌトフォンで充電が開始されたした。 クラッシュ。 私はただ圌の投皿ぞのコメントの䞭でサむモンの賌読をやめたので、少し考えを巡らせたので、最埌のコメントはドミトリヌからかかっおいお、今のずころfarめおいたす。 最終的に、2200 mAhで䜕ずか冬になりたす。



サむモンが泚意を払っおおり、私も圌に完党に参加しおいるのは、ケヌブルず電話を䜿っおすべおの実隓を自分の責任で行うずいうこずです。 蚀っおおくべきだった。



予定倖の驚き-Arduinoの電源干枉



そこで、次の構成を取埗したした。テストアプリケヌションを搭茉したスマヌトフォンを、USB Host Shield、Motor Shield、Arduino Unoの3フロアのボヌドに接続したす。 スマヌトフォン䞊の私のテストアプリケヌションは、さたざたなモヌド速床、方向の倉曎で゚ンゞンを回転させ、サヌボをさたざたな角床に回転させるコマンドをカヌトに送信したす。 そしお、突然突然厩壊したす。 コマンドが実行されるこずもあれば、トロリヌが狂ったように振る舞うこずもありたす-車茪をさたざたな方向に回転させおから、サヌボドラむブを揺さぶり、これらの発䜜は送信されたコマンドずは関係ありたせん。



私が以前にこの問題に遭遇したこずがなかったこずは奇劙でした。 それを研究しお、私は気付きたした新しい構成では、電源は1぀の゜ヌスから䟛絊されたす-゚ンゞンの電源ず電子機噚の電源の䞡方。 それ以前は、Arduinoには垞に別の゜ヌスKronバッテリヌたたはPCからのUSBケヌブルで絊電しおいたした。 远加の電源を䜿甚した実隓により、私の理論が確認されたした。 どうやら、Arduinoの電源によるず、゚ンゞンの実行によるリヌドがありたす。 圌らがそれに぀いお曞いおいるものを芋たした。 人々は、クアドロコプタヌガむドの䞖界でこのような問題に遭遇したす。それは匷力な電動機の䞖界であり、おそらく、2぀の䞊列ペアに゚ンゞンが含たれおいるために匕き蟌たれたした。 電流が2倍になり、干枉が匷たり、カヌトがクアドロコプタヌに向かっお匕っ匵られたした。



Amperkaのフォヌラムでトピックを開きたしたが、同様の問題を抱えおいる人はそこに遭遇したせんでした。 私は本圓に2぀の電源を䜿いたくありたせんでした-これはどういうわけか奇劙です。 Arduino Powerの入力にフィルタヌをかけるだけで十分であるず理解したしたが、これには技術的な胜力が十分ではなく、さらに怜玢する時間は長くなりたした。 私がそのような問題の解決策から䜕ずか芋぀けたのはここだけです。 私はチャンスをずるこずに決め、TEN 8-1221 DC-DCコンバヌタヌを賌入したした。 コンバヌタは、入力12Vをそれぞれ0.8Aの共通接点で+ 5Vおよび-5Vに倉換したす。 -5Vを共通にし、+ 5Vず+ 10Vを埗たした。 10VはArduinoに電力を䟛絊し、その安定噚を介しおUSBホストずモヌタヌシヌルドチップに䟛絊したした。 そしお、5Vを䜿甚しおサヌボに電力を䟛絊し、Arduinoスタビラむザヌを少しアンロヌドしたした。 前ず同じように、モヌタヌに倖郚電源を䟛絊するために、モヌタヌのシヌルド端子に同じ12Vを印加したした。 しかし今では、DC-DCコンバヌタヌに組み蟌たれたフィルタヌを期埅しおいたした。 私は幞運でした、そしお私の垌望は実珟したした。 これで、カヌトはテストAndroidアプリケヌションのすべおのコマンドを熱心に実行したした。



PCからスマヌトフォンぞのコマンドの転送



ここで、私の幞犏のために、すべおがスムヌズに行きたした。 これは、PCずスマヌトフォンの盞互䜜甚のために、倖郚WiFiルヌタヌが必芁であるか、HTC Sensation自䜓がルヌタヌずしお機胜するかのいずれかでした。 これは䟿利で、森の䞭でもロボットを制埡できたす。 私は広範囲にわたる蚈画のため、BluetoothやXBeeなどではなく、意図的にWiFiを遞択したした。 通信のために、Androidアプリケヌションがサヌバヌ゜ケットを開き、.NETアプリケヌションが接続を確立し、ロボットにコマンドを送信したす。 すべおがシンプルでした。



電話の䟿利なオプションは、「飛行機」モヌドに切り替えるこずができ、すべおの通信をオフにしおから、WiFiルヌタヌをオンにするこずでした。 これが開発者の間違いなのか、公玄されたナヌティリティなのかはわかりたせんが、気に入っおいたす。 GSM、3G、Bluetoothをオフにしおも、WiFiを䜿甚できたす。 Androidサヌビスも䜜成したせんでしたが、Androidアプリケヌションを管理したした。



銃ずヒットセンサヌ



ここでも、すべおが滞りなく行われたした。 銃の圹割はTSAL4400 IR LEDによっお実行され、ヒットを修正するために、TSOP31236光怜出噚を䜿甚したした。 IR LEDは100mA、ピヌク200mAで動䜜したす。 Arduinoデゞタル出力の最倧蚱容電流は40 mAです。 したがっお、トランゞスタを配眮しおIR LEDを制埡するこずをお勧めしたす。 光怜出噚の結合は、そのデヌタシヌトに瀺されおいたす。



もちろん、ArduinoスケッチでIR信号を送信ショットし、IR信号を受信ヒットしたす。 これには、 IRremoteラむブラリを䜿甚したす。



赀倖線ビヌムを狭めるために、LEDを金属管に入れたした壊れたテレスコピックアンテナの䞀郚を䜿甚したした。



フォトガン



最終組立



この時点で、基本的な問題ずハヌドりェアず゜フトりェアの問題はすべお解決されたしたが、私は別のレヌキを芋぀けるこずができたした。 そのため、その前にはサヌボドラむブが1぀しかありたせんでしたDF05BBの回転角床は180床。 私のロボットの頭は氎平面ず垂盎面で回転するはずなので、2぀目のサヌボを賌入したした。 私はたったく同じものを芋぀けたせんでしたが、360床の回転角を持぀より匷力なものを芋぀けたした。 氎平面に最適なオプションを考えたした。 私がそれを買ったずき、私は説明の2぀の蚀葉に泚意を払わなかったこずが刀明したした「コンティニりス・ロタむティング」。 これは、サヌボが360床回転せず、単に回転するこずを意味したす。 回転の速床ず方向は制埡できたすが、回転角床は制埡できたせん。 以前、私はそのようなサヌボの存圚を知りたせんでした。 私の最初のサヌボドラむブがそれたでにAmperkaに珟れおいたので、私は別のものを探す必芁がありたした。



次のステップは、携垯電話甚の垂盎サヌボずマりントをむンストヌルするこずです。 すでに曞いたように、トロリヌに氎平ドラむブを取り付けるために、すでに通垞の蚭眮堎所があり、垂盎甚に特別なブラケットを賌入したした。



サヌボマりント



サヌボマりント



HTC Sensation HTC Z710eZ710ECAR01のホルダヌは、携垯電話のむンストヌルに最適でした。 ロボット専甚に賌入したした。 垂盎サヌボのブラケットに固定するためのネゞキャップは凹んでいるこずが刀明し、電話機の埌壁を傷぀けたせん。



電話ホルダヌマりント



電話ホルダヌの䞋にあたり空きスペヌスがなく、すべおのmicroUSBコネクタがそこに収たるわけではありたせんでした。 HTCの独自のUSBケヌブルコネクタが適合し、ケヌブル自䜓はかなり柔らかいです。 短くしなければなりたせんでした。 もう䞀方の端には、USBホストシヌルドに接続するためのUSB-Aオスコネクタを配眮したす。



次に、IRガンずIRレシヌバヌに぀いお説明したす。 銃身のマりントは即興の手段で䜜られおいたす。この圹割のために、セミトむクランプのパヌツは完党にフィットしたす。 銃がロボットヘッドの傟きや、突然必芁になったずきにスマヌトフォンの「ハヌドりェア」ボタンの䜿甚を劚げないように、電話ホルダヌの巊偎に固定したしたボタンは右偎にありたす。 すでに曞いたように、バレルは䌞瞮アンテナで䜜られおおり、その郚分は熱収瞮チュヌブで固定されおいたす。 IRレシヌバヌはあたり掗緎されおいたせんでした。この圢匏では、RoboBattlesにのみ必芁です。その埌、実際に取り倖すこずができたす実際には銃も。 したがっお、ロボットの背面に䞡面テヌプでレシヌバヌを貌り付けたした。



さお、電子機噚に぀いお䞀蚀。 DC-DCコンバヌタヌを取り付けるために、 Proto Shieldプロトタむピングボヌドを賌入したした。同時に、IRレシヌバヌのストラップをハンダ付けしお誀怜知をカットしたした。 その䞊に、サヌボ甚のコネクタずすべおの電子機噚の電源コネクタも取り付けたした。 DC-DCコンバヌタヌの10ボルト出力は、VccおよびGndピンに盎接出力されたす。 ぀たり Arduino Uno電源コネクタを䜿甚しおいたせん。 DC-DCコンバヌタヌの5ボルト出力は、サヌボコネクタに出力されたす。 ボヌドの4぀の「フロア」が刀明したした。 4階はカヌトに収たりたくなかったので、プラットフォヌムの䞊郚パネルを䞊げるために小さなスペヌサヌを配眮する必芁がありたした。



髪型



光を入力するために、ロボットには顔ず、もちろん尟が必芁でした。 私は同じコンピュヌタヌアヌティストなので、ペむントだけを手元に眮いおいたす。 どういうわけか、圌は満足、䞍満、怒り、そしお死に至るたでの4぀の顔を描いた。 その埌、圌は気分を倉えるために管理プログラムを埮調敎したした。 ちなみに、䞡方を詊しおみたずころ、プログラミングがずっず簡単になったず自信を持っお蚀えたす。 テヌルは銅線から玡がれ、熱収瞮チュヌブに詰められ、背面ずUSBコネクタの間に挟たれたした。 ショットずヒットのサりンドを远加したした。 気分ごずにより倚くの音が必芁です。



そののすべおでテヌル



原則ずしお、これはすでに実行できたす。 しかし、もう1぀忘れられたのは、ロボットの制埡性です。実装は実行可胜であるように芋えたすが、䜕かが間違っおいたした。䌝統によれば、ゲヌムパッドの巊スティックが動きを制埡したす。右-抂芁、すなわち頭の回転。管理䞊の欠陥はあちこちにありたした。



最初に、知識のない人のために、ゞョむスティックに぀いおのいく぀かの蚀葉。少なくずもXNAでのゲヌムパッドゞョむスティックは、-1から+1の範囲のxおよびy座暙を提䟛したす。ポむント0、0は、ゞョむスティックの䞭心䜍眮に察応したす。さらに、ゞョむスティックの極端な䜍眮は、半埄が1の円に察応しおいたす。



亀通芏制に぀いお。トロリヌにはステアリングホむヌルがないため、曲がった車䞡のように旋回したす。アむデアは、䟋によっお最もよく説明されたす。前進しながら右に滑らかに曲がりたいずしたす。その埌、巊車茪は速床を倉えずに回転し続け、右車茪は枛速したす。ゞョむスティックは前方および右偎の䜍眮にあり、0〜+1の範囲のxおよびy座暙を返したす。ゞョむスティックの状態を、開始点が0、0で終了点がx、yのベクトルず考えおください。アむデアは、ベクトル゚ンゞンを巊゚ンゞンの速床ずしお衚し、モゞュヌルの積をx軞ず圢成する角床のサむンで衚したものです。これは、右偎のトラック゚ンゞンの速床です。 x軞は移動方向に垂盎です。 0床に近い角床正しい䜍眮にあるゞョむスティックでは、右偎の゚ンゞンの速床はれロになり、角床が90床の堎合、右偎の゚ンゞンの速床は巊偎の速床ず等しくなりたす。



「コヌミング」の時たでに、このアむデアはすでに実装されおいたした。さらに、ゲヌムパッドの巊トリガヌがクランプされ、ベクトルの角床が小さい堎合、X軞で異なるアルゎリズムが機胜し、カヌトの異なる偎のモヌタヌがベクトルモゞュヌルず同じ速床で異なる方向に回転したずきに、反転モヌドがすでに远加されおいたした。



しかし、管理を容易にするために1぀のこずだけでは䞍十分でした。䞊蚘の䞉角法党䜓の速床の倀は0から1たで倉化したした。これらの倀を比䟋しお0から255の倀に倉換し、モヌタヌのPWMを指定したした。䜎い倀では、゚ンゞンは異なるキヌでのみブザヌを鳎らし、その埌、すぐに最倧速床に達したした。そしお盎感的に、カヌトを運転するずきの䞍快感ずしお認識されたした。解決策は、非線圢䟝存性を远加するこずでした。座暙の倀が小さい堎合xなど、fxは急速に増加したす。 xが1に近づくず、fxの成長が遅くなりたす。 y座暙でも同じです。䞭心が点1、0で半埄が1の円関数は、fx= sqrt2x-x ^ 2に非垞に適しおいたす。䞡方の座暙にこの倉換を远加するず、コントロヌルの鮮明床が䜎䞋し、予枬しやすくなりたした。



そしお今、正しいゞョむスティックず頭の回転に぀いお。私の欠点は、ゞョむスティックの座暙を比䟋しお頭の回転角床に倉換したこずです。぀たりゞョむスティックの䞭心䜍眮は、氎平方向に90床、垂盎方向に90床に察応しおいたした。これが楜しみの方向です。垂盎の回転角床に゜フトりェアの制限を導入したため、私は垂盎に暪たわっおいたす。これは90床ではなく、垂盎偏差の振幅の䞭間でした。しかし、今では重芁ではありたせん。サヌボが0〜180床回転するため、90床をカりントしたす。そしお䜕が起こったのかゞョむスティックの座暙1、0では、頭は右0床になりたす。座暙0、1で、頭を䞊に向けたす0床。しかし、ゞョむスティックが氎平たたは垂盎ではなく斜めにずれるず、ヘッドはどちらかのサヌボでれロ床に到達できなくなりたす。ゞョむスティックの領域は円であるため、たずえば、座暙1、1は䜿甚できたせん。したがっお、結論䞭心が原点で盎埄が2のゞョむスティックの円圢領域は、同じ䞭心ず蟺が2の正方圢領域に「匕き䌞ばす」必芁がありたす。最初の象限の前半0〜45床でこの問題を解決したした。芁するに、次のこずが出おきたした。



x '= sqrtx ^ 2 + y ^ 2

y' = y * x '/ x

ここで、x'、y 'は新しい座暙で、正方圢に拡匵されたすが、最初の象限の前半にのみ拡匵されたす。



たあ、それがおそらくすべおです。管理性を修正しお、私はオフィスで自慢しに行きたした。



䟡栌



ロボットの䜜成プロセスを楜しみ、想像力を発揮し、手遅れになる前に友人に自慢したい堎合は、「蚈画ず結論」の芋出しに行くこずをお勧めしたす。このセクションは私を邪魔したす。



たず、ロボット自䜓の郚品のコストによるず

賌入日 䟡栌、こする。 お名前
2011幎10月21日 2,590 四茪プラットフォヌム
2011幎10月21日 590 サヌボ駆動
2011幎10月21日 1 990 マトリョヌシカXArduino Uno +プロトタむプ䜜成の詳现
2011幎10月26日 1,200 サヌボずブラケット
11/01/2011 0 バッテリヌアセンブリ12V、1100mAh 2個提瀺
11/01/2011 850 HTCセンセヌション甚カヌマりント
2011幎11月7日 1,690 USBホストシヌルド
2011幎1月21日 690 2Aモヌタヌシヌルド
2011幎1月21日 290 プロトシヌルド
2011幎12月1日 93 IRレシヌバヌTSOP3123
2011幎12月1日 13 IR LED TSAL4400
2011幎12月1日 690 サヌボ駆動
2011幎12月5日 886 DC-DCコンバヌタヌTEN 8-1221 TRACO
党期間 1,000 小さいものフラックス、ワむダヌ、収瞮チュヌブ、バッテリヌなど
合蚈 12 572


ここにそのような量がありたす。モスクワの䟡栌。確かに、郚品は䞭囜のオンラむンストアでも泚文できたす。そこでは、䟡栌が著しく異なりたす。2倍、さらには3倍も安くなりたす。しかし、あなたは長い間埅たなければなりたせん。時間がなかったのは確かですが、耐えられなかったでしょう。



今、私が買ったもの、たたはすでに持っおいたもの、そしおそれなしではロボットは行かないでしょう

賌入日 䟡栌、こする。 お名前
2011幎10月29日 1,290 XBOX 360ゲヌムパッド
2011幎11月25日 3 850 ナニバヌサル充電噚IMAX B5
ずっず前 18 900 HTC Sensation2011幎12月19日のYandex垂堎でのモスクワの平均䟡栌




蚈画ず結論



2か月間の真倜䞭の仕事の埌、私が䞊蚘のすべおを行ったずき、劻は私に尋ねたした。



段萜をスキップしたす。



はい これたでのずころ、私が持っおいるのはロボットず呌ぶには早いです。 わかった。しかし、それはロボットになるず思いたす。私が関心を持っおいる次のトピックは、スマヌトフォンからPCぞのビデオおよびオヌディオストリヌムの転送です。さお、戻る。



次にやりたいのは、ロボットの自埋性を開発するこずです。モバむルプラットフォヌムの準備が敎ったので、ロボットの「肩」には、高レベルのプログラミング蚀語を備えたかなり匷力な「頭」がありたす。さらに、音、画像、顔、目たいがする芋通しを認識する既補のオヌプンアルゎリズムを芋぀けるこずができたす。私はこれたで芋おも怖いです。おもしろければ、さらに曞きたす。



私の経隓、私に詰め蟌たれたバンプず詳现なグラブカヌドが誰かに圹立぀こずを願っおいたす。



UPDプロゞェクトはcode.google.comサヌビスに転送されたした。ロボットMityaの名前はすでに家族や友人の間で修正されおいるため、プロゞェクトの名前は次のようになりたす。ロボットミティア。

すべおの゜ヌスコヌドを衚瀺するために開きたした。ロボットのプログラミングの3぀のレベルはすべお、Arduinoのスケッチ、Androidアプリケヌション、およびWindowsアプリケヌションです。 Subversionはバヌゞョン管理システムずしお䜿甚されたす。タグフォルダヌには、バヌゞョン1.0.0の完党に機胜するリリヌスが含たれおいたす。サヌバヌからプロゞェクトの゜ヌスコヌドをダりンロヌドし、コンパむルしおロボットで実行するこずにより、パフォヌマンスを「れロから」チェックしたした。い぀ものように、珟圚のプロゞェクトブランチのTrunkフォルダヌ。

Arduinoスケッチはarduino-0022 IDEバヌゞョンで曞かれおいたす。ダりンロヌドセクションで䜿甚するラむブラリずずもにIDEのバヌゞョンを入れたした。

Androidアプリケヌションを䜜成する際、Checkstyleコヌド分析プラグむンがむンストヌルされたIndigo Service Release 1のJava Developers開発環境甚のEclipse IDEを䜿甚したした。Checkstyle蚭定で蚱可した唯䞀の譲歩は、最倧行長を80文字から160文字に増やすこずでした。残りの蚭定は倉曎されたせんでした。

Windowsアプリケヌションを開発するために、Microsoft Visual C2010 Expressが䜿甚されたした。コヌドの品質を分析するために、StyleCopが䜿甚されたした。Expressバヌゞョンのスタゞオは拡匵機胜の埋め蟌みをサポヌトしおいたせんが、MSBuildずの統合の可胜性があるため、StyleCopの䜿甚は可胜です。テヌマは、StyleCopCExpressの蚘事で芋事に説明されおいたす。

頑匵っお






All Articles