はじめに

メールの着信をチェックするときはメーラを起動して受信動作をするのが普通です。
しかし新着メールのチェックを一定間隔で行ってくれる便利なソフトもあります。
そういったメールチェックソフトは新着メールを確認すると画面に表示してくれたり、音を鳴らしたりしてくれます。
しかし会社の現場で使用していると、画面に表示していてもスクリーンセーバーで見えなかったりするし、音もあまり鳴らせません。(タッチおじさんやスヌーピーを付けるわけにもいかないし。)
メールチェックソフトの中には、めったに使われない「scroll lock」キーのインジケータLEDを点滅してお知らせするのがあって「これだ!!」っと思ったのですが、最近のノートPCには表示が液晶だったり、そもそもキー自体が無かったりしてなんともなりません。
そこで「無いなら付けてしまえ」というわけで外付けLEDと制御プログラムの開発です。

仕様

まず制御プログラムから考えます。
メールチェッカープログラム自体を作ってしまえれば後の制御はらくらくなのですが、あいにくそんなスキルはありません。
それに多くの優秀なメールチェッカーがフリーソフトとして登録されているので、これを使わない手はありません。
しかし、メール受信時に外部ポートに出力してくれるソフトは(私が探した範囲では)見つかりませんでした。
でも受信時に外部プログラムを起動してくれるメールチェッカーがありました。(メーラを指定して立ち上げるのが普通でしょう。)
これを利用して制御プログラムを立ち上げるようにすれば着信時にLEDを点灯させることも可能になります。

使用する外部ポートは当初パラレルポートを予定していましたが'(LED直付けで点灯できるから)、VisualBasicでWindows2000マシンのパラレルが直接制御できない事が判明したのでシリアルポート制御にしました。
シリアルポートをPICで接続しておき、PCからシリアルデータを送り込むとコマンドを解析してLEDを点灯するようにすればよいことになります。

PIC自体は前作SMAで使用したPIC16F628を今回も使用することにしました。
シリアル入出力機能があるのでプログラミングが楽になるというのがその理由です。

試作

今回はブレッドボードを購入したので仮の回路をこのボード上で組んでみました。

いや〜ブレッドボードを初めて使いましたが・・・楽しい(笑)
なんて言ったらよいか、まるでブロックでも組んでいるみたいに回路が組みあがります。
もっと早く買えばよかった。
それから秋月のマイコンモジュールが今回も便利に使えます。
RS-232Cレベル変換ICと発振子がセットになっているので、その分の回路を組まなくても良いので楽チンです。

出力LEDは4個とし、PICと直結しています。
右上に1個だけあるLEDはブレッドボードの電源ランプにしているだけで回路には関係ありません。
制御プログラムから1バイトのコマンドを受け取り、下位4bitのデータをPICのポートにそのまま出力し、LEDを点けるようにしています。
ちなみに制御プログラムが強制終了したり暴走したりした時のことを考えて、約5秒間コマンド入力が途切れたら自動消灯します。

LEDの左の黒い縦長のは、たまたま手持ちしていた集合抵抗(680Ω×4)です。
しかしこのまま基板に載せるにはもったいないので、例によってRS-232Cレベル変換をトランジスタ化してみました。



実際のところLEDを表示するだけなので受信ラインだけ作れば十分なのですが動作確認を通信ソフトでやっていると、ど〜してもエコーバックして欲しくなるので(PICがちゃんとコマンドを受信しているか判んないんで)送信もトランジスタで組んでいます。
それからこの回路では発振子も省略し、PICの内部発振設定で動作させています。
動作クロックが4MHzとかなり遅くなるのですが、単にLEDを点けるだけなので全然問題無しです。
(内部発振ができるのも16F628のいいところですね。16F84ではできません。)
電源は例によってシリアルポートから取れませんのでUSBよりちょろまかしています。
USBであれば安定した+5Vが取れると思われたので、レギュレータも搭載せず直接駆動しています。(コンデンサくらいは付けましたが)

製作


ユニバーサル基板上に組んでみました。
今回は別に小さく作る必要なんて無いんですけど、なんとなく9ピンのシリアルコネクタの幅に合わせてみました。
適当に基板を切り出してから部品配置を考えたのでちょっと配置が苦しくて後悔もしました。
抵抗とトランジスタの足を同じ穴に通したりICソケットの中にコンデンサを配置したりしてつじつまを合わせています。
しかしながら基板の裏面には一切部品を配置せずに組んでいます。

これを基板ごとシリアルポートに差込み、LEDはえいやっと延長して見やすいところにセットして、電源はUSBより供給するとこんな感じ・・・。

もうちょっとカッコよく作ればよかったな〜。
このように基板を直挿ししても両脇のコネクタはちゃんと空いています。

今回の回路図です。

電源回路はUSB直結なので省略しています。
また使うだけであればエコーバックのラインは不要なんで、PICの8ピンに繋がるトランジスタの回路は省略可です。

製作後
PIC16F628の内部発振の4MHzではRS-232C通信が不安定なことが判明しました。
普通に通信できるチップも有れれば、受信はできるけど送信できない(エコーバック時にバケる。でも LEDの表示は正確。)チップもありました。
送信で失敗するチップでも設定を換えて外部発振子で駆動すると(手持ちで4MHzのが無かったので20MHzで実験しました)ちゃんと送信できたりします。
でもまあ受信はできているし、動作に特に支障は無いのでそのまま内部発振で使用しています。

制御プログラムとPICのソースは整理がついたらUPします。