开启新的征程,邀请您见证ST的蜕变

【特惠季】小马哥最新小四轴,完整资料限时特价开源!

使用超声波传感器和伺服电机的雷达系统

KEA128读取MPU6050角度数据、姿态解算

KEA128读取MPU6050角度数据、姿态解算

KEA128为主控,读取mpu6050六轴传感器数据,并进行姿态解算求出俯仰角

电路项目的主要芯片及数据手册

电路相关文件

电路图文件
mpu-6050资料.zip
描述:mpu-6050资料
源代码
KEA128_MPU6050.zip
描述:姿态解算程序
教程
数据手册及参考文档.zip
描述:数据手册及参考文档
分享到:
收藏 (3)
电子硬件助手小程序 电子硬件助手小程序

电路城电路折扣劵获取途径:

电路城7~10折折扣劵(全场通用):对本电路进行评分获取;

电路城6折折扣劵(限购≤100元电路):申请成为卖家,上传电路,审核成功后获取。

(版权归尹岽所有)

版权声明:电路城所有电路均源于网友上传或网上搜集,供学习和研究使用,其版权归原作者所有,对可以提供充分证据的侵权信息,本站将在确认后24小时内删除。对本电路进行投诉建议,点击投诉本电路反馈给电路城。

使用说明:直接使用附件资料或需要对资料PCB板进行打样的买家,请先核对资料的完整性,如果出现问题,电路城不承担任何经济损失!

换一批 more>>

大家都在看:

继续阅读

  • STM32F103_USI8686_MPU6050_HMC5883 WIFI四轴飞行器原理图+PCB文件+测试源码

    Protel 99se 设计的项目工程文件,包括原理图及PCB印制板图,软件测试源码,可用Protel或 Altium Designer(AD)软件打开或修改,都已经制板在实际项目中使用,可作为你产品设计的参考。
    来自:工业控制时间:2018-10-11 stm32f103 mpu6050 hmc5883
  • 13届智能车三轮/直立KEA128主控板电路图 PCB设计

    第13届智能车硬件组成主要包括主控板,驱动,MCU一体,稳定可靠,体积小,KEA128AMLK主控。主控板做了主控部分的二极管防反接设计,ESD二极管静电保护。驱动部分采用成熟的2104s+ir7843全桥设计,D车\F车使用完全不发热。智能三轮车/直立车实物截图:
    来自:智能车时间:2018-08-10 智能车 kea128 直立车
  • 智能小车主控板和传感器电路板硬件&代码

    该设计智能小车电路板为拼板,包含有小车主控板,370电机霍尔传感器电路板,单电机驱动板和外加358运放,四个板电路板,四份电路图和原理都画在同一个文件中。其中霍尔传感器为需配合使用26极磁环,小车主控包含stm32单片机、双电机驱动、红外传感器、独立按键、esp8266等模块,有一个不足的地方是供电电压不能太高,由于7805压差过大导致发热严重的问题,推荐使用9V以下的电机,电源钮子开关需要确认大小是否合适。暂时没有完整的程序。主控板还有几个没用。智能小车拼板PCB截图:附件资料截图:
    来自:智能车时间:2018-06-10 智能小车 霍尔传感器
  • 串口输出MPU6050原始数据(TM4C1294处理器)

    以TM4C1294为处理器,MDK环境下编译,在电脑端串口调试助手定时输出MPU6050原始数据
    来自:DIY创意产品时间:2018-05-24 mpu6050 tm4c
  • STM32控制 MPU6050 六轴陀螺仪-资料汇总

    一般使用MPU6050的步骤是先驱动I2C总线,然后初始化MPU6050,从MPU6050读取数据,最后是数据的处理。本文档详细介绍有关MPU6050 三维角度传感器电子陀螺仪使用说明。附件内容提供该MPU6050模块原理图,配套STM32代码,相关数据手册及参考文档。实物连接图:MPU6050 六轴陀螺仪特点: 使用芯片:MPU-6050供电电源:3-5v(内部低压差稳压)通信方式:标准IIC通信协议芯片内置16bit AD转换器,16位数据输出陀螺仪范围:±250 500 1000 2000 °/s加速度范围:±2±4±8±16g附件资料截图:可能感兴趣的项目设计:6轴加速度计/姿态角度测量/卡尔曼滤波(上位机+测试程序+手机客户端等),链接:http://www.cirmall.com/circuit/2874/姿态传感器IMU模块 附源码和上位机,链接:http://www.cirmall.com/circuit/1730/
    来自:其他时间:2018-05-04 mpu6050 资料汇总 stm32控制
  • 基于stm32和mpu9250的usb hid键盘、鼠标、游戏控制器

    项目介绍1、方案主题:基于STM32+MPU9250的重力感应游戏控制器2、方案功能:使用STM32CubeMX配置了Nucleo-L476RG,开发了USB HID复合设备用于体感游戏控制,板载STM32L476RG ARM核微控制器支持USB2.0 全速设备,通过I2C读取九轴姿态传感器-MPU9250(三轴加速度、三轴陀螺仪、三轴磁力计),使用高效的传感器数据融合算法、姿态解算算法,实现体感控制PC游戏,精度高,超低延迟,可作为虚拟自行车等控制器,支持硬件定制。硬件:带USB控制器的STM32都可以,我这里使用的是Nucleo-L476RG,芯片是STM32L476RG,支持USB2.0全速模式,其中PA12---->USB_DPPA11---->USB_DM软件:使用STM32CubeMX配置直接用USB线连接到电脑USB即可,按照USB规范,USB线里面的绿线为DP(D+),白线为DM(D-),全速设备是要在DP线加上拉1.5K电阻的,由于STM32的USB外设内部有这个电阻,因此无需外加上拉电阻。配置过程不解释了,查看附件的PDF文档即可工作原理介绍1、硬件组成与介绍:Demo板采用了Nucleo-L476RG板卡,板载STM32L476RG高性能ARM Cortex-M4内核MCU,主频高达80MHz,1MB Flash、128KB SRAM,支持浮点DSP;8个轻触按键连接到了STM32的GPIO;MPU9250采用GY-91模块,通过I2C接口连接到STM32,MPU9250由应美盛(InvenSense)出品,是MPU6050的升级版,第二代9轴组合传感器将6轴惯性测量单元(三轴加速度计+三轴陀螺仪)和三轴轴磁力计集成于3 mm x 3 mm QFN封装中。2、此项目中STM32的功能:通过I2C接口采集传感器数据;强大的运算性能和浮点DSP的支持保证了数据融合、姿态解算等算法的高效、准确运行;控制LED作为状态指示;扫描按键状态;通过USB接口与PC机通信。3、软件流程介绍:采用前后台系统,主要分为三大部分,一是外设初始化,二是数据处理,三是业务逻辑处理。使用STM32CubeMX配置生成了USB HID复合设备,是一个USB键盘和USB鼠标、2个游戏Pad,配置方法和测试工程源码点我。或者“相关文件”直接下载如下图,可看到USB枚举成功为键盘、鼠标、游戏控制器复合设备。程序流程图如下:实物与演示1、实物图片与说明:Demo板说明:Demo板配置了9个按键,Nucleo板载蓝色按键为模式切换按键,开机板载LD2绿色LED快闪表明此时为锁定状态,控制器不起作用,短按1下,切换到按键控制模式,LD2慢闪,再短按切换到体感控制模式,LD2 1s闪烁一次,再按切换到锁定状态;板载4个大按键,依次映射为WASD,4个小按键依次映射为R、shift、鼠标左键、鼠标右键。2、演示视频:QQ飞车测试:http://player.youku.com/player.php/sid/XMjUyOTY3ND...坦克世界测试:http://player.youku.com/player.php/sid/XMjUyOTY5NT...
  • 基于stm32f103c8t6迷你遥控器设计(送测试代码,卡尔曼,一阶,二阶低通滤波代码,上位机显示波形)

    卖家语:手头有一些空板和已经焊接好的实物,如果有需要的同学可以联系qq962800589(非诚勿扰!)首先说明一下,此电路中存在一个设计BUG,即OLED的数据发送地址和MPU6050IIC的地址是在一起的,起初设计一位OLED可以加入寻址,后来程序出测试后发现不可以,这俩个器件只有一个可以工作(只焊接一个),当然,如果焊接技术厉害,可以把OLED的数据线通飞线到别的IO。本设计由于存在BUG。一下开始进行设计介绍:1 处理器:stm32f103c8t62 硬件构成:MPU6050,OLED12864,CP2102,EEPROM(未焊接),NRF24L01,PS2摇杆X23 功能:留有4.2V锂电池接口,ADC电路实时读取电压,CP2102usb转串口,只要短接BOOT0就可以通过安卓数据线下载,MPU6050六轴姿态传感,可以用于控制小车的姿态或者飞行器,EEPROM硬件寻址,与MPU6050使用同一个IIC,用于存储数据,NRF24L01无线接口,用于遥控使用(附件送测试代码)4 尺寸 10cmX6cm迷你四轴遥控器电路PCB实物截图:测试波形图:
  • 四轴飞行器飞控板(送姿态解算程序)

    5x5cm四层板,带有MPU6050和HMC5883L,两路串口,一路CAN,一路扩展口,SD卡和NRF接口(SD由于用了SPI接口,所以二者只能用一个),12路PWM口和OLED调试接口。板子支持输入电压范围高达24V以上(可以直接用6S电池作为电源输入也可以从电调取电)。姿态解算采用扩展卡尔曼滤波。四轴飞行器飞控板 PCB 3D截图:四轴飞行器飞控板原理图和PCB源文件:姿态解算代码,使用扩展卡尔曼滤波
    来自:飞行器时间:2016-10-03 stm32 四轴 飞行器 姿态解算 飞控板
  • 开源一个自己做的小四旋翼工程,会有相关讲解

    1. float q0q0 = q0*q0; float q0q1 = q0*q1; float q0q2 = q0*q2; // float q0q3 = q0*q3; float q1q1 = q1*q1; // float q1q2 = q1*q2; float q1q3 = q1*q3; float q2q2 = q2*q2; float q2q3 = q2*q3; float q3q3 = q3*q3; 这段程序就是为了把需要用到的姿态矩阵的元素求出来给出的。 2. vx = 2*(q1q3 - q0q2); / vy = 2*(q0q1 + q2q3); vz = q0q0 - q1q1 - q2q2 + q3q3 ; 可以看到vx,vy,vz为CRb的最后一列的三项,四元数矩阵带入(1)式得vx,vy,vz分别是axB,ayB,azB每一项g前的系数。且静止情况下vx,vy,vz组成向量模长基本可以认为为1. 3. norm = sqrt(ax*ax + ay*ay + az*az); //acc数据归一化 ax = ax /norm; ay = ay / norm; az = az / norm; 以上已说,由四元数倒推回去的加速度,向量模长为1,为了比较误差进行归1化,算的由加计得出的向量。 4. ex = (ay*vz - az*vy) ; ey = (az*vx - ax*vz) ; ez = (ax*vy - ay*vx) ; 接着可以通过叉乘(向量外积)计算误差 5. exInt = exInt + ex * Ki; eyInt = eyInt + ey * Ki; ezInt = ezInt + ez * Ki; 对误差进行积分 6. gx = gx + Kp*ex + exInt; gy = gy + Kp*ey + eyInt; gz = gz + Kp*ez + ezInt; 进行pi滤波,其实就是互补滤波 7. q0 = q0 + (-q1*gx - q2*gy - q3*gz)*halfT; q1 = q1 + (q0*gx + q2*gz - q3*gy)*halfT; q2 = q2 + (q0*gy - q1*gz + q3*gx)*halfT; q3 = q3 + (q0*gz + q1*gy - q2*gx)*halfT; 龙格库塔法。。。就是方程的数值解法。。近似解。。一阶解法 0736fac7228d4220f912874ee8cee5e5_21.png (0 Bytes, 下载次数: 0)下载附件 2010-12-14 22:54 上传 这个跟四元数的微分方程对应有兴趣的看看书。。。。 8. norm = sqrt(q0*q0 + q1*q1 + q2*q2 + q3*q3); q0 = q0 / norm; q1 = q1 / norm; q2 = q2 / norm; q3 = q3 / norm; 对四元数进行规范化,即化为模长为1 ,因为只有规范化的四元数才能表示刚体旋转。 9. Q_ANGLE.Y = asin(-2 * q1 * q3 + 2 * q0* q2)* 57.3; // pitch Q_ANGLE.X = atan2(2 * q2 * q3 + 2 * q0 * q1, -2 * q1 * q1 - 2 * q2* q2 + 1)* 57.3; // roll 仍旧一一对应关系发现2(q1q3 -q0q2)刚好跟欧拉角对应,由此利用自带库函数即可求得俯仰角,横滚角类似,偏航角由于没有罗盘进行校正求没有意义,控制中采用采用PD控制。 补充,由于陀螺仪会有零点漂移开始一定要进行补偿。这段是在mpu6050.c中程序,对直流偏执进行了补偿。 MPU6050_ACC_LAST.X=((((int16_t)mpu6050_buffer[0]) << 8) | mpu6050_buffer[1]) - ACC_OFFSET.X; MPU6050_ACC_LAST.Y=((((int16_t)mpu6050_buffer[2]) << 8) | mpu6050_buffer[3]) - ACC_OFFSET.Y; MPU6050_ACC_LAST.Z=((((int16_t)mpu6050_buffer[4]) << 8) | mpu6050_buffer[5]) - ACC_OFFSET.Z; MPU6050_GYRO_LAST.X=((((int16_t)mpu6050_buffer[8]) << 8) | mpu6050_buffer[9]) - GYRO_OFFSET.X; MPU6050_GYRO_LAST.Y=((((int16_t)mpu6050_buffer[10]) << 8) | mpu6050_buffer[11]) - GYRO_OFFSET.Y; MPU6050_GYRO_LAST.Z=((((int16_t)mpu6050_buffer[12]) << 8) | mpu6050_buffer[13]) - GYRO_OFFSET.Z; 这里还要说一点,这里加速计的数据用的是滑动平均值滤波法,一定要有这个。。不然由于机械振动造成的影响非常大。。。 void repare_Data(void) { static uint8_t filter_cnt=0; int32_t temp1=0,temp2=0,temp3=0; uint8_t i; MPU6050_Read(); MPU6050_Dataanl(); ACC_X_BUF[filter_cnt] = MPU6050_ACC_LAST.X; ACC_Y_BUF[filter_cnt] = MPU6050_ACC_LAST.Y; ACC_Z_BUF[filter_cnt] = MPU6050_ACC_LAST.Z; for(i=0;i<FILTER_NUM;i++) { temp1 += ACC_X_BUF; temp2 += ACC_Y_BUF; temp3 += ACC_Z_BUF; } 选择716电机,720的转速跟716的差不多,注意电机孔直径一定要大一点。。不然塞不进去。。然后补充一下MPU6050的摆放位置没有关系。。同一坐标系下测的的加速度角速度都是没有关系的。。。关于电源还有QFN的芯片。。。注意这个其实很好焊,用烙铁沾点锡加点焊锡膏在对准的引脚上拖焊就行。。可以拿个灯照着看反光比较容易对准。关于软件最关建的说说。。只有姿态解算部分。。PID部分我的算法还得改。。。。这个网上有开源的就是串机PID。。。额。。本人菜鸟。。还没看懂。。大二还没学自控。。回去会看的。。。注意这里MPU最好用硬件IIc,因为小四轴的姿态更新频率是1000HZ比较快,这里的IIC只是一个器件。。目前还没出什么问题。 这里有一部分是我之前写的总结 (1)欧拉角法静止状态,或者总加速度只是稍微大于g时,由加计算出的值比较准确。 使用欧拉角表示姿态,令Φ,θ和Φ代表ZYX 欧拉角,分别称为偏航角、俯仰角和横滚角 。 载体坐标系下的 加 速 度(axB,ayB,azB)和参考坐标系下的加速度(axN, ayN, azN)之间的关系可表示为(1)。其中 c 和 s 分别代表 cos 和 sin。axB,ayB,azB就是mpu读出来的三个值。 这个矩阵就是三个旋转矩阵相乘得到的,因为矩阵的乘法可以表示旋转。这是程序 void IMUupdate(float gx, float gy, float gz, float ax, float ay, float az) { float norm; // float hx, hy, hz, bx, bz; float vx, vy, vz;// wx, wy, wz; float ex, ey, ez; // 先把这些用得到的值算好 float q0q0 = q0*q0; float q0q1 = q0*q1; float q0q2 = q0*q2; // float q0q3 = q0*q3; float q1q1 = q1*q1; // float q1q2 = q1*q2; float q1q3 = q1*q3; float q2q2 = q2*q2; float q2q3 = q2*q3; float q3q3 = q3*q3; if(ax*ay*az==0) return; norm = sqrt(ax*ax + ay*ay + az*az); //acc数据归一化 ax = ax /norm; ay = ay / norm; az = az / norm; // estimated direction of gravity and flux (v and w) vx = 2*(q1q3 - q0q2); //四元素中xyz的 vy = 2*(q0q1 + q2q3); vz = q0q0 - q1q1 - q2q2 + q3q3 ; // error is sum of cross product between reference direction of fields and direction measured by sensors ex = (ay*vz - az*vy) ; //向量外积在相减得到差分就是误差 ey = (az*vx - ax*vz) ; ez = (ax*vy - ay*vx) ; exInt = exInt + ex * Ki; //对误差进行积分 eyInt = eyInt + ey * Ki; ezInt = ezInt + ez * Ki; // adjusted gyroscope measurements gx = gx + Kp*ex + exInt; //将误差PI后补偿到陀螺仪,即补偿零点漂移 gy = gy + Kp*ey + eyInt; gz = gz + Kp*ez + ezInt; //这里的gz由于没有观测者进行矫正会产生漂移,表现出来的就是积分自增或自减 // integrate quaternion rate and normalise //四元素的微分方程 q0 = q0 + (-q1*gx - q2*gy - q3*gz)*halfT; q1 = q1 + (q0*gx + q2*gz - q3*gy)*halfT; q2 = q2 + (q0*gy - q1*gz + q3*gx)*halfT; q3 = q3 + (q0*gz + q1*gy - q2*gx)*halfT; // normalise quaternion norm = sqrt(q0*q0 + q1*q1 + q2*q2 + q3*q3); q0 = q0 / norm; q1 = q1 / norm; q2 = q2 / norm; q3 = q3 / norm; //Q_ANGLE.Yaw = atan2(2 * q1 * q2 + 2 * q0 * q3, -2 * q2*q2 - 2 * q3* q3 + 1)* 57.3; // yaw Q_ANGLE.Y = asin(-2 * q1 * q3 + 2 * q0* q2)* 57.3; // pitch Q_ANGLE.X = atan2(2 * q2 * q3 + 2 * q0 * q1, -2 * q1 * q1 - 2 * q2* q2 + 1)* 57.3; // roll }1. float q0q0 = q0*q0; float q0q1 = q0*q1; float q0q2 = q0*q2; // float q0q3 = q0*q3; float q1q1 = q1*q1; // float q1q2 = q1*q2; float q1q3 = q1*q3; float q2q2 = q2*q2; float q2q3 = q2*q3; float q3q3 = q3*q3; 这段程序就是为了把需要用到的姿态矩阵的元素求出来给出的。 2. vx = 2*(q1q3 - q0q2); / vy = 2*(q0q1 + q2q3); vz = q0q0 - q1q1 - q2q2 + q3q3 ; 可以看到vx,vy,vz为CRb的最后一列的三项,四元数矩阵带入(1)式得vx,vy,vz分别是axB,ayB,azB每一项g前的系数。且静止情况下vx,vy,vz组成向量模长基本可以认为为1. 3. norm = sqrt(ax*ax + ay*ay + az*az); //acc数据归一化 ax = ax /norm; ay = ay / norm; az = az / norm; 以上已说,由四元数倒推回去的加速度,向量模长为1,为了比较误差进行归1化,算的由加计得出的向量。 4. ex = (ay*vz - az*vy) ; ey = (az*vx - ax*vz) ; ez = (ax*vy - ay*vx) ; 接着可以通过叉乘(向量外积)计算误差 5. exInt = exInt + ex * Ki; eyInt = eyInt + ey * Ki; ezInt = ezInt + ez * Ki; 对误差进行积分 6. gx = gx + Kp*ex + exInt; gy = gy + Kp*ey + eyInt; gz = gz + Kp*ez + ezInt; 进行pi滤波,其实就是互补滤波 7. q0 = q0 + (-q1*gx - q2*gy - q3*gz)*halfT; q1 = q1 + (q0*gx + q2*gz - q3*gy)*halfT; q2 = q2 + (q0*gy - q1*gz + q3*gx)*halfT; q3 = q3 + (q0*gz + q1*gy - q2*gx)*halfT; 龙格库塔法。。。就是方程的数值解法。。近似解。。一阶解法 这个跟四元数的微分方程对应有兴趣的看看书。。。。 8. norm = sqrt(q0*q0 + q1*q1 + q2*q2 + q3*q3); q0 = q0 / norm; q1 = q1 / norm; q2 = q2 / norm; q3 = q3 / norm; 对四元数进行规范化,即化为模长为1 ,因为只有规范化的四元数才能表示刚体旋转。 9. Q_ANGLE.Y = asin(-2 * q1 * q3 + 2 * q0* q2)* 57.3; // pitch Q_ANGLE.X = atan2(2 * q2 * q3 + 2 * q0 * q1, -2 * q1 * q1 - 2 * q2* q2 + 1)* 57.3; // roll 仍旧一一对应关系发现2(q1q3 -q0q2)刚好跟欧拉角对应,由此利用自带库函数即可求得俯仰角,横滚角类似,偏航角由于没有罗盘进行校正求没有意义,控制中采用采用PD控制。 补充,由于陀螺仪会有零点漂移开始一定要进行补偿。这段是在mpu6050.c中程序,对直流偏执进行了补偿。 MPU6050_ACC_LAST.X=((((int16_t)mpu6050_buffer[0]) << 8) | mpu6050_buffer[1]) - ACC_OFFSET.X; MPU6050_ACC_LAST.Y=((((int16_t)mpu6050_buffer[2]) << 8) | mpu6050_buffer[3]) - ACC_OFFSET.Y; MPU6050_ACC_LAST.Z=((((int16_t)mpu6050_buffer[4]) << 8) | mpu6050_buffer[5]) - ACC_OFFSET.Z; MPU6050_GYRO_LAST.X=((((int16_t)mpu6050_buffer[8]) << 8) | mpu6050_buffer[9]) - GYRO_OFFSET.X; MPU6050_GYRO_LAST.Y=((((int16_t)mpu6050_buffer[10]) << 8) | mpu6050_buffer[11]) - GYRO_OFFSET.Y; MPU6050_GYRO_LAST.Z=((((int16_t)mpu6050_buffer[12]) << 8) | mpu6050_buffer[13]) - GYRO_OFFSET.Z; 这里还要说一点,这里加速计的数据用的是滑动平均值滤波法,一定要有这个。。不然由于机械振动造成的影响非常大。。。 void repare_Data(void) { static uint8_t filter_cnt=0; int32_t temp1=0,temp2=0,temp3=0; uint8_t i; MPU6050_Read(); MPU6050_Dataanl(); ACC_X_BUF[filter_cnt] = MPU6050_ACC_LAST.X; ACC_Y_BUF[filter_cnt] = MPU6050_ACC_LAST.Y; ACC_Z_BUF[filter_cnt] = MPU6050_ACC_LAST.Z; for(i=0;i<FILTER_NUM;i++) { temp1 += ACC_X_BUF; temp2 += ACC_Y_BUF; temp3 += ACC_Z_BUF; }
    来自:智能车时间:2016-05-24 diy制作 四轴飞行器 mpu6050 四旋翼
  • 开源我制作的空中鼠标(MPU6050+NRF24l01+stm32)

    参考正点原子战舰开发板上的鼠标例程,我也做了一个空中鼠标,其实只是将他的有线鼠标改造成无线的。 鼠标由发射板和接收板组成,发射板主要包括stm32,MPU6050,NRF24l01,相信我不用说明大家都知道他们分别是干什么的了吧。 接收板主要包括stm32和NRF24l01,接收板通过USB接口和电脑连接,USB驱动是STM32的官方例程。另外,cpu使用的是stm32f103c8t6这个芯片有两个优点,一个是小,另外一个是便宜,统计下来做一个鼠标刨去PCB的成本,大概60元左右。 这个空中飞鼠的原理大概讲一下,就是读取MPU6050中X和Z轴上的角速度值,然后通过NRF24l01发送给接收板,接收板通过NRF24l01接收到数据后,通过stm32内部自带的USB模块将数据发送给电脑,而USB部分的东西基本不用去深入研究,使用的时候只要知道那个鼠标数据的接口函数就可以了。http://v.youku.com/v_show/id_XNzc1MzQ1ODg0.html视频中只有发射板,我将发射板做成跟18650电池大小差不多,这样就直接可以放到移动电源里了,这样移动电源就不仅可以充电,还可以 当鼠标使用。怎么样实际的使用效果还可以吧? 下面是空中鼠标的图片细节。这是发射板的PCB,MPU6050和NRF24l01都是直接使用的现成模块,方便了焊接并且提高了制作成功率。这是装好后的实物图,也许你会奇怪后面为什么要用那么长的两个按键?这是因为我要把板子放到移动电源的电池仓内,所以需要很长的按键, 我也懒得再去研究怎么装按键会更好看,所以就用了这种懒办法。这是接收板的PCB板和实物图,电路其实很简单,我做了两点优化,一个是双USB接口,这样不仅可以直接插到电脑上,而且可以在调试程序的时候 使用USB线来连接,另一个是将IO口全部引出,这样接收板还可以当做开发板使用,对于我这种电子爱好屌丝来说无疑是一个很省成本的方案。上图是发射板放在移动电源中,移动电源最好选用内部是18650的,这样方便改造。只要将线连接好,将板子固定住,在盖子上打好洞就行, 我用的LDO是一个低压差的,座椅无论你使用移动电源出来的5V或者直接连接18650都是可以正常工作的。 最后,附上原理图和程序,没有太多注释,因为程序我自己写的部分很简单,其他部分都是官方或者战舰开发板上现成的例程,现在我的程序, 除了控制方向,鼠标左右键外,还增加了两个按键同时按下开启滚轮功能,期望有人能在我的基础上继续优化程序,因为我对算法这边实在了 解的不多。
销量
5
查看
2655
参数名 参数值
发布于 2018 年 04 月 09日
Moore8直播课堂