赞
踩
树莓派3/4B+
melodic ROS+Ubuntu18.04
特别指出,不想要禁用蓝牙功能的树莓派4b请参考树莓派4b专用配置;因个人需求,混用3B和4B的树莓派,所以统一按照下方流程进行配置。
上图是最常见的树莓派通用40pin引脚图,对于树莓派1、2、3、4有以下共同特征:
树莓派外设串口分为两类:
树莓派板载蓝牙模块,默认的硬件串口是分配给蓝牙模块使用的,而性能较差的mini串口是分配给GPIO串口 TXD0、RXD0。
对于树莓派4B,在上述两个串口基础上,新增了4个PL011串口:
UART2: TXD2-->GPIO0 RXD2-->GPIO1
UART3: TXD3-->GPIO4 RXD3-->GPIO5
UART4: TXD4-->GPIO8 RXD4-->GPIO9
UART5: TXD5-->GPIO12 RXD5-->GPIO13
(此处引用自博主TEDxPY【树莓派 4 UART 多串口配置通信】一文)
总的来说,我们需要将想要用的GPIO14/15口从原有的ttyS0作出如下映射关系转变:
UART0: TXD0 -> GPIO14 RXD0 -> GPIO15 - ttyAMA0
UART1: ttyS0
接线图如下:
目的是将硬件串口设置为GPIO的串口,将ttyS0设置为mini串口。
打开终端,输入:
ls /dev/tty* -al
我的不知道为什么我的一直看不了别人的类似serial*->tty*
的对应关系,但是可以看到ttyS0在ttyAMA0上方,显示如下:
不同于树莓派3,树莓派4B有一个firmware文件
sudo nano /boot/firmware/config.txt
打开文件后,找到enable_uart=0这行,用#注释掉。然后在下面加上:
#enable_uart=0
enable_uart=1
dtoverlay=disable-bt //看自己的文件下蓝牙硬件串口失能文件是哪个
许多教程中多是使用pi3-disable-bt
或pi3-miniuart-bt-overlay.dtb
,这是将蓝牙串口更换到mini串口,而将硬件串口换给GPIO14/15的配置文件,但是我的firmware下并没有这个文件,而是一个叫disable-bt
的文件。
在终端输入以下命令禁用掉和蓝牙有关的开机启动项:
sudo systemctl disable bluetooth
完成后,reboot
一下,蓝牙标志应该变灰或者直接没有,再重新查看映射关系:
此时我的还是显示不了对应serial几,但是AMA0已经和S0交换位置了。
至此,硬件映射更换完成。
树莓派GPIO的串口默认是用来做控制台使用的,连接PC后用串口助手可以看到开机信息,并能输入账户和密码,进入系统。如果想使用GPIO串口用于通信,控制台功能就会干扰数据传输。所以必须对串口功能进行设置。
sudo nano /boot/firmware/cmdline.txt
如果config.txt文件中没有对cmdline文件进行操作,那么直接根据下面的步骤编辑。
特别的,4B刷ubuntu后config文件中有语句cmdline=nobtcmd.txt
,此时真正的关于串口控制台的配置在后面这个名称的文件里面。
将console=ttyAMA0(或者serial0),115200
的语句删除。该文档将变成以下这样:
dwc_otg.lpm_enable=0 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait
sudo systemctl disable bluetooth
在终端输入以上命令禁用掉和蓝牙有关的开机启动。 重启树莓派后应该没有蓝牙标志了。
sudo raspi-config
进入树莓派系统配置界面,选择5 Interfacing Options
进入6 Serial
选择<No>
,关闭串口登录功能
选择<Yes>
,打开硬件串口调试功能
最终会提示:串口登陆功能失能,串口调试功能使能。
完成后,重启树莓派更新配置。
sudo apt-get install minicom
根据二中的接线图用usb转ttl模块连接树莓派的gpio与PC,打开串口助手,设置好串口参数。
minicom -D /dev/ttyAMA0 -b 115200
此时,如果出现提示:
minicom:cannot open /dev/ttyAMA0:permission denied
是权限不够导致的,在终端输入以下命令后重新按照3启动即可。
sudo chmod 777 /dev/ttyAMA0
首先Ctrl
+A
进入功能界面,随后选择
Z键
:进入设置菜单
X键
:退出minicom
树莓派和PC能互发字符消息。
在4.3
中完成了串口控制台功能的禁用,但是如果没有将4.1 cmdline
文件编辑好,那么即使已经可以用硬件串口传输数据了,也会从串口十六进制接收到乱码,字符串显示可以看到是树莓派的开机和登录信息,这些信息会出现在数据传输中,随时中断数据传输。如下图所示:
如果出现这种情况,需要根据四中所讲,将所有的cmdline.txt文件或nobtcmd.txt文件中consloe与AMA0相关的都删除。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。