v-usb_powerswitch の変更点

(2015-8-18)本ページは作成が古いのでファームウェアはUSB・HIDクラスを使用していません。なので例えばWindowe 10で使う場合には[[%%%ここ%%%:http://answers.microsoft.com/en-us/insider/forum/insider_wintp-insider_devices/how-do-i-disable-driver-signature-enforcement-win/a53ec7ca-bdd3-4f39-a3af-3bd92336d248?auth=1]]に書いてあることを日本語に読み替えた作業が必要になります。同じハードウェアでもUSB・HIDクラスに対応したファームウェア(作成が必要)に入れ替えればそのような作業は必要ありません(私自身は旧版ファームウェアのままLinuxで常用しています)。
----
TITLE: メッキ線のみで配線したUSB接続・LEDインジケーター(V-USB・PowerSwitch)
RIGHT:初出 2011-5-29
RIGHT:最終更新 2015-11-20
RIGHT:製作時期 2011-5
LEFT:
''当サイト中のUSB接続のPCアクセサリーを扱った他のページ(IgorPlug-USBを除きWindows, Linux両対応)''
&size(12){[[AVR:IgorPlug-USB(USB接続・lirc(赤外線)レシーバー)の製作、その他>igorplug-usb]]};
&size(12){[[AVR:メッキ線のみで配線したLCD2USB(AVRを使ったUSB接続キャラクタ液晶)>lcd2usb]]};
&size(12){[[AVR:メッキ線のみで配線したHIDaspx(USB接続AVRライタ)の製作>hidaspx]]};
&size(12){[[PIC:REVIVE USBを使って廃物利用のゲームコントローラを作る>bit-trade-one_revive_usb]]};

#br
照明装置(USB LED)ではなく、USB接続でパソコンから操作できるLEDです。PC内の何らかのステータスをディスプレイなしで外部から確認できるようにする装置です。
携帯プレーヤーへのファイル持ち出し時に[[%%%これ%%%>download-radio#download-radio]]の中なんかから利用することを念頭に置いて作成しました。かなり必要に迫られて作ったので早速活用しています。
機能的には[[%%%blink(1), the USB RGB LED%%%:http://www.kickstarter.com/projects/thingm/blink1-the-usb-rgb-led]]と同じようなものだと思います。ルックスは全然違いますが
#br
【私の使い方】
緑LEDが点灯していると「新着ポッドキャストファイルあり」、オレンジLEDが点灯していると「ストリーミング放送の新着ダウンロードファイルあり」。USBケーブルを介して携帯プレーヤーをNASに接続すると、マウント状態を示す青LEDが点灯、続いて緑LEDとオレンジLEDが消え、持ち出し処理中を表す5ミリ赤LEDの点滅が始まる。持ち出し処理が終わると5ミリ赤LEDが消灯する。やがてsyncが終了してアンマウントされて青LEDが消灯する。
#br
上の一連の動きの中で私がやることは携帯プレーヤーをNASに接続することだけです。[[%%%ここ%%%>download-radio#download-radio]]と[[%%%ここ%%%>download-radio#on_ins_exec]]と[[%%%ここ%%%>download-radio#download-radio_contents]]と[[%%%ここ%%%>download-radio#latest-copy_contents]]あたりをよく見れば詳しい利用法がわかると思います。LinuxでもWindowsでも利用することができます。
#br
[[&ref(v-usb_powerswitch_1_s.jpg);:http://wikiwiki.jp/disklessfun/?plugin=attach&pcmd=open&file=v-usb_powerswitch_1_b.jpg&refer=v-usb_powerswitch]]
奥の5mmの赤LEDは点滅と常時点灯を切り替えることができ、私の場合は「点滅時=(ポッドキャスト)持ち出し処理中」、「常時点灯時=エラーが発生」という意味で利用しています。
#br
[[&ref(v-usb_powerswitch_2_s.jpg);:http://wikiwiki.jp/disklessfun/?plugin=attach&pcmd=open&file=v-usb_powerswitch_2_b.jpg&refer=v-usb_powerswitch]]
[[%%%これ%%%:http://www.obdev.at/products/vusb/powerswitch.html]]をテキトーに簡素化したものです。チップはオリジナルのAT90S2313ではなく手持ちのATmega88Pに変更しています。USBコネクタは配線の簡易さを優先して標準タイプを選択しました。しっかりと挿さるのでケーブルごと天井付近から吊って使用しています。
オリジナルのファームウェアの状態でも8ポート利用できるのですが、LEDは5ポート分しか接続していません。
#br
[[&ref(v-usb_powerswitch_3_s.jpg);:http://wikiwiki.jp/disklessfun/?plugin=attach&pcmd=open&file=v-usb_powerswitch_3_b.jpg&refer=v-usb_powerswitch]]
非常に簡単な回路であることがわかると思います。2本のオレンジ色の補助線はソケットと基板表との隙間に通したジャンパ線を示しています。これは常套手法で[[%%%ここ%%%>lcd2usb]]でも[[%%%ここ%%%>igorplug-usb]]でも同様の手法を用いています。つまり「メッキ線のみで配線した・・・」はソケットを使用するからこそ実現できるものです。

** 回路図 [#u1457900]
[回路図]
[[&ref(v-usb_powerswitch_circt_s.png);:http://wikiwiki.jp/disklessfun/?plugin=attach&pcmd=open&file=v-usb_powerswitch_circt_b.png&refer=v-usb_powerswitch]]
ISP用の配線がありませんが、書き込みには[[%%%こんな物%%%>avr-writer#helper-board]]も利用することができます。
#br
BSch3V形式・回路図(zip圧縮)
ダウンロード &ref(v-usb_powerswitch_circt.zip,nolink);

** ファームウェアの修正 [#n1ce7426]
チップ変更への対応とベンダIDの変更の他に、ビット4とビット7の2ビットを使ってポート 4のLEDの点滅・常時点灯を操るというカスタマイズをおこなっています。
#br
ダウンロード &ref(PowerSwitch.2008-02-28-Atmega88_etc.patch,nolink); ''(2013-7-21更新)''
エラーの表現方法を、常時点灯から、長点灯&短消灯の繰り返し(ウルトラマンの3分タイマーみたいな感じ)に変更しました。こっちの方が多分一般的な表現だと思います。
※:開発元でソースは更新されていますが、今回は従来のソースをベースにしました。多分、大して違わないでしょう。
#br
(2015-11-20追記)Linux Mint 17.2の環境でPowerSwitch.2008-02-28ベースのソースをビルドしてみたところビルドできませんでした。試しにusbdrvフォルダをvusb-20121206のそれに差し替えてみるとビルドできました。そこでベースをPowerSwitch.2012-12-08に更新することにしました。実はこれこそusbdrvフォルダ(だけ)を差し替えたものです。main.cはPowerSwitch.2008-02-28と同じです。
(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)での(私の)使い方 [#va784bc8]
/usr/local/binにpowerSwitchコマンドをsetuidして置き、同じく/usr/local/binにラッパースクリプトledctrlを置き、さらにそれに対して7種(led-red, led-blue, led-orange, led-green, led-blink, led-error, led-clear)の各シンボリックリンクを張って利用しています。
普段は[[シェルスクリプト>download-radio]]の中から利用しています。
コマンドラインからの使用例
 $ led-clear
 $ led-red on
 $ led-error on
 $ led-blink on # errorとblinkはLEDが共通で現在errorがonなのでここで外見に変化は生じません。
 $ led-error off # ここでerrorが解除されたので短周期の点滅が開始されます。
 $ led-blink off
#br
ダウンロード &ref(ledctrl,nolink);
[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からの利用 [#a1b03899]
コンパイル済みのpowerSwitch.exeを使ってLinuxと同様に操作できますし、そのソースコードを他のアプリケーションに組み込むこともできます。

** LED表示以外の利用法 [#nfd15f28]
元々PC側から8ポートのステータスを参照する機能があります。この活用法として使用していないポートを入力ポートに変更してトグルスイッチを取り付けてもいいと思います。スイッチを取り付けなくてもPC側からフラグを格納したり参照したりする利用法もあります。
あとPowerSwitchには元々、特別に電源のON・OFFにとって便利な機能が備わっています。
#br

* ご要望、ご意見、質問を下のフォームにどうぞ&br;(でもここより、[[掲示板>board]]や[[書き込みフォーム>form]]のページに書いて頂いた方が気づき易いと思います。) [#xc27db6d]
#areaedit(nofreeze,noauth,btn:[修正(書き間違った場合にご利用下さい)])
#comment
#areaedit(end)