树莓派串口使用


树莓派引脚图如下:

默认情况下,树莓派的串口有两个一个分配给蓝牙,另一个是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去运行这个文件即可

最终效果如下:


文章作者: 小游
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 小游 !
  目录