上記記事に「たか」さんという方から依頼があったのでプログラムを公開します。

 

ボードの方をサーバープログラム、リモコンの方をクライアントプログラムとして開発しました。

制御するpin数の関係から、サーバー側は PIC18F26K22 。

クライアント側は小さく最低限のpin数確保のため PIC16F1705 。

 

通信プログラムなので単純ですがプロトコルがあります。

クライアントからは「L」「R」「U」「C」 Left加算、Right加算、Undo前状態に戻す、Clear初期状態にする、の4つのコマンド送信があります。

サーバーはそのコマンドに対して、「A」「N」「B」 Ack肯定応答、Nack拒否応答、Busy他処理中、の3種の応答があります。

クライアントは、サーバーからの応答の他に、タイムアウトイベントが発生します。こちらから電波が届かない時、サーバーが応答してもその電波が届かない時、があるのでそのときはリモコンのエラーインジケータが点灯します。

 

通信はXBeeのUSART透過モードで行うので、プログラムから有線接続されているように扱います。

ただしリモコンは腕時計型の電池駆動なので消費電力を抑えるため、PICもXBeeもスリープモードになっていますので、XBeeのウェイクとスリープがあります。

 

開発環境は MPLAB X IDE v2.3 です。

ヘッダーファイル MyDef.h は共通。

サーバープログラム matrix.c 、クライアントプログラム 1705_KEYIN.c 、の計3つのファイルでできています。

 

サーバープログラム用プロジェクトを PIC18F26K22 用に作成してヘッダーファイルを指定してビルド。

クライアントプログラム用プロジェクトを PIC16F1705 用に作成してヘッダーファイルを指定してビルド。

それぞれを PICkit3 などの書き込み器を使って PIC に書き込めばハードのコントローラ部分は完成です。

 

それではヘッダーファイル MyDef.h  。各PICの動作周波数と通信のボーレートを決めるだけのもの。

 

クライアントプログラム 1705_KEYIN.c

 

サーバープログラム matrix.c

 

 

回路図はありませんが、実配線図は残っていましたので掲載。

 

サーバー側

この図では右端がPICとXBeeが載っている基板。

この図では左端がそれ。

中心付近の拡大

USB給電は5Vなので、XBee電源は3.3Vへの降圧レギュレータICで行っています。

表面実装部品だらけです。基板パターン3つの島にまたがっているのがMOSFET、2つの島の場合は抵抗かコンデンサです。

 

クライアント側

 

単三乾電池2本動作でエネループ前提なので2.4Vしか給電されません(PICは大丈夫)。XBeeのために3.3V昇圧回路を購入しています。

 

以上