Raspberry Pi GPIOヘッダーでシリアル通信ができるようにする方法

最終更新: 6日前

Raspberry PiのGPIOのうち、8番ピン(送信)と10番ピン(受信)を使ってシリアル通信ができます。ただし、買ってきたばかりのRasberry Pi では使えません。いくつか設定を変更する必要があります。ここではその手順を紹介します。



環境


Raspberry Pi 4B 8GB, Rasbian 10.3


ゴール


8番ピンと10番ピンをシリアル通信に使える状態にし、ジャンパー線で直結してループバックテストを行う。そして、8番ピンから送信されたデータが10番ピンで受信できていることを確認すること

大まかな手順


Step1 コンソールを無効にし、シリアルを有効にする Step2 Bluetoothを無効にする Step3 8番ピンと10番ピンを直結し、ループバックテスト用のスクリプトを実行する おまけ WebIOPi で試してみる



コンソールを無効にし、シリアルを有効にする


メニュー > [Raspberry Pi の設定] > [インターフェイス]タブ の中にある"Serial Port" を"有効"に、"Serial Console"を"無効"にして、OKボタンを押します。




Bluetoothを無効にする


/boot/config.txt に次の一行を書き加え、保存する

dtoverlay=pi3-disable-bt

8番ピンと10番ピンを直結し、ループバックテスト用のスクリプトを実行する


このようにジャンパーなどで8番ピンと10番ピンを直結します。



ループバックテスト用のスクリプト の例

https://www.raspberrypi.org/forums/viewtopic.php?t=178079


このスクリプトを実行すると、次のような結果が表示されます。


Opened port /dev/ttyAMA0 for testing:
Sent 15 bytes
Received 15 valid bytes, Serial port /dev/ttyAMA0 working

WebIOPiのSerial Monitorでもループバックテストをしてみました。




(参考)

初期設定では、GPIOの8番ピンと10番ピンは、PCなどからRaspberry Pi に直接ケーブルを繋いでRaspberry Pi自体を操作するためにリザーブされているそうです。センサーや機器類とシリアル通信をするには、上記のような手順を踏まなければいけません。




4回の閲覧