kuroの覚え書き

96の個人的覚え書き

Raspberry Pi zero 2Wでシリアル通信

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レベルと直結するとあっけなく壊れるらしいので要注意。