ARDUINO从入门到创客带师8:水平仪与指南针

2020-02-15 11:11:46 9点赞 33收藏 0评论

创作立场声明:其实大多数时候这样的功能买个20块钱的手机装个软件就都有了,但是不是所有的时候都可以绑着手机上的是吧

ARDUINO从入门到创客带师⑧:利用MPU 9250做个水平仪和指南针

用ESP8266 WIFI模块自制MP3

ARDUINO 6050 9250

首先不同模块之间每个模块规格都不一样的,从命名能看出来。就像CH340/CH341 CP210X一样,MPU6050 6500 6555 9150 9250 9255虽然都是加速度传感器,但是明显的就存在区别 常见的MPU6050是非常便宜的三轴陀螺仪 + 三轴加速度传感器模块,MPU-6000整合了3轴陀螺仪、3轴加速器,并含可藉由第二个I2C端口连接其他厂牌之加速器、磁力传感器、或其他传感器的数位运动处理(DMP: Digital Motion Processor)硬件加速引擎,它的成本通常不超过5块钱:


ARDUINO从入门到创客带师8:水平仪与指南针


而这期我们用的MPU9250实际上是MPU6050加了别的传感器的胶水封装,但是价格就贵了很多:


ARDUINO从入门到创客带师8:水平仪与指南针


MPU9150是只支持I2C的,MPU9250是支持SPI/I2C两种方式。里面的传感器也是不同的,MPU9150里面是MPU6050+AK8975,而MPU9250里面是MPU6500+AK8963,总之咱一开始出这个教程的动机其实很简单,就是因为咱不小心在插了9250模块的面包板上同时插了一个NODEMCU,结果上电之后NODEMCU炸了,所以咱很方,怕9250也跟着炸了,毕竟面包板里面都是直通的,结果就有了这期教程。事实证明它还行,没炸,所以省下了NODEMCU炸了无所谓,14包邮现在,MPU9250 20不包邮可还行,炸了损失快顶俩NODEMCU了


ARDUINO从入门到创客带师8:水平仪与指南针


此外咱在插上之前有系统镜像的SD卡之后,树莓派PI0 W也点亮了,所以下期我们出点亮树莓派的教程的时候选型会有点更改,优先考虑之前有屏幕的3B


ARDUINO从入门到创客带师8:水平仪与指南针


总之我们需要这样的一个模块和一个支持I²C的开发板,从51单片机到树莓派都行,这里我们用的还是ARDUINO


ARDUINO从入门到创客带师8:水平仪与指南针


按正常的I²C定义把线接上就行了

6500 9205

MPU9250 ---> UNO

vcc-> 5v

接地->接地

SCL-> A5

SDA-> A4

对于其他开发板,请根据引脚定义图检查I²C引脚分配


ARDUINO从入门到创客带师8:水平仪与指南针


至于需要的资料可以用全世界最好的搜索引擎去找


ARDUINO从入门到创客带师8:水平仪与指南针


基本上商品介绍页的信息都是没啥问题的

MPU9250内部是MPU6050和AK8963两个芯片合并在一起的

MPU9250默认情况下MPU9250用它的I2C主机控制器与AK8963通信,把磁力值读到出放到指定的寄存器中,这需要设置一堆寄存器。好在MPU9250还集成了一个I2C主机控制器。这个模式相当于MPU9250和AK8963共同使用一条I2C总线,它们的通信地址不一样


ARDUINO从入门到创客带师8:水平仪与指南针


实际操作上因为我们用的是ARDUINO所有库和项目代码都是开源且打包好的所以各位可以直接上GITHUB的项目下载你需要的所有资源,让我看看之前咱的教程的成果怎么样

前作:ARDUINO环境库的安装和使用GITHUB上的开源项目

如果GITHUB上不去,可以用这个备用链接,但是我还是希望各位能会用GITHUB,因为它介绍的很全


ARDUINO从入门到创客带师8:水平仪与指南针


总之我们需要安装好一个库,直接用ARDUINO把GUTHUB的ZIP当ZIP库安装就可以,然后打开例程,配置好串口驱动选定开发板所在串口,然后上传程序之后打开串口监视器,配置好波特率就可以看到传感器模块的实时返回信息了,就这么简单:


ARDUINO从入门到创客带师8:水平仪与指南针


默认波特率是不对的,换个代码标注的波特率就行了


ARDUINO从入门到创客带师8:水平仪与指南针


示例代码:

#include <MPU9250_asukiaaa.h>


#ifdef _ESP32_HAL_I2C_H_

#define SDA_PIN 21

#define SCL_PIN 22

#endif


MPU9250_asukiaaa mySensor;

float aX, aY, aZ, aSqrt, gX, gY, gZ, mDirection, mX, mY, mZ;


void setup() {

Serial.begin(115200);

while(!Serial);

Serial.println("started");


#ifdef _ESP32_HAL_I2C_H_ // For ESP32

Wire.begin(SDA_PIN, SCL_PIN);

mySensor.setWire(&Wire);

#endif


mySensor.beginAccel();

mySensor.beginGyro();

mySensor.beginMag();


// You can set your own offset for mag values

// mySensor.magXOffset = -50;

// mySensor.magYOffset = -55;

// mySensor.magZOffset = -10;

}


void loop() {

uint8_t sensorId;

if (mySensor.readId(&sensorId) == 0) {

Serial.println("sensorId: " + String(sensorId));

} else {

Serial.println("Cannot read sensorId");

}


if (mySensor.accelUpdate() == 0) {

aX = mySensor.accelX();

aY = mySensor.accelY();

aZ = mySensor.accelZ();

aSqrt = mySensor.accelSqrt();

Serial.println("accelX: " + String(aX));

Serial.println("accelY: " + String(aY));

Serial.println("accelZ: " + String(aZ));

Serial.println("accelSqrt: " + String(aSqrt));

} else {

Serial.println("Cannod read accel values");

}


if (mySensor.gyroUpdate() == 0) {

gX = mySensor.gyroX();

gY = mySensor.gyroY();

gZ = mySensor.gyroZ();

Serial.println("gyroX: " + String(gX));

Serial.println("gyroY: " + String(gY));

Serial.println("gyroZ: " + String(gZ));

} else {

Serial.println("Cannot read gyro values");

}


if (mySensor.magUpdate() == 0) {

mX = mySensor.magX();

mY = mySensor.magY();

mZ = mySensor.magZ();

mDirection = mySensor.magHorizDirection();

Serial.println("magX: " + String(mX));

Serial.println("maxY: " + String(mY));

Serial.println("magZ: " + String(mZ));

Serial.println("horizontal direction: " + String(mDirection));

} else {

Serial.println("Cannot read mag values");

}


Serial.println("at " + String(millis()) + "ms");

Serial.println(""); // Add an empty line

delay(500);

}

用同样的方法可以读取MPU9250磁传感器的绝对值,并且可以利用别的项目来做指南针。至于水平仪可以到正点原子找开源的代码。这里我们也可以提供一个备用连接


ARDUINO从入门到创客带师8:水平仪与指南针


这个模块实际上的功能是异常强悍的,有了这个模块你甚至可以做惯性导航,无人机、火箭之类的都可以造了。总之我不再说了,ARDUINO玩好了未来的潜力是不可限量的,各位自己领会吧。


展开 收起

大疆(DJI)无人机Mini 2/Mini se 入门级航拍无人机 大疆迷你便携可折叠无人机航拍飞行 Mini 2 套装版【含配件礼包】 标配

大疆(DJI)无人机Mini 2/Mini se 入门级航拍无人机 大疆迷你便携可折叠无人机航拍飞行 Mini 2 套装版【含配件礼包】 标配

3199元起

FIMI 飞米X8 Mini V2航拍小飞机入门级无人机 便携可折叠 4K高清长续航智能跟随2023 橙色长续航版(三电+64G卡+背包+停机坪)

FIMI 飞米X8 Mini V2航拍小飞机入门级无人机 便携可折叠 4K高清长续航智能跟随2023 橙色长续航版(三电+64G卡+背包+停机坪)

暂无报价

大疆 DJI Mini 2 航拍无人机 便携可折叠无人机航拍飞行器+128G内存卡

大疆 DJI Mini 2 航拍无人机 便携可折叠无人机航拍飞行器+128G内存卡

3003.9元起

potensic 博坦Potensic无人机高清专业航拍迷你智能FPV无人机器遥控飞机4KM图传电子防抖(三电池+包+充电管家)

potensic 博坦Potensic无人机高清专业航拍迷你智能FPV无人机器遥控飞机4KM图传电子防抖(三电池+包+充电管家)

1799元起

大疆 DJI Mavic 3 Pro 御3三摄航拍机 Cine大师版 高清专业航拍器 大疆无人机 畅飞套装(DJI RC) 标配 128G内存卡 标配

大疆 DJI Mavic 3 Pro 御3三摄航拍机 Cine大师版 高清专业航拍器 大疆无人机 畅飞套装(DJI RC) 标配 128G内存卡 标配

暂无报价

SwellPro 斯威普 耳机

SwellPro 斯威普 耳机

18999元起

大疆 DJI Inspire 3 悟3一体化空中电影机 全画幅8K超广角航拍器航点飞行拍摄大疆无人机 标准套装 DL 18 mm F2.8 ASPH 镜头 无随心换

大疆 DJI Inspire 3 悟3一体化空中电影机 全画幅8K超广角航拍器航点飞行拍摄大疆无人机 标准套装 DL 18 mm F2.8 ASPH 镜头 无随心换

87887元起

虎疆无人机24公里续航入门航拍8K高清专业GPS一键返航无刷电机智能自动避障碳纤维机身高端飞行器

虎疆无人机24公里续航入门航拍8K高清专业GPS一键返航无刷电机智能自动避障碳纤维机身高端飞行器

588元起

大疆(DJI)Mini 2 SE 迷你易拍一键起降自动返航 便携可折叠无人机航拍飞行器 31分钟续航时间 航拍无人机

大疆(DJI)Mini 2 SE 迷你易拍一键起降自动返航 便携可折叠无人机航拍飞行器 31分钟续航时间 航拍无人机

暂无报价

兽无人机 SG107max3航拍4K高清专业飞行相机自动返航GPS户外大型遥控飞机360智能避障多功能返航单电池 【三轴+GPS+单电池】

兽无人机 SG107max3航拍4K高清专业飞行相机自动返航GPS户外大型遥控飞机360智能避障多功能返航单电池 【三轴+GPS+单电池】

1339元起

道通智能 数据线

道通智能 数据线

50元起

LKTOP适用大疆御3充电器200w充电管家大功率三通道超快充Mavic 3系列充电器配件 御Mavic 3 系列200w三通道充电器

LKTOP适用大疆御3充电器200w充电管家大功率三通道超快充Mavic 3系列充电器配件 御Mavic 3 系列200w三通道充电器

919元起

兽无人机SG109pro无人机高清专业航拍智能高端成人小型长续航避障无刷电机遥控飞机玩具儿童 三电版【豪华配件包+免费换新】

兽无人机SG109pro无人机高清专业航拍智能高端成人小型长续航避障无刷电机遥控飞机玩具儿童 三电版【豪华配件包+免费换新】

239元起

兽无人机 四轴/多轴飞行器

兽无人机 四轴/多轴飞行器

309元起

虎疆8K无人机专业级高清航拍器18000米数字图传跟随高端50分钟长续航高级黑科技避障gps定位一键返航可追马蜂

虎疆8K无人机专业级高清航拍器18000米数字图传跟随高端50分钟长续航高级黑科技避障gps定位一键返航可追马蜂

588元起

虎疆专业级8K高清航拍器无人机18000米数字图传智能跟随高端50分钟长续航高级黑科技避障gps定位一键返航

虎疆专业级8K高清航拍器无人机18000米数字图传智能跟随高端50分钟长续航高级黑科技避障gps定位一键返航

799元起
0评论

当前文章无评论,是时候发表评论了
提示信息

取消
确认
评论举报

相关好价推荐
查看更多好价

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
33
扫一下,分享更方便,购买更轻松