ランニングエレクトロニクスのSBDBT(Bluetooth←→シリアル(RS232C)・コンバータ)をユニバーサル基板で自作する

Last-modified: 2016-03-26 (土) 19:57:01
初出 2015-11-8
最終更新 2016-3-26
以前にブレッドボードで動作確認しておいた回路をユニバーサル基板上に作ってみました。
純正のSBDBT(Bluetooth SPPサーバーorクライアント)はPIC24FJ64GB004を採用していますが、ファームウェアのソースコードが、DIPパッケージのPIC24FJ64GB002と互換性があり、自作する場合はPIC24FJ64GB002に変更することができます。なので自作しやすいです。これを作ればスマホから機器やロボットを操作できるようになります。また2つ作ればTWE-Liteみたいに機器同士で通信し合うような使い方もできます。
 

PIC24Fへのファームウェアの書き込みについては、私はPICerFTを使っています。PICkitでデバッグをする予定がない方はPICerFTの自作をおすすめします。PICerFTは以前からこんな風に紹介してきました。
ランニングエレクトロニクスさんはアップツーデートなXC16用のソースコードを公開してくれているので有り難い存在です。
私がブレッドボードで動作確認した頃の最新ファームウェアはVer.140219だったのでPIC24FJ64GB002を使う為にいろいろソースの修正が必要でしたが、現行ファームウェアのソースコードだと基本的には標準でPIC24FJ64GB002に対応しています。ただし、どうもglobal.hだけはまだ未対応のようで、修正を施す必要があるようです。幸い、Ver.140219用に私が作成したglobal.h用の差分を適用すると無事にビルドを完了することができました。あまり覚えていないんですが、Ver.140219当時、データシートを見ながらなんとか修正をおこなったようです。(2016-3-26修正)すみません。違いました。実際には自力で修正したんじゃなくてPICとBluetoothドングルでPCやスマホからSPP通信 - 電気のDIYに掲載されている修正内容のまんまコピーでした。Twitterのあるリンクにそのページがあり、訪れてみると以前参照させて頂いたことを思い出しました。
今回Ver.141217とVer.150910用に私が修正したglobal.hをここに掲載します。差分じゃないんですがランニングエレクトロニクスさんお許し下さい。
ダウンロード  fileforPIC24FJ64GB002_sbxbt_spp_150910_global.h
ダウンロード  fileforPIC24FJ64GB002_sbxbt_spp_141217_global.h
もちろんglobal.hとリネームの上、ご利用下さい。

 

あと、ランニングエレクトロニクスさんはWindows環境で開発されているらしく、ファイル名の大文字小文字を区別するLinux環境でビルドする場合は、インクルードファイル名を2箇所修正する必要があります。確かpic24fxxxx.h→pic24Fxxxxh、pps.h→PPS.hというふうに修正をおこないました。

 

今回はついでにサブ基板上に、従来から持っていたアセンブラのコードを新しめのチップに適用したシリアル接続・赤外線リモコン・トランスミッターを作ってみました。

 

runningele-sbdbt_1_s.jpg
クリックすると大きな画像で表示されます
サブ基板と一体化した状態です。

 

runningele-sbdbt_2_s.jpg
クリックすると大きな画像で表示されます
こちらもサブ基板と一体化した状態です。
作成した当時は全く公開するつもりがなかったので、メッキ線の曲げ方にメリハリがなくて見た目が汚くてすみません。

 

回路図
runningele-sbdbt_circt_s.png
クリックすると大きな画像で表示されます
DIPパッケージでの実態配線に即した回路図なので、それなりに役に立つと思います。
ちなみに、上掲の写真の、私が実際に作成した基板ではICSP用の回路は実装していません。まあソケットで装着している場合、頻繁に書き換える必要のある人以外は必要ありませんよね。ICSP用の回路を実装しない場合、ブレッドボードで書き換えることになると思いますが、その場合、ICSP用の配線以外、何も必要ありません。コンデンサとかプルアップ抵抗などは、何も必要としません。

 


(サブ基板)シリアル接続赤外線リモコン・トランスミッターのソースコード
(サブ基板の方の回路図は省略します。これでも参照して下さい。)

 

同じ「シリアル接続赤外線リモコン・トランスミッター」といっても、こちらはアセンブラコードで、あちらはC言語ソースコードです。8ピンPICは(今のところ)Microchipの戦略上か、RAM・プログラム容量共に小さくて、まだアセンブラが有用です。RS232C経由でコマンドを受信するプログラムを以前MPASMで自作していたのでそれを元にして、PIC12F1822(高機能なEnhanced Mid-Range PIC)用に修正をおこないました。PIC12F1822は以前のチップと違って、RS232C(UART)用のレジスタがBank3にごっそり移動しているので、いろいろ修正が必要でした。他に間接アドレッッシングが16ビットに拡張されているので(だからこそ大きなバッファが確保可能になっているのですが)、この辺りについても修正が必要でした。

 

ダウンロード  filepic12f1822_serial_remocon.asm
ファイルのヘッダ部に、とても参考にできるソースのURLとか、本プログラムの使い方とかを記述してますので、必要な方は利用して下さい。

 

PIC12F822への書き込みもPICerFTでおこなうことができます。最新世代チップなので秋月のPICライタでは書き込むことができません。

 

このプログラムがやっていることを書いておきます。NEC、シャープ、東芝、オーデリック、丸善の各メーカーの証明器具のON・OFFです。こちらに掲載のソースを一つにまとめた形になっています。赤外線リモコン送信機能はRUUさんが昔PIC16F84用に作成したソースを元に延々受け継いできたというか、使い続けてきたものです。今回、遅まきながら搬送波の生成にPWMを使用するように変更しました。PWMを使わないとデューティー比が事実上50%に固定され、少しハンディがありました。

 

※MPASM用のソースは(現行の)MPLAB X IDE、(旧来の)MPLAB IDEのどちらでも全く修正せずに使用できます。

 

ご要望、ご意見、質問を下のフォームにどうぞ
(でもここより、掲示板書き込みフォームのページに書いて頂いた方が気づき易いと思います。)