Raspberry Pi zero 2Wでピンヘッダからマイコン等とシリアル通信する。
まずシリアルコンソールを無効化する。
デフォルトでは/dev/serial0はLinuxコンソールに割り当てられているのでraspi-configで無効化する。
GUIからだとraspi-config>インターフェイスに入り
シリアルポート: 有効
シリアルコンソール: 無効
を選択し
すると再起動するかと聞かれるので再起動する。
次にBluetoothモジュールの接続を切り替える。
デフォルトでは
/dev/serial0 -> /dev/ttyS0
/dev/serial1 -> /dev/ttyAMA0
とシンボリックリンクが張られている。このままではBluetoothモジュールがUART0(/dev/ttyAMA0)を使ってしまっているので切り替えが必要。
一つの方法はdisable-btでBluetoothを無効化する方法。ただしこれだと多分Bluetoothが全く使えなくなる。
もう一つの方法はminiuart-btという方法で、こちらはBluetoothをmini UART(/dev/ttyS0)に割り当てる。結果的にBluetoothの速度は低下するが使えなくなることはない。
今回はこちらを採用する。
$ sudo nano /boot/config.txt # Use miniUART to connect to Bluetooth module dtoverlay=miniuart-bt core_freq=250
というふうに追記し、もう一度再起動する。
これによって
/dev/serial0 -> /dev/ttyAMA0
/dev/serial1 -> /dev/ttyS0
と入れ替わり、Primary UART(/dev/serial0)がUART0(/dev/ttyAMA0)のシンボリックリンクとなる。
この状態で
$ screen /dev/ttyAMA0 115200 8N1
のようにしてやればシリアル通信ができるようになっている。
なお使用するピンは8番ピンがTxDで、10番ピンがRxD、6番ピンのGNDと並びで3つのピンを3.3vマイコンのUART IOに直結で通信が可能である。
まちがって5Vの機器やRS232Cレベルと直結するとあっけなく壊れるらしいので要注意。