Carの最近のブログ記事


表示パネルを有機ELパネルのDD-25664BE-3AにするとPICで制御しないとならないのですが、そうするとPCとPICを接続するシリアル通信の転送速度がネックになります。

PCとの接続にUSBが使えないか調べてみると、PIC18F2550やPIC18F4550を使うとUSBトランシーバが内蔵されていて、USBを操作するためのスタックも提供されていることがわかりました。

pic18f4550.jpg

本体の表示パネルにはノリタケ電子産業のSCK256X64C-3100-Aを予定していましたが、これって結構なお値段なんですよね。
で、他に使えそうな物を探したところ有機ELディスプレイが見つかりました。

dd-25664-be-3a.jpg

7個のボタンを3線で識別するようにダイオードを使って配線したのですが、まるで反応しません。
「あれ? ダイオードの向きって逆だっけ?」とこのときに変だなと思ったのですが...

2012-02-19 21.08.15.jpg

設計が終わって取り寄せていた部品が来ました。
ほとんどの部品は秋月の通販で仕入れ、ボタンとロータリーエンコーダはマルツパーツ館です。

ハードウェア構成を現実的な線で考えてみます。

とりあえず以前のH/W構成で必要な部品と電源などを並べてみると、大きな問題となりそうな部分はありませんでしたが、PCとPICの通信方法と1DINに収まるのかがカギとなりそうです。

粘土が乾いたのでサンドペーパーで仕上げてみました。

carsp5.jpg

carsp6.jpg

微妙にゆがんでるような気がするけど、まあこれでいいや。

Voyageにはフォントがありませんし、VFDに描画するための便利な機能もありません。
で、とりあえずグラフィック処理プログラムを書いてみました。

とりあえず、面倒なスピーカーの型作りから。

2012-02-11_213927.png

CADで正確な図面を書き、断面図から立体化します。

どうせ車載PCオーディを作るならと、スピーカーもリフレッシュする事に。
大体、エリーゼの純正スピーカーは位置が悪いうえにショボ過ぎて、すぐに不満いっぱいになるに決まってますから。

IMG_2749.JPG

これがメインSP。膝の先の奥まった位置に10cmフルレンジがあり、ほとんど聞こえません。
Bluetoothが言う事を聞きません。

一応動作はしているようだし、ペアリングもできますし、Voyage側からAndroidにpingを打つと応答が帰ってきます。
これはWindowsXPに付けたBluetoothドングルに発信したとき
root@voyage:~# l2ping 00:1B:DC:04:23:XX
Ping: 00:1B:DC:04:23:XX from 74:2F:68:E1:2F:XX (data size 44) ...
44 bytes from 00:1B:DC:04:23:XX id 0 time 9.77ms
44 bytes from 00:1B:DC:04:23:XX id 1 time 27.76ms
44 bytes from 00:1B:DC:04:23:XX id 2 time 19.77ms
3 sent, 3 received, 0% loss


こっちはAndroidに発信したとき
root@voyage:~# l2ping 8C:71:F8:28:B3:XX
Ping: 8C:71:F8:28:B3:XX from 74:2F:68:E1:2F:XX (data size 44) ...
0 bytes from 8C:71:F8:28:B3:XX id 0 time 73.78ms
0 bytes from 8C:71:F8:28:B3:XX id 1 time 34.74ms
0 bytes from 8C:71:F8:28:B3:XX id 2 time 32.78ms
3 sent, 3 received, 0% loss

Android側は受信バイト数が0なのでなんかおかしいようです。

bt.png
Android側で見ると「Connected」と書いてあります。

でも、Android側から

try {
BluetoothSocket sock = device.createRfcommSocketToServiceRecord(RFCOMM_UUID);
sock.connect();
OutputStream os = sock.getOutputStream();
byte [] bytes = "Hello".getBytes("UTF-8");
os.write(bytes);
os.flush();
os.close();
sock.close();
}
catch(Exception e) {
Toast.makeText(this, "send error", Toast.LENGTH_LONG).show();
}

のsock.connect()で例外「java.io.IOException: Service discovery failed」が起こって通信できません。
文面からすると、Voyage側のrfcommサービスが見つからないということみたいです。
BluetoothはTCP/IPのソケットよりも洗練されている仕様ですが、それだけに動作も複雑で今ひとつよくわかりません。
ネットを探しても、LinuxにBluetoothマウスなどの周辺機器を接続する例などは先人のレポートがいろいろありますが、Androidをつなぐというのはほとんど見つかりませんでした。少しだけGUIツールを使って接続する例が見つかりますが、VoyageにはGUIがないのであまり参考になりません。
それにAndroid2.2のBluetoothは、使える機能が少なく中途半端間が否めません。

LinuxのBluetoothスタックはBluezというパッケージを使用しますが、これも設定方法がバージョンでいろいろで何が正しいのやら。Bluezのソースを見るとD-BUSにかなり依存しているようで、なぞは深まるばかりです orz

2023年10月

1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        
OpenID対応しています OpenIDについて