Raspberry PiにUSB扇風機を接続してUSBポートをON/OFF制御する方法
by tango · 公開済み · 更新済み
こんにちは筆者です。春といってもまだ雪が大量に降る青森では窓に水滴がついてビショビショになることがあります。そこで今回はUSB扇風機を窓に向けて結露を防止しようと考えたわけである(別に制御しなくてもいいけど…面白そうなので)。
今回使用するUSB扇風機
このUSB扇風機の仕様は電圧 DC 5V、電力2.5Wなので電流は0.5A程度となりました。Raspberry Piで動作させるには十分です。
1. USBを制御するためのhub-ctrlを導入する
こちらのサイトを参考にhub-ctrlを導入しました。
$ sudo apt-get install libusb-dev
$ wget http://www.gniibe.org/oitoite/ac-power-control-by-USB-hub/hub-ctrl.c
$ gcc -O2 hub-ctrl.c -o hub-ctrl-armhf-static -lusb -static
$ sudo cp hub-ctrl-armhf-static /usr/local/bin/hub-ctrl
2. 動作をチェックする
Raspberry Pi 2の場合、全4ポートのUSBを個別に制御できなかった…。Raspberry Pi 3なら制限はあるけど個別に制御という報告は見ました。
さて、コマンドを打ち込んで実際に動作を確認しましょう。注意: -P 1と選択するとeth0が停止し、SSH接続が出来なくなります。その場合は再起動すると回復します。
USBポートをOFFにする。
$ sudo hub-ctrl -h 0 -P 2 -p 0
USBポートをONにする。
$ sudo hub-ctrl -h 0 -P 2 -p 1
実際に制御している様子
3.まとめ
こんな感じで出来ました!やはり、個別ポートで制御したいですね。Wi-Fiアダプタとかつけると不便ですから…。
',
enableHover: false,
enableTracking: true,
buttons: { twitter: {via: ''}},
click: function(api, options){
api.simulateClick();
api.openPopup('twitter');
}
});
$('#facebook').sharrre({
share: {
facebook: true
},
template: '
',
enableHover: false,
enableTracking: true,
buttons:{layout: 'box_count'},
click: function(api, options){
api.simulateClick();
api.openPopup('facebook');
}
});
// Scrollable sharrre bar, contributed by Erik Frye. Awesome!
var $_shareContainer = $(".sharrre-container"),
$_header = $('#header'),
$_postEntry = $('.entry'),
$window = $(window),
startSharePosition = $_shareContainer.offset(),//object
contentBottom = $_postEntry.offset().top + $_postEntry.outerHeight(),
topOfTemplate = $_header.offset().top,
topSpacing = _setTopSpacing();
//triggered on scroll
shareScroll = function(){
var scrollTop = $window.scrollTop() + topOfTemplate,
stopLocation = contentBottom - ($_shareContainer.outerHeight() + topSpacing);
$_shareContainer.css({position : 'fixed'});
if( scrollTop > stopLocation ){
$_shareContainer.css( { position:'relative' } );
$_shareContainer.offset(
{
top: contentBottom - $_shareContainer.outerHeight(),
left: startSharePosition.left,
}
);
}
else if (scrollTop >= $_postEntry.offset().top - topSpacing){
$_shareContainer.css( { position:'fixed',top: '100px' } );
$_shareContainer.offset(
{
//top: scrollTop + topSpacing,
left: startSharePosition.left,
}
);
} else if (scrollTop 1024 ) {
topSpacing = distanceFromTop + $('.nav-wrap').outerHeight();
} else {
topSpacing = distanceFromTop;
}
return topSpacing;
}
//setup event listeners
$window.on('scroll', _.throttle( function() {
if ( $window.width() > 719 ) {
shareScroll();
} else {
$_shareContainer.css({
top:'',
left:'',
position:''
})
}
}, 50 ) );
$window.on('resize', _.debounce( function() {
if ( $window.width() > 719 ) {
shareMove();
} else {
$_shareContainer.css({
top:'',
left:'',
position:''
})
}
}, 50 ) );
});
お世話になります。Pi3の場合だと、制限付きではあるが個別に制御可能との事ですが、どちらの情報になりますでしょうか?お手数ですが、ご教示いただけます幸いです。
コメントありがとうございます。
こちらで改めて調べましたら、「パソコン鳥のブログ」様に掲載されている記事をご参照すればよいのかなーと思います。
『RaspberryPI 3 Model B で USBポートの電源をON/OFFする』
少ない電流であれば、GPIOがおすすめです。比較的大きい電流の制御であれば、USB制御が向いてるのかなーと思います。
以上です。ご参考までにお願いいたします。