欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

树莓派的串口通信

程序员文章站 2022-12-23 07:58:39
工具有: 树莓派zero v1.3 CH340 USB转串口工具 电脑端的串口调试助手 硬件接线如图: 配置: 树莓派的串口默认为串口终端调试使用,如要正常使用串口则需要修改树莓派设置。关闭串口终端调试功能后则不能再通过串口登陆访问树莓派,需从新开启后才能通过串口控制树莓派。首先释放串口,执行如下命 ......

工具有:

  树莓派zero v1.3

  ch340 usb转串口工具

  电脑端的串口调试助手

硬件接线如图:

  树莓派的串口通信

配置:

树莓派的串口默认为串口终端调试使用,如要正常使用串口则需要修改树莓派设置。关闭串口终端调试功能后则不能再通过串口登陆访问树莓派,需从新开启后才能通过串口控制树莓派。首先释放串口,执行如下命令进入树莓派配置程序,关闭serial

sudo raspi-config

打开/boot/config.txt文件。

sudo nano /boot/config.txt

找到如下配置串口,如果没有,可添加在文件最后面。

enable_uart=1

enable_uart=1

默认波特率为115200,如需设置波特率为9600要修改文件/boot/cmdline.txt,输入以下指令:

sudo nano /boot/cmdline.txt

【删除红色部分】

dwc_otg.lpm_enable=0 console=ttyama0,115200 kgdboc=ttyama0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait

使用pyserial串口扩展库:

pyserial安装指令

sudo apt-get install python-serial

串口回显程序
非常简单的一个串口程序,树莓派通过串口返回接收的内容。

# -*- coding: utf-8 -*
import serial
import time
# 打开串口
ser = serial.serial("/dev/ttyama0", 9600)
def main():
    while true:
        # 获得接收缓冲区字符
        count = ser.inwaiting()
        if count != 0:
            # 读取内容并回显
            recv = ser.read(count)
            ser.write(recv)
        # 清空接收缓冲区
        ser.flushinput()
        # 必要的软件延时
        time.sleep(0.1)
    
if __name__ == '__main__':
    try:
        main()
    except keyboardinterrupt:
        if ser != none:
            ser.close()