スマートフォンをロボットプロジェクトに統合するにはどうすればよいですか?[閉まっている]


24

最近のスマートフォンには、通常、ジャイロスコープ、加速度計、コンパス、カメラ、GPSセンサーがすべて搭載されています。また、通常、Wifiおよびモバイルデータネットワークを使用してインターネットに接続します。電話をロボットのリモートコントロールとして使用する多くのケースを見てきましたが、私にとっては、電話自体が自律ロボットの完璧な軽量コンピューティングおよびセンシングプラットフォームであるように思われます。

私が見る主な障害は、アクチュエータとのインターフェースです。たとえば、モーターを制御して卓上ロボットでも操縦したり、サーボを制御したりすることができます。マイクロコントローラーへの接続と通信も障害になる可能性があります。

ロボット愛好家として、これらの障害やその他の障害を克服して、ロボットプロジェクトでスマートフォンのパワーを活用できるようにする方法を知りたいです。


ただ、SESO参照、iOSのオプションを追加するロボットコントローラとしてiPhoneを
Greenonline

回答:


19

Androidのアクセサリ開発キット(ADK)は、あなたが必要なすべてを行う必要があります。

ADK

これは、Androidと対話するために特別に設計されたArduinoボードです。BluetoothまたはUSB(またはWiFi / Ethernet、私は思う)を介して2つを接続できます。

アーキテクチャ全体が開いているため、各部分を最適な用途に使用できます。Androidコードを記述して、携帯電話の内蔵センサーからデータを取得し、ディスプレイを制御します。そして、Arduinoコードを書いて、携帯電話にはないアクチュエータ、サーボ、その他のセンサーを制御します。2つの間で通信するコードは、Google経由でオープンソースで提供されます。

Arduinoブログから:

Android Open Accessory Development Kit(ADK)は、Arduinoオープンソースエレクトロニクスプロトタイピングプラットフォームに基づいたAndroid USBアクセサリの実装、アクセサリのハードウェアデザインファイル、アクセサリのファームウェアを実装するコード、およびアクセサリー。ハードウェアデザインファイルとコードは、ADKパッケージのダウンロードに含まれています。

ほとんどの例は、時計などのハードウェアアクセサリのグラフィカルインターフェイスとして電話を使用することを中心に設計されています。ただし、携帯電話のセンサーにもアクセスできず、データをやり取りできない理由はありません。

Adafruit は、ADKのストアのページでロボットを作成するためにそれを使用することにも言及しています。

Androidの電話ハードウェア開発を迅速に追跡するか、Arduino ADKで携帯電話ロボットを設計するだけ です!Arduino ADKは、強力なATmega2560(データシート)に基づくマイクロコントローラーボードです。Androidベースの電話に接続するためのUSBホストインターフェイスと、ADKに接続されている間にDC電源から電話を充電するための電源ブーストコンバーターがあります。

(エンファシス鉱山)


11

別のオプションはIOIO-OTGボードです:

IOIO-OTGボード

Sparkfunの製品説明は、その機能を説明します。

PCまたはAndroidデバイスのアプリをGPIO、PWM、ADC、I2C、SPI、UARTなどの低レベルの周辺機器に接続するブリッジのように機能するPICマイクロコントローラーを備えています。アプリレベルのライブラリは、他のJavaアプリを書くのと同じ方法で、これらの低レベルの周辺機器の制御コードを書くのに役立ちます!

このボードはあなたが望むすべてのことをするべきであり、あなたが始めるのを助ける素敵なチュートリアルさえ持っています。


6

私が見る主な問題は、実際にはアクチュエータとのインターフェースではありません-デジタル(さらに良いのはアナログ、またはPWMを行うのに十分なチャンネル)信号をワイヤレスで転送する良い方法がある場合は、それとインターフェースするだけですモータードライバーチップ(L293Dなど)を用意します。サーボの場合、パルスを処理できるように適切な応答時間が必要です。PWM対応のチャンネルをお持ちの場合、チャンネルのボーが既に高いため、これは難しくありません。チャンネルが遅い場合、正確なパルスタイミングが必要なため、サーボが使用できない場合があります。

私が見る最初のオプションは(かなりかさばりますが)Raspberry Piを取り出し、イーサネット経由でワイヤレスルーターに接続し、電話機を同じワイヤレスに接続することです。ここで、入力に基づいてPiにリクエストを送信する基本的なアプリを電話用に作成し、これらを処理するPi用のアプリのような別のサーバーを作成します。かさばってやや硬いかもしれませんが、非常に拡張可能です、IMO。また、ルーターをオフボードに置き、これをPiに貼り付けることもできます(またはホットスポットを使用してルーターを完全に削除します)。

別のオプションは、ここに示すようなBluetoothコントローラを使用することです。これを使用したことはありませんが、これを処理するにはマイクロコントローラーが必要なようです。私はあなたがそのRX / TXピンをarduinoのTX / RXに直接接続できると思いますが、これについてはあまりよくわかりません。

以前にXBee / ZigBeeを使用したことがある場合は、bluetooth beeを試してみてください。

最後のオプションは、従来のワイヤレス制御セットアップ(XBee / whatever)で電話のUSBポートを使用することですが、これにはドライバーとすべてを書き込むために1つ必要です。


5

はい、スマートフォンにGPIOピンがないことは残念です。すでにロボットでROSを実行している場合は、Androidフォンでこのアプリを使用して、電話のセンサースイートにアクセスできます。


4

Nexus 7などの最近のAndroidデバイスの多くは、USB On The Go(OTG)をサポートしています。これは、「USBホストモード」がサポートされていると言うのが上手な方法です。これらの場合、1ドル未満で手に入る適切なケーブルを使用すれば、互換性のあるUSBデバイスを使用できます。USBホストモード用のハードウェアを備えたArduinoの専用バージョンは必要ありません。

LeonardoやTeensy 2などの「通常の」Arduinoが、OTGケーブルで接続されたときにTTY(シリアルポートなど)デバイスとしてAndroidスマートフォンに表示されることを知るために、これを十分に実験しました。

この記事では、AndroidアプリからArduinoと通信するためにAndroid USB Host APIを使用する方法について詳しく説明します。Android 3.1以降が必要で、デバイスをルート化する必要はありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.