18
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

updated at

Raspberry Pi3 や Zero Wで オンボードのシリアル (UART) を使う (DietPiでの方法も補足)

Overview

Raspberry Pi Zero WやRaspberry Pi3は、Bluetoothを搭載され、UARTで結線されてる関係で、使うのに手間がかかります。

  • SoC内のUARTの切り替え (pinヘッダーに出ているTXD/RXDを使えるように) が 必要

簡易UARTに切り替えることもでき、Raspberry Pi3やZero Wで、BluetoothとUARTの併用が可能です。

  • シリアルコンソールの無効化が必要

    • /dev/ttyAMA0/dev/ttyS0 は、 consoleとししても使われているため、無効化しないと、オンチップのUARTを、自分用途で利用できないので、無効化が必要
  • TXD/RXD の ピンレイアウトは、

  • Diet Pi特記事項

    • DietPi は特殊なdistributionでDTのoverrideが /boot直接では、できないので注意が必要

やり方

オンボードシリアルの有効化

/boot/config.txt
enable_uart=1

以下が、Tiny UARTとPL011の切り替えです。

/boot/config.txt
dtoverlay=pi3-miniuart-bt

を追加 (pi3となっていますが、Zero Wでも有効)

baurdrateを115200よりも使う時。

ATmega32u4などでUSBで使う場合には、baurdateを500000bpsとかに設定するかと思いますが、
その時は、

/boot/config.txt
init_uart_clock=8000000

も追加しておきましょう。

なお、
/boot/config.txtは、DietPi上では、直接編集しても無意味です。
/DietPi/config.txt
を代わりに編集しましょう

UART ttyの無効化

/boot/cmdline.txt
-dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
+dwc_otg.lpm_enable=0 console=serial0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait

/boot/cmdlineでconsole=serial0,1152000が入っているかと思いますが、上のように
除去しましょう。

sudo systemctl stop serial-getty@ttyAMA0.service
sudo systemctl disable serial-getty@ttyAMA0.service

のように、gettyが/dev/ttyAMA0や/dev/ttyS0を取ろうとしているので、無効化します。

これで使えるはずです。

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
18
Help us understand the problem. What are the problem?