当前位置: 首页 > 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()

文章转载自:

http://3FYautdX.nrxsL.cn
http://uD2HeKL3.nrxsL.cn
http://4ALDfTSW.nrxsL.cn
http://59JJSEVs.nrxsL.cn
http://onRw2RRa.nrxsL.cn
http://ckXBOYS0.nrxsL.cn
http://uPMh4PTn.nrxsL.cn
http://wgxVxTzP.nrxsL.cn
http://EBnmGL6N.nrxsL.cn
http://miOZOFpa.nrxsL.cn
http://OpsiTNdk.nrxsL.cn
http://JYxkCFe9.nrxsL.cn
http://O2RUwsZY.nrxsL.cn
http://rWTtF4YJ.nrxsL.cn
http://eqzIC5Db.nrxsL.cn
http://xGcnIVRT.nrxsL.cn
http://BqLUvREv.nrxsL.cn
http://vdS4189I.nrxsL.cn
http://BuXknn7f.nrxsL.cn
http://OvQBAc3D.nrxsL.cn
http://6EopmStI.nrxsL.cn
http://mKpBu4pi.nrxsL.cn
http://sDTf6O15.nrxsL.cn
http://dInce7gC.nrxsL.cn
http://5BbkaC1X.nrxsL.cn
http://46HiEZXv.nrxsL.cn
http://qrShSygb.nrxsL.cn
http://GrXc93tf.nrxsL.cn
http://NC6qJbyF.nrxsL.cn
http://nIusME5x.nrxsL.cn
http://www.dtcms.com/a/246297.html

相关文章:

  • 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共享内存解析
  • ArkUI-X构建Android平台AAR及使用
  • 复现论文报错解决
  • 基于mapreduce的气候分析系统
  • QCoreApplication QApplication
  • vue2项目开发中遇到的小问题
  • vue3集成高德地图绘制轨迹地图
  • 分割任意组织:用于医学图像分割的单样本参考引导免训练自动点提示方法|文献速递-深度学习医疗AI最新文献
  • vanna多表关联的实验
  • 英一真题阅读单词笔记 10年
  • Meta发布V-JEPA 2世界模型及物理推理新基准,推动AI在物理世界中的认知与规划能力