Bluetoothカメラの製作 |
マイコン | AKI-H83069F |
Bluetooth USBアダプタ | BT-Mini2EDR |
カメラ | WCU114WH・BK |
この構成を動作させるには、高いハードルが幾つもありそうですが、試みを進めてみましょう。因みに、私の電子工作レベルは、初心者レベルだと思います。
◎開発環境
・ハード環境
H8/3069F-USBホストボードキットには、ACアダプタが付属していませんので準備する必要があります。
プログラムの書込みなどでパソコンとのシリアルポート通信のため、DSubコネクタと基盤のCOM1を接続します。クリップ付き接続ケーブルなどでもよいですが、私は、已む無くストレートケーブルを切断して作成しました。これは、プログラム書込みツールが頻繁に通信エラーになるため、結線を疑った為ですが、原因は、別にありました。(後述)
・ソフト環境
コンパイル環境は、キットに付属のwingccを使用します。統合開発環境が付属していますが、使用せずにエディター(Visual Studio)+バッチでのmake(コマンドプロンプト)で行いました。
ROMへのプログラム書込みは、付属のSendToolを使用しましたが、ここからが厄介でした。
まず、プログラムの書込みは、基盤のSW設定をモード7の状態にして行いますが、このSWの設定がキットに付属する説明書では、間違っていました。これに気づかずかなり時間を費やしてしまいました。現在は訂正されているようです。
先に書きましたが、SendTool.exeでプログラム書き込むと頻繁に通信エラーが発生します。通信速度を遅くしたり、作成元HPから最新をダウンロードしたりもしましたが、同様でした。私の環境は、
USB TO SERIALケーブルを使用していますので試しに、シリアル直結のマシンを使用してみると、なんと、まったく通信エラーは起きなくなりました。USB
to Serial変換はかなり遅れが生じてエラーを検知しているのでしょう。
プログラムを修正する度にROMへ書込みを行っては、直ぐに書込み限界となってしまいます。よって、モニタプログラムを利用してRAMへプログラムを流し込みデバッグすることにします。幸い、モニタプログラムは、いくつか利用できるものがあるようです。今回は、宮城県産業技術総合センターからダウンロードできるH8簡易モニターを利用させていただきます。但しこのモニタプログラムは、20MHzでの動作となっています。キットは、25MHzなので変更してコンパイルする必要がありました。
◎Bluetoothプロトコルスタック(簡易版)
正規のプロトコルスタックを作成するつもりは、毛頭ございません。相手デバイスと接続ができてデータの送受信ができるものを、目標に作成を行います。はじめは、マスター動作を実装して後でスレーブを実装したいと思います。
まず、Bluetooth USBアダプタのディスクリプタを取得して内容を確認しましょう。
09 02 B1 00 02 01 00 C0 00 | Configuration Discriptor |
09 04 00 00 03 E0 01 01 00 | Interface Discriptor |
07 05 81 03 10 00 01 | EndPoint Discriptor |
07 05 02 02 40 00 01 | EndPoint Discriptor |
07 05 82 02 40 00 01 | EndPointDiscriptor |
Interface Number |
Alternate Setting |
Suggested Endpoint Address |
Endpoint Type |
HCI Commands | |||
0 | 0 | 0x00 | Control |
HCI Events | |||
0 | 0 | 0x81 | Interrupt(IN) |
ACL Data | |||
0 | 0 | 0x82 | Bulk(IN) |
0 | 0 | 0x02 | Bulk(OUT) |
WEBカメラのディスクリプタ
右の採取データを見るとやはり、EndPoint0x85がIsochronous転送となっています。よって、はじめの、設定情報さえ転送できれば、画像データが取得できそうです。Alternate Setting |
00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 |
---|---|---|---|---|---|---|---|---|---|
最大パケット 長(hex) |
0 | 80 | 100 | 180 | 200 | 280 | 300 | 380 | 3ff |
PC Viewer Application
はじめは、シリアルポートから画像データを受信してJpegデコードを行ってみます。焦電型赤外線センサキット
ダミーカメラをドイトで購入(780円)してUSBカメラを基盤だけにして収納してみました。マイコン本体もダミーカメラへ収納したかったのですが、FW書換えなどで不便なので、別のケースにマイコン本体を収納して電池BOXをダミーカメラへ入れました。(左上写真)
はじめの構成説明でBluetoothアダプタは、BT-Mini2EDRを使用すると書きましたが、このアダプタはClass2なので最大10mしか届きません。よって木造住宅2階と1階では、通信できませんでした。そこで、送信側だけでも
Class1のBT-01UDE(PLANEX)を使用したところ、見通しが悪い2階と1階でも接続通信ができました。上の写真は、このアダプタを使用しています。
◎終わりに
最後に、PCで受信した画像を携帯電話などへメール送信するように修正を追加します。これは、本サイトでダウンロードできる、防犯監視ソフトWatchCamと同機能を実装させます。
今回は、C#で画面とメール送信・メール受信(停止・再開指示)を作成してBluetooth通信部分は、VC++でDLLとしました。
これで完成となりました。最後まで読んでいただいた方、ありがとうございました。ここまで、スイスイハードルを飛び越えたように書きましたが、実は、足は青痣だらけです。今回、個人使用のため、プログラム公開予定はありませんが、パソコン側のJPEGデコード部分は、人様のプログラムを利用させていただいていますので、使用希望のかたは、メールをいただければ、デコード部分のソースをお渡しします。
お問合せ・ご質問・ご依頼などございましたらお気軽にメールしてください。
ご質問を頂く時にその場で作成した様なフリーメールでいただくと、回答もそのような内容となってしまいがちですのでご了承ください。