Python & Raspberry Pi 開発ブログ ☆彡

PythonとRaspberry Piの基本的な使い方をわかりやすく解説。初心者、入門者必見!!

UARTの設定

UART(シリアル通信)の使い方を紹介します。ほとんどの方が無線LANでSSHを使用し、コンソールを開いていると思いますが、GPIOピンのGPIO14(TX)、GPIO15(RX)を使用してシリアル通信を行い、コンソールを開き操作することもできます。ネット環境がない場合は重宝します。また、シリアル通信で制御できるデバイスもたくさんありますので、使い方を覚えておいて損はありません。それでは説明をしていきます。

UARTのハードウェア仕様

Raspberry Pi 3には2つのビルトインUARTがあります。PL011とmini UARTです。PL011はデフォルトでBluetoothに割り当てられています。mini UARTはVC4 GPUのVPUのコア周波数にリンクしているため、コア周波数が変わってしまうと、mini UARTのボーレートも変わってしまい、このままだとまともに通信できません。

・PL011 /dev/ttyAMA0 -> Bluetooth
・mini UART  /dev/ttyS0 -> GPIO14,15 serial port

対応策としては主に下記のふたつがあります。

①コア周波数を固定する方法
/boot/config.txt に core_freq=250を追記します。下記コマンドで追記できます。

$ sudo bash -c "echo core_freq=250 >> /boot/config.txt"

これでコア周波数が固定されるので、ttyS0が使えるようになります。

②Bluetoothをあきらめて、ttyAMA0とttyS0の割り当てを入れ替える
/boot/config.txtにdtoverlay=pi3-miniuart-btを追記します。下記コマンドで追記できます。

$ sudo bash -c "echo dtoverlay=pi3-miniuart-bt >> /boot/config.txt"

これでBluetoothは使えなくなりますが、ttyAMA0が使えるようになります。

ハードウェアの準備

私はPL2303HXのチップセットが搭載されているUSB-TTLケーブル(3.3V)を購入しました。

USB-TTLケーブルのTx/Rx/GNDの線をRaspberry PiのGPIOピンに接続します。電源(5V)の線は、パソコンのUSB5Vから供給されますので、Raspberry PiのGPIOピンに接続する必要はありません。 ※ケーブルのTx ⇒ Raspberry PiのRX、ケーブルのRx ⇒ Raspberr PiのTXに接続します。

接続が終わった後、WindowsにPL2303HXのドライバをインストールする必要があります。下記サイトからドライバをダウンロードし、インストールしてください。
Prolific USB-to-Serial Driver

コンソールとして使用する場合

sudo raspi-configコマンドを実行して、下記のように設定します。

console1 console2 console3 console4

汎用ポートとして使用する場合

sudo raspi-configコマンドを実行して、下記のように設定します。

port1 port2 port3 port4 port5

もしうまくいかない場合は、下記のコマンドで強制的にコンソールを無効にしてください。

コンソールを停止する
$ sudo systemctl stop serial-getty@ttyAMA0.service
$ sudo systemctl disable serial-getty@ttyAMA0.service

コンソールを開始する
$ sudo systemctl start serial-getty@ttyS0.service
$ sudo systemctl enable serial-getty@ttyS0.service

以上でUARTの設定は完了です。

ラズパイ ハードウェアに戻る
TOPページにもどる