戻る
PICNICでPCの電源をコントロールしよう



PICNICとは (知らない人向け)
PICNICは秋月電子で販売されているキットで、ネットワーク(LAN)に接続してI/Oのピンを制御するというものです。I/Oは入出力あわせて12ポートあり、一部はアナログ入力として使えるなど柔軟な設計になっています。表面実装部品はあらかじめはんだ付けされているので、抵抗やコネクタなどの部品を取り付ければすぐに動作します。
現在はPICNICバージョン2が発売されていてほとんどの部品が表面実装になり、よりコンパクトな基板になりました。
Ver.1 Ver.2
PICNIC組み込み例
PICNICバージョン2は基板サイズが100×70(mm)です。専用ケースが発売されているようですが、どう見てもダサい。ということで、現在使用しているケースはタカチのYM-115というアルミケースを使用しています。
サイズは115×80×20(mm)でCDよりも小さい。
厚さが20mmしかないので、うまいこと収めないと蓋が閉まらない。

下はケース内。かさ上げのスペーサは、2mm厚の六角ナットを使っている。LANのコネクタと蓋がツラ位置になるよう、挿入部品の足は基板裏面でケースに触れないようにニッパで丁寧に切り込む必要がある。また、外部へのI/Oはフラットケーブルではなくコネクタにしたほうがすっきりするので、アナログVGAに使われている15ピンのD-SUBコネクタを採用しました。
ちなみに四角い穴はいつものようにピンバイスとやすりで開けました。

穴あけ精度に注目!
PCの電源コントロールについて
さて、PICNICを使って電源をコントロールするには大まかに次の方法が考えられます。

電源をONするには・・・
・ I/Oからドライバ回路を通してリレーでACを直接駆動する。AC復帰時に電源が入るようBIOSの設定が必要。
・ I/Oからフォトカプラなどを通してPCの電源ボタンの代わりに導通させる。
・ I/OからPCのシリアルポートにつなぎ、Wake On Ring機能でPCを起動させる。これもBIOSで設定が必要。
・ PICNICからWake On LANのマジックパケットを送信してPCを起動させる。これもBIOSの設定が必要。

電源をOFFするには・・・
・ ACを直接駆動する回路では、AC電源を無理やり落とす。非現実的。
・ I/Oからタイマ回路を経由し、PCの電源ボタンを1秒ほど押した状態にする。PCの状態によってはシャットダウンが始まらない場合がある。
・ デスクトップPCならば、I/OからMAX232などを通してPCのシリアルポートにつなぎ、WindowsのUPSサービスでシャットダウン行う。安全。
・ ノートPCではUPSサービスが使えないので、シリアルポートの状態を監視する常駐ソフトを作って対応する手もあり。

まぁ、こんなところでしょうか?
応用では、I/OでPCの5Vライン(USBコネクタなど)を監視して、シャットダウンが完了したか判断するのもいいと思います。
旧式インターフェースであるシリアルポートは最近のPCについていないことがあります。USBの変換ケーブルもあったりしますが、Windowsが起動しているのが前提条件なので起動のトリガに使うことはできません。

UPSサービスの設定ですが、「電源オプション」コントロールパネルの中にあります。UPSのタイプをカスタムにすると右のような画面が出てくるので、アクティブ時にハイなのかローなのかを指定します。間違って設定すると、Windowsが起動した直後に電源障害と判断してシャットダウンがかかってしまいます。
シリアルポートの信号は以下のようになっています。
PC側のピン信号内容
1 DCD (入力)バッテリ残量の低下
4 DTR (出力)UPSをシャットダウンさせる
5 GNDGND
8 CTS (入力)電源障害/バッテリ駆動中
9 RI (入力)Wake On Ring


Wake On LAN機能付 PICNICファームウエア
ネットでWake On LANに関するページを見ていると「ルータ越えはできませんね」に始まり、「PICNICでやるにしてもファームウエアを作り直さないと…」みたいなコメントが多くあります。ということで、Wake On LAN機能付ファームウエアを作りました。MPASMでアセンブルして書き込んでください。
picnic_wol_1300.asm
コンフィグワードは下のとおりです。
CONFIG = 0x3F72
FOSCHS
WDTEDisable
PWRTEEnable
BODENEnable
LVPDisable(RB3=I/O)
CPDNot-Protect
WRTDisable
DEBUGDisable
CPNot-Protect

使い方ですが、Ver.1.2.0.0のファームウエアをベースにWEBから操作するWake On LANの機能を追加しています。ブートストラップモードでは設定は行えません。

登録できる送信先のPCは4箇所です。Configuration の Host ? MAC Address に送りたい宛先PCのMACアドレスを16進数で入力してください。区切り文字はコロンになっていますが、ハイフンも使用できるのでコマンドプロンプトからコピペでもOKです。最低限のエラーチェックしかしていないので、全角文字や変な記号を入れるとおかしな値が代入されてしまいます。
Wake On LANのFireボタンをクリックすると、該当のMACアドレス宛にマジックパケットが送信されます。マジックパケットはAMD Magic Packet Formatです。

さぁ、MACアドレスを入力したら、ルータで80番ポートをオープンにして携帯電話からPCの電源を入れてみましょう。

ファームウエアの作成にはトラ技2001年1月号と信州大学 情報工学科のページからMPASM版Ver.1.2.0.0のソースリストを参考にさせていただきました。


戻る
Update 2009/10/08