Raspberry PiのGPIOを使ってシリアル通信する方法

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



環境


Raspberry Pi 4B 8GB, Rasbian 10.3


ゴール


8番ピンと10番ピンをシリアル通信に使える状態にし、ジャンパー線で直結してループバックテストを行う。

大まかな手順


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



Serial Consoleを無効にし、Serial Portを有効にする


Serial Console はシリアル通信を通じてRaspberry Piを操作するための機能です。GPIOの8番ピンと10番ピンはこのSerial Consoleのためにリザーブされています。それ以外の目的で8番ピンと10番ピンを利用するには、Serial Consoleを無効にする必要があります。


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




Bluetoothを無効にする


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

dtoverlay=pi3-disable-bt

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


一般的に、通信は送信側と受信側で行うものですが、送受信をテストするだけなら、自機だけでできます。下の写真のようにジャンパーなどで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でもループバックテストをしてみました。






特集記事
最新記事
アーカイブ
タグから検索
ソーシャルメディア
  • Facebook Basic Square
  • Twitter Basic Square
  • Google+ Basic Square