当前位置: 首页 > news >正文

树莓派5实现串口通信教程

1,安装依赖
确保已经安装 pyserial:

pip3 install pyserial

如果无法用pip3安装,那就创建一个虚拟环境进行安装


如果你想安装最新版本的 pyserial 或其它非 Debian 打包的库,建议在用户目录下创建一个虚拟环境:

安装完整的 Python3(如果尚未安装)
sudo apt update
sudo apt install python3-full python3-venv
在你的项目目录创建并激活 venv

cd ~/myproject
python3 -m venv venv
source venv/bin/activate
然后就可以在虚拟环境中用 pip 安装

pip install pyserial
运行脚本时,确保虚拟环境已激活((venv) 出现在命令行提示符),这样 import serial 就能找到你通过 pip 安装的包。

若要退出虚拟环境,执行

deactivate

2,启用串口

在树莓派上执行 sudo raspi-config,进入 Interface Options → Serial Port,

“Would you like a login shell to be accessible over serial?” 选择 No

“Would you like the serial port hardware to be enabled?” 选择 Yes
重启后,串口 /dev/serial0 就可用了。

特别注意,如果还是不能用,多半是映射错误:

串口未启用或映射错误
在 Raspberry Pi 5 上,/dev/serial0 默认是否真正映射到了 UART0,要确认。

请先确认 /boot/firmware/config.txt 中是否有以下配置(最重要的):

enable_uart=1
dtoverlay=uart0

然后执行:

ls -l /dev/serial0

你应看到:

serial0 -> ttyAMA0

特别注意:树莓派5的uart0引脚是GPIO14(TXD),GPIO15(RXD)

3,做好上面配置后,借鉴以下代码即可进行树莓派5的串口通信

#!/usr/bin/env python3
# -*- coding: utf-8 -*-import serial
import timedef main():# 串口设备名称,树莓派 5 上 /dev/serial0 通常会映射到 UART0port = '/dev/serial0'# 波特率(根据需要修改,常用 9600、115200 等)baudrate = 115200# 打开串口try:ser = serial.Serial(port=port,baudrate=baudrate,bytesize=serial.EIGHTBITS,parity=serial.PARITY_NONE,stopbits=serial.STOPBITS_ONE,timeout=1)  # 读取超时 1 秒except serial.SerialException as e:print(f"无法打开串口 {port}: {e}")returnprint(f"串口 {port} 已打开,波特率 {baudrate}")try:while True:# 要发送的字符串msg = "hello word?"# 注意要发送 bytes,末尾可加 \r\n 根据接收端需求ser.write(msg.encode('utf-8') + b'\r\n')print(f"已发送: {msg}")# 读取接收缓存中的所有数据incoming = ser.readline().decode('utf-8', errors='ignore').strip()if incoming:print(f"接收到: {incoming}")# 每隔 1 秒发送一次time.sleep(1)except KeyboardInterrupt:print("\n检测到 Ctrl+C,中断程序。")finally:ser.close()print("串口已关闭。")if __name__ == '__main__':main()

相关文章:

  • Karate整合PlayWright方式之playWright Driver
  • mysql 关联表查询,索引失效
  • AI常用工具指南
  • 如何在网页里填写 PDF下拉框
  • std::sort 默认排序方式
  • 多模态大语言模型arxiv论文略读(119)
  • 燃气从业人员资格证书:职业发展的 “助推器”
  • Java八股文——MySQL「存储引擎篇」
  • SX1268低功耗sub-1g芯片支持lora和GFSK调制
  • 25年春招:米哈游运维开发一面总结
  • Vue3学习(6)-Vue3的生命周期和自定义hook
  • 力扣hot100-lc34在排序数组中查找元素的第一个和最后一个位置/lc153寻找旋转排序数组中的最小值/lc33搜索旋转排序数组
  • 3D打印入门
  • 使用 PyTorch 和 SwanLab 实时可视化模型训练
  • 京津冀城市群13城市空间权重0-1矩阵
  • 亚矩阵云手机针对AdMob广告平台怎么进行多账号的广告风控
  • imgui绘制图像(c++)
  • 《单光子成像》第二章 预习2025.6.12
  • 如何在SOLIDWORKS工程图中添加材料明细表?
  • linux共享内存解析
  • 河南高端网站建设/什么推广软件效果好
  • wordpress著名插件/搜狗搜索排名优化
  • 专业做网站哪家好/数字营销成功案例
  • 网站开发费算无形资产吗/百度推广托管公司
  • 必要网站用什么做的/深圳网络优化公司
  • 广告创意设计案例/贵阳seo网站推广