LoginSignup
0
0

RasberryPi 4BでGPIOのシリアル通信を有効にするメモ

Posted at

はじめに

RasberryPi 4BのGPIOでシリアル通信をするメモです。
センサの情報をシリアル通信で取得したかったのですが、同梱されているはずのUSB変換がなくなっていたので、ラズパイのGPIOポートを使いたいと考えました。

環境

  • RasberryPi 4B(Ubuntu 20.04.4 LTS)
項目 バージョン
Ubuntu 20.04
ROS Noetic

参考

やったこと

RasberryPiのシリアルポート設定

シリアルポートはデフォルトでは無効になっています。そのため、設定で有効にする必要があります。
raspi-configで設定します。

$ sudo raspi-config

raspi-configが起動したら、以下のような画面になるので、

Interfacing options
image.png

Serial Port
image.png

「いいえ」

image.png

ハードウェアポートをアクティブ化するかどうかの質問に「はい」

image.png

「了解」

image.png

デバイスの確認

$ dmesg | grep PL011
[    0.038572] Serial: AMBA PL011 UART driver
[    1.431030] fe201000.serial: ttyAMA0 at MMIO 0xfe201000 (irq = 14, base_baud = 0) is a PL011 rev2

$ ls -al /dev/ttyAMA0
crw--w---- 1 root tty 204, 64 12月 28 19:44 /dev/ttyAMA0

表示結果の2行目に「ttyAMA0… is a PL011」と表記されているため、デバイス名は「ttyAMA0らしい」ということが分かります。

ボーレート確認しようと思ったら、許可がないとのことなので、権限を付与します。

$ stty -F /dev/ttyAMA0
stty: /dev/ttyAMA0: 許可がありません
$ sudo chmod a+rw /dev/ttyAMA0
ubuntu@TB3:~$ ls -al /dev/ttyAMA0
crw-rw-rw- 1 root tty 204, 64 12月 28 19:44 /dev/ttyAMA0

ボーレートを確認すると、115200であることがわかりました。

$ stty -F /dev/ttyAMA0
speed 115200 baud; line = 0;
min = 1; time = 0;
-brkint -icrnl -imaxbel iutf8
-isig -icanon -iexten -echo -echoe -echok -echoctl -echoke

データ送受信テスト

シリアル通信には、GPIO14(TXD)、GPIO15(TXD)を使います。ブレッドボードを使って、シリアル通信を対向させます(自分と通信)。抵抗は適当なものを使いました。(手元にあった27Ω)

image.png

image.png

参考:Raspberry PiのTTLシリアルポートをアクティブにし、機能していることを確認します。 (raspberrypi-japan.com)

ターミナルで受信します。待ち構えている状態です。
(先ほど権限付与したので、sudo必要なかったかも)

$ sudo cat /dev/ttyAMA0

別のターミナルで送信します。

$ echo "Hello" > /dev/ttyAMA0

受信側のターミナル

$ sudo cat /dev/ttyAMA0
ello
H

なにか通信できている…模様。

まとめ

本記事ではRasberryPi 4Bのシリアル通信を有効にしたメモを記載しました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0