自作電子小物/PCサーバ警告ランプ
自作電子小物/PCサーバ警告ランプ
Server Warning Light V0.1
2010年4月14日水曜日
PCサーバのUSBに接続し、障害等で介入が必要になった時に、気がつき易くするための警告灯です。離れていても目立つ様に、点滅させたりブザーで音を出したといった動作を、仮想シリアル接続で制御できます。パトライト社の製品が有名ですが数万円と高価ですし、単純なもので良かったので自作してみました。製作費は1000円、制御部にマイクロチップテクノロジ社のPIC18F14K50を使用し、ソフトウエアはC言語にてコーディングしています。カスタマイズし易い様に、USBから内蔵プログラムの更新が可能です。
<機能/特徴>
■光る!鳴る!USBから指令と給電ができる
■平時、サーバ画面や監視用PCを消しせるので節電できる
■単純、安価、製作容易、ブートローダ対応
<仕様>
名称:PCサーバ用警告ライト
分類: USB接続形小型警告灯
発光機能:高輝度白色LED7灯、点灯、点滅(8Hz,4Hz)、1灯単位の個別点灯、流星表示
発音機能:「ドーレドーレミー」の繰り返し音
接続インタフェース:USB、CDC(通信デバイスクラス、仮想シリアルポート)
外形:高さ220mm、直径22mm、円柱形
電源:USBより給電、最大200mA
製作費:約1000円
<技術的なポイント>
■ハードウエア
・Microchip Technology社PIC18F14K50マイクロコントローラ
・USBデバイス
・アノードコモン高輝度LEDのNPNトランジスタ駆動(スタティック表示)
・圧電スピーカ駆動
・ISPコネクタとUSB接続の共用
■ソフトウエア
・プログラミング言語はC、開発環境はMPLAB、C18のペリフェラルライブラリを使用
・USBデバイスCDC(通信デバイスクラス→仮想シリアルポート接続)とブートローダ
・割込処理、PIC18F14K50の2段階の優先度分け機能を使用
・ソフトウエアでオルゴールを実装
<構成・方式>
■PCサーバ接続方法
RS232C、USB、LANあたりが現実的な接続手段ですが、設置場所がサーバの近くという条件では、やはりUSBが最適だと思います。近頃のサーバはシリアルポートが付いていなかったり、LANはどうしてもコスト高になるし電源供給を別途用意しなければならないのは使いにくいので、選択肢から外れてしまいます。
PCサーバ上の監視ソフトウエアから外部制御を行う場合、外部プログラム起動で連携する方法が大抵サポートされているので、簡単・確実です。OS標準のechoコマンドを使い、指令文字列をシリアルポート、この場合USB-CDC機能でブリッジされたシリアルポートに書込む/送り込む事により連携を実現します。
■表示部
やや強めに発光した方が良いと思い、高輝度LEDを点滅もしくはフラッシュ動作させるのが良いと考えました。安く手に入るLEDでは、1灯だと発光量が足りない様に感じましたので、複数点灯出来る様にします。
■発音機能
やはり、光だけでは気がつかない場合もあるので、音を出す機能が必要だと考えました。単純なビープ音が出れば良いので、安価で小型・駆動回路も単純な圧電ブザー(圧電スピーカ)を選択します。
直結での駆動で、音圧がどの程度になるか気になったので実際鳴らしてみました。使う環境や、部品にもよると思いますが十分だと判断しました。足りなければ、差動駆動する手もありましたが、特に不要のようです。差動駆動は、2ポートを使いハイローを相互逆に与えるようにする事により多くのエネルギーを供給する方式です。
■制御部
安くUSB機能を実現するには、私の知る限り
・Microchip PIC18F14K50
・Atmel AVR ATTINY2313 + Software USB
です。
今回は手っ取り早く完成させたかったので、実績のあるPICの方を選択しました。
■電源部
USBで供給される5Vを、安定化せずそのまま使用します。マイコン側で問題が出そうですが、今回使用するPICはレギュレータを内蔵しているので大丈夫だと考えました。
<回路図>
<部品表>
送料/交通費を除きます。
手持ち品等をうまく使えば、600円で済みます。
<ソフトウエア>
■開発に必要な物
USBの付いた Windows PC(パソコン)
Microchip MPLAB IDE 8 (*1)
Microchip C Compiler for PIC18 MCUs v3 (*1)
Microchip Application Libraries (*1)
PICkit等のプログラム書込み器 または USBブートローダの書込まれたPIC18F14K50デバイス
*1: Microchip社のサイトからダウンロード可能
■ソースコード
説明した方が良い点は以下の通りです。
・ブートローダ対応
ブートローダ対応のオブジェクトを作る為に、次の修正を行っております。
main.c中の割込/リセットベクタアドレスを+0x1000する、Microchipから提供されているサンプルファイルに既に記述があるのでそのまま使うと良いでしょう。“PROGRAMMABLE_WITH_USB_HID_BOOTLOADER” の定義から追いかけると関係する部分が判ると思います。
リンクパラメタ(rm18F14K50.lkr)を修正、Microchipから提供されているサンプルファイルに既に記述があるので、//コメントを有効にしたり無効にしたりするだけです。
ビルドで出来上がった .HEXファイルは、HIDBootLoader.exeに入力できる形になっているはずです。ブートローダの使い方については、「自作電子小物/TIPS/ブートローダ使用例/PIC18F14K50」をご参照下さい。なお、HardwareProfile.hファイルの”PROGRAMMABLE_WITH_USB_HID_BOOTLOADER”の定義をコメントアウトすれば、通常の.HEXファイルになります。
<ダウンロード>
EAGLE5.6プロジェクトファイル:
MPLABプロジェクトファイル :
「Microchip Application Libraries v2009-11-18」のWindows用のUSBデバイスドライバを含みます。
ライセンス: フリーソフトウエア(GPL v3)
作成者:富樫豊彦 tog001@nifty.com
開発環境:
Windows2000 SP6 / VMware Fusion 3.0.2 / Mac OS X 10.5
CadSoft Computer EAGLE 5.6 Light Edition for Mac
Microchip MPLAB IDE 8.36
Microchip C Compiler for PIC18 MCUs v3.33
Microchip Application Libraries v2009-11-18
PICkit 2 v2.60
実行に必要な環境も、上記に準じます。
異なるバージョン・環境で実行する場合、他の環境も出来るだけ新しいバージョンを用意した方がトラブルが少ないと思います。バージョン間の整合性に関しては、全ての組み合わせを確認できる訳ではないので、各自の判断・試行が必要になるでしょう。特に、WindowsPCで利用する場合、USBデバイスドライバは、マイクロチップ社から提供される物を利用する事になりすので、マイクロチップ社のホームページから最新の「Microchip Application Libraries」に含まれるドライバを入手する必要があります。機能の関係、提供元をよく考えて、最新のプログラムを集めてください。
<基板>
一品ものでしたので、蛇の目(ユニバーサル)基板で作りました。左側が上面、右が裏面です。
再利用部品を最大限使ったので、部品表の物と一部違います。黒い帽子の様に先に付いた圧電スピーカは多分壊れたプリンタサーバの基板から、USBケーブルはコーヒーをこぼして壊したキーボードから外したものです。
ISPコネクタとUSBケーブル用のコネクタを兼用にしていますが、ブートローダが書込まれていればUSBケーブル直結でも良いと思います。
<ケース>
ちょうど良い市販ケースが見当たらなかったので、透明アクリルパイプで作りました。
作ったと言うのは大げさで、ホームセンターで素材を買って来て切って、プッシュボタンの穴を開けただけです。中身がもろ見えでは恥ずかしいので、目立たない様につや消しクリア塗装を行いました。
<使用法>
USBコネクタを挿すと、LEDが全部点灯します。ボタンを長押しすると、強制的に消せます。
・Windowsの場合
初めての場合、ドライバのインストール画面が表示されますので、プロジェクトディレクトリのinfディレクトリを指定して下さい。
COMポート番号が自動付与されているはずなので、デバイスマネージャの「ポート(LPTとCOM)」で確認して下さい。コマンドプロンプトを起動し、次のコマンドを打つ事によって、動作指示できます。
blinkはブリンクを開始させる指示を示します。これを、監視ソフトウエアに直接、もしくはバッチファイル経由で動く様にすれば、連携仕込み完了。
うまく動かない場合、ハイパーターミナルを使って対話的に指令を送る方法もあります。指令が正常に受け付けられた場合「OK」、誤っている場合「NG」が返されます。
他に、次の指令があります。
lon LEDを全部点灯
lon <N> <N>番LEDのみ点灯
loff LEDを全部消灯
loff <N> <N>番LEDのみ消灯
rev 点灯/消灯を反転
blink ブリンクを開始(高速)
blink 1 ブリンクを開始(低速)
blink 2 流星点灯開始
blink 0 ブリンクを停止
beep 1 警告音を開始
beep 0 警告音を停止
・Mac OS Xの場合
特にデバイスドライバのインストールは不要です。ただし、10.6の場合、モデムのセットアップするかどうか聞いて来ますのでキャンセル(*1)して下さい。ユーティリティのターミナルを開き、 次のコマンドを打つ事によって、動作指示できます。
最初のlsコマンドは、デバイス名を確認するためのものです。名前は、必ず/dev/cu.usbmodemで始まりますが、差したUSBポートの位置で後ろの方が決まります。(*2)
これはブリンクを開始させる例です。指令はWindowsの場合と同じです。
うまく動かない場合、screenコマンドを使って対話的に指令を送る方法もあります。
指令が正常に受け付けられた場合「OK」、誤っている場合「NG」が返されます。
*1: キャンセルせず、モデム設定をしてしまえば一々聞いてこなくなります。モデムとして使う訳ではないので、機種は何でも構わないと思います。”NULL MODEM”で問題ありませんでした。
*2: 小物内のUSBデスクリプタに、シリアル番号定義を付け加えると、その名前が使われる様です。
<余談>
必要に迫られ、急遽作ったので雑な仕上がりになってしまいました。
白色LEDにしていたのでノートPCで手元を照らすのにも使えますが、明るすぎるのでソフトウエアを変更して輝度をコントロールした方が良さそうです。また、点滅タイミングを高速にして振ると文字が見えるようなお遊びも出来そうです。
富樫 豊彦 tog001@nifty.com
The USB warning light for PC server.
On/Off/Blink and ring from server management software.