NRF24L01模块传输MPU6050数据,接收端数据一直为0问题记录

news2024/9/24 3:22:38

问题描述:

一、发射端

1、正确配置NRF模块,以及测试过能够正常通信,在发射端的发射线程中进行了如下操作

在这里插入图片描述

2、这里是获取了陀螺仪的x轴数据,将其而分为两个8位的数据存入发送缓冲区中。因为一个陀螺仪x轴数据是16位的,所以对其进行了拆分,这里只获取gyro的x轴数据进行发送,目的是进行测试。

在这里插入图片描述

3、这个是发送函数,只要把发送缓冲区的地址作为参数传入就可以发送了。

在这里插入图片描述

二、接收端

1、接收端的NRF24L01模块也正确配置后,在接收线程中进行如下操作

在这里插入图片描述

2、读取NRF传输过来的数据,存到接收BUF中,然后打印出来,查看

在这里插入图片描述

三、进行测试(发现问题)

1、此时发射端跟接收端都处于上电状态接收端接了串口到电脑进行数据打印,发射端接了下载器进行代码修改下载

在这里插入图片描述

2、此时接收端打印的数据是正确的,我扰动飞机(也就是发送端),它的陀螺仪数据发生变化,而当我不动飞机,这两个数据最终会变为0,这是陀螺仪的gyro数据,所以目前是正常的。

在这里插入图片描述

3、接下来,我把飞机断电再重新上电,这时我扰动飞机,接收端接收到的数据始终为0,出现了问题,按理说我代码已经下进去了,我断电再重新上电应该依然能够接收到数据

在这里插入图片描述

问题解决:

1、将飞机(发送端)连接串口和下载器

在这里插入图片描述

2、点击下载程序,然后进行串口查看,发现mpu6050是能够成功初始化的

在这里插入图片描述

3、将飞机(发送端)进行断电再上电,发现串口打印输出mpu6050初始化失败,到这里已经明确为什么对发送端重新上电会导致接收端数据输出一直为0了,原来发送端重新上电后mpu6050初始化失败了,罢工了。

在这里插入图片描述

4、为什么会初始化失败呢,来看一下我的mpu6050在哪初始化,我是在一个线程里对mpu6050进行初始化的,这其实是错误的写法,因为线程一旦开始调度,就有可能被更高优先级的线程打断,我的mpu6050初始化很有可能就是初始化到一半就被其他线程打断了,导致初始化失败。

在这里插入图片描述

5、把硬件初始化统一放在一个函数中,不要在线程里面对硬件初始化,然后在上电后,在各种线程开始调度前,首先对硬件进行初始化,还有最好在上电之后,各种硬件开始初始化之前,加上一个延时函数,给我们的硬件一点反映时间

在这里插入图片描述
在这里插入图片描述

6、这时再对飞机(发送端)进行断电再重新上电,可以看到mpu6050初始化成功了。

在这里插入图片描述

7、对mpu6050的初始化位置进行修改后,再进行一次发送端和接收端的收发测试,发现能够成功通信了,数据正确了,且对飞机(发送端)断电再上电后,接收端收到的数据也正确了。

在这里插入图片描述

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

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

相关文章

Android 水印效果

Android 水印效果 本文主要介绍下android 中水印的实现效果. 实现的方式有多种,就不一一赘述了, 本文就是通过自定义drawable来实现水印. 不多说,直接上代码吧: import android.content.Context; import android.content.res.Resources; import android.graphics.Canvas; i…

QQ云端机器人登录系统php源码

这款源码主要是针对群机器人爱好者的,这是一个通过对接挂机宝里面机器人框架的一个网页站点,用户通过网页登录 QQ 账号至挂机宝里面框架(可扫码登录、账密登录、跳转 QQ 快捷登录),无需通过机器人即可实现登录&#xf…

C/S客户端安装卸载更新

今天这个我一直没想写,因为现在好像c/s客户端的安装比较少 ,应该很多公司都没有了,但是erp,一些自己公司内部使用的可能比较多,但是现在都比较倾向于BS结构的了,浅浅的了解下C/S的安装卸载更新吧~ 1、安装 …

【算法Hot100系列】合并区间

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老导航 檀越剑指大厂系列:全面总结 jav…

matlab GUI实现PID控制器参数配置

1、内容简介 略 39-可以交流、咨询、答疑 2、内容说明 略 3、 基于GUI的PID研究 本例子中设计一个PID控制器来研究不同参数对输出结果的影响,PID控制器由比例单元 P、积分单元 I 和微分单元 D 组成。PID 控制器是一个在工业控制应用中常见的反馈回路部件&…

消息中间件之八股面试回答篇:一、问题概览+MQ的应用场景+RabbitMQ如何保证消息不丢失(生产者确认机制、持久化、消费者确认机制)+回答模板

问题概览 目前主流的消息队列技术(MQ技术)分为RabbitMQ和Kafka,其中深蓝色为只要是MQ,一般都会问到的问题。浅蓝色是针对RabbitMQ的特性的问题。蓝紫色为针对Kafka的特性的问题。 MQ的应用场景 MQ主要提供的功能为:异…

冬天喝羊奶身体会发生什么变化?

冬天喝羊奶身体会发生什么变化? 冬天喝羊奶的身体变化,大家都应该知道吧?那么冬天喝羊奶到底会发生什么样的变化呢?是好是坏呢?今天小编羊大师就带大家来一起探讨一下。 冬天天气寒冷,人们往往会选择喝一…

CTU Open 2004 电力

题目描述 求一个无向图图删除一个点之后,连通块最多有多少。 输入输出格式 输入格式: 多组数据。第一行两个整数 P,C 表示点数和边数。 接下来 C 行每行两个整数 p1,p2,表示 p1 与 p2 有边连接,保证无重边。读入以 0 0 结束。 …

大数据数据可视化工具ECharts,从入门到精通!

介绍:ECharts是一个强大的数据可视化图表库,它基于JavaScript开发,并具有丰富的特性和灵活性。 多平台支持:ECharts可以在PC和移动设备上流畅运行,它对移动端进行了优化,确保在不同设备上都有良好的展示效果…

【边缘计算】TA的基本概念,以及TA的挑战和机遇

大家好,我是全栈小5,欢迎阅读文章! 此篇是【话题达人】序列文章,这一次的话题是《边缘计算的挑战和机遇》 文章将以博主的角度进行讲述,理解和水平有限,不足之处,望指正。 目录 背景基本概念挑战…

【UE PS】方向标尺制作系列 01-制作图片素材

目录 步骤 一、制作标尺 1.1、制作标尺线部分 1.2、制作文字部分 1.3、制作角度部分 二、制作标尺背景 三、制作Mask 四、制作指针Icon 步骤 一、制作标尺 1.1、制作标尺线部分 首先需要制作如下图片素材 1. 打开PS,新建一个文档,设置宽度…

Qt编写linux系统onvif工具(支持预览/云台/预置位/录像等)

一、功能特点 广播搜索设备,支持IPC和NVR,依次返回。可选择不同的网卡IP进行对应网段设备的搜索。依次获取Onvif地址、Media地址、Profile文件、Rtsp地址。可对指定的Profile获取视频流Rtsp地址,比如主码流地址、子码流地址。可对每个设备设…

架构师之路(十五)计算机网络(网络层协议)

前置知识(了解):计算机基础。 作为架构师,我们所设计的系统很少为单机系统,因此有必要了解计算机和计算机之间是怎么联系的。局域网的集群和混合云的网络有啥区别。系统交互的时候网络会存在什么瓶颈。 ARP协议 地址解…

【Flink-1.17-教程】-【五】Flink 中的时间和窗口(1)窗口(Window)

【Flink-1.17-教程】-【五】Flink 中的时间和窗口(1)窗口(Window) 1)窗口的概念2)窗口的分类2.1.按照驱动类型分2.2.按照窗口分配数据的规则分类2.2.1.滚动窗口(Tumbling Window)2.2…

代码随想录算法训练营第37天 | 738.单调递增的数字 968.监控二叉树 总结

目录 738.单调递增的数字 💡解题思路 💻实现代码 968.监控二叉树 💡解题思路 确定遍历顺序 如何隔两个节点放一个摄像头 💻实现代码 总结 738.单调递增的数字 题目链接:738.单调递增的数字 给定一个非负…

《深入解析Java虚拟机:从JVM体系结构到垃圾回收算法》

文章目录 JVM体系结构JVM的组成 类加载器Class Loader类加载器的作用双亲委派机制JVM自带三个类加载器Bootstrap ClassLoader-根加载器ExtClassLoader-扩展加载器AppClassLoader-应用类加载器 Java历史-沙箱安全机制沙箱概念沙箱的作用本地代码和远程代码沙箱安全机制模型JDK1 …

Sqlite真空命令VACUUM

之前在项目中使用了sqlite数据库&#xff0c;当日志变大时&#xff0c;执行CRUD操作就会变慢 后来尝试删除7天前的记录进行优化 delete from XX_CollectData where CreateTime<2024-01-24 发现sqlite文件的大小就没有变化&#xff0c;delete命令只是逻辑删除&#xff0c;…

web项目开发的基本过程

一、背景 web项目开发基本过程一般由需求分析&#xff0c;概要设计&#xff0c;详细设计&#xff0c;数据库设计&#xff0c;编码&#xff0c;测试&#xff0c;发布上线这几个过程。这就是经典的瀑布模型。但是随着系统的复杂度越来越高&#xff0c;团队人员技术栈分工越来越小…

[algorithm] 自动驾驶 规划 非线性优化学习系列之1 :车辆横向运动动力学详细解释

写在前面 最近时空联合规划很火&#xff0c;想学习。由于在学校主打学习新能源电力电子方向&#xff0c;转行后也想好好零散的知识体系。计划从车辆运动动力学习&#xff0c;模型预测控制&#xff08;经典控制目前看主打应用&#xff0c;不会再去深入&#xff09;&#xff0c;…

下载音频(MP3)解决跨域,不跳转界面,直接下载

需求 项目需求&#xff0c;将通话记录下载下来&#xff0c;要求不跳转界面直接下载。 效果 代码 // 下载录音downloadRecording(data) {const url data.urlconst fileName 录音.mp3this.getOSSBlobResource(url).then(res > {this.saveFile(res, fileName)})},getOSSBlo…