Raspberry Pi 3b+とSensorTagを接続 ①Raspberry Pi初期設定

## 前提
Raspberry PiからSensorTagのデータを吸い上げる。
下記を事前に準備。
- **SensorTag (CC2650STK)**
詳細は下記ページが詳しくてわかりやすい。
https://www.mikan-tech.net/entry/raspi-sensortag-gatttool
- **Raspberry Pi 3b+**

## Raspberry Pi 3b+ へのOSインストール（マウス・キーボード無しで）
下記サイトの手順でインストール
モニタ/キーボードを接続しないでラズパイにOSをインストールする
https://note.com/agw/n/n22ee9c4f6edc

* OSイメージダウンロード時、「NOOBS」か「Raspbian」を選択する事になる。
	- 「NOOBS」はインストーラー型でSDカードにファイルをそのままコピーし、Raspberry Pi の初期起動時にインストールを行う。
	- 「RASPBIAN」はOSのイメージファイルそのもの。SDカードに書き込む際に専用のソフトウェアが必要だが、Raspberry Pi にSDカードをセットすればすぐにRaspbianを使用することができる。

* GUIでのインストール、インストール後のGUI利用はしないためRaspbian Buster Liteを選択、zipをダウンロード。

https://www.raspberrypi.org/downloads/raspbian/
![Download Rasbian](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/551087/f6a45f2f-d29a-178c-4691-e7f05573d31a.jpeg)

* Raspberry Pi とLANケーブルで接続しているルータの管理ページにログインして
IPアドレスを確認すれば確実であるが、「raspberrypi.local」でも接続できるっぽい。

```
C:\Users>ping raspberrypi.local

raspberrypi.local [2468:4050:a1c3:6210:e01c:xxxx:a1d5:zzzz]に ping を送信しています 32 バイトのデータ:
2468:4050:a1c3:6210:e01c:xxxx:a1d5:zzzz からの応答: 時間 =1ms
・・・
```

## パッケージ最新化

apt-get dist-upgradeオプションを使ってパッケージを最新化。
apt-get upgrade と似てるが、dist-upgradeの場合はディストリビューションのバージョン更新や不要になったパッケージの削除もしてくれる、とにかく最新にしてくれるコマンド。

```
$ sudo apt-get dist-upgrade
```

パッケージの一覧は dpkg -l で確認可能。

## Raspberry Pi のユーザ設定
セキュリティ確保のためのユーザ設定。
参考：
https://blog.bnikka.com/raspberrypi/raspberrypi-install.html

(1) ルートパスワード設定

```
$ sudo passwd root
New password: パスワード
Retype new password: パスワード
passwd: password updated successfully
```

(2) ユーザ追加

```
$ sudo adduser sensortag
Adding user `sensortag' ...
Adding new group `sensortag' (1001) ...
Adding new user `sensortag' (1001) with group `sensortag' ...
Creating home directory `/home/sensortag' ...
Copying files from `/etc/skel' ...
New password:						←パスワードを指定
Retype new password:				←パスワードを再入力
passwd: password updated successfully
Changing the user information for sensortag
Enter the new value, or press ENTER for the default
        Full Name []: sensortag		
        Room Number []: 			←そのままEnter
        Work Phone []: 				←そのままEnter
        Home Phone []: 				←そのままEnter
        Other []: 					←そのままEnter
Is the information correct? [Y/n] y	←「y」を入力
pi@raspberrypi:~ $
```

(3) 新規作成したユーザをsudoグループに追加
```
pi@raspberrypi:~ $ sudo gpasswd -a sensortag sudo
Adding user sensortag to group sudo
pi@raspberrypi:~ $
```

(4) 新規作成したユーザにログイン出来、sudoコマンドがパスワードなしで実行出来る事を確認
```
$ su - sensortag
Password:
sensortag@raspberrypi:~ $ whoami
sensortag
sensortag@raspi3bp-01:~ $ sudo su -

root@raspi3bp-01:~# whoami
root
```

## WiFiの有効化

* 初期設定でWiFi機能が「無効」なのは Raspberry Pi 3 Model B+のみの様子。
* 設定前はifconfigやiwconfigでIFを参照しても無線LANインターフェース(wlan0)は表示されない。

下記サイトを参考にraspi-configコマンドで WiFiの地域情報を設定する事によりWiFiを有効化。
http://www.neko.ne.jp/~freewing/raspberry_pi/raspberry_pi_raspbian_strech_enable_wifi/

(1) raspi-config起動
```
sensortag@raspberrypi:~ $ sudo su -
root@raspberrypi:~ # raspi-config
```
(2) 矢印キーで 4 Localisation Options を選択。選択はEnterキー。
![WS000342.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/551087/c5d2f006-f250-59c4-d677-c10e3ec2dde9.jpeg)
(3) I4 Change Wi-fi Country を選択
![WS000343.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/551087/94d763e3-e90f-93e8-2bae-0e2e180b743b.jpeg)
(4) 矢印キーでJP Japanにカーソルを合わせた上でEnterまたはTabキーでOkに移動してEnter
　　※矢印キーでJPを探す時にJキーを押すとジャンプ可能
![WS000344.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/551087/58e6d2f6-63cd-a517-a2e3-5eff020d7959.jpeg)
(5) メッセージを確認
![WS000345.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/551087/e5f6e6c1-c488-775d-2010-8ef59a716cb8.jpeg)
(6) Tabキーで Finish にカーソルを合わせてEnter
![WS000346.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/551087/6ae2f2d2-e2e0-c95f-da6e-b04df1b52084.jpeg)
(7) reboot確認メッセージが表示されるのでYesを選択
![WS000347.JPG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/551087/daf8c59c-eb9d-1203-a21c-53b01e42fbef.jpeg)
(8) OS再起動完了後に無線LANインターフェース(wlan0)が有効になっている事を確認。
```
sensortag@raspberrypi:~ $ iwconfig
wlan0     IEEE 802.11  ESSID:off/any
          Mode:Managed  Access Point: Not-Associated   Tx-Power=31 dBm
          Retry short limit:7   RTS thr:off   Fragment thr:off
          Power Management:on

eth0      no wireless extensions.

lo        no wireless extensions.

```

## WiFi接続

下記のサイトを参考に設定。
https://www.bit-plus.work/note/linux/raspberry-pi-3-wpa2-enterprise/
https://dev.classmethod.jp/articles/raspberrypi-remote-connect/

* ファイルは下記２つ。
    * /etc/wpa_supplicant/wpa_supplicant.conf　→必ず変更
    * /etc/dhcpcd.conf　→固定IPを設定する場合のみ変更。今回はDHCPを使うので変更しない。
* 最近のリリースでは/etc/network/interfacesは使用していないとの事。

> RaspbianのバージョンStretch（現時点でRASPBIAN STRETCH WITH DESKTOP Release date:2018-03-13）以降では、interfacesは使用しないことになりました。

(1) wpa_supplicant.conf にWiFi接続情報を記述

```
$ ls -l /etc/wpa_supplicant/wpa_supplicant.conf
-rw------- 1 root root 72 Feb 13 15:58 /etc/wpa_supplicant/wpa_supplicant.conf
$
$ sudo vi /etc/wpa_supplicant/wpa_supplicant.conf

# 下記を追記
network={
   ssid="ssid"
   psk="password"
}
```

結果は以下の通り。

```
$ cat /etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=JP
network={
   ssid="ssid"
   psk="password"
}
```

(2) 再起動


```
$ sudo reboot
```

うまく設定できていれば inet の部分にIPアドレスが表示されるはず。

```
sensortag@raspberrypi:~ $ ifconfig wlan0
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.46  netmask 255.255.255.0  broadcast 192.168.0.255
             ↑ IPアドレス
・・・
```

(3) 無線LANのIPアドレスでTeraTermを接続し直し、うまく接続できたら有線LANを抜線。


## ホスト名変更

* マストではないが今後Rapsberry Piの台数が増えた時に備えてホスト名を変更する。
* 下記サイトを参考に raspi-config で設定<br>
https://raspi.ryo.sc/change_host/<br>
	1.  $ sudo raspi-config
	2.  [2 Network Option] → [N1 Hostname] を選択
	3. 「Please note」の画面はOKでEnter、次画面に進む
	4. ホスト名を編集してTabでOKに移動、Enter
	5. 再起動を求められるのでOKでEnter
	6. 再起動後にプロンプトが変わっている事を確認。hostnameコマンドでも確認。
* ホスト名に使える文字はアルファベット、数字、-（ハイフン）。
アルファベットは大文字・小文字を区別しない。