伝送装置--タッチアンドゴー計画
2004年8月30日
レコーダーとパソコンをつなぐインターフェース基板
タイムレコーダーでEEPROMに記録したデータを、EIA-574インターフェース(通称RS-232)を通じてパソコンに送り届ける装置です。
タイムレコーダー本体に、EIA-574のコネクタをつけることも可能でしたが、別付けの装置とすることで、タイムレコーダー本体の小型化や、通信の高速化を実現しました。
パソコンにつなぐコネクタが右上に、タイムレコーダーにつなぐコネクタが左上(裏面)についています。基板を裏面から見ると、ご覧のように、タイムレコーダーに差し込むためのコネクタが見えます。
回路図とハードウエアの仕組み
この伝送装置の回路図は、次のようになっています。
- タイムレコーダー本体と同じく、PIC16F628を使っています。EEPROMへの接続やEIA-574インターフェース、押しボタンやLEDなどにI/Oピンを使っています。
- マイコンのクロック周波数は、4.00MHzです。タイムレコーダー本体の100倍以上あるので、EEPROMへのアクセスやパソコンへの転送は、タイムレコーダーが自分で行った場合と比べ、たいへん高速です。ACアダプタ駆動なので、電池寿命の心配はありません。
- コネクタピンを使って、タイムレコーダー本体と接続します。ピンの番号は、タイムレコーダー本体とこの伝送装置とでは、別につけられています。
- タイムレコーダーのEEPROMに直接アクセスして、情報を取得します。
- EEPROMへの電源ピンは、タイムレコーダーの電源電圧よりも低めの電圧を加えるように、ダイオードをいくつか使って調整しています。みだりに高い電圧でアクセスすると、タイムレコーダーの内部に電流が流れ込んで、故障させてしまう可能性があるからです。
- EEPROMのクロックとライトプロテクトは、オープンコレクタ回路でアクセスしています。データピンは、マイコン自身のオープンコレクタIOピンを使っています。こうすることで、伝送装置から高い電圧が、タイムレコーダーに流れ込まないようにしています。
- EIA-574インターフェースのコネクタがあります。ADM232A互換のインターフェースICを使っています。伝送装置からパソコンへデータを送ることはできますが、パソコンからデータを受け取ることはできません。
- EIA-574インターフェースでは、データを送るためのRxDピン、パソコンがデータを受け付けているかを知るためのRTSピン、グラウンドピンだけを使っています。パソコンへデータを送る処理では、RTSピンを使ったハードウエアフロー制御を行っています。
- 動作を指示するためのボタンや、リセットボタンがあります。
- 状態を確認するために、LEDをいくつかつけました。
タイムレコーダー本体につなぐコネクタのピン番号は、この伝送装置とタイムレコーダー本体とで、次のように対応しています。なお、伝送装置の回路図には、10ピンのように書いてありますが、実際には、3番から9番までの7本だけが存在します。
伝送装置 | タイムレコーダー |
3 | 8 |
4 | 7 |
5 | 6 |
6 | 5 |
7 | 4 |
8 | 3 |
9 | 2 |
部品の配置図を、次に示します。
無理のない配置にできたと思います。タイムレコーダー本体に、さらにこれだけ積み込んだら、かなり大きくなってしまうことが分かるでしょう。
ちなみに、EIA-574インターフェースの部分では、メス型コネクタをつけるはずのところに、うっかり間違えてオス型コネクタをつけてしまったので、変換コネクタを自作するはめになってしまいました。
シリアルポートは通常、パソコンについているコネクタがオス、周辺機器についているコネクタがメスとなるそうです。ストレートケーブルは、一方にメスコネクタ、もう一方にオスコネクタがついていることが多いようです。
こういうことって、一度失敗してみるとよく分かります。
ソースコードとソフトウエアの仕組み
マイコンのソースコードは、次のようになっています。
- 青いボタンが2秒以上押されると、タイムレコーダー本体のEEPROMと通信が始まります。
- EEPROMにアクセスして、記録をはじめたアドレスと、最後に記録をしたアドレスを検索します。終了位置は、最初にffffがある場所です。開始位置は、「fff?」がある場所ですが、まずは、ffffよりも先に現れ、ffffに最も近いものが優先されます。次に、ffffよりも後で、最も後ろに出てくるものが優先されます。「fff?」がない場合は、ffffが出現した位置を、開始位置とみなします。検索に先立って、EIA-574にバージョン情報などの信号を送ります。(「fff?」とは、fff0からfffeまでの範囲の値をいいます)
- 転送するアドレスの範囲が決まると、データの転送が始まります。
2バイトずつメモリから読み取り、EIA-574に送り出していきます。
終点のアドレスにあるデータを送るまで、アドレスを順次進めていきます。最後のアドレスの次は、最初のアドレスになっているとみなします。
- 転送が終わると、黄色いボタンが押されるのを待ちます。さきほど転送したデータを、今後は送らないようにしたい場合は、黄色いボタンを2秒以上押します。
- 黄色いボタンが2秒以上押されると、EEPROMの終点アドレスに、伝送終了信号「fff0」を書き込みます。終点アドレスの1つ先の場所には、終端を意味するffffを書きます。
次回送信するときは、伝送がこの「fff0」から始まるようになるので、これよりも前の情報は送られなくなります。
- EIA-574の通信では、RTSピンを使ったハードウエアフロー制御を行っています。パソコンが信号を要求しているかどうかをRTSピンを見て判断し、要求があるときにだけデータを送るようにしています。パソコンの側では、Windowsであれば「ハイパーターミナル」や「Tera Term」(フリーソフトウエア)で、「ハードウエアフロー制御」をオンにして通信します。詳しい通信条件としては、「ビットレート38,400bps、パリティなし、スタートビット1ビット、ストップビット1ビット、ハードウエアフロー制御あり」、となります。
- このソフトウエアでは、通信をする相手と協調しながら動作します。例えば、タイムレコーダー本体との通信では、通信の許可を得てから、EEPROMにアクセスします。また、パソコンとの通信では、RTS端子から要求の信号を受けてから、データを送っています。
やってみましょう
- パソコンとつながるおもちゃを作ってみましょう。押しボタンでも、扉につけたスイッチでも、パソコンとつなげばおもしろい応用ができるかもしれません。
- パソコンで操作できるおもちゃを作ってみましょう。プログラム次第では、おもしろい活用ができるかも。
ちなみに、電子工作はやけどやけがをしがちな遊びです。また、パソコンとつなぐことで、パソコンを壊してしまう可能性もあります。電子工作をするときは、ご自分で責任を持って、安全に気をつけるようにしましょう。
杉原俊雄のホームページ ->
PICマイコンを楽しむ ->
伝送装置--タッチアンドゴー計画
製作・著作:杉原俊雄(すぎはら としお)
(c)2004 Sugihara Toshio. All rights reserved.