【いまさら】Raspberry Piの初期設定〜Webカメラつないで撮影・録音テストまで

## 用意したもの
- RaspberryPi3 Model B RS版 日本製 （2年前に買ったものなので、古いかもしれない）（以後ラズパイ）
- MacBook Air（macOS High Sierra 10.13.4）（以後Mac）
- microSDHC TOSHIBA 16GB UHS-I
- LANケーブル
- USB電源アダプタ（出力5.0V 1.5A。推奨は2.5Aらしい）
- マイクロB端子のUSBケーブル（iPhoneじゃないスマホを充電するときに使うあのケーブルです）
- Webカメラ Logicool HD Webcam C510
- ステレオイヤホン

## MacでのmicroSDHCのフォーマット
今回使うmicroSDは、2年前にラズパイで遊んだものなので、フォーマットし直します。MS-DOS(FAT)形式にフォーマットします。Disk Utilityを起動してやる方法がよくネット上にあるんですが、うまくいかないので、[SD Card Formatter](http://www.logitec.co.jp/support/macformat01.html)を使います。

- SD Card Formatterを起動
- フォーマットしたいカードを選択、Quick Formatを選択、Format

## ラズパイにRASPBIAN STRETCH LITEを入れる

- [Downloads](https://www.raspberrypi.org/downloads/raspbian/) -> `RASPBIAN` -> `RASPBIAN STRETCH LITE`と進んで、執筆時最新の`2018-06-27-raspbian-stretch-lite.zip`をダウンロード。

途中にあるNOOBSはRaspbianのインストーラでインストールをよしなにやってくれるものですが、昔うまく動かなくてハマったし、Raspbianだけあれば十分です。RASPBIAN STRETCH WITH DESKTOPとRASPBIAN STRETCH LITEの違いですが、WITH DESKTOPのほうはデスクトップ環境を持ったもので、何やかんや色々入っていてイメージファイルのサイズは4GB以上になります。LITEのほうは2GBに満たない軽量なものです。いまのところデスクトップ要らないですし、必要になったら入れるのでLITEで十分でした。

- ダウンロードしたzipファイルを解凍。
- [Etcher](https://etcher.io/)を起動。select imageには、解凍したimgファイルを選択。select diskには、フォーマットしたmicroSDHCを選択。Flash!
- sshというファイルをmicroSDHCの中に作る。

```bash:Terminal(Mac側)
touch /Volumes/boot/ssh
```

- microSDHCをMacから取り出し、ラズパイに差し込む。
- ラズパイにUSBケーブルのマイクロB端子を差し込み、USB端子のほうをUSB電源に差し込む。
- USB電源をコンセントに差し込み、ラズパイの緑のランプが点滅するまで待つ。

## 有線LAN接続する
- ラズパイにLANケーブルを差し込み、LANケーブルの反対側の端子をルーターに差し込む。
- ラズパイのIPアドレスを確認する。

IPアドレスの確認方法は何でもいいですが、私は、元々FingというアプリをiPadで使っていたので、そこで出てきた `raspberrypi`のIPアドレスを確認。ラズパイ・Mac・iPadが同じネットワーク内にある（同じルーターを介している）状態で行います。

- Macからラズパイにssh接続する。

```bash:Terminal(Mac側)
ssh pi@確認したIPアドレス
# 例えば、 ssh pi@192.168.0.20
# Are you sure you want to continue connecting (yes/no)? yes
# pi@192.168.0.20's password: ここにパスワードを入力
# デフォルトのパスワードは`raspberry`。入力内容は画面には表示されません。
```

もし、過去に同じIPアドレス（例では192.168.0.20）で別の機器（もしくは同じRaspberryPiだけどRaspbianをインストールし直したりした場合）にsshしたことがある場合、リモートホストのIDが変わったと言われてログインできないかもしれません。その場合、`~/.ssh/known_hosts`へ行って、確認したIPアドレスが書かれている行（例では192.168.0.20）を消した後で、sshしてみてください。

ターミナルの入力待ち画面が`pi@raspberrypi:~ $ `となったらssh接続成功です。

## 無線LAN接続する
### パスワードの変更

```bash:Terminal（ラズパイ側）
passwd
# Changing password for pi.
# (current) UNIX password: いまのパスワード（デフォルトは`raspberry`）
# Enter new UNIX password: 新しいパスワード
# Retype new UNIX password: 新しいパスワード
# passwd: password updated successfully
```

### タイムゾーン・Wi-fiの国設定
やってることは`dpkg-reconfigure`等々なので、コマンドからやっても良いと思います。

```bash:Terminal(ラズパイ側）
sudo raspi-config
```

青いバックグラウンドにグレーのパネルが出るので、`Localisation Options`からそれぞれ設定します。

### ロキャルの設定
デフォルトは`en_GB.UTF-8`になっていて、そのままでもいいですが、気分的に`en_US.UTF-8`に変えます。~~これは`raspi-config`でうまく動かなかったので、手動でやります。`/etc/locale.gen`を編集してロキャルを生成し、`/etc/default/locale`を編集します。ちなみに、エディタはvi使ってますが、nanoでもなんでもいいです。~~ (2018/09/03追記: `raspi-config`もしくは`dpkg-reconfigure locales`で問題なく行けました)

### ネットワークの設定

```bash:Terminal(ラズパイ側)
sudo vi /etc/wpa_supplicant/wpa_supplicant.conf
```

```:/etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
        ssid="SSID"
        psk="暗号化キー"
        key_mgmt=WPA-PSK
}
```

ルーターの`IEEE802.11b/g/n`のSSIDと、ルーターのパスワードを確認して、それぞれ`""`で囲って記述します。

### ラズパイのローカルIPを固定する

```:/etc/dhcpcd.confに追記
interface インターフェイスのタイプ           # 例えば、無線接続ならwlan0、有線接続ならeth0
static ip_address=割り当てたいIPアドレス/24 # 例えば、192.168.0.20
static routers=ルーターのIPアドレス         # 例えば、192.168.0.1
static domain_name_servers=ネームサーバのIPアドレス # 例えば、192.168.0.1
```

(2018/09/03追記: 上のように`/etc/dhcpcd.conf`を編集するのが定石で、以下のように `/etc/network/interfaces`をいじるやり方は過去のバージョンのRasbianでのことのようです。)


~~```bash:Terminal（ラズパイ側）
sudo vi /etc/network/interfaces
```~~

~~`/etc/network/interfaces/`に以下を**追加**。~~

~~```:/etc/network/interfaces
auto wlan0
allow-hotplug wlan0
iface wlan0 inet static
address 割り当てたいIPアドレス # 例えば、192.168.0.20
netmask 255.255.255.0
gateway ルーターのIPアドレス # 例えば、192.168.0.1
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
```~~

### ラズパイを再起動する

```bash:Terminal（ラズパイ側）
sudo reboot
```

LANケーブルを外して、再度ssh接続を試みて、先程変更したパスワードを入力して接続できたら成功です。

## Webカメラで録音してみる

- WebカメラのUSB端子をラズパイに差し込む。

```bash:Terminal（ラズパイ側）
lsusb
# Bus 001 Device 004: ID 046d:081d Logitech, Inc. HD Webcam C510
```

`lsusb`はUSBに接続されているデバイスを認識できるコマンドです。上のように、差し込むだけで、`HD Webcam C510`と認識されていることがわかります。あっさり。

- apt-get update & upgradeする。

```bash:Terminal（ラズパイ側）
sudo apt-get update && sudo apt-get -y upgrade
```

わらわら入ります。少し待ちます。

- デバイスの確認


```bash:Terminal（ラズパイ側）
arecord -l
# => 
# card カード番号: ... device デバイス番号: ...
# となっているので、番号を覚えておいてあとで使います
```

- 録音。

```bash:Terminal（ラズパイ側）
cd ~
arecord -D plughw:1,0 -d 10 -f cd test.wav
# plughw:カード番号,デバイス番号 です。先程控えた番号を入れます。
# dオプションで録音する長さを指定します。上の例では10秒です。
```

- `test.wav`がホームディレクトリ（デフォルトでは`/home/pi`）にできているのを確認。

```bash:Terminal（ラズパイ側）
ls ~
# test.wav
```

- ラズパイのイヤホンジャックにイヤホンを差し込み、`text.wav`を再生します。

```bash:Terminal（ラズパイ側）
aplay test.wav
```

## Webカメラで撮影してみる

- fswebcamを入れる。

```bash:Terminal（ラズパイ側）
sudo apt-get install -y fswebcam
```

- 撮影。

```bash:Terminal（ラズパイ側）
cd ~
fswebcam img.png
```

- 画像を閲覧する機能はあとで使うつもりはないので、ここではMac側で確認します。img.pngがホームディレクトリ（デフォルトでは`/home/pi`）にできているのを確認し、ログアウト。

```bash:Terminal（ラズパイ側）
ls ~
# img.png
exit
```

- 画像ファイルをダウンロード

```bash:Terminal（Mac側）
scp pi@IPアドレス:/home/pi/img.png ./
# 例えば、scp pi@192.168.0.20:/home/pi/img.png ./
```

scpを実行したディレクトリ直下にimg.pngが保存されているはずなので、それを開くと、画像が確認できると思います。


## 参考
[Installing Raspbian Lite, Enabling and Connecting with SSH](https://randomnerdtutorials.com/installing-raspbian-lite-enabling-and-connecting-with-ssh/)
[Raspbian Jessie Lite の Wi-Fi 設定](https://azriton.github.io/2016/11/25/Raspbian-Jessie-Lite%E3%81%AEWi-Fi%E8%A8%AD%E5%AE%9A/)
[無線LANの設定](https://qiita.com/onlyindreams/items/acc70807b69b43e176bf#%E7%84%A1%E7%B7%9Alan%E3%81%AE%E8%A8%AD%E5%AE%9A)
[raspberry pi で USBカメラ(c270)から画像/音声入力/出力](https://qiita.com/kummn/items/6eaf7b1cbb8435c78f12)