(2015-8-18)本ページは作成が古いのでファームウェアはUSB・HIDクラスを使用していません。なので例えばWindowe 10で使う場合にはここに書いてあることを日本語に読み替えた作業が必要になります。同じハードウェアでもUSB・HIDクラスに対応したファームウェア(作成が必要)に入れ替えればそのような作業は必要ありません(私自身は旧版ファームウェアのままLinuxで常用しています)。
AVR:IgorPlug-USB(USB接続・lirc(赤外線)レシーバー)の製作、その他
AVR:メッキ線のみで配線したLCD2USB(AVRを使ったUSB接続キャラクタ液晶)
AVR:メッキ線のみで配線したHIDaspx(USB接続AVRライタ)の製作
PIC:REVIVE USBを使って廃物利用のゲームコントローラを作る
照明装置(USB LED)ではなく、USB接続でパソコンから操作できるLEDです。PC内の何らかのステータスをディスプレイなしで外部から確認できるようにする装置です。
携帯プレーヤーへのファイル持ち出し時にこれの中なんかから利用することを念頭に置いて作成しました。かなり必要に迫られて作ったので早速活用しています。
機能的にはblink(1), the USB RGB LEDと同じようなものだと思います。ルックスは全然違いますが
【私の使い方】
緑LEDが点灯していると「新着ポッドキャストファイルあり」、オレンジLEDが点灯していると「ストリーミング放送の新着ダウンロードファイルあり」。USBケーブルを介して携帯プレーヤーをNASに接続すると、マウント状態を示す青LEDが点灯、続いて緑LEDとオレンジLEDが消え、持ち出し処理中を表す5ミリ赤LEDの点滅が始まる。持ち出し処理が終わると5ミリ赤LEDが消灯する。やがてsyncが終了してアンマウントされて青LEDが消灯する。
上の一連の動きの中で私がやることは携帯プレーヤーをNASに接続することだけです。こことこことこことここあたりをよく見れば詳しい利用法がわかると思います。LinuxでもWindowsでも利用することができます。
奥の5mmの赤LEDは点滅と常時点灯を切り替えることができ、私の場合は「点滅時=(ポッドキャスト)持ち出し処理中」、「常時点灯時=エラーが発生」という意味で利用しています。
これをテキトーに簡素化したものです。チップはオリジナルのAT90S2313ではなく手持ちのATmega88Pに変更しています。USBコネクタは配線の簡易さを優先して標準タイプを選択しました。しっかりと挿さるのでケーブルごと天井付近から吊って使用しています。
オリジナルのファームウェアの状態でも8ポート利用できるのですが、LEDは5ポート分しか接続していません。
非常に簡単な回路であることがわかると思います。2本のオレンジ色の補助線はソケットと基板表との隙間に通したジャンパ線を示しています。これは常套手法でここでもここでも同様の手法を用いています。つまり「メッキ線のみで配線した・・・」はソケットを使用するからこそ実現できるものです。
回路図
[回路図]
ISP用の配線がありませんが、書き込みにはこんな物も利用することができます。
BSch3V形式・回路図(zip圧縮)
ダウンロード v-usb_powerswitch_circt.zip
ファームウェアの修正
チップ変更への対応とベンダIDの変更の他に、ビット4とビット7の2ビットを使ってポート 4のLEDの点滅・常時点灯を操るというカスタマイズをおこなっています。
ダウンロード PowerSwitch.2008-02-28-Atmega88_etc.patch (2013-7-21更新)
エラーの表現方法を、常時点灯から、長点灯&短消灯の繰り返し(ウルトラマンの3分タイマーみたいな感じ)に変更しました。こっちの方が多分一般的な表現だと思います。
※:開発元でソースは更新されていますが、今回は従来のソースをベースにしました。多分、大して違わないでしょう。
(2015-11-20追記)Linux Mint 17.2の環境でPowerSwitch.2008-02-28ベースのソースをビルドしてみたところビルドできませんでした。試しにusbdrvフォルダをvusb-20121206のそれに差し替えてみるとビルドできました。そこでベースをPowerSwitch.2012-12-08に更新することにしました。実はこれこそPowerSwitch開発元の方でusbdrvフォルダ(だけ)を差し替えたものです。main.cはPowerSwitch.2008-02-28と同じです。
PC(Linux)での(私の)使い方
/usr/local/binにpowerSwitchコマンドをsetuidして置き、同じく/usr/local/binにラッパースクリプトledctrlを置き、さらにそれに対して7種(led-red, led-blue, led-orange, led-green, led-blink, led-error, led-clear)の各シンボリックリンクを張って利用しています。
普段はシェルスクリプトの中から利用しています。
コマンドラインからの使用例
$ led-clear $ led-red on $ led-error on $ led-blink on # errorとblinkはLEDが共通で現在errorがonなのでここで外見に変化は生じません。 $ led-error off # ここでerrorが解除されたので短周期の点滅が開始されます。 $ led-blink off
ダウンロード ledctrl
[ledctrl]
#!/bin/bash
command=${0##*/} CLEAR=false
if test -n "${command}"; then case "${command}" in led-red) port=0 ;; led-blue) port=1 ;; led-orange) port=2 ;; led-green) port=3 ;; led-blink) port=4 ;; led-error) port=7 ;; led-clear) CLEAR=true ;; *) echo "Error" && exit 1 ;; esac fi
if ${CLEAR};then powerSwitch off 0 powerSwitch off 1 powerSwitch off 2 powerSwitch off 3 powerSwitch off 4 powerSwitch off 7 exit fi
if test -n "${1}"; then case "${1}" in on) set=on ;; off) set=off ;; *) echo "Error" && exit 1 ;; esac else echo "Error" && exit 1 fi
powerSwitch ${set} ${port}
Windowsからの利用
コンパイル済みのpowerSwitch.exeを使ってLinuxと同様に操作できますし、そのソースコードを他のアプリケーションに組み込むこともできます。
LED表示以外の利用法
元々PC側から8ポートのステータスを参照する機能があります。この活用法として使用していないポートを入力ポートに変更してトグルスイッチを取り付けてもいいと思います。スイッチを取り付けなくてもPC側からフラグを格納したり参照したりする利用法もあります。
あとPowerSwitchには元々、特別に電源のON・OFFにとって便利な機能が備わっています。