Raspberry pi 3 + USB HDD(6TB)でNASを作る
しばらく間が空いてしまいました。
最近は買い物する度にここでネタにしていますが、今回は自宅用のNASを作ろうという話です。
NASは別に自分で作らなくても、買うことができます。ただ結構お値段がするんですよね。RAIDを組むことができたりする利点はありますし機能に応じて値段も大きく変わるのですが、安くて数万円(HDDは別で)というところじゃないでしょうか。自宅用の軽い用途のものなので、本格的なストレージがほしいわけでもありませんし。Windows PCやRaspiやSurfaceなどいろいろ使うようになるにつれてファイルサーバの必要性が高まってきました。
で、今回もなるべく安く(できればHDDの値段に近いくらいの予算で)、低機能でもいいから…… ということで探しました。
もともと、NASの本体には組み込みのLinuxが入っていたりします。もちろんファイルサーバとしてふさわしいチューニングがされていたりもするのでしょうけど、Raspberry piがあるのですから自分で作ってもいいんじゃないかな。少しだけDIYしている感じですね。
買い物
今回の買い物のキモはこちら。SATAのHDDをUSB3.0に変換するケーブルです。Raspberry pi 3はUSB3.0ではありませんが、しかし互換性があるのであってもこまらないということでこちらにしました。電源アダプタがついているのでRaspberry piの動作が不安定になることもありません。
サンワサプライ SATA-USB3.0変換ケーブル 0.8m USB-CVIDE3
- 出版社/メーカー: サンワサプライ
- メディア: Personal Computers
- 購入: 7人 クリック: 10回
- この商品を含むブログを見る
HDDとしては、Western DigitalのNAS用HDD(Red)です。消費電力が少なめで常時起動に向いているタイプだそうです。容量は正直なところ6TBもいらないのですが、容量単価を計算するとこのあたりが魅力的なのかなということで選択しています。今回は26,000円ほど。
WD HDD 内蔵ハードディスク 3.5インチ 6TB WD Red WD60EFRX SATA3.0 5400rpm 64MB 3年保証
- 出版社/メーカー: Western Digital
- 発売日: 2014/08/01
- メディア: Personal Computers
- この商品を含むブログ (3件) を見る
3.5インチのHDDを常時裸のままで放置しておくのもさすがにいかがなものかと思いましたので、ケースというかカバーも用意しました。シリコーンでできた柔らかいカバーです。なんと464円。買った時点では裸よりはマシというくらいの期待でした。放熱とかどうなのかなと思いましたが、今回使ってみて、書き込み続けてもさほど熱くならないのでWD Redとの組み合わせなら大丈夫そうです。
グリーンハウス 3.5インチHD用シリコンケース ホワイト GH-CA-HD35W
- 出版社/メーカー: グリーンハウス
- 発売日: 2007/06/20
- メディア: Personal Computers
- クリック: 5回
- この商品を含むブログ (1件) を見る
組み立て
説明無用かと思います。直感的につなぐだけ。アダプタをコンセントにつないだら、本体のスイッチをONにするとHDDの電源が入ります。
試行錯誤
NASに入れたいファイルは、WindowsのPCにあります。ざっと計ったら1.5TB。ネットで見かけた物とか動画なども捨てずにダウンロードしてため続けているのでファイルも小さいのや大きいのやさまざまです。ともかく、最初は単純にSambaとext4で…… と思って作り始めました。
USB接続すると、普通に/dev/sdaとして認識しました。
この時点ではディスクラベルも記録されていないまっさらなHDDです。
pi@pi3:~$ sudo fdisk -l /dev/sda Disk /dev/sda: 5.5 TiB, 6001175126016 bytes, 11721045168 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes pi@pi3:~$
fdiskは2TBまでのストレージしか扱えないそうで、最近はGPTというディスクラベルが使えるGNU Partedを使うんだそうです。ネットで探してパーティションを作ります。下の記録では無くなってしまっていますが、実際にはmklabelしてからmkpartでパーティションを作っています。
pi@pi3:~$ sudo parted /dev/sda GNU Parted 3.2 Using /dev/sda Welcome to GNU Parted! Type 'help' to view a list of commands. (parted) mkpart Partition name? []? File system type? [ext2]? ext4 Start? 0G End? 6001G (parted) p Model: ASMT 2115 (scsi) Disk /dev/sda: 6001GB Sector size (logical/physical): 512B/4096B Partition Table: gpt Disk Flags: Number Start End Size File system Name Flags 1 1049kB 6001GB 6001GB ext4 (parted) q Information: You may need to update /etc/fstab. pi@pi3:~$
で、そのあとはext4でフォーマットです。さらに/smbディレクトリに自動でマウントされるように設定します。
pi@pi3:~$ sudo mkfs.ext4 /dev/sda mke2fs 1.42.12 (29-Aug-2014) Found a gpt partition table in /dev/sda Proceed anyway? (y,n) y Creating filesystem with 1465130646 4k blocks and 183144448 inodes Filesystem UUID: 72fa8af4-ea42-4319-9987-3e0be3cf542d Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968, 102400000, 214990848, 512000000, 550731776, 644972544 Allocating group tables: done Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done pi@pi3:~$ sudo mount -t ext4 /dev/sda /smb/ pi@pi3:~$ df -h ファイルシス サイズ 使用 残り 使用% マウント位置 /dev/root 28G 5.9G 21G 23% / devtmpfs 459M 0 459M 0% /dev tmpfs 463M 0 463M 0% /dev/shm tmpfs 463M 6.6M 457M 2% /run tmpfs 5.0M 4.0K 5.0M 1% /run/lock tmpfs 463M 0 463M 0% /sys/fs/cgroup /dev/mmcblk0p6 63M 21M 43M 33% /boot tmpfs 93M 0 93M 0% /run/user/1000 /dev/mmcblk0p5 30M 398K 28M 2% /media/pi/SETTINGS /dev/sda 5.5T 58M 5.2T 1% /smb pi@pi3:~$ pi@pi3:~$ sudo vi /etc/fstab pi@pi3:~$ cat /etc/fstab proc /proc proc defaults 0 0 /dev/mmcblk0p6 /boot vfat defaults 0 2 /dev/mmcblk0p7 / ext4 defaults,noatime 0 1 /dev/sda /smb ext4 defaults 0 0 # a swapfile is not a swap partition, no line here # use dphys-swapfile swap[on|off] for that pi@pi3:~$ sudo chown pi /smb
NASにするためにSambaを設定するわけですが、いつもここで躓きます。何が正しい設定かわからん……
試行錯誤の結果、とりあえず/etc/samba/smb.confはこんな風にして動いています。PCのWindVoiceユーザが/smbディレクトリにアクセスするとき\\pi3\nasというネットワークフォルダ名に見えます。アクセスするときはRaspberry piの内部ではpiユーザの権限で読み書きされます。ですから/smbディレクトリはpiユーザの所有権にしておくことが必要です。
[nas] comment = NAS Directories path = /smb browseable = yes read only = no valid user = WindVoice force user = pi public = yes
結果
ここまでで一応使えるようになるのですが、心配はしていたのですがやっぱり遅いですね。
Wi-Fiネットワークのせいなのか、USB2.0のせいなのかはっきりしませんが、書き込み速度が1.5MB/sec程度になっています。先ほども書いたのですが、ファイルはなんだかんだで1.5TBもあり(それを何とかしろということだとは重々承知しているのですが)、1.5MB/secでコピーしていては12日もかかってしまいます。これで動画読み取りとかできるのでしょうか……
しかたないので、上記の方法はいったん諦め、Windows PCにUSB3.0接続してNTFSフォーマットしたあと、ファイルをコピーしています。USB3.0接続なら大きいファイルの場合で50MB/Secから最大70MB/Sec程度の速度がでているので、今日のうちにはコピーが終わりそうです。
最近はLinuxでもNTFSがスムーズに使えるので、コピーが終わってからRaspberry piに接続してNASにしようと思います。便利な使い方はもう少し追求しないといけませんね。
Smart Video Car Kit for Raspberry pi(消費電力が測れない編)
引き続きSmart Video Carをいじって遊びます。
もうちょっとスマートにコントロールしたい
前回の最後にスクリーンショットを載せましたが、Smart Video Carの操作はなんといいますか、「簡易な」という表現がぴったりの見た目です。現代的なゲーム世代には到底受け入れられそうにありません。マウスでボタンをクリックして操作するということは、一度に一つの操作しかできないという意味でもあります。非常にプリミティブな前進、後退、ハンドルを右に、左に、上向け、下向け…… など、ひとつひとつやるのでは眠くなってしまいます。
このあたりソースコードではどうなっているのかなということで調べました。
まずはWindowsから直接コントロールしよう
コントローラの役をしているクライアントプログラムは、Pythonで動いています。Raspberry piとTCP接続して、前進、後退などのコマンドを送るという単純な仕組みで動作しています。Windows版のPythonをインストールしてWindows PCにもSunFounderのGitHubサイトからソースコードをダウンロードしておけばOKです。Surfaceなので64bit版をインストールです。
あとはRaspberry piでサーバプログラムを起動して、Windows PCからクライアントプログラム(接続先IPはRaspberry piに変更)を起動すれば、GUIがWindows上に表示されます。
マウスではなくキーボードでコントロール
マウスのコントロールより少し便利にキーボードで操作したいわけですが、ソースコードをよく見たらもうWASDでの操作には対応していました。でもカメラの向きを操作するキーはバインドされていなかったので、この部分だけ追記しています。
ゲームコントローラで操作しようとするともう少し工夫が必要だと思いますが、とりあえずこれだけなら簡単でした。というかソースコード短いですね。ほとんど見たまんまのことしか書いていないというか……
# ============================================================================= # Bind buttons on the keyboard with the corresponding callback function to # control the car remotely with the keyboard. # ============================================================================= top.bind('<KeyPress-a>', left_fun) # Press down key 'A' on the keyboard and the car will turn left. top.bind('<KeyPress-d>', right_fun) top.bind('<KeyPress-s>', backward_fun) top.bind('<KeyPress-w>', forward_fun) top.bind('<KeyPress-h>', home_fun) top.bind('<KeyRelease-a>', home_fun) # Release key 'A' and the car will turn back. top.bind('<KeyRelease-d>', home_fun) top.bind('<KeyRelease-s>', stop_fun) top.bind('<KeyRelease-w>', stop_fun) # ちょっとした改良。ikjlキーでカメラの向きを変更 top.bind('<KeyPress-i>', y_increase) top.bind('<KeyPress-k>', y_decrease) top.bind('<KeyPress-j>', x_decrease) top.bind('<KeyPress-l>', x_increase)
消費電力はどうなのか?
Raspberry piは消費電力が少ないことがひとつのウリなわけですが、追加のボードを使ったりDCモーターを2個つけたりしていますから、消費電力が大きくなっているはずです。これを測りたいのですがよい方法がありません。以前購入したUSB電流/電圧計で測ってみましたが、この場所ではモーターの消費電力はふくまれていませんでした。モーターを回しても数字はほとんど変わりません。4.99V - 0.28Aですから、だいたい1.4Wくらいの消費電力になりますね。
SunFounder(サンファウンダー)スマートビデオカーキット [並行輸入品]
- 出版社/メーカー: SunFounder(サンファウンダー)
- メディア: エレクトロニクス
- この商品を含むブログを見る
Smart Video Car Kit for Raspberry pi(試験走行編)
さて、前回の組み立てから間が開いてしまいました。試験走行の様子です。
インストール
メーカーであるSunFounderから、動かすためのプログラムが提供されています。これを搭載したRaspberry piに配置(git clone)しておくのが最初のポイントになります。
git clone https://github.com/sunfounder/Sunfounder_Smart_Video_Car_Kit_for_RaspberryPi.git
モータドライバ他との接続でRaspberry piのI2Cポートを使用していますので、raspi-configコマンドでポートを有効にしたり、/boot/config.txtを変更したりします。このあたりは解説の小冊子がついていますので(英語ですが)、コマンドラインをそのまま入力していけば準備ができると思います。
ほかにカメラの映像をストリーミング配信するためのMJPG-streamerをインストールしたりなどしてゆきます。
カリブレーション(調整)
サーボモータの初期の状態がとても重要です。くみ上げの段階で、サーボモータがちょうど首振りの真ん中になるようにしているのですが、プログラムも初期配置の状態を記憶しておかなくてはなりません。
カリブレーションのためのプログラムもGitHubに含まれています。Raspberry piのIPアドレスだけちょっと書き換えて動かせばOKです。Raspberry piにリモートデスクトップ接続して、このプログラムを起動すると、簡易的なGUIが起動します。
なんかよくわからない画面ですが(笑)、とりあえずこれで車が前後に正しく走るか(ケーブルの接続を間違えているとモーターが片方逆回転になったりなどするかも)、左右にタイヤが振れるか、カメラの首振りが正常かを確認します。うまくいったところでConfirmボタンです。
いざ出発
プログラムは、サーバプログラム(DCモータ、サーボモータ、カメラを制御する)と、クライアントプログラム(サーバへ動作コマンドを送信する)に分かれます。クライアントプログラムはGUIを使うので、リモートデスクトップ環境から起動する必要があります。
またストリーミングサーバプログラムも別に起動することができ、車載カメラ視点の映像をFirefoxから(なぜかIE非対応)参照することができます。
こんな感じで車をリモコン操作して楽しむ…… というのが、とりあえずデフォルトの機能でできる部分です。動作している状態の動画はこちら。
今後の展開
正直なところ低機能です。工作キットですから、ここから各自でいろいろ試してみてね、というのがメーカーの意図なんだろうと思います。プログラムはPythonでできていますから読むことができますし、GUIのボタンをポチポチ押しながら動かすちょっとイケてない感じも、それが嫌なら自分で開発しよう、ということなんだろうと前向きに解釈するのがよいでしょう。
やってみたらいいかも、というToDoを挙げておきます。
- クライアントプログラムはWindows PCにおいておく(難易度:低)
- 車の操作をゲームコントローラに対応させる(難易度:中)
- カメラに映ったものを識別する(難易度:高)
- さらに自動走行までできちゃったりする(難易度:超高)
- DCモーターを換装してパワフルにする(もしかすると電源強化が必要かも)
SunFounder(サンファウンダー)スマートビデオカーキット [並行輸入品]
- 出版社/メーカー: SunFounder(サンファウンダー)
- メディア: エレクトロニクス
- この商品を含むブログを見る
Smart Video Car Kit for Raspberry pi(組み立て編)
車体の組み立て
基本的には、アクリル板のボディにパーツを搭載してゆく手順です。
前輪がサーボモータSG90で左右に振れることで曲がれるようになっています。アクリル板は左右対称ではないので注意が必要です。気がつかずに裏表逆のまま組み立ててしまい一度分解することになりました。
後輪はDCモータ2個とギアがセットになっています。モータはそれほどパワーのある感じではありません。スピード感のある走りを期待していたのですが……
車体の前後を合体させて電池ボックスをつけました。青のリボンはあとで電池を抜きやすくするためのひもです。
フロントカメラの組み立て
USBカメラが付属しており、これを車の眼にすることができます。カメラの上下角度、左右角度を変えるためのサーボモータSG90が2個付いておりこれを組み立てます。
こんなのと……
こんなのを組み合わせて……
こうなります。
車体と結合してこんな結果になります。
電子部品の組み立て
ここまできてやっとRaspberry pi 2を搭載です。古くなってちょっとサビてきていますが。
PWMドライバ(これはサーボモータSG90の制御で使います)、電源モジュール、L298N DCモータドライバを搭載します。
念のため注:PWMドライバモジュールは上下逆につけてしまっています。あとで直しました。
ボード類が載ったらケーブルをつないでいきます。ハンダごてはいりません。ドライバを使って締めて固定する部品があります。
カメラやWi-Fiアンテナを接続して組み立て完成です。ここまでくるのに約4時間かかりました。
次回は電池(18650 3.7V リチウムイオン充電池)を2本セットして動作確認です。
SunFounder(サンファウンダー)スマートビデオカーキット [並行輸入品]
- 出版社/メーカー: SunFounder(サンファウンダー)
- メディア: エレクトロニクス
- この商品を含むブログを見る
Smart Video Car Kit for Raspberry Pi(買い物編)
前回までのあらすじ
以前作成したRaspberry pi搭載完全自作のロボット自動車なのですが、正直私にはハードルが高すぎました。
いちおうなんとか動くところまではきたのですが、やけに動作が遅いし(たぶんモーターのパワーがたりない)、ボディがどう考えてもイケてないし(LEGOで組んだほうがよかったですかね)、モバイルバッテリー駆動にしたら車体重いし、それらをリニューアル設計することも考えたのですが、私にはかなり大変そう(もともとハードに詳しくないというのもあり)だったので、初心者向けのキットを探すことにしました。物理的なものを自分で設計できる人はすごいなぁと思う次第です。
買い物
SunFounderというサイトで見つけました。Smart Video Car Kit for Raspberry Piというものです。
www.sunfounder.com
Amazonでも買えますが、並行輸入品のためやっぱり高価なので、私は上のWebサイトから直接購入しました。英語での購入に不安がなければ上のサイトでよいと思います。思っていたよりは結構スピーディで、(香港から)DHLで5日で到着しました。Raspberry pi同梱モデルとそうでないものがあるのですが、私はRaspberry pi 2と3をすでにもっているので流用します。
SunFounder(サンファウンダー)スマートビデオカーキット [並行輸入品]
- 出版社/メーカー: SunFounder(サンファウンダー)
- メディア: エレクトロニクス
- この商品を含むブログを見る
注意事項として、自分で用意するもの、が書いてあります。TF cardというのはSDカードのことのようです。
Self-provided Parts
2 x 18650 Rechargeable Li-ion Battery (3.7V) without protection circuit board
1 x TF-card
リチウムイオン電池で、汎用的な規格のものは身の回りではあまり見ないと思います。18650というのが電池のサイズ(18が直径、650が長さ)を示しているそうです。こちらは1本800円台のものと、2000円近いものに大きく分かれます。
Panasonic[パナソニック] NCR18650B Li-ion充電池(3400mAh)
- 出版社/メーカー: パナソニック(Panasonic)
- メディア: エレクトロニクス
- この商品を含むブログを見る
【日本製 KEEPPOWER 18650 3500mAh バッテリー 付属】 電池ケース (パナソニック製Cell+SEIKO製PCB回路搭載) (3500mAh 2本セット 付属)
- 出版社/メーカー: KEEPPOWER
- メディア: エレクトロニクス
- この商品を含むブログを見る
明らかに値段の違いがあるのでこれは何だろうかと調べたところ、高価なほうは過充電、過放電、ショートを防ぐための保護回路がついているということです。保護回路がない場合、充電しっぱなし、放電しっぱなしにするとバッテリーに過度な負荷がかかり危険なこともあるとのこと。というわけで保護回路付きを購入(注:上記注意事項には「保護回路なし(without protection circuit board)」と書いてあるのですが頭に入ってなかった)。
電池、結構でかいです。保護回路があるとサイズが一回り大きくなるのが不安だったのですが、先ほど組み立てたところ問題なく電池ボックスにはまりました。ただし電池を抜き取るときはあらかじめ挟み込んでおいたリボンを引っ張らないと出てこないです。ギリギリサイズ。
さて、必要なものはそろいました。次回は組み立て編の予定です。
耳かきカメラ(イヤスコープ windows MARK2)
イヤスコープ windows MARK2を入手しました。
私は小さいころから耳掃除が苦手です。右の耳を綿棒で掃除していると、ある場所に触れた瞬間に強く咳き込むのです。このあたりに迷走神経というのがあるのが原因らしいのですが、そうとわかっても防止できるわけでもなく。耳の中が観察できたら必要なときだけ掃除できるのに、と思っていました。
この手の製品は前々からあります。すごくほしかったのですが、レビューが悪いものが多くて、どうもまだ使い物になる段階ではなさそうだと考えていました。しかし、先日咳き込んだ勢いで思い切って買ってしまいました。
- 出版社/メーカー: コデン
- メディア:
- この商品を含むブログを見る
インストール
USBポートに接続する前に、ソフトウェアのインストールが必要です。CD-ROMの読み込みが必要なことに気が付いてSurfaceでどうするか?と少し悩んだのですが、別のPCで読み込んでインストーラだけコピーしてきたら普通にインストールできました。円盤のドライブを持っていない人は(最近はいる可能性があるかなと)注意が必要ですね。
使う
ソフトを起動したら、USBポートに耳かきカメラを接続します。自動的に映像が映り始めます。
しかし…… Surfaceは高精細ディスプレイのため、映像がほんとに小さいです。それこそ穴を覗きこんでいるみたいです。ちょっとがっかりしたのですが、拡大鏡アプリで200%くらいに拡大するとまずまずの見え具合になりました。GUIにも拡大ボタンがあるのですが、これは画像変換的に拡大するだけで、ウインドウが大きくなるわけではないみたいです。視界が狭まるので意味がないような気がします。
USBケーブルの途中にボリュームコントローラのようなものがあり、ダイヤルをひねるとLEDの明るさが変わります。耳の中は暗いのでLEDをつけないと探しているものは見つからないです。映像は写真に撮ったり、録画したりすることも可能です。
解像度は決して良いとはいえませんが、しかし耳垢を識別するには十分です。先端部分がダイヤルで回転するようになっており、これを回すと耳かきが回転します。これで狙った角度にスプーン状の部分を回すことができます。いずれにしても細かい作業なので、手先が慣れるまでに時間が少し必要です。
で、どうなの?
以下耳掃除画像です。しかし、耳垢がみつからず、つまらない動画になっています。自分の耳の中を見たのは初めてですが、週に一度の耳掃除でも結構きれいになっているものですね(自画自賛)。後半部分は、キーボードなど身の回りの物を映しています。画質など性能を知りたい方もいるのではと思いますので載せていますが、微グロ映像が苦手な方はごらんになりませんように。代わりにSurfaceキーボードのShiftキーを映したものを載せておきますね。
短い耳掃除動画
余談
解像度を考えると、顕微鏡としての転用は難しそうです。狭いところをピンポイントで見たいような用途がほかにあるかどうか。耳かきは外せるようになっているので、外せば小さなUSBカメラとして使うことも、あるいは可能かもしれません。
- 出版社/メーカー: コデン
- メディア:
- この商品を含むブログを見る
のんきな動画(エタノールの蒸発する様子をタイムラプスで)
Windowsで使用できるMicrosoft Hyperlapseというソフトがあることを知ったので、身の回りで何か試せるものは…… と考え、消毒用エタノールが蒸発する様子を記録してみました。
涼しい気温のせいかあんまり蒸発せず、Windows 10に標準のCameraアプリは3時間までしか動画が撮れずということで最後まで蒸発させることはできませんでした。3時間の動画をやっぱり3時間くらいかけて変換し(Surface Pro使用)こんな動画になりました。
もう一回HyperLapseにかけないとアルコールが減って見えないかも。タイムラプスはアイディア勝負ですね。
サイキョウ・ファーマ 消毒用エタノールIP「SP」 500mL [指定医薬部外品]
- 出版社/メーカー: サイキョウ・ファーマ
- メディア: ヘルスケア&ケア用品
- この商品を含むブログを見る