すっかり更新が滞っておりますが、イベント告知です。
ADK 勉強会(東京) (http://adk-tokyo.com)のショートプレゼン発表会、ADK BOOTCAMP の3回目を開催します。
2013年5月26日(日) 13:30〜16:30
浅草文化観光センター(雷門の前)
参加費無料:人数調整のため こちらで無料のチケットを購入してください。
内容は、メンバーの作品発表、最近気になるガジェット、こんなもの作ってみたい、
など、電子工作&スマートフォンを中心としたプレゼンになります。
スペシャルゲストに電子楽器ウダーの製作者、宇田さんも登壇します!
聴講のみの参加ももちろんOK、発表者もまだ募集中です。
詳細はADK 勉強会のサイトで!
ご参加、お待ちしています!
2013年5月12日日曜日
2012年8月8日水曜日
Arduino with USB BT ドングル
ついにこの日がやってきました。
待ちに待った、USB Bluetooth ドングルを Arduino で使うライブラリが登場しました。
必要なものは
・Arduino (Uno など)
・USB Host Shield 2.0 (相当)
・USB BT ドングル (対応機種不明)
(Planex BT-Micro EDR1X、Buffalo BSHSBD03、で動作確認)
です。
使用ソフトウェアは
Arduino IDE 1.0.1 + USB Host Shield Library 2.0 です。
UHS ライブラリに、最近のアップデートで「RFCOMM」というサンプルが追加されました。
詳しくは、Circuits@Home の記事 を確認して下さい。
基本的にはライブラリをインストールして、サンプルを実行するだけです。
この RFCOMM というサンプルは Android のBT 通信でよく使われるSPP 通信に対応しています。上の写真は S2 BT Terminal です。
Android 側から送った文字は Arduino のシリアルポートに出力されます(もちろん逆方向も)。
Harpy でも試してみました。
このHarpy は USB Host Shield 2.0 相当に改造してあります。
(改造の詳細は Harpy のメーリングリストなどに情報があります。)
USB のVbas を3.3V から取る様に改造しているめか、Planex ドングルは使えたものの、Buffalo ドングルは使用で来ませんでした。
また、シリアル通信で文字化けするので、115200bps →19200bps に速度を落としました。
とりあえず通信ができただけですが、待望のBT ドングル通信に感動しています。
待ち切れなくてPIC に走ったり、いろいろ手を出しましたが、、、
やっぱりArduino が 好きです。
※USB Host Shield 2.0 に関して
Sparkfun の USB Host Shield や、Harpy nano の回路は Circuits@Home の古い USB Host Shield が元になっています。
Sparkfun のシールドを、ライブラリ2.0 に対応させるには、一部改造する必要があります。こちらの記事を参考にして下さい。
本家 Circuits@Home のシールドは代理店がないので、個人輸入するしかないのですが、Amazon でUHS 2.0 相当のシールドが売られている様です。(コピー商品のようですが、、、)
2012年5月2日水曜日
やすっぽいーの with UHS mini
先日つくった「やすっぽいーの」が進化しました。
3.3V のレギュレータと、USB Host Shield の本家、Circuits@Home の USB Host Shield mini に対応する端子をつけました。(空き端子を使って、必要な7pinを並べています。)
このようにして使います。小さい青いボードがUSB ホストシールドに相当する基板。正式名称は「USB Host Shield for Arduino Pro Mini」です。
国内で扱ってる代理店が見当たらず、Circuits@Home から直接購入した方からわけてもらいました。
このボードは USB Host Shield のメインIC である Max3421e のみを取り出したもので、3.3V 動作のマイコンと直結できるものの、Arduino Uno など 5V動作のマイコンでは使用できません。
「やすっぽいーの」も5V 仕様で作ってしまったので、3.3V とのレベル変換基板(秋月 8ビット双方向ロジックレベル変換モジュール)を裏面に搭載しています。
このIC、双方向変換なので各信号の向きを気にせず使えます。超便利。
8bit (8ライン) ありますが、今回使用したのは5本のみ (SCK, MISO, MOSI, SS, INT)。
Max_Reset は基板上でプルアップしています。
USB Host の機能を手に入れたので、ADK を試してみました。
ATmega168 では、ADB のサンプル(logcat など)は動作するものの、Demokit などADK のサンプル はNG のようで、、、結局 ATmega328p に差し替えて無事に動作しました。
見た目は安っぽいけど、高機能(そして全然安くない)。「やすっぽいーの」あなたも一つ、作ってみませんか?
2012年2月13日月曜日
ダ・ヴィンチ32U でADK

Arduino Leonardo 互換ボード、ダ・ヴィンチ32U と Sparkfun USB Host Shield の組み合わせで、ADK が動きました。
ソフトウェアは Arduino IDE 1.0 と USB Host Shield Library 2.0 (Circuits At Home オフィシャル版)の組み合わせ。
写真は USB Host Shield Library のサンプル(demokit_20)を動かしているところです。
Arduino IDE 1.0 でダ・ヴィンチ32U を使う方法はこちら、
USB Host Shield Library 2.0 についてはこちらの記事を参照して下さい。
demokit_20 をコンパイルすると、通常(Uno 等)では問題ないのですが、
ボードで Leonardo を指定すると、USB 関連で error になります。
この問題は、ATmega32U4 のUSB 関連機能を使うAPI で使用する変数名「USB」と、USB Host Shield で使うクラス名「USB」がバッティングするためのようです。
Library の方を修正するのが筋かと思いますが、変更箇所が多くなりそうだったので、IDE の中身を変更しました。
アプリケーション内部 (Mac は右クリックから「パッケージの内容を表示」) に、Arduino API 群のファイルがあります。
/Applications/Arduino.app/Contents/Resources/Java/hardware/arduino/cores/arduino
以下の4つのファイル
CDC.cpp (28行目)
main.cpp (8行目)
USBAPI.h (22行目)
USBCore.cpp (624行目)
の中に 変数 USB を使っている箇所があるので、すべて別の名前に変更します。
(私はとりあえず USB1 にしました。)
これでコンパイルエラーは無くなりました。
次に、どうやって配線をするか、、、
Sparkfun のUSB Host Shield は Library2.0用に改造済みの場合、D9(INT), D10(SS), D11(MOSI), D12(MISO), D13(SCK) の線とRESET, 5V, GND の8本を繋げば動作します。
ダ・ヴィンチ32U と Arduino Leonardo のピン名称対応表(再掲)。
MOSI, MISO, SCK, RESET, 5V, GND はダ・ヴィンチ32U に対応する所に接続します。
シールドのD9 はダ・ヴィンチの D5(PC6) に、D10 はD13(PC7)に接続します。
これは Usb.h とavrpins.h で指定されています。
他のピンに変更したい場合は、これらのファイルを編集すれば良いと思います。
とりあえず動作させるのが目的だったので、今回はここまで。
2012年1月25日水曜日
Proっぽいduino
Proっぽいduino は Arduino Pro に近い構成をしたArduino 互換機です。
秋月のAE-ATMEGA 基板を使って組みました。
AE-ATMEGA のシリアル変換部、電源部を使わず、FTDI アダプタを使うための6pin を出しています。
(電源、GND、リセット、TX、RX をそれぞれ接続。CTS はオープン)
Arduino Pro は5V 版と3.3V版が存在し、それぞれクロックが16MHz、8MHz となっています。
Arduino で使用している ATmega328p は16MHz で動作させるために、4.5V 以上の電圧が必要です。(3.3V で16MHz にしても動作はすると思いますが、定格の範囲外なので、安定動作しない可能性があります。)
Proっぽいduino は5V/3.3V 両対応にするべく、クリスタルを取り外せるようにしてみました。クリスタル交換ってラジコンみたいですね!
この基板で試したかったのは、3.3V 仕様のArduino でSparkfun のUSB Host Shield が使えるかどうかです。シールド上にあるレギュレータ(5V/3.3V両方) を使わず、3.3Vレギュレータの出力のところに、直接 3.3V 電源を配線して、テストしました。
とりあえず、ADK でLED コントロールできることを確認しました。
Circuits@Home 版が 入手できれば(とくに for Pro Mini)、その方が簡単ですが、入手の容易なSparkfun 版でも、Arduino Fio などの3.3V Arduino と組み合せて使う事ができそうです。
2012年1月22日日曜日
Interface 増刊 Smartphone World (ADK 特集号)

日本Android の会1月定例会からの情報ですが、1月25日発売の「Smartphone World (スマートフォンワールド)」という雑誌でADK の特集をやるそうです。
未だ情報が少ないADK の貴重な書籍になりそうです。
ADK のみならず、WiFi やBT, Microbridge など、さまざまな方法で接続するとか。
RT 社のプレゼン、私のみどころはこの辺でした。
16:44 ごろ RT 社が考える ADK の活用方法
23:43 ごろ RT-ADK mini のテキストおよびキットについて(5-6月頃発売)
(それにともなう試行会をおこなうとのこと 3月頃)
試行会(ADK ハッカソン?) 、ぜひ参加したいです。
RT-ADK mini 初期ファーム
昨日購入したRT-ADK miniこの手のものは自分でファームを書かないと使えないと思っていたのですが、例のRT 社プレゼンにて、「Microchip のデモプログラムで動かせるファームウェアを書き込み済み」と言っていたので、結構期待をしていました。
Microchip のAndroid 用のプログラムはこちらからソースをダウンロードして作成するか、Android マーケットから「基本的なアクセサリのデモ」という名前のアプリをダウンロードします。
(名前変わるかも知れないので、[microchip] で検索して下さい。)
出来る事は 8ch のアウトプット(LED制御)、4ch のインプット(プッシュボタン状態)、そして1ch アナログインプット(ポテンショメーター)。
ところが、、、、
RT-ADK mini のピンと、このソフトの割当の資料がない。仕方ないので適当に部品を差したりしながらあたってみると
LED1 ... AIN3
LED2 ... AOUT2
LED3 ... 不明
LED4 ... 不明
LED5 ... AIN2
LED6 ... AOUT1
LED7 ... AOUT0
LED8 ... DIN3
Button1 ... DOUT3
Button2 ... DOUT2
Button3 ... DOUT1
Button4 ... DOUT0
POT ... AIN0
割当不明
AIN1
DIN0
DIN1
DIN2
PICkit用端子(※回路図から まだ試していません)
MCLR
+3.3V
GND
AOUT0 ... PGEC1
AOUT1 ... PGED1
基板上のボタン(SW1) ... DIN0
基板上のLED(LED1) ... DOUT0
という結果に。なんだこれは。
前記事で書いた、「初期ファームのままでも十分使える」は訂正します。
使えない事は無いのですが、ラベルと内容が合っていないので、、、結局このボードは自分でファームウェア書かないとだめですね。
初期ロットだけの問題かもしれませんが、購入時にファームのバージョンはわからないので、PICkit なしでも使えるという認識は危険ですね。
いずれにしても、micro USB はPower のみで信号線の結線はないこと、CN1 コネクタは電源っぽいけど、実はRS485 用(MAX485 に接続)、リセットスイッチっぽい SW1 とPower インジゲータっぽいLED1 はそれぞれ汎用ピンに接続されている点は要注意です。(電源を接続しても、LED1 が点灯しないのは正常です。)
2012年1月21日土曜日
RT-ADK mini
PIC 版のADK ボード、RT-ADK mini を購入しました。千石で3980円。
気になりつつも、買わない予定だったのですが、先日行なわれた日本アンドロイドの会定例会でRT 社のプレゼンを見ていたら欲しくなってしまいました。
(→ビデオが公開されています。)
買わないでいようと思った理由は、現在 Arduino 版ADK にハマっていること、そして、上位互換のPIC24FJ256GB106 が載ったボードを既に持っている事。
欲しくなった理由は、なぜか MAX485 のチップが載っていた事、、、
プログラムを作成するにはPIC の開発環境が必要です。
MPLAB IDE v8か、OSX にも対応している MPLAB Xでもできるはず。
書き込みにはPICkit3 を使います。
ADK に興味がある人は大きく分けて
a) Android のプログラムを作っている → Android と連携するガジェットをつくりたい
b) マイコンを使って遊んでいる → スマホにつなげたい
の2通りに分けられますが、前者は「マイコンの開発がやりたい」わけでは無いでしょう。
PIC のマイコンだと意識せずに、Android 専用のI/Oボードだと思って使っても良いと思います。→訂正します。初期ファームはかなり微妙です。
連結ソケットがハンダ付け済みで販売されていますが、ピンが逆(太い方が基板側)では、、、?
端子は幅広タイプ(600mil) の28pin IC ソケットと同じ。電源はmicro USB(メス) 端子から5V-500mA を供給します。
私がArduino が好きな理由は、大勢の人が「同じボードを使っている」こと。
他の人が作ったサンプルをそのまま使える。これは本当に大きなメリットです。
PIC 版ADK も、既にいろんな方が作られていますが、使っているチップもまちまちです。
Arduino のシールドのように、このボードにつなげて使う機器が販売されるようになると面白いですね。
2012年1月16日月曜日
ADK の電源考 その3
無駄に複雑な配線になっています。
実はこの接続を試したいがために、USB Hub を購入しました。
USB Host Shield (ホスト) > USB Hub
USB Hub >(デバイス) Arduino Uno
USB Hub >(デバイス) Xperia Arc
という接続になっています。
このハブはセルフパワー(AC アダプタから給電)方式なので、スマートフォンへの給電はハブが行なっています。
USB Host Shield は純粋に通信のみを行なっています。
ハブからArduino の接続は給電目的です。(プログラムすれば通信も可能です。)
つまり、これまで検討していた電源まわりの配線を一切いじる事無く、USB Host Shield とスマートフォンの組み合わせで ADK を構成できます。(ただし、Library 2.0 を使うため、リセットまわりの改造が必要です。)
この接続は、USB Host Shield Library 2.0 でUSB Hub に対応したことにより、可能になりました。
旧バージョンの USB Host Shield Library を使っている場合は、この接続をしても通信ができないため、ADK ボードを認識しません。
Library 2.0 に含まれるサンプルコードのADK demokit は、Hub に対応するように書かれているため、そのままで上記接続を試す事が出来ました。
Examples > USB_Host_Shield > adk > demoki_20
新ライブラリで USB Hub を使うには、
1) usbhub.h をinclude する。
2) USBHub クラスのインスタンスを作る。
(USBHub hub0(&Usb); の行が相当。hub1, hub2 ... と使用するハブの個数分書く。メモリの許す限り最大7個まで使用できる。)
以上です。作成したインスタンスに対して、何か行なう必要はありません。
ADK の電源考 その2
このタブレットは秋葉原のレンタル工作スペース「ナノラボ」さんにて、お借りしました。
スマートフォンとは異なり、通信用のUSB 端子とは別に、充電用の電源端子があります。
また、USB ホスト機能をもつ端子も別に持っています。
また、USB ホスト機能をもつ端子も別に持っています。
以前から気になっていたのは、USB ホストの端子から電源をとれるか?
ということです。
USB ホスト端子とUSB デバイス端子両方同時につかえるのか、電源だけをとることができるか、といった疑問がありましたが、動作しました!
変則的ですが、このような接続もありということで、、、
このタブレットでその1 と同様のVBas 電圧のテストをしたところ、2.8V くらいからADK ボードを認識しました(5V まで上げても充電はしない)。USB Host Shield の5V バイパス改造をしなくても認識できます。
ADK の電源考 その1

ADK のボードはUSB ホストとして動作するため、USB デバイスであるAndroid 機器に対して電源を供給する必要があります。
スマートフォンはUSB 経由で充電を行なうため、充電モードに入ります。
携帯を充電するとなると、数百mA の電流が流れるので、電池で動かすのは結構大変です。
USB の仕様では、電源ライン(VBas ) に5V をかけることになっています。
Sparkfun USB Host Shield は、Arduino を外部電源で使用した場合、VBas に5V が出るようになっています。
Arduinoを Mac のUSB ポートからとった電源で使用した場合、VBas は3.2V 程度に落ちていました。
このVBas 電圧では、Xperia Arc はADK ボードを認識しなかったため、5V の出力をVBas にバイパスするよう、ハードウェアを修正しました。
このような経緯で、「VBas = 5V付近 が必要」と思い込んでいたのですが、写真のように「ボードを認識するが、充電しない」モードがあるようです。
(端末による仕様や、個体差もあることだと思います。)
VBas へのパターンをカットし、外から電圧を加えて変化させてみました。
あくまで私の端末での実験によると、3.3V〜4.0V あたりが充電マークがつかない状態で、ボードを認識しました。
検討の結果、USB Host Shield 上にある、3.3V のレギュレータの出力をVBas に接続したところ、この「認識するが充電しないモード」で動作することができました。
参考までに、USB Host Shield とArduino Uno の組み合わせで、
・無改造(5V レギュレータの出力をVBas に接続した状態)VBas = 4.95V, (電源 5.15V - 約214mA)
・3.3V レギュレータの出力をVBas に接続した状態 VBas = 3.4V, (電源 5.15V - 約69 mA)
となりました。(電流は、Arduino に入力する箇所で、テスターにて測定。)
電流値から、実際に充電されていないことがわかります。
電池2本を昇圧して 5V を出力する電池BOX が100〜200円くらいで売られていますが、この手の安物は 200mA の電流を取り出すのは難しいです。
今回の充電しないモードを活用すれば、簡易な電源で、ポータブルなADK 環境を構成できそうです。単純計算で、同じバッテリーを使用して3倍長持ちする、ということです。(その分、スマホ側が消費します。)
もうちょっといいDCDC コンバータをつかえば、電池1本でも良さそうですね。
※メーカーの想定外の動作だと思うので、機器を壊す可能性があります。
※USB 経由の充電をしないタブレットの場合、この記事の内容は関係ありません。
2012年1月13日金曜日
USB Host Shielduino

Sparkfun のUSB Host Shield を持っている人は、誰しも一度はやろうと思った事があるのではないでしょうか?
基板上のフリースペース(16列×7行) を使って Arduino を実装した「USB Host Shielduino」です。
プログラムの書き込みはArduino Pro 互換のピンを出しているため、FTDI アダプタを使って書き込みます。FTDI アダプタを接続した状態で、Arduino Duemilanove (2009) とほぼ同等のものになります。
パーツリスト
ATmega328p x1 (ブートローダ書き込み済みも売ってます)
104 セラミックコンデンサ x3
22p セラミックコンデンサ x2
水晶発振子 16MHz x1
10kΩ抵抗 x1
ピンソケット 6p x2
ピンソケット 8p x2
ピンフレーム 6p x1
IC ソケット 28p x1
2.1mm DCコネクタ x1
DC5V出力 AC アダプタ x1
Sparkfun USB Host Shield 2495円(千石)
Sparkfun FTDI アダプタ(5V) 1495円(千石)
と合わせて5000円くらいでADK ボードを構成できます。
製作は決して難しくないのですが、ひたすら根気が必要です、、、
電源部がかなりいい加減なので、今後検討の余地ありです。
2012年1月11日水曜日
Arduino MEGA と Sparkfun USB Host Shield

Arduino Uno で USB Host Shield を使うと、残りのI/Oピンがぐっと少なくなります。
ピンが足りなければ MEGA があるじゃない、、、ところが、Sparkfun の USB Host Shield は Arduino MEGA に対応していないのです。
この問題は、旧 Ethernet Shield の問題と同様、SPI の接続ピンが、Uno とMEGA で異なるためです。
Circuts@Home の USB Host Shield 2.0では、新Ethernet Shield 同様、ICSP の端子を使って接続しているため、MEGA でも使えるようです。
そこで、Ethernet Shield 同様、ICSP 端子からの配線を追加すれば、2.0 相当にすることができます。
Ethernet シールドのときにやったように、ジャンプワイヤを使っても良いのですが、今回は以前紹介した「たこ足シールド」を拡張して使ってみます。
このシールドの基板に使用しているボードはArduino 互換ボードで、ICSP の端子の位置も Arduino と同じです。
配線もされているため、ここに2x3 のソケットを逆さにつければ完了です。
USB Host Shield (リセット、電源 改造ずみ)<> たこ足シールド <> Arduino MEGA を重ねて、
USB Host Shield Library 2.0 付属のサンプルをいくつか動かしてみました。
とくに問題はないようです。ADK として動作させることもできました。
この組み合わせで常用する予定はないので、これ以上の検証は行ないませんが、Arduino MEGA 系で Sparkfun の USB Host Shield を使う方は参考にしてください。(Arduino Uno 系ではこの記事の内容は関係有りません)
また、USB Host Shield とMEGA が統合されたボード(Google ADK Board、RT-ADK ボード、Arduino MEGA ADK ボードなど)は、ピンの割当が異なるそうなので、これらのボード用に書かれたサンプルがそのまま動作するわけでは有りません。
(参考)
・Arduino MEGA をRT-ADK 化する試みを Kako.com さんが行なっています。
・Arduino USBシールドとADKボードの違いについて、BRILLIANT SERVICE さんが書かれています。
2012年1月9日月曜日
ADK Term
前回、USB Host Shield Library 2.0 を導入しましたが、このライブラリを使ってやってみたかったのが、こちらの Android ADK terminal emulator for Arduino です。
ターミナルとシリアルポートのないコンピュータはどこか窮屈に感じる、、、
そんな人に、一筋の光を与えるADK の活用方法です。
まだ完全なものではないようですが、とりあえず、ライブラリに付属のサンプルに
adk > term_test
adk > term_time
があります。
Android 側のソフトは上記ページからリンクされています。
term_test は Android のターミナルから文字列を送信します。
term_time はArduino が計測した時間(起動時点からの経過秒)をターミナルに表示します。
どちらも、このまま使えるものではありませんが、これをベースにシリアル入出力をつくることも難しくないと思います。
USB Host Shield Library 2.0

当サイトでは Sparkfun の USB Host Shield とArduino Uno (R2) を使って、ADK (Android Open Accessory) を構成しています。
手順はこちらで書いた通り、side2.jp さんのサイトに準じています。
今回は、USB Host Shield Library を 2.0 に変更してみました。
USB Host Shield はCircuits@Home のOleg 氏によるプロダクト。
日本で購入が容易な Sparkfun のものは、その互換製品です。
(おそらく、旧バージョンのUSB Host Shield と互換)
Circuits@Home の USB Host Shield は2.0 と言うバージョンになっており、Library も2.0 が最新バージョンです。
このバージョンは ADK のLibrary も統合されています。
しかし、Sparkfun のシールドでは、このバージョンのライブラリでは動作しません。
回路図を追ってみると、、、
どうやら、リセットが変更になっているのが問題らしい。
・旧USB Host Shield と、Sparkfun のシールドでは、D7 pin (Sparkfun の旧バージョンはD8)を使って、Max3421e チップをリセットしている。
・USB Host Shield 2.0では、Arduino 本体のリセット信号を使って、Max3421e チップをリセットしている。
これをハード的に修正(D7 から74HC4050 に伸びるパターンをカットして、RST に接続)。
この修正Sparkfun シールドで、新旧USB Host Shield ライブラリが動作することを確認しました。(写真はSparkfun の旧バージョンなので、以前にD8 <> D7 の入れ替えをやっていました。修正はD7 の方だけでOK です。)
・新ライブラリはADK のライブラリを統合しており、ADK を使うための表記方法が異なる。
(旧ライブラリ用に書かれたADK 対応プログラムのソースは新ライブラリでは動作しない。)
と、新たなトラブルの種を増やしてしまった感がありますが、最新版のライブラリはUSB ハブに対応したり、様々な改良点があります。
私は Oleg 氏のサイトで公開されているサンプルコードを試したいがために、このライブラリを導入しました。
それらも今後、紹介して行きたいと思います。
2011年11月10日木曜日
ADK! ADK!

今年の3月に発売された Xperia Arc に Android 2.3.4 のアップデートが登場しました。
Google からは5月にリリースされていたバージョンなので、半年も待たされるとは思いませんでした。
(メーカー(Sony Ericsson) が対応を行なって、キャリア(docomo) がOK 出して、、と長い道のり)
このバージョンから、いよいよ ADK (Android Open Accessory Development Kit) に対応します。
まずは、動作確認。
こちらのサイトの手順で行ないました。
・ハードウェアは Arduino Uno + USB Host Shield (Sparkfun) を使用。
・サンプルアプリ(DemoKit) は side2.jp さんのページからダウンロード。
・Arduino 用の、ADK のライブラリはOfficial サイトからDL。
・Arduino 用の、USB Host Shield のライブラリはこちらから最新版にアップデート。
・オフィシャルのサンプルコードはArduino MEGA ベースなので、
これも side2.jp さんのページ(その3) から修正版 demokit.pde をダウンロード。
(回路は以前作った RGB LED のボードなので、Arduino のピンアサインなどは調整した。)
とりあえず、動いた。
電源は12V のAC アダプタを使用したが、USB Host Sheild の発熱がすごい。
5V レギュレータが触れないほど熱くなる。。
なので、こちらも side2.jp さんの5V のラインからバイパスする方法を採用。
ADK はUSB ホストなので、スマートフォン側に電源供給をする必要が有る。
ちょっと面倒。
オフィシャルのハードウェア拡張手段があるのは嬉しいが、Xperia Arc は2.3.4 アップデートでUSB OTG (ホストとデバイスの両方に対応する) が有効になったので、USB デバイスを作った方が幸せになれる気がする、、、
2011年7月4日月曜日
ADB で接続 (Android)
※Apple Desktop Bus の話ではありません。
最近 Android にも手を出し始めました。
Android とArduino を繋ぐ仕組みは、Android Open Accessory Development Kit (ADK) というGoogle オフィシャルなものがありますが、手持ちのXperia Arc (Android 2.3.2) は対応していません。
ADK 以前から、さまざまな有志の試みがありましたが、今回は いわたん さんのこの記事を参考に、Micro Bridge というものを使ってみました。
Micro Bridge はADB (Android Debug Brige) というプロトコルを使って、マイコン(Arduino) と通信する仕組みです。
・USB ホストの使えるマイコン (Arduino + USB Host Sheild) が必要。
・Android 端末はUSB 接続で、デバッグモードにする。
Micro Bridge はここからダウンロードします。
ServoControl.zip:Android のサンプルアプリ
MicroBridge-Arduino.zip:Arduino のライブラリ
usb_host_patched.zip:USB Host Shield のライブラリ(既にインストールしている場合は不要)
サンプルスケッチを使ってみます。
File > Examples >Adb
Demo、Logcat、Reboot、Shell、WriteFile
[Demo] は、Android 用のソフト Servo Control と通信するスケッチ。
サーボのコントロール (Android -> Arduino) と、アナログ値の読み取り (Arduino -> Android) が出来ます。
(サーボを持っていないので、A0 の入力電圧を可変させてみました。)
[Logcat] は Android のシステムログを表示する。
[Shell] は Android のShell にログインできる。
シリアルターミナルで57.6kbps で接続する (改行コードは LF)。
[Reboot] は動作できなかった。
Shell で
$ reboot
とすると、
reboot: Operation not permitted
(その操作は許可されていません)
と出るので、この端末では駄目なんだと思います。
[WriteFile] はSD カード上に hello という名前のファイル(中身はhello world) を作成する。
という、多彩なサンプルスケッチが収録されているので、何でも出来そうです。
2011年6月21日火曜日
Bluetooth は素人でも扱えるのか?
Bluetooth は、元々PC と比べて非力な携帯電話用の規格だったことから、最近のリッチなマイコンでも扱うことが出来るようです。
このプログラムは、2つのモータを制御するIC (Toshiba TB6612FNG) をコントロールしているので、各チャンネルに回転方向用の(CW/CCW)2つの信号と、1つのPWM 出力が出ています。
PIC用、Android 用のソースコードは、hrdakinori さんのサイト、または上記の動画にリンクがあります。
PIC のCPUボードは、オプティマイズの PIC24USB を購入しました。
ちなみに、BT のプロファイルは SPP (Serial Port Profile) を使っていますが、iOS のSDK ではSPP を使えないので、そのまま応用することはできません。
しかしプロトコルスタックやらプロファイルやらで、単純なシリアル通信をするだけでも、とても大変です。ここは先人の成果を多いに利用させていただきましょう。
Arduino でBT というと、BT のプロトコル/プロファイル部を隠蔽して、ただの無線シリアルアダプタとして使えるようにしたBT シリアルモジュール(→例 Bluetooth mate ※注意:技的認証なし)を使うのが一般的です。
さらに、USB ホストシールドでUSB BT アダプタを使う例もありますが、Arduino には荷が重そうです。
別の手段を探ってみると、PICの24F シリーズという16bit のPIC マイコンに、USB ホスト機能を搭載したものがあり、それを使ったUSB BT モジュール用のプロトコルスタックがありました。
ソースは何も変更せずにそのまま組んだだけですが、こんな感じになりました。
このプログラムは、2つのモータを制御するIC (Toshiba TB6612FNG) をコントロールしているので、各チャンネルに回転方向用の(CW/CCW)2つの信号と、1つのPWM 出力が出ています。
PIC用、Android 用のソースコードは、hrdakinori さんのサイト、または上記の動画にリンクがあります。
PIC のCPUボードは、オプティマイズの PIC24USB を購入しました。
ちなみに、BT のプロファイルは SPP (Serial Port Profile) を使っていますが、iOS のSDK ではSPP を使えないので、そのまま応用することはできません。
登録:
投稿 (Atom)




































