PICでMicroBridgeをやってみた
2011年8月13日
今回は、@yishiiさんが公開されている、PIC24FJ64GB002用のMicroBridgeソフトウェアスタックを使って、PICとAndroidを繋いでみました。

(ヤフオクで販売されているPICマイコンボードを使った回路)
参考)
Microbridge/PICの紹介ページ
PICとAndroidとUSB接続する Microbridge/PIC公開! – 日曜エレクトロニクス
Microbridge-PICのプロジェクトサイト
microbridge-pic – Google code
Microbridge本家プロジェクトサイト
microbridge – Google code
PICのプログラム
Microbridge-PICのプロジェクトサイトでは、現在PIC24FJ64GB002用のMIcrobridgeソフトウェアスタックのソースファイルが公開されています。
このプログラムは、Android端末のLog情報をシリアル出力すると言う機能を持っています。
簡単にMicrobridge-PICの動作を試すことができるので、今回はこのまま利用させて頂いています。
配布ファイルは、MPLAB X IDE用のプロジェクトファイルがまるまる一式zipファイル化されているので、これをダウンロード。
今回利用したソースは、現在の最新版である
microbridge-pic-base-r7-AUG-5-2011.zip
を使いました。
ビルド
ソースファイルのビルドには、MPLAB X IDEとC30(Cコンパイラー)が必要です。
利用したMPLAB X IDEのバージョンは、Beta 6.0です。
現在ダウンロードできる最新版は、7.01らしいです。
http://ww1.microchip.com/downloads/mplab/X_Beta/index.html
MPLAB Xと同じく、C30も以前インストールしたままの古いバージョンで、3.25を利用。
現在の最新版は、3.30らしい。
そして、試用期間内に利用できる最適化オプションは、その期限が過ぎて無効化されています(´・ω・`)
書き込み
PICへの書き込みは、PICKit3を使いました。
回路(Microbridge-PICオリジナル)
日エレの石井さんから、コメントを頂き、
http://projectc3.up.seesaa.net/image/PIC24F_USB_REV1.pdf
にMicrobridge-PICオリジナルの回路図が有る事を教えて頂きました。
回路(その1)
探してもMicrobridge-pic用の回路図らしき物が見つけられなかったのですが、ソースから推測して、前回PIC24FJ64GB002でADKを試す(その1)を書いた時と同じ回路でそのまま動作可能だろうと思い、試してみたら見事動きましたw
これは前回の回路から不要な部品を消して、UARTの配線を足した回路図です。
PICのRB7ピンから出ているUART-TXラインからLog情報がシリアルで出力されます。
PCに接続するには、インターフェイスIC等を使います。
Arduinoをお持ちの方は、こんな方法もあります。
Arduinoを単体USBシリアル変換器に使用する – 日曜エレクトロニクス
回路(その2)
Yahooオークションで販売されている、PIC24FJ64GB002を使ったマイコンボード(1200円)を入手したので、このボードを使っても試してみました。
このボードも、回路(その1)とほぼ同等の構成なので、プログラムはそのままで動きます。
参考)
http://openuser.auctions.yahoo.co.jp/jp/user/mybd_2008
PICマイコン 電子工作 PIC24FJ64GB002 PIC18F14K50
このマイコンボードには、USB-miniBのコネクタが付いています。
しかし、Androidと接続する為にはUSB-Aのコネクタを外付けする必要があります。
USBのVBusに5Vを給電する為に、ABの変換コネクターは使えません。
今回は、より簡単に接続する為に、Arduinoを5V電源とシリアル変換器として利用しています。
参考)
Arduinoを単体USBシリアル変換器に使用する – 日曜エレクトロニクス
実態配線図
写真じゃわかりづらいので、Fritzingを使って実態配線図を作ってみました。写真と照らし合わせて配線すると、間違いが減らせると思います。
マイコンボードのパーツは、当然ですがFritzingには用意されていないので、600milのDIPパッケージで表しています。
中央にMicroControllerBoardと表示されている黒い物を、マイコンボードだと思って配線してください。
使い方
PICに電源入れ、USBでAndroid端末と接続するとLog情報が自動で取得され、シリアルに流れる。
シリアルのスピードは、57600bps
Log情報が無い間は、
[ADB_poll] connected = true
USB_ENDPOINT_NAK_TIMEOUT
addr=1,EP=85h,resolve code=17h
size mismatch
と、永遠にシリアルに流れ続けるので、Arduino IDEのモニターで開くと、処理が追いつかずにハングアップした状態になってしまったので要注意。
Category: Androidと電子工作
TrackBack URL :



ご紹介いただきありがとうございます。日エレの石井です。
回路図、こちらにアップしておりますー。
(PIC ADK Miniboardとしての回路図ですので、UARTが何番ピンだとかはわからないのですが^^;)
http://projectc3.up.seesaa.net/image/PIC24F_USB_REV1.pdf
コメントありがとうございます。
回路図も公開されていたんですね。
見つけられずにごめんなさい
m(_ _m
このHPを拝見させていただき試行錯誤しているものです。
ご教授いただければ幸いです。
Yahooオークションで販売されているマイコンボード(1200円)を購入し
回路(その2)の配線通りに組み上げたつもりですが、うまく動作いたしません。
Microbridge-PICのプロジェクトサイトよりプログラムをダウンロードし
MPLAB X IDE(Beta7.02) とC30でコンパイルしました。
コンパイル時にwarningは数個でましたがコンパイルは正常に終了しました。
PICへの書き込みはブートローダーを使用し書き込みました。
PICをAndroidへ接続した時に、USBデバッグモードになりますでしょうか?
これがならない為動作しないのか、コンパイルに問題があるのか、
ブートローダーの書き込みに問題があるのか、回路に問題があるのか・・
行き詰まっております。
是非ご教授いただければ幸いです。
よろしくお願いいたします。
コメントありがとうございます。
>PICをAndroidへ接続した時に、USBデバッグモードになりますでしょうか?
android側で設定(設定→アプリケーション→開発→USBデバッグ)してあれば、PICを接続した時に自動でUSBデバッグモードになり、じゃんじゃんlogデータが送られて来たと思います。
最近PICをさわってないので、だいぶと忘れてしまいましたが・・・
確か、ブートローダーでの書き込みに対応するには、ビルド時にアドレスを変更する必要があったかと思いますが、そのあたりはおkでしょうか?
ご回答ありがとうございます。
TRISA2ピンの出力切り替えルーチン(LEDを点滅させるようなやつです)を組み込んで
app_hid_boot_p24FJ64GB002.gld のファイルをLinker Filesでリンカーさせてコンパイルしたところ
出力しっぱなしではありますが、初めて動作が確認できました。
ですが、思うような動作をさせるには程遠く、勉強不足を痛感いたしました。
ブートリーダー用にソースを書き直しビルドできるスキルはありませんので
Pickit3を購入し、そちらで動作を確認したいと思います。
道は長いですね・・・
コメント有り難うございます。
実は僕もソースを書き直して指定する方法は分かりません^^
基本的にはapp_hid_boot_p24FJ64GB002.gldを指定すればアドレスが変更されると思っていたのですが、Microbridgeのソースにリンク指定しても動かないでしょうか?
僕も一応、そのgldファイルをリンク指定してビルドするとプログラムのアドレスが変わるのは確認しましたが、実際に書き込んでの動作までは確認していません。
いずれにせよ、PICKitは入手しておいて損は無いと思うので、オススメします。