树莓派引脚图如下:
默认情况下,树莓派的串口有两个一个分配给蓝牙,另一个是miini串口,不过这个串口几乎不能正常使用(树莓派1和树莓派2中没有内置的蓝牙模块),我这个是树莓派2B所以没有蓝牙,我们可以直接使用这个串口
确保串口功能激活
查看 /boot/config.txt
文件,查看是否有enable_uart=1
,如果没有就自己手动添加。放下面这个地方
禁用串口控制台功能
输入下面两个命令来禁用控制台
sudo systemctl stop serial-getty@ttyAMA0.service
sudo systemctl disable serial-getty@ttyAMA0.service
输入 sudo vim /boot/cmdline.txt
删除里面的 console=serial1,115200 和 kgdboc=serial1,115200
然后自己重启设备
安装pip
安装命令sudo apt install python3-pip
然后我们用pip来安装serial
模块
Python安装serial模块pip3 install pyserial
简单测试
我们进入Python的ide环境,然后输入下面的语句
>>> import serial
>>> ser = serial.Serial(\\'/dev/ttyAMA0\\',115200)
判断串口是否打开
>>> ser.isOpen()
True
自己连上线,然后记得要共地,要不然输出会乱码。
引脚对照表如下
下面我们测试写数据
>>> ser.write(b\\'Raspberry pi\\')
12
如果没有问题,那串口调试助手会出现下面的显示
下面我们来尝试接收数据,这里我们通过一个脚本来实现
# -*- coding: utf-8 -*
import serial
import time
ser = serial.Serial(\\'/dev/ttyAMA0\\', 115200)
if ser.isOpen == False:
ser.open() # 打开串口
ser.write(b"Raspberry pi is ready")
try:
while True:
size = ser.inWaiting() # 获得缓冲区字符
if size != 0:
response = ser.read(size) # 读取内容并显示
print response
ser.flushInput() # 清空接收缓存区
time.sleep(0.1) # 软件延时
except KeyboardInterrupt:
ser.close()
自己用Python去运行这个文件即可
最终效果如下: