Raspberry pi セットアップからシリアル通信まで

# <i class="fa fa-map-marker"></i> 目的
Raspberry pi をセットアップして
ディスプレイ繋ぐのが面倒なのでシリアル通信できる環境を構築します。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/130874/6530ccc7-1f57-ffb1-e1e8-f7ee36496bd9.png)
（付箋でパスワード貼る意識の低い人）

# <i class="fa fa-map-o"></i> 必要なもの
- Raspberry pi3 Model B
    - [Raspberry Pi3 Model B ボード＆ケースセット 3ple Decker対応 (Element14版, Clear)-Physical Computing Lab](https://www.amazon.co.jp/gp/product/B01CSFZ4JG/?tag=qiitak-22)
- HDMI-DSUB変換アダプタ
    - [TechRise金メッキ高速1080P HDMI オス to VGAメスビデオ変換アダプタケーブル オーディオとマイクロUSBケーブル付き](https://www.amazon.co.jp/gp/product/B01K6UYUJU/?tag=qiitak-22)
    - HDMI接続のディスプレイがなかったので購入
    - microUSB ケーブルで給電しなくても動作しました
- USB シリアル通信ケーブル
    - [Raspberry Pi ラズベリーパイ用の USB－TTLシリアルコンソールのUSB変換COMケーブルモジュールのケーブル](https://www.amazon.co.jp/gp/product/B00K7YYFNM/?tag=qiitak-22)
- microSD カード (8GB 以上)
- USB-microUSB 電源ケーブル
- 5V-2.5A か 2A くらい出力できるUSB電源
- USB 接続のキーボード
- USB 接続のマウス（なくてもなんとかなる）
- Windows PC
- RLogin or TeraTerm

# <i class="fa fa-location-arrow"></i> インストール～設定
## フォーマット
[SDカードフォーマッター4.0](https://www.sdcard.org/jp/downloads/formatter_4/)でフォーマットした microUSB を用意。

- [NOOBS for Raspberry Pi](https://www.raspberrypi.org/downloads/noobs/)
    - NOOBS_v2_4_0.zip （1.3GB)

の ZIP を展開。Wi-fi があるなら NOOBS LITE でもよさそう。

## 起動とインストール
USBマウス、USBキーボード、SD カード挿入したRasPi3、HDMI-アダプタ-DSUBディスプレイを接続
電源の microUSB 接続して起動したら、Raspbian + PIXCEL をインストール。

## インストール完了したら GUI から設定
- Preferences
    - Raspberry Pi Configuration
        - Change Password : pi のパスフレーズを任意の文字列に変更しておく
        - Auto Login : Login as user pi はチェックあるまま
        - Boot : CLI にチェック
    - Interfaces
        - Serial : Enabled に変更
        - SSH : Enabled に変更
    - Location
        - Timezone : Asia Tokyo に変更
        - Wifi Country : JP Japan に変更

## CLI から Wifi 設定
Terminal 起動

``` bash:console
$sudo sh -c 'wpa_passphrase SSID PASSPHRASE >> /etc/wpa_supplicant/wpa_supplicant.conf'
```

`#psk` 行にパスフレーズがコメント記載されているので削除

``` bash:console
$sudo cat /etc/wpa_supplicant/wpa_supplicant.conf
country=GB
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
    ssid="SSID"![IMG_20170616_192038_357.jpg](https://qiita-image-store.s3.amazonaws.com/0/130874/cd8ea030-01b2-120a-0b2e-648d31acff73.jpeg)

    #psk="xxxxxx"
    psk=xXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxX
}
```
再起動と、自動で pi ユーザでログインされる

``` bash:console
$sudo shutdown -r
```

DHCP で IP アドレス取得できていることを確認

``` bash:console
$ip addr
x: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
    inet 192.168.xx.xx/24 brd 192.168.xx.xx scope global wlan0
       valid_lft forever preferred_lft forever
    inet6 xXxX::xXxX:xXxX:xXxX:xXxX/64 scope link
       valid_lft forever preferred_lft forever
```

# <i class="fa fa-usb"></i> シリアル通信
まいどディスプレイに繋ぐのが面倒なので。

## ドライバ導入
シリアル通信用に購入した [USB－TTLシリアルコンソールのUSB変換COMケーブル](https://www.amazon.co.jp/gp/product/B00K7YYFNM/?tag=qiitak-22) のドライバをインストール。

- [USB to TTL Serial Cable - Debug / Console Cable for Raspberry Pi ID: 954 - $9.95 : Adafruit Industries, Unique & fun DIY electronics and kits](https://www.adafruit.com/product/954)
    - PL2303_Prolific_DriverInstaller_v1180B.zip
    - Windows 10 はドライバ v1.5 など[古いのを入れる必要がある](http://ehbtj.com/info/pl2303-windows10/)

## 接続
RasPi と USB を接続。

|USB側|RasPi側|
|:--:|:--:|
|黒|GND|
|白|UART TXD(14)|
|緑|UART RXD(15)|
|赤|接続なし|

## シリアル接続
SSH クライアントで COM通信 の設定をする。rlogin だとこんなかんじだけど TeraTerm でもほぼ一緒。


![image.png](https://qiita-image-store.s3.amazonaws.com/0/130874/d5bb9f0c-b1ea-e60e-0da5-1d65bb709187.png)
![image.png](https://qiita-image-store.s3.amazonaws.com/0/130874/47e525dd-9b42-95db-7dab-1b9904177690.png)

- 主な設定項目
    - プロトコル：COM
    - SocketPort：COMx
        - 接続する USB ポートによって異なるので、デイバスマネージャ確認
    - 通信ビットレート（ビット/秒）：115200
    - デフォルト文字セット：UTF-8
    - 接続時にサーバ・ユーザ・パスワードの入力 はチェックいらなかったです。

接続後に Enter 押すとログインID、PWが問われる
![image.png](https://qiita-image-store.s3.amazonaws.com/0/130874/c0bfc497-9669-dfc1-c17c-ea744cc41e6b.png)

できたー

ファイル転送に XModem を使うので インストール

``` bash:console
$sudo apt-get install lrzsz
$rx
``` 
rx コマンドでファイル待受モード、RLogin（or Putty）から XModem転送 で任意のファイルを指定すればファイル転送可能。（のはずだけど、うまくいかないことが多い）転送キャンセルは「Ctrl + X」

これでノートPCなどからも（RasPi用のディスプレイ/キーボードなしで）開発できる環境が整いました。

# 追記 MacOS Mojave 10.14.1
- これをダウンロード、インストールして再起動
- http://www.prolific.com.tw/US/ShowProduct.aspx?p_id=229&pcid=41
    - PL2303_MacOSX_1_6_1_20171018.zip
        - PL2303_MacOSX_1.6.1_20160309.pkg

再起動後にUSBシリアルデバイスが認識されていることを確認

```bash:console
$ ls /dev/tty.usb*
/dev/tty.usbserial
```

```bash:console
$ screen /dev/tty.usbserial 9600
```

# <i class="fa fa-external-link"></i> 参考
- [パソコンとシリアル通信する方法](http://www.hiramine.com/physicalcomputing/raspberrypi/serial_howtoconnectpc.html)
- [Raspberry Piのセットアップ - Qiita](http://qiita.com/locatw/items/6dc176f31061e73c9bc2)