2017年1月29日日曜日

Raspberry Pi(2)で小型NASを製作

前提
・小型、省電力のNASが欲しい
・FAT32/NTFSでフォーマットした2.5インチHDDかUSBメモリを使いたい
・市販品は高くて柔軟性に欠け、今一つ
⇒Raspberry Piで自作することに

<2015/3時点のメモで、当時Pi3は未発売です>


①Raspberry Pi2購入
・Pi1⇒Pi2でかなりの性能アップ、余程お金に困ってなければ2を推奨
・ケースはAmazonで適当なクリアケースを購入
・OSはdebian系でaptitudeが使えるRaspbianに

②OS設定
・microSD HC 8GB(class 10推奨)に公式のimgを焼き込み
・ユーザpiとrootのpasswd変更
・sudoersのユーザpiのnopasswdを削除、suを許可
・/etc/network/interfacesでIPを固定に

③samba
・sambaをインストール
⇒# aptitude install samba
・/etc/samba/smb.confに以下を追記
## 日本語Windows対応
dos charset = CP932
unix charset = UTF8
display charset = UTF8
default case = lower
case sensitive = no
preserve case = yes
short preserve case = yes

## Windowsからアクセスするディレクトリ
## 書き込みできるよう権限も追加
[Share]
commnet = Pi-NAS
read only = no
locking = yes
path = /mnt/smbrt
guest ok = yes
create mask = 0777
directory mask = 0777
## smb.confは以上
・confを書き終えたらsambaを再起動
# /etc/init.d/samba restart
⇒Windowsからうまく繋いで読み書きできれば成功

④USB接続Diskの設定
少しハマった。
最初に、raspi-configでLocaleを日本語UTF8にしておく。

ディスクは単純にmountすると、raspbianのdefault設定のせいか、
samba経由で読めても書けない設定になってしまう。
mountのオプションを設定して回避する。
起動時に勝手にやってくれるようfstabにも設定しておく。

まずはmountのオプション
# mount /dev/sda1 /mnt/smbrt/disk/ -t vfat -o fmask=0000,dmask=0000,shortname=mixed,codepage=932,iocharset=utf8

最初の-t vfatまでは一般的な設定。
次の-o以降がマウント時のオプション。
まずfmask, dmaskだが、defaultだとmaskが0022になっていて、
所有者(=root)以外は書き込めなく設定されている。
これは困るので0000にしておく。
DOSのファイル名8.3文字ルールと混在が有り得るので、shortnameはmixedにする。
Windowsから日本語で読み書きするので、Shift-JIS(932)とUTF8をそれぞれをcodepageとiocharsetに設定する。
このfmask, dmaskの設定を知らずに随分時間を取られた。

あとは以下の記述を/etc/fstabに書き込めばOK。
(fstabはFile System TAbleの略なんですね。)
これはmountとは書式がちょっと違うけど、やってることは全く同じ。
/dev/sda1       /mnt/smbrt/disk vfat    rw,nofail,rw,noatime,codepage=932,iocharset=utf8,shortname=mixed,fmask=0000,dmask=0000,errors=remount-ro 1 2

以上、これでWindowsやAndroidスマホから読み書きできた

Anaconda Python 3でOpenCV3(WebCAM, 録画)

Windows 10 32/64bitのAnaconda Python 3環境で、OpenCV3(WebCAM, 録画)を使ってみた。

<2017/1/29時点>

前提:Win 10でAnaconda, Python3.5環境

①condaでOpenCV3を導入
 > conda install -c https://conda.binstar.org/menpo opencv3
 -cオプションで、非公式サイトからライブラリ追加できるとの事。

②Python + OpenCVチュートリアルを参考に、動かしてみる
 http://labs.eecs.tottori-u.ac.jp/sd/Member/oyamada/OpenCV/html/py_tutorials/py_gui/py_video_display/py_video_display.html

 簡潔にまとめられており、前提の環境ならコピペで一発で動く。
 Web Cameraの表示や録画が簡単に動かせる。

 一つ注意なのは、動画の向き。
 以下をそのままにすると、画像が回転したまま保存される。
 frame = cv2.flip(frame,0)

 左右反転させるときは、以下のやり方もOK。
 frame = frame[:,::-1]