树莓派|串口通信协议

1、串口通信原理

        串口通讯(Serial Communication),是指外设和计算机间,通过数据信号线、地线等,按位进行传输数据的一种通讯方式。串口是一种接口标准,它规定了接口的电气标准,没有规定接口插件电缆以及使用的协议。串口按电气标准及协议来划分,包括RS-232-C、RS-422、RS485等。

        一个字符一个字符地传输,每个字符一位一位地传输,并且传输一个字符时,总是以“起始位”开始,以“停止位”结束,字符之间没有固定的时间间隔要求。每一个字符的前面都有一位起始位(低电平),字符本身由7位数据位组成,接着字符后面是一位校验位(检验位可以是奇校验、偶校验或无校验位),最后是一位或一位半或二位停止位,停止位后面是不定长的空闲位,停止位和空闲位都规定为高电平。实际传输时每一位的信号宽度与波特率有关,波特率越高,宽度越小,在进行传输之前,双方一定要使用同一个波特率设置。

        

 2、树莓派串口通信接口 

        树莓派的串口为UART,即通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),或叫UART(串口)控制器。使用UART控制器进行数据传输的就叫做串口通信,是一种通用全双工串行、异步通信方式。常用与嵌入式系统中的主机与辅助设备之间通信。异步表示发送器与接收器的时钟不同步。UART通信有3条线:发送线TX、接收线RX、电平参考地线GND。

接线的方法就是 :

  • VDD接树莓派的5V电源

  • GND接树莓派的ground

  • TXD接树莓派的RXD

  • RXD接树莓派的TXD

3、进行串口通信的步骤

        硬件连接:使用一根合适的串口线将串口设备连接到树莓派的GPIO引脚,具体来说是将串口的TX(发送)引脚连接到树莓派的RXD引脚,将串口的RX(接收)引脚连接到树莓派的TXD引脚。请确保正确连接。

        禁用串口终端:在Raspbian Stretch中,默认情况下,树莓派的串口被用作终端,而不是作为通用串口。因此,需要通过修改启动配置文件来禁用串口终端。

  打开终端并输入以下命令编辑配置文件:

sudo nano /boot/cmdline.txt

在编辑器中找到类似下面这段文本:

console=serial0,115200

删掉该行或者将其注释掉(在行首添加#),然后保存并退出编辑器。

启用串口硬件:打开终端并输入以下命令编辑另一个配置文件:

sudo nano /boot/config.txt

在文件的最后添加以下两行:

enable_uart=1
dtoverlay=pi3-miniuart-bt

配置串口参数:在终端中安装pyserial模块,该模块可以帮助您进行串口通信。输入以下命令安装pyserial:

pip install pyserial

使用Python代码进行串口通信:创建一个Python脚本,使用pyserial模块进行串口通信。以下是一个示例代码片段:

import serial# 配置串口参数
port = '/dev/serial0'   # 串口设备路径
baudrate = 9600         # 波特率# 打开串口连接
ser = serial.Serial(port, baudrate)# 发送数据
data = 'Hello, World!\n'
ser.write(data.encode())# 接收数据
response = ser.readline()
print(response.decode())# 关闭串口连接
ser.close()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/837838.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Flutter 中的 SwitchListTile 小部件:全面指南

Flutter 中的 SwitchListTile 小部件:全面指南 在Flutter的Material组件库中,SwitchListTile是一个包含开关(Switch)的列表项,非常适合用来创建带有标题、副标题以及开关的列表项,常用于设置界面&#xff…

图的遍历最小生成树问题

遍历和最小生成树是图论中常见的问题。下面我将分别介绍如何在 Java 中实现图的遍历和最小生成树算法,包括深度优先搜索(DFS)、广度优先搜索(BFS)以及最小生成树算法之一的Prim算法。 1. 图的遍历 a. 深度优先搜索&a…

“ModuleNotFoundError: No module named ‘selenium‘”报错如何解决

接上节:测试平台开发之测试框架改造并发执行及结果隔离(1) 上节博客的末尾提到:在命令窗口执行python main.py 可是执行的时候遇到了如下报错: ERRORS _____________________________________________________________ ERROR collecting te…

如何安全高效地进行4S店文件分发,保护核心资产?

4S店与总部之间的文件分发是确保双方沟通顺畅、信息共享和决策支持的重要环节。4S店文件分发涉及到以下文件类型: 销售报告:4S店需要定期向总部提交销售报告,包括销售数量、销售额、市场份额等关键指标。 库存管理文件:包括车辆库…

使用docker创建hadoop集群:Couldn‘t upload the file

运行的环境; Windows10 Docker Desktopdocker-hadoop 出现的问题如下: 解决方法 https://github.com/big-data-europe/docker-hadoop/issues/98

Unity Pixels Per Unit 与 Sprite Renderer Scale的逻辑关系,为什么平铺的Sprite Renderer会变形?

SpriteRenderer之前用的比较基础,没遇到过什么问题,这几天使用SpriteRenderer的平铺时发现平铺变形了,研究了一下,原来有这么多在逻辑在里面。 当我们导入图片选择Texture Type为Sprite时表示我们的图片用途是UI或者SpriteRendere…

【go项目01_学习记录12】

代码组织 1 代码结构2 重构与测试2.1 安装测试功能2.2 testify 的常用断言函数 3 表组测试 1 代码结构 所有的代码写在一个main.go文件里面,GO编译器也是可以正常执行的。但是当代码量很庞大时,很难进行维护。 Go Web 程序的代码组织 单文件——反模式…

C语言笔记15

指针2 1.数组名的理解 int arr[ 10 ] { 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 }; int *p &arr[ 0 ];17391692786 arr是数组名&#xff0c;数组名是首元素地址&#xff0c;&arr[0]就是取出首元素的地址放在指针变量p中。 #include <stdio.h> int main()…

基于GWO灰狼优化的CNN-GRU-Attention的时间序列回归预测matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1卷积神经网络&#xff08;CNN&#xff09;在时间序列中的应用 4.2 GRU网络 4.3 注意力机制&#xff08;Attention&#xff09; 4.4 GWO优化 5.算法完整程序工程 1.算法运行效果图预览…

C++初探_友元类

1.友元类 代码&#xff1a; #include <iostream> class Tv { public:friend class Remote;... };class Remote {... }; 2.友元成员函数 即&#xff1a;不需要整个类成为友元&#xff0c;只需要选择让特定的类成员成为另一个类的友元&#xff1a; &#xff08;1&…

logback 日志脱敏

工具类 CustomLogbackPatternLayoutEncoder.java import ch.qos.logback.classic.encoder.PatternLayoutEncoder;public class CustomLogbackPatternLayoutEncoder extends PatternLayoutEncoder {/*** 正则替换规则*/private LogbackReplaces replaces;/*** 使用自定义 MyLog…

图的拓扑序列(DFS1)

way&#xff1a;在图里面能延伸的越远&#xff0c;deep越大&#xff0c;说明它能从自己延伸很长到别的节点&#xff08;别的节点一定有入度&#xff09;&#xff0c;它越可能没有入度。 #include<iostream> #include<vector> #include<map> #include<set…

ChatGlm的部署和训练

一、chatGlm的环境部署 1.安装anocoda 下载安装anaconda。具体教程详见官网教程。 2.安装CUDA 1&#xff09;首先在终端查看你的Nividian版本&#xff0c;命令如下&#xff1a; 2)如果你没有下载你要去下载cuda下载网站&#xff0c;这里是12.3是因为我cuda version版本12…

【微记录】linux如何使用ebpf观测你的某个命令调用了内核的ioctl?(bpftrace sys_enter_ioctl)

场景 对于工程实践中需要查看某些ioctl是否被调用&#xff0c;尤其是一个新的模块初次调试&#xff0c;在不添加调试命令debug的情况下如何观测&#xff1f; 另外就是对于外部提供的二进制程序&#xff0c;如何观测该程序是否调用ioctl以及何时调用&#xff1f; 这些都通过ebp…

【保姆级】生成式网络模型基础知识(图像合成/语音合成/GPT)

生成式模型基础知识 初步接触生成任务 生成任务&#xff0c;顾名思义就是要去生成一个东西&#xff0c;比如生成图片/音频/文字等等。 大家接触最多比如chatGPT、stable diffusion、还有一些语音合成相关的东西。 那么问题来了&#xff0c;具体生成步骤是什么样的&#xff…

JVM 常见知识点总结

文章目录 一、类加载篇1.1 类加载过程1.2 类加载器分类1.3 双亲委派机制 二、JVM内存结构篇2.1 JVM内存结构2.2 对象的创建过程2.3 强软弱虚引用 三、垃圾回收篇3.1 如何判断对象是否死亡3.2 哪些对象可以作为gcroots3.3 垃圾回收算法3.4 Minor GC和Full GC的区别3.5 HotSpot为…

【计算机毕业设计】基于SSM++jsp的高校专业信息管理系统【源码+lw+部署文档+讲解】

目录 第1章 绪论 1.1 课题背景 1.2 课题意义 1.3 研究内容 第2章 开发环境与技术 2.1 MYSQL数据库 2.2 JSP技术 2.3 SSM框架 第3章 系统分析 3.1 可行性分析 3.1.1 技术可行性 3.1.2 经济可行性 3.1.3 操作可行性 3.2 系统流程 3.2.1 操作流程 3.2.2 登录流程 3.2.3 删除信息流…

ChatGPT-4o发布了,所有人都可以免费用

前言 美国时间 5 月 13 日&#xff0c;在 Sam Altman 缺席的情况下&#xff08;为什么缺席&#xff0c;猜测是可能后面还有更重磅的消息&#xff0c;这次的产品只是一个中间过渡产品&#xff09;&#xff0c;OpenAI CTO Mira Murati 介绍了新的 ChatGPT 产品 ChatGPT-4o。这个…

node安装以及node的包管理工具

node安装以及node的包管理工具 node安装nvm管理工具 node安装 1、下载node链接: 点击这里 2、选择需要下载的版本以及对应的系统版本 nvm管理工具 1、下载nvm链接: 点击这里 2、双击运行.exe文件 全部默认安装即可 3、nvm常用命令 nvm list avaliable 显示所有可以下载的n…

企业管理咨询公司不会选?一文带你避开“坑人”陷阱

近年来&#xff0c;企业管理咨询公司如雨后春笋般涌现&#xff0c;数量之多令人眼花缭乱。所以&#xff0c;面对这么多的企业管理咨询公司&#xff0c;企业该选谁&#xff1f;又该如何选择&#xff1f;本文将从以下几个方面为大家解析。 首先&#xff0c;我们要明确自己的需求和…