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

树莓派4B串口通讯

chat 牛!备份一个,以下内容均来自chat老师
以下是一个完整的树莓派串口通信示例程序,包含发送和接收功能,并处理了树莓派特有的串口配置问题:

import serial
import timedef uart_communication():try:# 使用树莓派推荐的串口别名port_name = "/dev/serial0"# 配置串口参数uart = serial.Serial(port=port_name,baudrate=9600,bytesize=serial.EIGHTBITS,parity=serial.PARITY_NONE,stopbits=serial.STOPBITS_ONE,timeout=1.0,           # 读超时1秒write_timeout=1.0,     # 写超时1秒xonxoff=False,         # 禁用软件流控rtscts=False           # 禁用硬件流控)# 确保串口已打开if not uart.is_open:uart.open()print(f"串口 {port_name} 已打开, 波特率: {uart.baudrate}")# 测试消息test_message = "Hello from Raspberry Pi!\n"while True:try:# 发送数据print(f"发送: {test_message.strip()}")uart.write(test_message.encode('utf-8'))# 接收数据start_time = time.time()response = uart.readline()if response:print(f"收到: {response.decode('utf-8').strip()}")else:print("未收到响应数据 (超时)")# 等待2秒进行下一次通信time.sleep(2)except KeyboardInterrupt:print("\n程序被用户中断")breakexcept Exception as e:print(f"通信错误: {str(e)}")breakexcept serial.SerialException as e:print(f"串口初始化失败: {str(e)}")print("请检查:")print("1. 串口物理连接 (TX/RX)")print("2. 用户权限 (尝试: sudo usermod -a -G dialout $USER 然后注销重登)")print("3. 树莓派配置 (sudo raspi-config -> Interface Options -> Serial)")finally:if 'uart' in locals() and uart.is_open:uart.close()print("串口已关闭")if __name__ == "__main__":uart_communication()

使用前必备步骤:

1.启用树莓派串口

sudo raspi-config

选择:

  • Interface Options → Serial Port

  • 禁用登录shell(选择"No")

  • 启用串口硬件(选择"Yes")

2.添加用户到dialout组

sudo usermod -a -G dialout $USER

   注销后重新登陆使权限生效

3.检查串口映射

ls -l /dev/serial*

正常应显示:

/dev/serial0 -> ttyAMA0
/dev/serial1 -> ttyS0

硬件连接指南:

树莓派         其他设备
=======================
GPIO14 (TXD) ---> RXD
GPIO15 (RXD) ---> TXD
GND         ---> GND

测试方法:

  1. 自发自收测试(短接TX-RX):

    • 用杜邦线连接树莓派的GPIO14(TXD)和GPIO15(RXD)

    • 直接运行程序,将看到自发自收的消息

  2. 与另一设备通信:

    • 连接USB转TTL模块的RX到树莓派TX

    • 连接USB转TTL模块的TX到树莓派RX

    • 两边共接地线(GND)

    • 使用串口调试助手(如Putty、minicom)在电脑端接收和发送数据

常见问题解决:

1.权限问题

sudo chmod a+rw /dev/serial0

2.禁用蓝牙(如使用ttyAMA0)

编辑/boot/config.txt添加:

dtoverlay=disable-bt

3.检查串口活动

sudo dmesg | grep tty

4.测试串口回环

stty -F /dev/serial0 9600
echo "test" > /dev/serial0
cat < /dev/serial0

相关文章:

  • 【JAVA后端入门基础001】Tomcat 是什么?通俗易懂讲清楚!
  • ISBN书号查询接口如何用PHP实现调用?
  • 使用new操作符动态分配
  • 【Spring】RAG 知识库基础
  • Python库CloudScraper详细使用(绕过 Cloudflare 的反机器人页面的 Python 模块)
  • CSS之动画(奔跑的熊、两面反转盒子、3D导航栏、旋转木马)
  • Java Script函数
  • 知识图谱系列(5):表示学习
  • 前端八股之Vue
  • 29 C 语言内存管理与多文件编程详解:栈区、全局静态区、static 与 extern 深度解析
  • 工作流引擎-18-开源审批流项目之 plumdo-work 工作流,表单,报表结合的多模块系统
  • 并查集(上)
  • Android高级开发第四篇 - JNI性能优化技巧和高级调试方法
  • 深入了解linux系统—— 进程间通信之管道
  • 云部署实战:基于AWS EC2/Aliyun ECS与GitHub Actions的CI/CD全流程指南
  • #STM32 HAL库实现的STM32F407时钟配置程序以及和STM32F103配置对比
  • 3.需求分析与测试用例设计方法
  • 探秘 Minimax:AI 领域的创新先锋
  • Docker镜像之windows系统
  • 二、Sqoop 详细安装部署教程
  • 网站代理工具/今日军事新闻最新消息
  • 网站备案 域名过期/seo博客网站
  • 网站建设运营部部长岗位职责/2345网址导航下载
  • 广西桂林网站建设/网络推广有哪些常见的推广方法
  • 自己怎么做短视频网站/推广新产品最好的方法
  • 制作网站开发/营销型网站建设设计