【概要】
PIC18F67J60を使ったLANに接続可能な汎用I/Oユニットを作ってみます。
UDP通信で直接制御可能とし、PC側はVisual Basicでアプリケーションを製作
します。下図が全体外観で、これでPCから下記の機能が実現できます。
・デジタルの入出力制御
LEDの点滅制御
スイッチの状態入力
・アナログ計測値のスキャン
・液晶表示器へのメッセージ出力
この汎用I/Oユニット用のプログラムは、マイクロチップ社のTCP/IPスタックの
デモプログラムをベースにしてUDPアプリケーション部を追加して製作します。
【内部構成】
汎用I/OユニットVer2の全体構成をブロック図で表すと下図のようになります。
基本的な構成は前頁の汎用I/Oユニットと同じですが、RS232Cの接続を直接
できるようにインターフェースICとDSUBコネクタを実装しました。
LAN接続部もより簡単な構成にしました。
【回路図】
この汎用I/Oユニットの回路は下図となっています。
この回路図はフリーのEDAツールである「Eagle」で作成しました。
LANコネクタ部にパルストランス、LED内蔵のものを使いましたので、
終端抵抗とコンデンサだけの実に簡単な回路構成になります。
データシートでは、このLAN用の電源供給部でフェライトビーズが指定
されていますが、入手が難しかったので通常の33uFのRFコイルで代用
しています。
電源は3.3Vですので3端子レギュレータには3.3V出力を使い、入力に
5VのACアダプタを使うことにしました。
そしてこの5V電源を直接CN2のコネクタに接続しています。
実はこのコネクタには液晶表示器を接続する予定なので、この液晶表示器
が5Vでしか動作しませんので、ここを5V駆動とします。
RS232Cのインターフェースにはレベル変換用のICとDSUBコネクタを基板
に実装しました。
《ファイル》
下記で本I/Oユニットの回路図とパターン図のEagle用のファイルが
ダウンロードできます。
★ 汎用I/OユニットVer2回路図
★ 汎用I/OユニットVer2パターン図
【外観】
作成した回路図からEagleを使ってパターン図を作成します。パターンは片面
基板で、サンハヤトの10k基板サイズ(75×100mm)に納まるようにしました。
完成した汎用I/Oユニットの外観は下記の写真のようになります。
汎用I/Oユニットの部品面
PICは取りはずした状態
PICのサブ基板の下にも抵抗やコンデンサ
を実装しています。
汎用I/Oユニットのはんだ面
今回の回路図作成とパターン作成には
フリーソフトのEagleを使っています。
汎用I/Oユニット基板の全体外観
中央が変換基板に実装したPIC18F67J60
変換基板へのはんだ付けはTQFPタイプ
のパッケージなので、はんだ付けには
ちょっとコツが必要ですが、それほど難しくは
ありません。(実装方法のページを参照)
【PIC側プログラムの製作】
汎用I/OユニットのプログラムはTCP/IPのデモプログラムVer3.75を元にし、
それにUDP通信のアプリケーション部を追加しています。
本ユニットに使用したデモプログラムは、デモプログラムの構成の中で
ウェブサーバ用のデータをプログラムメモリに格納する構成のものです。
したがって、UDP通信機能とウェブサーバ機能の両方の機能を持っています。
追加したUDP通信処理部は下記ファイルのようになります。
★ UDP I/Oの追加ファイル
この中にある関数 UDPControlTask() をMainDemoのmain関数内で毎回
呼ぶように追加します。
★★★ UDP I/Oのプロジェクトファイル一式
【PC側プログラムの製作】
PC側のUDP通信を使ったアプリケーションを製作します。
ベースはVisual Basicですが、Visual Studio.NET 2003を使います。
Visual Basicで「Socketクラス」の中の「UDPClientクラス」を使うことで
至極簡単にUDP通信のアプリケーションを作ることができます。
基本の流れは下記のようになります。
インスタンス生成
↓
Connect UDPで相手のポート接続を確認をする
↓
--→Send データを送信する
| ↓
| Receive 折り返し送られて来るデータを受信する
| ↓
| データ処理 受信したデータ内容に基づいた処理を実行
|_____|
↓
Close 通信を閉じる
今回作成したアプリケーションの基本フォームは下図のようになって
います。この各ボタン押下により対応する機能が実行されます。
「接続」
UDPで相手のポートとの接続をします。
IPアドレスは今回は固定となっています
「LED制御」
2個のLEDのオンオフ制御を出力し、折り返しの状態で
ボタンの色を赤、緑に変えます。
「SW入力」
4個のスイッチの状態を入力し、オンオフを色で表します。
「計測」または「停止」
2個の可変抵抗のAD変換値を10進数で表示します。
計測を押すと0.1秒周期で計測を繰り返し、停止を押すと
計測機能を停止させます。
「LCD」
下の欄のメッセージを液晶表示器への表示メッセージとして
送信します。
「消去」
液晶表示器の全消去を指示します。
下記がプロジェクトのファイル一式です。
Visual Studio.NET2003のVisual Basic用のファイルとなっています。
★ UDP汎用I/O プロジェクトファイル