Maker pHAT を使ったRPIとmacでのシリアル通信(UART)

# 概要
Maker pHATを使ってシリアル通信する過程で右往左往したので備忘録
macの場合特に何もインストールする必要なし(FT231Xドライバインストールも不要)

- C-Kermit
- PuTTY

初めての人は上記2点のソフトに行き着くかもしれないが、どちらも不要
使うのは screenコマンドのみ

# 用意するもの

- Maker pHAT rev1.1
- RaspberryPi 3B+/3A/4B/Zero W/Zero 2W
- PCとpHATを繋ぐケーブル
- microSDカード
- mac

# 参考にしたサイト

https://www.cytron.io/raspberry-pi-mengawal-led-di-maker-phat

https://docs.google.com/document/d/1iDYLyoQKOPJRD5m5ivu8Ivv6zyeLIc3IxUtRKOx7n8k/view

https://www.youtube.com/watch?v=EJWxLi7fLSo

https://www.okamoto-net.com/c1065/

https://www.switch-science.com/catalog/5520/

https://akizukidenshi.com/catalog/g/gM-16287/


# 手順1(RPIの初期セットアップからの場合)

## RaspberryPi ImagerでSDカードへ書き込み

[2022-04-04-raspios-bullseye-arm64-lite.img.xz](http://ftp.jaist.ac.jp/pub/raspberrypi/raspios_lite_arm64/images/raspios_lite_arm64-2022-04-07/) を使用
書き込みの際に`詳細な設定`から`ユーザ名`と`パスワード`は最低限設定しておくことをお勧めします。

https://www.raspberrypi.com/software/

|OS|詳細な設定|
|--|--|
|![スクリーンショット 2022-08-16 20.31.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363815/d831008a-a9c7-fabb-3ca4-b0f344eb9f89.png) |![スクリーンショット 2022-08-16 21.02.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363815/59697229-1e1b-1cfc-9262-8b7013880d37.png) |




## UARTの有効化設定の追記

イメージ書き込み後、SDカードを起動する前に再マウントし、`boot/config.txt`へ下記を追記
必要に応じて i2cなども有効化しておくと楽


```vim:
# Enable UART
enable_uart=1
```

![スクリーンショット 2022-08-16 20.37.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363815/fea1932a-e382-3d0f-c4ef-be89e95512ff.png)

## pHATとmicroSDカードを取り付けPCと接続する

- UART設定を追記できたら、PCからmicroSDカードを取り外し、ラズパイにpHATとmicroSDカードを取り付ける。
- microSDカードが付いてることを確認し、取り付けたpHATとPCをケーブルで接続する。
 接続すると自動で電源がオンになる。

## macとラズパイでシリアル通信してみる

- 電源を入れしばらく待つとmacのターミナルでポートが見えてくる
- screenコマンドで接続するがここで`not found`や`パーミッションが無い`と出る場合がある。
この場合は大抵起動していないだけなので焦らずにゆっくり待つ。
- 接続後何も表示されない画面になるが、少し待ちエンターキーを打つ、するとログイン画面項目が出てくる。
- `詳細な設定`で設定した`ユーザ名`と`パスワード`でログインする。

```bash:
# シリアルポート確認
ls -l /dev/tty.*

# screenコマンドで確認
# screen /dev/tty.usbserial-接続デバイス ボーレート(115200)
screen /dev/tty.usbserial-D309M1PG 115200

```

![スクリーンショット 2022-08-16 20.50.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363815/370c05af-b3e3-b88f-ceee-3858633806f0.png)
![スクリーンショット 2022-08-16 20.59.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/363815/5d8f8693-24df-b72e-d00f-98dd08ec91a2.png)

## 手順1 まとめ 

初期セットアップからだとすんなり接続できると思う。
個人使用だとシリアル通信を使うタイミングは少ないので,ラズパイImagerの詳細設定でWi-Fi設定など済ませておくことをお勧めします。


# 手順2(セットアップ済みRPIに後から取り付ける場合)

すること
- シリアルとシリアルポートの有効化

## シリアルとシリアルポートの有効化
- セットアップ済みRPIへssh接続しノンイタラクティブでシリアル通信を有効化
- 検索した記事によっては`serial_hw`のみを有効化している物もあったが、特に支障がないように思うのでどちらも有効化している

```bash:
# シリアルは 0で有効 1で無効
sudo raspi-config nonint do_serial 0
sudo raspi-config nonint do_serial_hw 0

# 再起動
sudo reboot
```

## macとラズパイでシリアル通信してみる

手順1の「macとラズパイでシリアル通信してみる」を参照

## 補足

手順2の方でpHATを使用すると接続できずに`close`されることが多々あった。
その場合は、

- 接続を切る物理的に
- macの操作しているターミナルを再起動
- しばらく時間を置く

この3つで自分は解決した。
焦らずにゆっくりやるのがコツ

# 番外編 シリアル通信でスクロールを使えるようにする

- ホームディレクトリの.screenrcファイルに、スクロールをできるようにする設定を追記します。
- ファイルがホームディレクトリにない場合は新規作成して設定を記入します。

.screenrcファイルが存在しない場合は、下記コマンドを使ってファイルを作成します。
```bash:
echo termcapinfo xterm* ti@:te@ >> ~/.screenrc
# 確認
cat ~/.screenrc
```