BeagleBoneBlackBox_USB電源制御

本ページの内容はBeagleBoneBlackBoxだけではなく他のLinuxシステムにも応用可能です。例えばCAT724の本体ルートハブもhub-ctrlで動作します。他にもノートPCなども対応している可能性が高いです。しかし安価に売られているUSB-HUBは電源スイッチ回路が省略されているものが多く、電源コントロールが出来ないものが多数あります。

BeagleBlone Black Box は4chのUSBハブを内蔵しており、各ポートごとに独立して+5VのON/OFF制御ができます。市販のUSB連動タップを使用すれば工作なしでコマンドラインからAC100VのON/OFF制御ができます。

動画

どうなるか一目瞭然の動画

コントロール方法

ソース

gniibe先生が hub-ctrl.c を公開されています。こちらから hub-ctrl.c を頂きます。 GPLv2ライセンスとのことなのでこちらのサイトにも転載しておきます。

ビルド

普通にコンパイルもしくはクロスコンパイルします。libusbを使うので -lusb とします。

armhf debian wheezy セルフ上にて
# apt-get install libusb-dev
$ gcc -O2 hub-ctrl.c -o hub-ctrl -lusb                            (通常版)
$ gcc -O2 hub-ctrl.c -o hub-ctrl-armhf-static -lusb -static       (static link版)

ビルド済みバイナリ

BBBのAngstromを起動し、hub-ctrl-armhf-static を (USBメモリを経由するなどして) Angstrom に持ってきたうえで
# mkdir -p /usr/local/bin
# cp hub-ctrl-armhf-static /usr/local/bin/hub-ctrl

使い方

BeagleBone Black にて lsusb でHubのBus番号とDevice番号を調べます。

# lsusb
Bus 001 Device 002: ID 0409:005a NEC Corp. HighSpeed Hub       <--- これ
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Bus=1, Device=2 が分かりました。

# hub-ctrl -b Bus番号 -d Device番号 -P ポート番号 -p 0 または 1

になります。BeagleBoneBlackBoxのUSBポート番号は写真の通り1から4です。

pic1.jpg
(写真は試作品ケース)

サンプル

  • ポート1をOnにする
    # hub-ctrl -b 1 -d 2 -P 1 -p 1
    
  • ポート1をOffにする
    # hub-ctrl -b 1 -d 2 -P 1 -p 0
  • ポート4をOnにする
    # hub-ctrl -b 1 -d 2 -P 4 -p 1
    
  • ポート4をOffにする
    # hub-ctrl -b 1 -d 2 -P 4 -p 0
  • 短縮 /usr/local/bin/usbpower を作って短縮
    #!/bin/sh
    BUS=1
    DEVNUM=2
    
    hub-ctrl -b $BUS -d $DEVNUM -P $1 -p $2
  • ポート4に接続したUSB連動ACタップのON/OFFスクリプト
    #!/bin/sh
    
    while true
    do
            echo ON
            usbpower 4 1
            sleep 300     # 300秒=5分
    
            echo OFF
            usbpower 4 0
            sleep 30      # 30秒
    done

IMG_0377.JPG

ON=5分、OFF=30秒のサイクルで組込み装置の連続起動試験を実施中。

USBシリアル変換ケーブル経由で開発するターゲット装置のシリアルコンソールログを記録したり、GPIOでデジタルI/Oのログも取れますね。工夫次第でいろいろできます。

関連

実績のあるUSB連動ACタップ

リンク

社内リンク

社内リンク(自動)

社外リンク

本ページはリンクフリーです

Last-modified: 2019-07-22 (月) 17:56:00 (1910d)