MicroBridgeでハマッテいます

375 views
Skip to first unread message

mars_999

unread,
Feb 20, 2012, 4:18:25 AM2/20/12
to luarida-...@googlegroups.com
LuaridaとMicrobrideを利用して、android端末でPICで自作した電子回路の操作や表示をやってみたいと、試行錯誤しています.
これまでに、ヤフオクで入手したPIC24FJ64GB002のボードを使い、android端末はICONIA TAB A100で、ADKとbluetoothの
接続はできるようになりました.
安価な中華パッド Paladinは、ADKには対応していないようですし、Bluetoothも内蔵していないので、いよいよMicroBridgeの
出番ということで、試しているところですが、まだ稼動に至っておりません.
シリアルポートには、次のようなメッセージが出力されている状態ですが、どなたかアドバイスをいただければ幸いです。

状況:
(1)android端末へPICの回路を接続すると** USB Error - device is not supported ** と表示され、先に進まない
(2)android端末を接続すると、android側では、USB debugging connected が表示される.
(3) hhhhhh,,,,,,が1文字づつ(?)連続して延々とシリアルへ出力されている
(4)android端末がpaladinでも ICONIA TAB A100でも同じ状況

印象としては、ADB_init() の次のループから抜け出せない状況のようです。
    while(device_attached == false){
        USBHostTasks();
        delay(50);
    }

---------------------------------------------------------------------
次のURLへ、もう少し詳しい状況を書きました
 http://blog.livedoor.jp/mars_999/preview/edit/b0a79e88763aaddfc447845365c07f2b
---------------------------------------------------------------------



--------------------------------
シリアル出力メッセージ
--------------------------------
[PAM_initPeripherals()]
[ADB_init()]
USB Host initialize finished.
hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
{一部省略}
hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
{ここで、android端末とPICの回路を接続}
[USB_ApplicationEventHandler] addr=1,event=108,size=0

***** USB Error - device is not supported *****
hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh
hhhhhhhhhhhhhhhh

Yasuhiro ISHII

unread,
Feb 20, 2012, 9:17:15 AM2/20/12
to luarida-...@googlegroups.com
mars_999様

石井と申します。
Microbridge/PICをご利用いただき、どうもありがとうございます。

NOVO7 Paladinでは接続できなかったとのことですが、PIC24FJ64GB002のボード
はどのようなハード構成でしょうか?
念のため、回路図等ございましたらお教えいただけますと助かります。
(ヤフオクのボード、とはUSB-Bのコネクタがついているボードですよね。それ
にUSB-Aのコネクタを接続された、ということですよね)

ちなみに当方A100はもっていないのですが、Microbridge/PICとICONIA A500
とは接続できました。

よろしくお願いいたします。


2012年2月20日18:18 mars_999 <horiai....@gmail.com>:

> --
> このグループにメールで投稿: luarida-...@googlegroups.com
> このグループから退会する: luarida-fun-cl...@googlegroups.com
> その他のオプションについては、次の URL からグループにアクセスしてくださ
> い。 http://groups.google.com/group/luarida-fun-club?hl=ja?hl=ja

--
--
石井 康寛 (Yasuhiro ISHII)
ishii.y...@gmail.com

たろサ

unread,
Feb 20, 2012, 1:34:39 PM2/20/12
to luarida-...@googlegroups.com
 たろサです。

 私も便乗質問です。

 PIC ADK Miniboard及び自作基板どちらも同じ現象です。今作っているRobot用のPICプログラムだと、何故か
shell:am startした後、applicationLaunched がtrueにならないのです。仕方が無いので、下記のように少し
待ってループを抜けています。

---
while(applicationLaunched == false){
for(i=0;i<65;i++){
ADB_poll(con);
LATBbits.LATB2 = 0;
DelayMs(50);
LATBbits.LATB2 = 1;
DelayMs(20);
}
applicationLaunched = true;
}
ADB_delConnection(con);
---
ログです。
**********************************************
PIC_microbridge_Cleaner Program @momoonga
SYSTEM STARTED Build:Feb 20 2012 20:52:47
**********************************************


[ADB_init()]
USB Host initialize finished.

[USB_ApplicationEventHandler] addr=1,event=400,size=0
USB_ApplicationEventHandler : EVENT_GENERIC_ATTACH
Device Attached addr=1,vid=0BB4h,pid=0C02h
Endpoint[IN] = 82h
Endpoint[OUT] = 02h
ADB_init : Connected
[ADB_addConnection] connectionString=[shell:am start -n
com.momoonga.luarida.robotscript/.RobotScriptActivity] reconnect=False
[ADB_poll] connected = false
[ADB_writeStringMessage] string=[host::microbridge]
*************************************
CONNECTED
*************************************
[adbEventHandler] event_id=0
connection->status = 1,connection->localID=1,message.arg1=4096
[ADB_poll] connected = true
[ADB_writeStringMessage] string=[shell:am start -n
com.momoonga.luarida.robotscript/.RobotScriptActivity]
connection->status = 3,connection->localID=1,message.arg1=1
[ADB_poll] A_OKAY
adbEventHandler : ADB_CONNECTION_OPEN
[ADB_poll] connected = true
USB_ENDPOINT_NAK_TIMEOUT
addr=1,EP=82h,resolve code=17h
size mismatch
[ADB_poll] connected = true
USB_ENDPOINT_NAK_TIMEOUT
addr=1,EP=82h,resolve code=17h
size mismatch
以下永遠に続く。

 ただし、Marida用のファームだと、問題なく動きます。

 違いは何なんでしょう?

 以下ログです。
*********************************************
PIC_microbridge_ledOnOff test program
SYSTEM STARTED Build:Feb 21 2012 03:07:18
**********************************************


[ADB_init()]
USB Host initialize finished.

[USB_ApplicationEventHandler] addr=1,event=400,size=0
USB_ApplicationEventHandler : EVENT_GENERIC_ATTACH
Device Attached addr=1,vid=0BB4h,pid=0C02h
Endpoint[IN] = 82h
Endpoint[OUT] = 02h
ADB_init : Connected
[ADB_addConnection] connectionString=[shell:am start -n com.momoonga.marida/.MaridaActivity]
reconnect=False
[ADB_poll] connected = false
[ADB_writeStringMessage] string=[host::microbridge]
*************************************
CONNECTED
*************************************
[adbEventHandler] event_id=0
connection->status = 1,connection->localID=1,message.arg1=4096
[ADB_poll] connected = true
[ADB_writeStringMessage] string=[shell:am start -n com.momoonga.marida/.MaridaActivity]
USB_ENDPOINT_NAK_TIMEOUT
addr=1,EP=82h,resolve code=17h
Broken message, magic mismatch, 0 bytes
number 6F6D2E6D != 939A978C
[ADB_poll] connected = true
connection->status = 3,connection->localID=1,message.arg1=1
[ADB_poll] A_OKAY
adbEventHandler : ADB_CONNECTION_OPEN
[ADB_poll] connected = true
USB_ENDPOINT_NAK_TIMEOUT
addr=1,EP=82h,resolve code=17h
size mismatch
[ADB_poll] connected = true
USB_ENDPOINT_NAK_TIMEOUT
addr=1,EP=82h,resolve code=17h
size mismatch
[ADB_poll] connected = true
USB_ENDPOINT_NAK_TIMEOUT
addr=1,EP=82h,resolve code=17h
size mismatch
[ADB_poll] connected = true
USB_ENDPOINT_NAK_TIMEOUT
addr=1,EP=82h,resolve code=17h
size mismatch
[ADB_poll] connected = true
connection->status = 2,connection->localID=1,message.arg1=1
[ADB_poll] A_WRTE
adbEventHandler : ADB_CONNECTION_RECEIVE len=62
[ADB_poll] connected = true
connection->status = 2,connection->localID=1,message.arg1=1
[ADB_poll] A_CLSE
ADB_handleClose : connection->status = 2
adbEventHandler : ADB_CONNECTION_CLOSE
ADB_UNUSED
application launched
[ADB_addConnection] connectionString=[tcp:60081] reconnect=False
[ADB_poll] connected = true
[ADB_writeStringMessage] string=[tcp:60081]
connection->status = 3,connection->localID=2,message.arg1=2
[ADB_poll] A_OKAY
adbEventHandler : ADB_CONNECTION_OPEN
[ADB_poll] connected = true
connection->status = 5,connection->localID=2,message.arg1=2

--
山本三七男 (Minao Yamamoto) ---------------- ハンドル:たろサ -----
E-Mail: taro...@gmail.com

mars_999

unread,
Feb 21, 2012, 1:44:15 AM2/21/12
to luarida-...@googlegroups.com
石井 様

お世話になっております。
Windows7上のMPLABでソースからビルドする際に 配布のzipファイルにはプロジェクトファイルが
含まれていなかったために、ライブラリーやヘッダーファイルの設定に多少苦労しました。
間違ったファイルをincludeしている可能性があります。
またheapサイズを設定しないとエラーになったので、とりあえずheapとstackに適当な
(いいかげんな)値(256,128)をセットしている状態ですが、このあたりも問題かもしれません。
石井さんは、OSX上で開発しているのでしょうか? 

回路は、ご指摘のように、USB-Bコネクタがついているボードです。これをブレッドボード上
へ挿入し、周辺回路を追加したものです。android端末とは、このUSBコネクタとは
別に、外部から供給した5V電源と+D,-D,GND の4本を、自作のケーブルで接続しています。

ICONA TAB A100とPIC ADKの組合せではLEDのON/OFF,SWの操作、ポテンショメータ
の値の読み取りなど、それらしく動いているので、PICのハードウェアの方は大丈夫かな?
、、、と思っています。

できれば、安価なPaladinを利用して、ステッピングモータの制御などをやってみたいと
思っているとろこです。(カメラや望遠鏡、赤道儀などの制御)

御参考までに、回路図は次のURLへ置きました。
http://blog.livedoor.jp/mars_999/

よろしくお願いします。

--
堀合 啓一

たろサ

unread,
Feb 21, 2012, 4:38:33 AM2/21/12
to luarida-...@googlegroups.com
 たろサです。

 私、Windows7-64bit上のMPLAB Xで開発しています。

 参考になればと思って、私の使っているPIC Microbridgeのプロジェクト一式を添付しました。石井さんの
ソースに少し手を加えていますがほとんど一緒です。
 

 回路を見せていただきました。特に問題なさそうな気がします。mini-Bと後付USBコネクタが分岐して接続し
ているところが、少し気になります。Mini-Bメスと標準Aメスの変換コネクタとかお持ちで無いですか?

 あっ、でもPICの方は、ADKは動いているのですね。そうか。

 ちょっと、何とも分からないですね。

PIC_microbridge_Cleanerv01.7z

mars_999

unread,
Feb 21, 2012, 7:38:42 AM2/21/12
to luarida-...@googlegroups.com
たろサ 様

情報ありがとうございます。

お恥ずかしい次第ですが、MPLAB Xのことを知りませんでした。昨年、後関氏の「電工作の実験室」などを見て
PICのプログラムを始めました。てっきり、MPLAB Xは OSX用のMPLABかと思っていました。
MPLAB Xをインストールし、使い方は、まだよくわかりませんが、たろサさんのファイルをそのままビルトしてみました。
ビルトは完了しましたが、(たぶん操作方法がわかっていないために) PICkit3で書き込みに失敗!

とりあえず、元のMPLABでHEXファイルをPICへ書き込んで実行したら、シリアルへ次のようなメッセージが
表示されました。メッセージの解釈は、これからです(笑)が、とりあえずのご報告です、、、、


**********************************************
 PIC_microbridge_Cleaner Program @momoonga
 SYSTEM STARTED Build:Feb 21 2012 20:46:53
**********************************************
setMotorControl:MOTOR STOP:0

[ADB_init()]
USB Host initialize finished.
[USB_ApplicationEventHandler] addr=1,event=400,size=0
USB_ApplicationEventHandler : EVENT_GENERIC_ATTACH
Device Attached addr=1,vid=18D1h,pid=DDDDh

 Endpoint[IN]  = 82h
 Endpoint[OUT] = 02h
ADB_init : Connected
[ADB_addConnection] connectionString=[shell:am start -n com.momoonga.luarida.robotscript/.RobotScriptActivity] reconnect=False
[ADB_poll] connected = false
[ADB_writeStringMessage] string=[host::microbridge]
*************************************
 CONNECTED
*************************************
[adbEventHandler] event_id=0
connection->status = 1,connection->localID=1,message.arg1=4096
[ADB_poll] connected = true
[ADB_writeStringMessage] string=[shell:am start -n com.momoonga.luarida.robotscript/.RobotScriptActivity]
connection->status = 3,connection->localID=1,message.arg1=1
[ADB_poll] A_OKAY
adbEventHandler : ADB_CONNECTION_OPEN
[ADB_poll] connected = true
USB_ENDPOINT_NAK_TIMEOUT
addr=1,EP=82h,resolve code=17h
size mismatch
[ADB_poll] connected = true
USB_ENDPOINT_NAK_TIMEOUT
addr=1,EP=82h,resolve code=17h
size mismatch
{ 以下、省略 }

たろサ

unread,
Feb 21, 2012, 8:08:15 AM2/21/12
to luarida-...@googlegroups.com
 mars_999さん、

 たろサです。

 adbの接続は行けましたね。

> ビルトは完了しましたが、(たぶん操作方法がわかっていないために) PICkit3で書き込みに失敗!
 添付したプロジェクトは、書き込み時の電源は自己供給ではなくて、外からもらう設定になっています。も
し、書き込み時にPICに3.3V供給されていないのであれば、それが原因かと思います。PICkit3から電源を供給し
たい場合は、Project-propertyのPICKit3のPowerにチェックを入れてください。

power.png

mars_999

unread,
Feb 21, 2012, 8:36:58 AM2/21/12
to luarida-...@googlegroups.com
皆様

お蔭様で、Microbridgeを動かすことができるようになった感じです!
動かなかった原因は、たぶんライブラリーやヘッダーの include の仕方など
MPLAB Xから MPLAB IDE へ手動で無理やり変換したの点のようです。

引き続き、石井さんのファイル microbridge-pic-base-r7-AUG-5-2011.zipの方も
MPLAB Xでビルドし、動かしてみました。 shell:exec logcat
一応、シリアル出力を貼り付けておきます。


[ADB_init()]
USB Host initialize finished.
[USB_ApplicationEventHandler] addr=1,event=400,size=0
Device Attached addr=1,vid=18D1h,pid=DDDDh
 Endpoint[IN]  = 82h
 Endpoint[OUT] = 02h
ADB_init : Connected
[ADB_addConnection] connectionString=[shell:exec logcat] reconnect=True

[ADB_poll] connected = false
[ADB_writeStringMessage] string=[host::microbridge]
*************************************
 CONNECTED
*************************************
connection->status = 1,connection->localID=1,message.arg1=4096
[ADB_poll] connected = true
[ADB_writeStringMessage] string=[shell:exec logcat]

connection->status = 3,connection->localID=1,message.arg1=1
[ADB_poll] A_OKAY
[ADB_poll] connected = true
connection->status = 2,connection->localID=1,message.arg1=1
[ADB_poll] A_WRTE
--------- beginning of /dev/log/system
I/WindowManager(  130): createSurface Window{2c4cf660 StatusBar Tips paused=false}: DRAW NOW PENDING
W/ThrottleService(  130): unable to find stats for iface rmnet0
I/ActivityManager(  130): START {cmp=com.sg.android.fish/net.youmi.android.appoffers.AppOffersActivity} from pid 13096
I/WindowManager(  130): createSurface Window{2c513720 Starting com.sg.android.fish paused=false}: DRAW NOW PENDING
V/TabletStatusBar(  193): setLightsOn(true)
I/WindowManager(  130): createSurface Window{2c58a398 com.sg.android.fish/net.youmi.android.appoffers.AppOffersActivity paused=false}: DRAW NOW PENDING
V/TabletStatusBar(  193): setLightsOn(true)
I/WindowManager(  130): createSurface Window{2c4be438 SurfaceView paused=false}: DRAW NOW PENDING
{ 以下、省略 }

Yasuhiro ISHII

unread,
Feb 21, 2012, 8:38:35 AM2/21/12
to luarida-...@googlegroups.com
mars_999様、たろサ様

石井です。
お世話になっております。

MPLAB Xの件解決したようで良かったです。Microbridge/PICは当初、
MPLABで動作させていたのですが、途中でMPLAB Xに乗り換えた
為、以降MPLAB側のプロジェクトは削除してしまっておりました。
有ったほうが良かったですね。すみませんです。

たろサさんの件、是非再現できたらと思いますが、
動かない方のプロジェクトって見させていただくことは可能ですか?

2012年2月21日22:08 たろサ <taro...@gmail.com>:

--

たろサ

unread,
Feb 21, 2012, 8:53:24 AM2/21/12
to luarida-...@googlegroups.com
 石井さん、

> たろサさんの件、是非再現できたらと思いますが、
> 動かない方のプロジェクトって見させていただくことは可能ですか?

 先ほどのメールに添付した「PIC Microbridge Cleaner 01」です。
main.c の

StartingActivity("com.momoonga.luarida.robotscript/.RobotScriptActivity");

の下記の関数で、applicationLaunchedがtrueになってくれないんで、強引にforループを入れてしまっています。
void StartingActivity(const char* activityName)
{
char ac[256];
applicationLaunched = false;
strcpy( ac, "shell:am start -n " );
strcat( ac, activityName );
Connection *con = ADB_addConnection( ac, false);
int i;
while(applicationLaunched == false){
for(i=0;i<75;i++){
ADB_poll(con);
//DelayMs(10);


LATBbits.LATB2 = 0;
DelayMs(50);
LATBbits.LATB2 = 1;
DelayMs(20);
}
applicationLaunched = true;
}
ADB_delConnection(con);
}

 Androidのプロジェクトは、このメールに添付しました。

RobotScript.7z

mars_999

unread,
Feb 22, 2012, 7:22:56 AM2/22/12
to luarida-...@googlegroups.com
たろサ様、 石井様

昨日はありがとうございました.

その後、古いMPLABでも動かすことができました。動かなかった原因はheap
サイズが小さすぎたようです。とりあえず256byteにしていましたが、この値を
2048 byteにしたら動くようになりました.
ライブラリやヘッダーのincludeについては、問題がなかったようです.
mallocなどで多量の(笑)メモリーを確保している場合は、heapサイズも大きく
する必要がありますが、旧MPLABでは、この値を手動で設定するので面倒
です.MPLAB Xでは自動なんですね!!

side2.jpでArduinoのMicrobridgeでカメラのシャッターを制御する記事が公開
されていますが、androido側のアプリ  mb_shutter_ctrl.apk をそのまま利用
させていただいて、PICのMicroBridgeでも同じように動かすことができました。
(実験なので、シャッターはLEDのON/OFFで代用していますが、、、)
Reply all
Reply to author
Forward
0 new messages