SSブログ

Raspberry Pi : 雑談 [基板]

使ってて雑感など。

間違えてRaspberryPiの電源を落としてしまうと、再起動する手段がないのでそこだけ注意が必要です(RaspberryPiはWOLとか持ってません)。

24時間運転する事もあるので、ファンの回転速度を時間で変えたりもしてます。
暑い日中はちょっと風量上げてます。
$ sudo su
#  crontab -e

00 08 * * * /usr/local/bin/gpio pwm 1 8
00 11 * * * /usr/local/bin/gpio pwm 1 10
00 18 * * * /usr/local/bin/gpio pwm 1 8
00 23 * * * /usr/local/bin/gpio pwm 1 6

RaspberryPiは常時電源入れてるので、定期的にsshでG7やMicroServerの電源入れてrsyncでバックアップかけたりもできますね。赤外線送受信回路付けて、扇風機とかエアコンの制御もやらせて見たい気がします。USBカメラや電力計も気になってます。

節電モニター

節電モニター

  • 出版社/メーカー: 2 Save Energy Ltd
  • メディア: エレクトロニクス


これがどうやらUSBシリアルとして見えるらしいので、ちょっと調査中。
単に電流計るだけなら電流クランプをA/Dした方が安いかな?
タグ:Raspberry Pi

Raspberry Pi + HP ProLiant G7 ML110 : ファンの配線 [PC]

前回の記事を見直して、追記です。

私は実験しながら配線を作ったのであのような配線になりましたが、作るだけならもっと単純に出来ます。…という自分もごちゃつきがやになったので、配線をリワークしました。

PWM信号をRaspberryPiにつなぐ配線だけ変更が必要です。それ以外は標準のままで良いです。
なので、ファンのコネクタをこうします。
raspi_fanhaisen.pngファンコネクタ改造
コネクタの青い線だけ外すか切るかして浮かし、延長します。これを3本まとめてRaspberryPiのヘッダの12ピン(外側の6ピン目)に接続すればOKです。コネクタは購入時の通りマザボの端子に接続します。BIOS騙しのプラグも必要ありません。

ホントは黒い線も延長してRaspberryPiのヘッダの6ピン(GND)に接続した方が良いでしょう。PWM信号のGNDがRaspberryPi~USB~電源~マザボ~ファンとかなり長い距離を廻ってます。が、PWM信号の周波数が低いこと、ほとんど電流が流れないこと、制御対象がおおざっぱなことから大丈夫な感じです。心配な方はGNDも配線し、PWMの線とツイストにし、さらにPWM信号に制限抵抗を入れると良いかと思います。

前の記事の配線からするとだいぶスッキリしました。
ただし、この配線にした場合は、ファンは止められません。
G7はファンが止まると強制シャットダウンします。まぁ、止めないから良いですが。
タグ:Raspberry Pi

Raspberry Pi + HP ProLiant G7 ML110 : ファン制御 [基板]

Raspberry Piをネットから回転制御可能なファンコンに仕立てました。

標準のDELTAのファンは、確かにうるさいけど物は良さそうです。うるさいのはG7のファン制御が大味だからで、絞れば風量の割りに静かだと思います。厚みがあるからですかね。これを眠らせておくのはもったいないかなと。

RaspberryPiはGPIOピンを何本か持ってます。2.54mmピッチのヘッダに出てるので配線も簡単です。このGPIOをPWM制御してやればDELTAのファンを静かに回せます。ついでにネットワーク経由で回転速度を変えることも可能!

さぁ、作るぞ!・・・って世の中、この程度の事はもう出来上がってました・・・
Gordons Projects
GPIO制御の汎用ライブラリ+コマンドです。ありがたや~後でThanksとReplyを入れとこ。

DELTAのデータシートによるとPWM信号は30Hz~30KHzまで対応可能とのこと。G7のPWM信号は24KHzと意外と高めです。ソフト制御だとちょっと…無理じゃないですがそこまで必要ないですし。1KHz以下にしてタイマーで制御するとルーズで良いかな?
24KHzなんて不必要に高い周波数にしてるのは、ひょっとしてコイル鳴きを避けるためかも?手元の実験では出てませんが、ファンから1KHzの「ピー」なんてのが聞こえたらそりゃ困ります(笑)

ということで、とりあえずG7オリジナルに近い周波数にしてみます。RaspberryPiにはPWM制御回路が2系統入っていて(アナログオーディオ出力用です)、1系統がピンヘッダに出てます。これを使います。3つのファンを同じPWM信号で制御する事になりますが、まぁ気にしない。
アナログオーディオ出力のフィルタを取っちゃえばミニピンジャックから2系統出せますけどね。
…PWM制御回路を使えば、レジスタ設定すれば自動的に延々と信号が出力されるので、制御プログラム作ったり常駐させたりしなくて済むなぁ、そっちの方が楽だなぁ、って手抜きのバックグラウンドもあります(笑)

前置きが長いですが、さて、作業開始。
まずは上のURLからライブラリを貰ってきます。あっても害はないのでインストールもしてしまします。
$ mkdir wiringpi
$ cd wiringpi
$ wget http://project-downloads.drogon.net/files/wiringPi.tgz
$ tar xfz wiringPi.tgz
$ cd wiringPi
$ make
$ sudo make install
$ cd ../gpio
$ make
$ sudo make install

試しにコマンドから
$ sudo gpio mode 1 pwm  ピン1をPWMモードに設定
$ sudo gpio pwm 1 数字  PWMの値を設定

と実行するとGPIO18、ヘッダピンの12ピン(外側の6列目)にPWM波形が現れます。簡単。

ただ、標準設定ではオーディオとかで使われるPWM出力のアルゴリズムが設定されてます。出来るだけbit位置を拡散させるような波形出力です。
ファンの制御ではそんな高精度の制御は必要ありません。単純なデューティー比が変化するだけの出力が欲しいです。RaspberryPiのCPU、BC2835はこのモードも持ってます。詳細はデータシートへ。
bc2835ds_pwm0.pngPWM制御(抜粋)
MSENビットを'1'にして、24KHzぐらいにS(Rangeレジスタ)を設定して、Dataレジスタに比率(0~Range)を書き込めば良さそうです。

これまた手抜きで、初期化ルーチンに値を埋め込んでしまいます。wiringPi.cを変更。
$ diff wiringPi.c.org wiringPi.c

368,369c368,371
<       *(pwm + PWM0_DATA) = 512 ;
<       *(pwm + PWM1_DATA) = 512 ;
---
>       *(pwm + PWM0_RANGE) = 25 ;
>       *(pwm + PWM1_RANGE) = 25 ;
>       *(pwm + PWM0_DATA) = 4 ;
>       *(pwm + PWM1_DATA) = 4 ;
371c373
<       *(pwm + PWM_CONTROL) = PWM0_ENABLE | PWM1_ENABLE ;
---
>       *(pwm + PWM_CONTROL) = PWM0_ENABLE | PWM1_ENABLE | PWM0_MS_MODE | PWM1_MS_MODE;

Range(周期)を設定したのと、MSENビットをセットしただけです。PWM回路の周波数は600KHzにセットされてるので、600/25で24KHzぐらいです。
もう一度、ライブラリとgpio両方のmake clean, make installをします。Linux側の作業は以上。

配線を作ります。まずは電源まわり。12Vを電源から直接黄線へ、同じく電源からGNDをファンの黒線へつなぎます。これには多少電流が流れます。全開だと3台で2Aぐらいです。
制御系。ピンヘッダの6ピン(外側3列目)がGND、12ピン(外側6列目)がPWM出力です。RaspberryPiのPWM信号をファンの青線に、GNDを黒線とつなぎます。ほとんど電流は流れないはずですが、一応保護抵抗付けておきます(数10~100Ω程度で適当に。直結でも問題ないはず)。
raspi_haisenn.png結線図

テスタで配線チェックしたら、電源とコネクタを接続します。
raspi_jikkenfuukei.JPG実験風景
raspi_pwmsetuzoku.JPGヘッダ部分
3ピン目の黒がGND、6ピン目の青がPWM信号です。

電源を入れるとファンが100%フル稼働するはずです。やかましいです(笑)。固定しないとファンが自走します。少し我慢します。SSHでRaspberryPiにログイン、コマンドを打ちます。
$ sudo gpio mode 1 pwm  ピン1をPWMモードに設定
$ sudo gpio pwm 1 3     ぎりぎり最低。12%ぐらい。これ以下だと止まる
$ sudo gpio pwm 1 25    100%フル稼働
$ sudo gpio pwm 1 7     なんとか静音って言える?30%ぐらい
$ sudo gpio pwm 1 0     停止

こんな感じで速度調整します。

ファン3台、ひとまとめの制御ですが、私としてはこれで十分かなと。
2系統までならハードのPWM回路が使えます。3系統個別制御となるとソフトウェアでPWM信号を作成する事になると思います。

ということで、ESXi用nfsサーバー兼ファンコントローラーという妙な物が出来ました。後はネットリモコンと自動Tweet機能とネットラジオ辺りを兼用させて・・・いや、兼用せずに買えば良いんですが。台数制限なくなったし(ただしリードタイムは8/6現在16週間!)。

最初はブラウザから制御~なんて思い描いてましたが、「一度セットしたらほとんど変えないんだし、SSHからコマンドでいいんじゃね?」って一瞬でも思った時点で負けました。
タグ:Raspberry Pi

Raspberry Pi : nfsサーバー [基板]

前回の結果。何とか実用になる事がわかりました。

RaspberryPiのUSBに接続したメモリをNFSでexportして、ESXiのデータストアに設定、OpenIndianaをコピーして、HDDコントローラーをPCIパススルーさせてブート、zfsをマウントさせてNAS他の動作が出来ました。HDDのスピンダウンも効いて約15Wの節約です(手間かかる節約だ~w)。途中から節約以外のことが目的になってきてますが、目的を見失うのはいつものことかと…

ローカルのSSDからだと30秒足らずで立ち上がりますが、RaspberryPiのnfsからだと2分弱かかります。これがデメリット。逆に言うとそのくらいの差です。一度立ち上がってしまえばデータのやりとりにnfsは使わないので、さほどデメリットとは感じません。

OpenIndiana以外の仮想マシンは、仮想マシンのOpenIndianaのファイルシステムをnfsやiscsiで公開して、ESXiのデータストアにしてます。うっかり先にOpenIndianaを落としちゃうとパニックです(笑)

ATX電源の5VSB(バックアップ出力)をRaspberryPiの電源にしてます。
Ethernetはマネージメント用のポートの穴(オプションでiLOのポートを分けるところ)に通しています。Ethernetのオスメス延長ケーブルって見かけないので、そのうち作りますかね~

nfsだけやらせておくのもつまらないので、なにか他のこともやらせてみたいな、ということで、次はG7の標準ファンのPWM制御を任せてみます。いわゆるファンコントローラーです。
タグ:Raspberry Pi

Raspberry Pi : セットアップ nfs [基板]

たぶんiscsiの方が効率良いんでしょうが、使い方がよくわからない。
RPi Guidesの「iSCSI support and boot」あたりが参考になりそうですが、targetの設定がいまいち…カーネル作ってしまえば、後は普通に動くのかな?

ということで、軟弱者の私は何となく楽そうな方に転ぶのでした。

今後も使うであろう、RaspberryPiのカーネル構築環境を作ってしまいます。
クロスコンパイル環境として、VMwareにUbuntuをインストールしました。セルフコンパイルも可能みたいですが、完了まで6時間とか12時間とかいう数字が検索されます(笑)

まずUbuntu上での作業。クロス環境とカーネル構築周りをインストール。所々sudoが必要です。
$ apt-get install gcc-arm-linux-gnueabi
$ apt-get install make
$ apt-get install git-core
$ apt-get install ncurses-dev

Linuxのソースを展開。
$ mkdir raspi
$ cd raspi
$ git clone https://github.com/raspberrypi/linux.git
$ cd linux

カーネルコンフィグ。
$ cp arch/arm/configs/bcmrpi_cutdown_defconfig .config
$ make ARCH=arm CROSS_COMPILE=/usr/bin/arm-linux-gnueabi- menuconfig

File Systems→Network File Systems→NFS server support周りをチェック。
よくわからないので一通り全部w
raspi_kernel_config.png

make開始。
$ make ARCH=arm CROSS_COMPILE=/usr/bin/arm-linux-gnueabi- -k

以前にRaspberryPiのLinuxを入れたSDカードをUbuntuにマウントします。bootとrootのパーティションに分かれてるので注意。
$ mv <SD_boot>/kernel.img <SD_boot>/kernel.org  バックアップ
$ cp arch/arm/boot/Image <SD_boot>/kernel.img  カーネルをコピー
$ make ARCH=arm modules_install INSTALL_MOD_PATH=<SD_root>  モジュール


だいぶはしょりましたが、とりあえずこれでOK?
SDカードをRaspberryPiに挿して起動。

NFSサーバーをインストール。
# apt-get install nfs-kernel-server

ついでに固定IPアドレスにします。
# vi /etc/network/interfaces

auto lo

iface lo inet loopback
iface eth0 inet static
  address   192.168.0.9
  network   192.168.0.0
  netmask   255.255.255.0
  broadcast 192.168.0.255
  gateway   192.168.0.1
  dns-nameservers 192.168.0.1


リブート後、サービスを確認。
# service --status-all
 [ - ]  nfs-common
 [ - ]  nfs-kernel-server
 [ - ]  rpcbind

「rpcbind」というのがportmapの代わりらしいです。最初はサービスは立ち上がってない状態です。
exportsの編集。うーむ、いい加減(笑)
# mkdir /srv/esxi
# chmod 777 /srv/esxi
# vi /etc/exports

/srv/esxi  *(rw)

サービス立ち上げ。
# service rpcbind restart
[ ok ] Stopping rpcbind daemon....
[ ok ] Starting rpcbind daemon....
# service nfs-kernel-server start
[....] Exporting directories for NFS kernel daemon...exportfs: /etc/exports [1]: Neither 'subtree_check' or 'no_subtree_check' specified for export "*:/srv/esxi".
  Assuming default behaviour ('no_subtree_check').
  NOTE: this default has changed since nfs-utils version 1.0.x

. ok
[....] Starting NFS kernel daemon: nfsdrpc.nfsd: address family inet6 not supported by protocol TCP
 mountdrpc.mountd: svc_tli_create: could not open connection for udp6
rpc.mountd: svc_tli_create: could not open connection for tcp6
rpc.mountd: svc_tli_create: could not open connection for udp6
rpc.mountd: svc_tli_create: could not open connection for tcp6
rpc.mountd: svc_tli_create: could not open connection for udp6
rpc.mountd: svc_tli_create: could not open connection for tcp6
. ok

ワーニング出てますが大丈夫そうです。ダメだとエラーが出ます。serviceコマンドで確認します。
これで立ち上がってるようなのですが、リブートすると止まってます。サービスの自動起動方法はまた次回ということで。

ESXiからマウントしてみます。
esxi_raspi_mount.png
一応無事マウント出来たようです。

SSHでESXiに入り、仮想マシンをコピーしてみます。vmkfstoolsでthinを指定しないと(普通のcpコマンドとかだと)容量が増えるので注意です。
vmkfstools -i <local>/OpenIndiana.vmdk -d thin <pi>/OpenIndiana.vmdk

Clone: 20% done.

…半端なく遅い…目測(笑)100KB/s。未完了。

WEBにあった「RaspberryPiのnfsは遅いぞ~特に書き込みはな~覚悟しろ」的な発言のとおりでした。読み出しはまだましなようですが。仮想マシンのブートに耐えられるか、とりあえず試してみようかと。

やっぱりiscsiの方が良いのでしょう。どこかに簡単な方法ないかな~

<追記>
あまりに遅いので、USBに挿したメモリをexportしました。すると1.5MB/sほど(目測)。速くはないですが、だいぶ高速化されてます。これなら使える?
タグ:Raspberry Pi

Raspberry Pi : セットアップ [基板]

公式の通りに行ってみます。

Raspberry PiのWEBから「Raspbian “wheezy”」を落としてきます。
「Win32DiskImager」を使ってイメージをSDカードに書き込みます。2GB以上なら大丈夫そうです。容量以上のSDカードでも良いです。ディスク領域は後で拡張できます。
MicroUSBに電源、HDMIにモニタ、Ethernet、USBにキーボードマウスをつなぎ、SDカードを差し込んで電源On。数十秒でこんな感じの設定画面が立ち上がってきます。これはSSHからコピペしていて罫線とか化けちゃってますが、画面にはちゃんと出てます。
     lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
     x Raspi-config                                                                 x
     x                                                                              x
     x           info               Information about this tool                     x
     x           expand_rootfs      Expand root partition to fill SD card           x
     x           overscan           Change overscan                                 x
     x           configure_keyboard Set keyboard layout                             x
     x           change_pass        Change password for 'pi' user                   x
     x           change_locale      Set locale                                      x
     x           change_timezone    Set timezone                                    x
     x           memory_split       Change memory split                             x
     x           ssh                Enable or disable ssh server                    x
     x           boot_behaviour     Start desktop on boot?                          x
     x           update             Try to upgrade raspi-config                     x
     x                                                                              x
     x                                                                              x
     x                                                                              x
     x                   <Select>                   <Finish>                    x
     x                                                                              x
     mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj

だいたい上から順番に設定します。
今回はデスクトップとしては使わないつもりなので、SSHイネーブル、起動時にXは立ち上げない、を設定します。試しにXは立ち上げてみましたが、やはり色々非力なようで、全く応答しなくなるときがたまにありました。
<Finish>で保存、リブート。設定が完了するまでは毎回この画面が立ち上がるようです。
ちなみにこのツールは「sudo raspi-config」でいつでも立ち上げられます。

リブート後はSSHから入ります。デフォルトのユーザ(pi)は「sudo su -」でrootになれます。
試しに「apt-get update」を実行。ネットワークとかが問題ないかの確認になります。

次は目的の一つ、ESXiのデータストレージにチャレンジです。iscsiかnfsの導入です。
タグ:Raspberry Pi

Raspberry Pi : キター [基板]

結構時間かかりましたが、無事到着しました、Raspberry Pi。
paspi_hako.JPG
外箱。USBメモリは比較用。
paspi_nakami.JPG中身
中身は基板とペーパーが2枚ほど。
paspi_omote.JPG
基板の表。
左下のMicroUSBが電源。5V 700mA。Linux実行時の消費電力は3W程度でした。意外と大きい?
paspi_ura.JPG
裏面。SDカードのソケットがやたらでかく見えます。
タグ:Raspberry Pi

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。