最近总有人遇到树莓派串口通信的问题, 这里我简单说明一下。
Raspberry Pi和串口
默认情况下,Raspberry Pi的串行端口配置为用于控制台输入/输出。虽然如果您想使用串行端口登录,这虽然在调试时候很有用,但这意味着您无法在程序中使用串行端口。为了能够使用串行端口连接并与其他设备(例如Arduino)通信,需要禁用串行端口控制台登录。
不用说,您需要一些其他方式来登录Raspberry Pi,我们建议使用SSH链接通过网络上执行此操作。
禁用串行端口登录
要启用自己使用的串行端口,需要禁用端口上的登录。有两个文件需要编辑
第一个和主要的是 /etc/inittab
此文件具有启用登录提示的命令,需要禁用此命令。编辑文件并移至文件末尾。你会看到类似的一行
T0:23:respawn:/ sbin / getty -L ttyAMA0 115200 vt100
通过在开头添加#字符来禁用它。保存文件。
#T0:23:respawn:/ sbin / getty -L ttyAMA0 115200 vt100
禁用启动信息
当Raspberry Pi启动时,所有启动信息都将发送到串行端口。禁用此启动信息是可选的,您可能希望保持启用状态,因为有时查看启动时发生的情况很有用。如果您在启动时连接了设备(即Arduino),它将通过串行端口接收此信息,因此由您决定是否存在此问题。
您可以通过编辑文件/boot /cmdline.txt 来禁用它。
该文件的内容如下所示
dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait
删除对ttyAMA0的所有引用(这是串行端口的名称)。该文件现在看起来像这样
dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait
重启
为了启用您所做的更改,您需要重新启动Raspberry Pi
sudo shutdown -r now 或者sudo init 6
测试串口
测试串口的一个好方法是使用minicom程序。如果您没有安装此运行
sudo apt-get install minicom
使用适当的串行端口适配器和接线将PC连接到Raspberry Pi串口,然后在PC端打开Putty或类似的串行终端程序。使用9600波特的串行端口设置连接。
现在使用Raspberry Pi运行minicom
minicom -b 9600 -o -D /dev/ttyAMA0
输入minicom终端屏幕的内容应出现在串行PC终端上,反之亦然。
下面想接串口GPS就接上去使用好啦~
如果想用python去读取GPS信号,通过:
pip install pyserial
然后编写文档:
import serial
import time
ser = serial.Serial('/dev/ttyAMA0', 115200, timeout=2)
try:
while True:
if ser.is_open:
data = ser.read(100)
print(data)
except Exception as e:
print(e)
当看到数据了再分析一下就好,时间不多了,我就简单说到这里。
白了个白~