简 介: 制作了MPU9250的转接接口,并利用舵机带动起旋转测量了模块测量角度功能。

关键词MPU9250ESP32

#mermaid-svg-dGY7dbxoXuc3EI5H {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-dGY7dbxoXuc3EI5H .error-icon{fill:#552222;}#mermaid-svg-dGY7dbxoXuc3EI5H .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-dGY7dbxoXuc3EI5H .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-dGY7dbxoXuc3EI5H .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-dGY7dbxoXuc3EI5H .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-dGY7dbxoXuc3EI5H .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-dGY7dbxoXuc3EI5H .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-dGY7dbxoXuc3EI5H .marker{fill:#333333;stroke:#333333;}#mermaid-svg-dGY7dbxoXuc3EI5H .marker.cross{stroke:#333333;}#mermaid-svg-dGY7dbxoXuc3EI5H svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-dGY7dbxoXuc3EI5H .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-dGY7dbxoXuc3EI5H .cluster-label text{fill:#333;}#mermaid-svg-dGY7dbxoXuc3EI5H .cluster-label span{color:#333;}#mermaid-svg-dGY7dbxoXuc3EI5H .label text,#mermaid-svg-dGY7dbxoXuc3EI5H span{fill:#333;color:#333;}#mermaid-svg-dGY7dbxoXuc3EI5H .node rect,#mermaid-svg-dGY7dbxoXuc3EI5H .node circle,#mermaid-svg-dGY7dbxoXuc3EI5H .node ellipse,#mermaid-svg-dGY7dbxoXuc3EI5H .node polygon,#mermaid-svg-dGY7dbxoXuc3EI5H .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-dGY7dbxoXuc3EI5H .node .label{text-align:center;}#mermaid-svg-dGY7dbxoXuc3EI5H .node.clickable{cursor:pointer;}#mermaid-svg-dGY7dbxoXuc3EI5H .arrowheadPath{fill:#333333;}#mermaid-svg-dGY7dbxoXuc3EI5H .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-dGY7dbxoXuc3EI5H .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-dGY7dbxoXuc3EI5H .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-dGY7dbxoXuc3EI5H .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-dGY7dbxoXuc3EI5H .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-dGY7dbxoXuc3EI5H .cluster text{fill:#333;}#mermaid-svg-dGY7dbxoXuc3EI5H .cluster span{color:#333;}#mermaid-svg-dGY7dbxoXuc3EI5H div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-dGY7dbxoXuc3EI5H :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}

模块接口
目 录
Contents
接口定义
电路制作
测试模块
测试接口
测试结果
测试结果

§01 模块接口


在博文 龙邱MPU9250传感器 | 使用ESP32 模块进行测试 中使用了 ESP32 对于MPU9250进行初步测试。为了方便今后的使用,制作模块的转接板,从原来的 8PINs 转换成 4PINs 接口。

一、接口定义

  对于接口进行简化的功能定义为如下图所示:

▲ 图1.1 接口定义

二、电路制作

1、原理图

▲ 图1.2.1 接口原理图

2、快速制版

▲ 图1.2.2 快速制版

§02 测试模块


一、测试接口

1、I2C接口

  根据 ESP32-S模块转接板设计与实现 选择GPIO2,GPIO15作为 SCL,SDA。

▲ 图2.1.1 ESP32接口

  注: 需要在GPIO2 施加 2.2kΩ 上拉电阻来保证它的输出能够使用。

2、舵机接口

  选择TXD2(GPIO2)作为输出 100Hz的 舵机信号输出。

▲ 图2.1.2 输出的PWM波形

二、测试结果

  利用PWM控制舵机带动 MPU9250旋转,测量MPU9250 输出的三个加速度传感器数值。

▲ 图2.2.1 测试旋转平台

1、测试程序

(1) MicroPython程序

from machine                import Pin,Timer,SoftI2C,PWM
import time
import mathled0 = Pin(5, Pin.OUT)
led1 = Pin(17, Pin.OUT)pwm = PWM(Pin(13))
pwm.freq(100)
pwm.duty(100)i2c = SoftI2C(scl=Pin(2), sda=Pin(15), freq=100000)MPU9250_ADDRESS            = 0x68
MAG_ADDRESS                = 0x0cGYRO_FULL_SCALE_250_DPS    = 0x00
GYRO_FULL_SCALE_500_DPS    = 0x08
GYRO_FULL_SCALE_1000_DPS   = 0x10
GYRO_FULL_SCALE_2000_DPS   = 0x18ACC_FULL_SCALE_2_G        = 0x00
ACC_FULL_SCALE_4_G        = 0x08
ACC_FULL_SCALE_8_G        = 0x10
ACC_FULL_SCALE_16_G       = 0x18def MPU9250Setup():i2c.writeto_mem(MPU9250_ADDRESS, 27, bytearray(GYRO_FULL_SCALE_2000_DPS))# Configure gyroscope rangei2c.writeto_mem(MPU9250_ADDRESS, 28, bytearray(ACC_FULL_SCALE_16_G))# Configure accelerometer rangei2c.writeto_mem(MPU9250_ADDRESS, 0x37, bytearray(0x2))# Set by pass mode for magnetometer# Request first magnetometer single measurementdef bytes2short(b):a = int.from_bytes(b, 'big', True)if a > 0x7fff:return -(0x10000 - a)else:  return adef MPU9250read():buf = bytearray(14)buf = i2c.readfrom_mem(MPU9250_ADDRESS, 0x3b, 14)ax = bytes2short(buf[0:2])ay = bytes2short(buf[2:4])az = bytes2short(buf[4:6])gx = bytes2short(buf[8:10])gy = bytes2short(buf[10:12])gz = bytes2short(buf[12:14])temp = bytes2short(buf[6:8])return (ax,ay,az),(gx,gy,gz), tempMPU9250Setup()axdim = []
aydim = []
azdim = []step = 1
start = 50pwm.duty(50)
time.sleep(1)for i in range(200):pwm.duty(start+step*i)time.sleep(1)readdata = MPU9250read()axdim.append(readdata[0][0])aydim.append(readdata[0][1])azdim.append(readdata[0][2])print(readdata[0])print(axdim)
print(aydim)
print(azdim)while True:passwhile True:led0.on()led1.off()time.sleep_ms(200)led0.off()led1.on()time.sleep_ms(200)print(MPU9250read())

(2) 绘制图形

from headm import *def thonnycmd(cmd):tspsendwindowkey('Thonny', 's', alt=1, noreturn=1)tspsendwindowkey('Thonny', '%s'%cmd, noreturn=1)def thonnyshs(cmd='', wait=0):tspsendwindowkey('Thonny', 's', alt=1, noreturn=1)if len(cmd) > 0:tspsendwindowkey('Thonny', '%s\r'%cmd, noreturn=1)if wait > 0:time.sleep(wait)tspsendwindowkey('Thonny', 'ac', control=1, noreturn=1)tspfocuswindow('TEASOFT:1')return clipboard.paste()pastestr = thonnyshs('', 1)
ax = [float(s) for s in pastestr.split('[')[-3].split(']')[0].split(',')]
ay = [float(s) for s in pastestr.split('[')[-2].split(']')[0].split(',')]
az = [float(s) for s in pastestr.split('[')[-1].split(']')[0].split(',')]printf(ax, ay, az)plt.plot(ax, label='ax')
plt.plot(ay, label='ay')
plt.plot(az, label='az')plt.xlabel("Samples")
plt.ylabel("X,Y,Z")
plt.grid(True)
plt.tight_layout()
plt.show()

2、测试结果

(1) 数据曲线

▲ 图2.2.1 采集到的三个加速度数值

(2) 数据分析

  对于AX, AY转换成对应的角度。

angle = [math.atan2(y,x)*180/pi for y,x in zip(ay,ax)]

▲ 图2.2.2 转换成了不同的角度数值

测量结果:
起始角度: 51.05
结束角度: 104.51
最大角度: -177.11
最小角度: 179.21

※ 测试结果 ※


  通过测试可以得到以下结论:

  • 对于大范围舵机旋转,设置的脉冲宽度从1ms 到2ms,对应的角度变化 307°。
  • 可以使用MPU9250的两个加速度值来计算模块的倾角。

■ 相关文献链接:

  • 龙邱MPU9250传感器 | 使用ESP32 模块进行测试
  • ESP32-S模块转接板设计与实现

● 相关图表链接:

  • 图1.1 接口定义
  • 图1.2.1 接口原理图
  • 图1.2.2 快速制版
  • 图2.1.1 ESP32接口
  • 图2.1.2 输出的PWM波形
  • 图2.2.1 测试旋转平台
  • 图2.2.1 采集到的三个加速度数值
  • 图2.2.2 转换成了不同的角度数值
from headm import *def thonnycmd(cmd):tspsendwindowkey('Thonny', 's', alt=1, noreturn=1)tspsendwindowkey('Thonny', '%s'%cmd, noreturn=1)def thonnyshs(cmd='', wait=0):tspsendwindowkey('Thonny', 's', alt=1, noreturn=1)if len(cmd) > 0:tspsendwindowkey('Thonny', '%s\r'%cmd, noreturn=1)if wait > 0:time.sleep(wait)tspsendwindowkey('Thonny', 'ac', control=1, noreturn=1)tspfocuswindow('TEASOFT:1')return clipboard.paste()pastestr = thonnyshs('', 1)
ax = [float(s) for s in pastestr.split('[')[-3].split(']')[0].split(',')]
ay = [float(s) for s in pastestr.split('[')[-2].split(']')[0].split(',')]
az = [float(s) for s in pastestr.split('[')[-1].split(']')[0].split(',')]tspsave('measure', ax=ax, ay=ay, az=az)angle = [math.atan2(y,x)*180/pi for y,x in zip(ay,ax)]printf(ax, ay, az, angle)
printf(angle[0], angle[-1], min(angle), max(angle))plt.plot(angle, label='angle')plt.xlabel("Samples")
plt.ylabel("angle")
plt.grid(True)
plt.tight_layout()
plt.show()

龙邱 MPU9250 模块接口 | 基于ESP32模块相关推荐

  1. 龙邱MPU9250传感器 | 使用ESP32 模块进行测试

    简 介: 利用ESP32 MicroPython对于来自于龙邱的MPU9250进行初步测试. 关键词: MPU9250,I2C,ESP32,软件I2C #mermaid-svg-fMBqdJ8sCAu ...

  2. 用启明云端基于ESP32模块的开发板来快速了解天猫精灵

    为什么要了解天猫精灵呢? 在物联网时代,单纯的"互联"已经无法满足需求,需要让万物"智联"才能发挥它的应用价值.AI语音的简单.易用特性将成为万物"智 ...

  3. 基于ESP32模块利用检测线圈检测车模停止时间,室内视觉AI裁判系统

    ▌01 室内视觉AI裁判系统 1.背景介绍 在 ESP32检测调制激光信号程序优化 以及 测试ESP32S基本模块的功能,并验证是否可以应用在AI智能车竞赛检测激光信号中 中测试了 ESP32串口转W ...

  4. python 播放mp3模块_Python基于pygame模块播放MP3的方法示例

    1 IDLE1 1 IDLE是python创初人Guido van Rossum使用python and Tkinter来创建的一个集成开发环境.要使用I 2018-04-14 为什么使用Python ...

  5. 基于ESP32的竞赛裁判系统功能调试-计时线圈功能

    简 介: 对于智能车竞赛比赛系统中的电磁检测功能进行了调试,设置了程序运行的主要框架. 关键词: 智能车竞赛,比赛系统,计时系统,ESP32,电磁检测 §01 智能车竞赛裁判系统   中间间隔了一段时 ...

  6. 龙邱树莓派Raspberry Pi 扩展板电路及其相关实验

    ▲ 树莓派与其扩展板 文章目录 ▌01 树莓派车模扩展板 1.车模的整体配置 2.扩展板 3.树莓派IO口管脚功能 (1)树莓派接口定义 (2)扩展板上各功能接口定义 ▌02 扩展板子模块 1.树莓派 ...

  7. 基于ESP32的竞赛裁判系统功能调试-与微机通讯

    简 介: 通过调试测试了基于ESP32设计的智能车竞赛的比赛系统方案与比赛软件联系的功能. 关键词: 智能车竞赛,比赛系统,ESP32 §01 比赛系统与微机通讯 在 基于ESP32智能车竞赛比赛系统 ...

  8. AI视觉组基于ESP32的裁判系统第一版本设计要求

    简 介: 面对第十六届全国大学生智能车竞赛中新增加的一些组别的要求,比如室内AI组,对于车模任务增加的检测任务,设计了基于ESP32为核心的比赛系统.本文给出了对于比赛系统功能的要求. 关键词: 比赛 ...

  9. 基于ESP32的竞赛裁判系统功能调试-激光信号调试

    简 介: 通过揣进测试了新版的基于ESP32的裁判系统对于激光信号的检测能力. 关键词: 智能车竞赛,125Hz,激光信号 §01 智能车竞赛裁判系统   对于 基于ESP32的智能车竞赛裁判系统 中 ...

最新文章

  1. Windows轻松实现linux shell环境:gitforwindows
  2. MSE与MAE的区别与如何选择
  3. 深入理解JavaScript的闭包特性如何给循环中的对象添加事件
  4. 用火狐录制脚本为空_功能测试——链接测试amp;脚本功能
  5. 计算机考研各科目分数,考研各科目及分数
  6. UI设计灵感|时尚简约风格网页页面设计
  7. 使用FFMPEG类库分离出多媒体文件中的音频码流
  8. python周志_python第一周总结
  9. python import random_python import random 后一直无法使用解决方法
  10. 修改Nodejs内置的npm默认配置路径
  11. 论如何用电脑开手游辅助,实现QQ飞车自动跑图
  12. 物联网应用三个阶段,你在哪里?
  13. 培训班出来的程序员怎么就不行了?
  14. 如何写一封好的情书?Python三步爬取全网情诗信息
  15. oracle+omf+格式,oracle omf
  16. Android Interpolator属性 设置动画速度
  17. 编写高质量代码:改善Java程序的151个建议(第9章:多线程和并发___建议125~131)
  18. 百度地图测距 java_java 百度地图判断两点距离1
  19. R语言GD包基于栅格图像实现地理探测器与连续参数的自动离散化
  20. putty修改显示服务器ip或域名,putty 标题显示ip

热门文章

  1. python学习笔记(3) -- 常用数据类型
  2. Android开发实践:屏幕旋转的处理
  3. IDC评述网:7月上旬国内域名解析服务商Top10
  4. C# CAD对象 构造时应把它的父对象也加进它的属性里
  5. 一个递归函数的漏洞及优化
  6. py2exe——.py文件转换成exe
  7. Django模拟新浪微博的@功能
  8. Windows中如何正确认识和安装驱动程序
  9. android:layout_with=,android – 难以理解layout_alignWithParentIfMissing
  10. mysql引擎层存储层_MySQL存储底层技术:InnoDB底层原理解读