Overview
Raspberry Pi Zero WやRaspberry Pi3は、Bluetoothを搭載され、UARTで結線されてる関係で、使うのに手間がかかります。
- SoC内のUARTの切り替え (pinヘッダーに出ているTXD/RXDを使えるように) が 必要
-
https://www.raspberrypi.org/documentation/configuration/uart.md を見るとわかりますが、
- PL011というARMのUARTのIPが1つ (BTにはdefaultで利用. FIFO bufferのサイズが多い、また6線UART (TXD/RXD/RS/CSやDTR/DSR)などにも対応など多機能)
- Tiny UARTというIPが1つ
簡易UARTに切り替えることもでき、Raspberry Pi3やZero Wで、BluetoothとUARTの併用が可能です。
-
シリアルコンソールの無効化が必要
-
/dev/ttyAMA0
や/dev/ttyS0
は、 consoleとししても使われているため、無効化しないと、オンチップのUARTを、自分用途で利用できないので、無効化が必要 -
TXD/RXD の ピンレイアウトは、
- Raspberry Pi Zero / Zero Wは、TXD: 8pin / RXD : 10 pin です。
-
https://cdn.sparkfun.com/assets/learn_tutorials/6/7/6/PiZero_1.pdf
などご参考
-
Diet Pi特記事項
-
DietPi は特殊なdistributionでDTのoverrideが /boot直接では、できないので注意が必要
やり方
オンボードシリアルの有効化
enable_uart=1
以下が、Tiny UARTとPL011の切り替えです。
dtoverlay=pi3-miniuart-bt
を追加 (pi3となっていますが、Zero Wでも有効)
baurdrateを115200よりも使う時。
ATmega32u4などでUSBで使う場合には、baurdateを500000bpsとかに設定するかと思いますが、
その時は、
init_uart_clock=8000000
も追加しておきましょう。
なお、
/boot/config.txtは、DietPi上では、直接編集しても無意味です。
/DietPi/config.txt
を代わりに編集しましょう
UART ttyの無効化
-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を取ろうとしているので、無効化します。
これで使えるはずです。