bug简记:基于stm32连接mpu6050陀螺仪模块并用HC05蓝牙模块与手机通信

期望实现功能:单片机通过蓝牙模块将陀螺仪数据在手机蓝牙串口助手显示出来,并且实现几个附加功能:

        1、震动开关:通过震动控制是否输出,震动一次显示off停止输出,再震动一次显示on继续输出。

        2、震动停止:当整个装置在震动状态下,停止输出,平稳后继续输出

        3、通过按键实现陀螺仪初始化数据、

一、硬件准备

stm32f103c8t6单片机最小系统板、HC-05蓝牙模块、mpu6050陀螺仪模块、st-linkv2下载调试器

、手机

二、过程bug

声明:没有详细讲解如何实现,只是分享我在过程中遇到的问题以及我采取的处理办法以及有的没找办法,希望有大佬看到可以帮帮解答一下。

bug one:接线问题

        在硬件连接问题上涉及到三次互相之间的通信

(1)陀螺仪模块与单片机之间通信

        采取I2C通信,引脚名为SCL/SDA
。mpu6050有8个引脚,下面是介绍:

VCC:电源引脚。将此引脚连接到 +5V 直流电源。

GND:接地引脚。将此引脚接地。

SCL:串行时钟引脚。将此引脚连接到微控制器的 SCL 引脚。

SDA:串行数据引脚。将此引脚连接到微控制器的 SDA 引脚。

INT:中断数字输出引脚。

AD0: I2C 从机地址 LSB 引脚。这是设备 7 位从地址中的第 0 位。如果连接到 VCC,则它被读取为逻辑 1 并且从机地址发生变化。

XCL:辅助串行时钟引脚。此引脚用于将其他启用 I2C 接口的传感器 SCL 引脚连接到 MPU-6050。

XDA:辅助串行数据引脚。该引脚用于将其他支持 I2C 接口的传感器 SDA 引脚连接到 MPU-6050。

(引用MPU6050 简介

这里我只用到mpu6050与单片机通信,所以只用到四个引脚。

VCC接单片机3.3V;GND接单片机GND;

最小系统板是没有确定SCL/SDA引脚的,通过软件模拟I2C通信,接线时与模拟I2C引脚对应连接即可。

(2)蓝牙模块与单片机之间通信

采用串口通信。引脚名主要有VCC GND RX TX

VCC分3.3V和5V,采用hc05模块一定要连接单片机的5V引脚!

地接地不必多说。

串口通信单片机上有usart硬件资源,通过软件配置,模拟设定某两个gpio为TX RX。接线时注意单片机TX接蓝牙模块RX,蓝牙模块TX接单片机RX。

现在解释一下为什么串口通信是交错连接,I2C通信是对应连接,这与通信方式有关系。

I2C通信的引脚SCL为时钟脚,SDA为数据脚。时钟脚对应连接,同步双方发送数据的开始结束时间,两次传输数据之间不用有太大间隙,由时钟脚约定什么时候数据到达(因此I2C通信被称为同步通信)。但因为只有一条数据脚,一方在传输数据时另一方不可以传输(所以叫半双工通信)。

串口通信的引脚TX为信息发送,RX为信息接收。一方的信息发送脚要连接另一方的信息接收脚,双方的发送脚都连接着对方的接收脚,为分开的两条线,所以可以同时互相通信(因此被称为全双工通信)。但是不像I2C通信有时钟脚同步数据发送时间,一次数据发送后要间隔一段时间才能发送下一次(因此被称为异步通信)。

(3)STlink与单片机连接烧录程序

STlink为stm32系列配套烧录器,采用的是ICP烧录,使用SWD接口。连线引脚主要有VCC GND SWCLK SWDIO 四个引脚,SWCLK就是时钟引脚 SWDIO 就是数据引脚,原理其实和I2C是一样的(咱也不明白为啥不起个相似点的名字,还以为是新的通信方式。。。)

对应接单片机屁股上的四个引脚就行 这个一般是硬件配置好的,不需要软件配置。

bug two:程序配置

我想实现的功能已经有好多好多大佬开源代码了,想要找到相似的代码还是很轻松的,我这里只是给像我一样的小白个提醒,大佬莫笑🥺

找到的程序一般是移植性很高的程序 里面已经包含了串口通信和I2C通信的头文件。从这些头文件中找到你需要功能的函数(一般都有完整的注释,这个步骤很简单,认真看一下程序就可以明白)在调用的时候,一般是先调用初始化函数,然后在while循环中调用你需要的功能函数,比如I2C数据接收函数。

这里提醒一下,我的一个很呆的错误。蓝牙模块没有单独的程序,实质上就是串口通信,只需要调用串口通信的函数,而且printf就可以进行输出(有一个加强输出的函数,这里我还没明白加强输出的作用)。

待补充。。。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值