Raspberry Pi でビール造り(その1:Raspberry Pi のセットアップ)

#ビールを造ろう！
##なんでビール？
会社のハッカソンで、自分のチームは何故かビールを造ることになった。
面白そうだし、いいんじゃね？という軽いノリで。
東急ハンズとかに売っているビールキットを使えば家でも簡単にビールが作れるらしいし[^1]。
[^1]: 日本では酒税法により自家醸造は違法だそうな。正確には酒類製造免許無しにアルコール度数1%以上のお酒を作ってはダメらしい。なので、市販のビールキットはアルコール度数1%未満になるようなレシピが付いている事で、お咎め無しになっている模様。[国税庁-お酒についてのQ&A【自家醸造】](https://www.nta.go.jp/shiraberu/senmonjoho/sake/qa/06/34.htm)

##ハッカソンっぽくビールを作る
とは言え、ハッカソンなので何かしらシステムを構築するなり、コードを書くなりしないとね。
ビール造りでコーディングが絡みそうなネタは無いかなーと軽く調べてみると、
海外ではRaspberry Piに温度センサーとかつなげて、ビールの発酵温度の管理をする人が結構いるみたい。
[冷蔵庫を改造している猛者もいる](http://www.brewpi.com/fridge-hacking-guide/)。
[ビールキットのページ](http://www.sakeland.net/?mode=f10)を見ても、やはりビール造りの重要なポイントは温度管理らしい！
ということで、自分のチームでもRaspberry Piを使ってビール発酵の温度管理する仕組みを構築することにした。

#Raspberry Pi のセットアップ
##最初に購入したもの
+ [Raspberry Pi Model B+ (Plus)](http://www.amazon.co.jp/gp/product/B00LT4BOK6/ref=as_li_ss_tl?ie=UTF8&camp=247&creative=7399&creativeASIN=B00LT4BOK6&linkCode=as2&tag=takeruorg-22) ¥4,230
+ [Transcend microSDHCカード 16GB](http://www.amazon.co.jp/gp/product/B008UR8TZ8/ref=as_li_ss_tl?ie=UTF8&camp=247&creative=7399&creativeASIN=B008UR8TZ8&linkCode=as2&tag=takeruorg-22) ¥980
+ [PLANEX 無線LAN子機 (USBアダプター型) 11n/g/b 150Mbps](http://www.amazon.co.jp/gp/product/B00ESA34GA/ref=as_li_ss_tl?ie=UTF8&camp=247&creative=7399&creativeASIN=B00ESA34GA&linkCode=as2&tag=takeruorg-22) ¥1,026

合計¥6,236なり。
SDカードの容量は4GBだと不足(OSだけで3GB以上使うので)、8GBくらいあれば十分らしいけど、念のため16GBを購入。
無線LANアダプタは[BUFFALOのWLI-UC-GNM](http://www.amazon.co.jp/exec/obidos/ASIN/B003NSAMW2/denshikosaku-22/)の方が安いんだけど、[消費電力と発熱量が高いらしく、Raspberry Piにはおすすめできないらしい](http://denshikousaku.net/raspberry-pi-wifi-lan-usb)。
その他、ディスプレイ接続用のHDMIケーブル、USBキーボード、電源ケーブル用のmicro USBケーブルが必要なのだけど、お家にあるものを流用。
どうせ、初期セットアップが完了したら無線LAN経由でsshで操作するのだし。

##Raspbianのセットアップ
やり方は[公式ページに書いてあるとおり](https://www.raspberrypi.org/documentation/installation/installing-images/)。
1. OSイメージをダウンロード
2. SDカードへOSイメージを書き込み
自分はMacで作業したので、[Mac用の手順](https://www.raspberrypi.org/documentation/installation/installing-images/mac.md)を参考にした。

###OSイメージをダウンロード
Raspbianの最新版をダウンロードする。

```bash:ターミナル
$ curl -L -o raspbian.img.zip http://downloads.raspberrypi.org/raspbian_latest
$ unzip raspbian.img.zip 
Archive:  raspbian.img.zip
  inflating: 2015-05-05-raspbian-wheezy.img 
```

###SDカードへOSイメージを書き込み
MacにSDカードを差し、ターミナルで`diskutil list`を実行してSDカードの場所を調べる。
下記例の場合は`/dev/disk2`。

```bash:ターミナル
$ diskutil list
/dev/disk0
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *251.0 GB   disk0
   1:                        EFI EFI                     209.7 MB   disk0s1
   2:          Apple_CoreStorage                         250.1 GB   disk0s2
   3:                 Apple_Boot Recovery HD             650.0 MB   disk0s3
/dev/disk1
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:                  Apple_HFS Macintosh HD           *249.8 GB   disk1
                                 Logical Volume on disk0s2
                                 AE3EE162-DA56-4BF1-8BAE-2FBE4B591776
                                 Unlocked Encrypted

/dev/disk2
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:     FDisk_partition_scheme                        *15.5 GB    disk2
   1:                 DOS_FAT_32                         15.5 GB    disk2s1
```

SDカードをunmountしてから、`dd`でOSイメージを書き込む。

```bash:ターミナル
$ diskutil unmountDisk /dev/disk2
$ sudo dd bs=1m if=2015-05-05-raspbian-wheezy.img of=/dev/disk2
```

書き込み終わるまで30〜40分くらいかかった。
どれくらい書き込んだのか途中経過を見たい場合は、**Ctrl+t**を打つと途中経過が見られる。

```bash:ターミナル
3125+0 records in
3125+0 records out
3276800000 bytes transferred in 2784.822319 secs (1176664 bytes/sec)
```

###Raspberry Piの起動・初期設定
Raspberry PiにSDカード、ディスプレイ、USBキーボード、無線LANアダプタを繋げたら、
電源のmicro USBケーブルを繋げてスイッチオン。
Raspberry Piには電源スイッチなるものがなく、電源ケーブルの抜き差しで電源ON/OFF。
電源が入ると、初期設定画面になる。
初期設定の内容は、ほぼ以下のページを参考にした。
>[Raspberry Pi 2 Model B をインストールしてSSH接続できるようにしてみる](http://techblog.clara.jp/2015/02/raspberry-pi-2-model-b_install_and_ssh_connect/)

実施したのは下記設定。

1.Expand Filesystem
2.Change User Password
4.Internationalisation Options
8.Advanced Options(SSHサーバー有効化)

###無線LANの設定
起動後は早々に無線LANの設定。
やり方は下記ページを参考にした。
>[Raspberry Piに無線LANのUSBアダプタをつける](http://denshikousaku.net/raspberry-pi-wifi-lan-usb)

[PLANEX 無線LAN子機 (USBアダプター型) 11n/g/b 150Mbps](http://www.amazon.co.jp/gp/product/B00ESA34GA/ref=as_li_ss_tl?ie=UTF8&camp=247&creative=7399&creativeASIN=B00ESA34GA&linkCode=as2&tag=takeruorg-22)であれば、Raspberry Piに挿しただけで認識されるので、
あとはネットワークの設定をするだけ。

我が家の無線LANはWPA2-PSK(AES)なので、wpa_supplicantで設定をする。
`wpa_passphrase`でパスフレーズキーを生成し、`/etc/wpa_supplicant/wpa_supplicant.conf`に追記する。

```bash:ターミナル
$ sudo su
$ wpa_passphrase <MySSID> <MyPassphrase> >> /etc/wpa_supplicant/wpa_supplicant.conf
$ vi /etc/wpa_supplicant/wpa_supplicant.conf
```

`/etc/wpa_supplicant/wpa_supplicant.conf`を編集し、WPA2-PSK(AES)の設定を追加する。

```bash:/etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
	ssid="MySSID"
	#psk="MyPassphrase"
	psk=hogehogehogehogehogehogehogehogehoge
        key_mgmt=WPA-PSK #←追加
        proto=WPA2       #←追加
        pairwise=CCMP    #←追加
        group=CCMP       #←追加
        priority=2       #←追加
}
```

`/etc/network/interfaces`も編集し、無線LANのIPアドレスやDNSサーバーを設定しておく。

```bash:/etc/network/interfaces
auto lo
iface lo inet loopback

auto eth0
allow-hotplug eth0
iface eth0 inet manual

auto wlan0
allow-hotplug wlan0
iface wlan0 inet static
address 192.168.0.100
netmask 255.255.255.0
gateway 192.168.0.1
dns-nameservers 8.8.8.8 8.8.4.4
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp
```

Raspberry Pi で無線LANを使っていると、たまに反応が悪くなる。
どうやらUSB無線LANアダプタのパワーマネジメント機能のせいらしい。
>[Raspberry Piで無線LANの反応が悪い時の対処法](http://denshikousaku.net/fix-sluggish-response-of-raspberry-pi-wifi-adaptor)

パワーマネジメント機能をOFFにするには、`/etc/modprobe.d/8192cu.conf`に下記設定をすれば良いらしい。

```bash:/etc/modprobe.d/8192cu.conf
# Disable power saving
options 8192cu rtw_power_mgnt=0 rtw_enusbss=1 rtw_ips_mode=1
```

無線LANの設定が終わったら、rebootして他のマシンからsshでログインできることを確認する。

今回はここまで。