项目(一)ES32获取mpu9250数据网页交互显示

教程 https://www.hackster.io/donowak/esp32-mpu9250-3d-orientation-visualisation-467dc1

项目地址 https://github.com/DominikN/ESP32-MPU9250-web-view/blob/master/html.h

硬件地址

ESP32 <-> MPU9250

P22   <-> SCL
P21   <-> SDA
P19   <-> INT

GND   <-> GND

版型1(中国深圳常买到)

版型2(日本开发板)

https://www.switch-science.com/catalog/3210

电路图

https://s3-ap-northeast-1.amazonaws.com/switch-science.public/schematic/ESPr_Developer_32/ESPr_Developer_32.pdf

软件

配置Arduino IDE

要运行该项目,首先需要配置Arduino IDE:

1.为ESP32安装Husarnet软件包:

  • 打开 File -> Preferences
  • 在字段中,其他Board Manager URL 添加以下链接:https://files.husarion.com/arduino/package_esp32_index.json
  • 打开 Tools -> Board: ... -> Boards Manager ...
  • 搜索 esp32-husarnet by Husarion
  • 单击安装按钮

2.选择ESP32开发板:

  • 打开 Tools -> Board
  • 选择“ESP32 Arduino(Husarnet)”部分下的ESP32开发模块

3.安装ArduinoJson库:(可不安装)

  • 打开 Tools -> Manage Libraries...
  • 搜索 ArduinoJson
  • 选择版本 5.13.3
  • 单击安装按钮

4.安装arduinoWebSockets库(Husarnet fork):(可不安装)

  • 下载https://github.com/husarnet/arduinoWebSockets作为ZIP文件(这是由Links2004(Markus)提供的arduinoWebSockets的Husarnet兼容分支)
  • 打开Sketch -> Include Library -> Add .ZIP Library ...选择刚下载的arduinoWebSockets-master.zip 文件,然后单击打开按钮

5.安装SparkFun_MPU-9250-DMP_Arduino_Library:(必须安装)

基本读取示例

/************************************************************
MPU9250_Basic
 Basic example sketch for MPU-9250 DMP Arduino Library
Jim Lindblom @ SparkFun Electronics
original creation date: November 23, 2016
https://github.com/sparkfun/SparkFun_MPU9250_DMP_Arduino_Library

This example sketch demonstrates how to initialize the
MPU-9250, and stream its sensor outputs to a serial monitor.

Development environment specifics:
Arduino IDE 1.6.12
SparkFun 9DoF Razor IMU M0

Supported Platforms:
- ATSAMD21 (Arduino Zero, SparkFun SAMD21 Breakouts)
*************************************************************/
#include <SparkFunMPU9250-DMP.h>

#define SerialPort Serial

MPU9250_DMP imu;

void setup()
{
  SerialPort.begin(115200);

  // Call imu.begin() to verify communication with and
  // initialize the MPU-9250 to it‘s default values.
  // Most functions return an error code - INV_SUCCESS (0)
  // indicates the IMU was present and successfully set up
  if (imu.begin() != INV_SUCCESS)
  {
    while (1)
    {
      SerialPort.println("Unable to communicate with MPU-9250");
      SerialPort.println("Check connections, and try again.");
      SerialPort.println();
      delay(5000);
    }
  }

  // Use setSensors to turn on or off MPU-9250 sensors.
  // Any of the following defines can be combined:
  // INV_XYZ_GYRO, INV_XYZ_ACCEL, INV_XYZ_COMPASS,
  // INV_X_GYRO, INV_Y_GYRO, or INV_Z_GYRO
  // Enable all sensors:
  imu.setSensors(INV_XYZ_GYRO | INV_XYZ_ACCEL | INV_XYZ_COMPASS);

  // Use setGyroFSR() and setAccelFSR() to configure the
  // gyroscope and accelerometer full scale ranges.
  // Gyro options are +/- 250, 500, 1000, or 2000 dps
  imu.setGyroFSR(2000); // Set gyro to 2000 dps
  // Accel options are +/- 2, 4, 8, or 16 g
  imu.setAccelFSR(2); // Set accel to +/-2g
  // Note: the MPU-9250‘s magnetometer FSR is set at
  // +/- 4912 uT (micro-tesla‘s)

  // setLPF() can be used to set the digital low-pass filter
  // of the accelerometer and gyroscope.
  // Can be any of the following: 188, 98, 42, 20, 10, 5
  // (values are in Hz).
  imu.setLPF(5); // Set LPF corner frequency to 5Hz

  // The sample rate of the accel/gyro can be set using
  // setSampleRate. Acceptable values range from 4Hz to 1kHz
  imu.setSampleRate(10); // Set sample rate to 10Hz

  // Likewise, the compass (magnetometer) sample rate can be
  // set using the setCompassSampleRate() function.
  // This value can range between: 1-100Hz
  imu.setCompassSampleRate(10); // Set mag rate to 10Hz
}

void loop()
{
  // dataReady() checks to see if new accel/gyro data
  // is available. It will return a boolean true or false
  // (New magnetometer data cannot be checked, as the library
  //  runs that sensor in single-conversion mode.)
  if ( imu.dataReady() )
  {
    // Call update() to update the imu objects sensor data.
    // You can specify which sensors to update by combining
    // UPDATE_ACCEL, UPDATE_GYRO, UPDATE_COMPASS, and/or
    // UPDATE_TEMPERATURE.
    // (The update function defaults to accel, gyro, compass,
    //  so you don‘t have to specify these values.)
    imu.update(UPDATE_ACCEL | UPDATE_GYRO | UPDATE_COMPASS);
    printIMUData();
  }
}

void printIMUData(void)
{
  // After calling update() the ax, ay, az, gx, gy, gz, mx,
  // my, mz, time, and/or temerature class variables are all
  // updated. Access them by placing the object. in front:

  // Use the calcAccel, calcGyro, and calcMag functions to
  // convert the raw sensor readings (signed 16-bit values)
  // to their respective units.
  float accelX = imu.calcAccel(imu.ax);
  float accelY = imu.calcAccel(imu.ay);
  float accelZ = imu.calcAccel(imu.az);
  float gyroX = imu.calcGyro(imu.gx);
  float gyroY = imu.calcGyro(imu.gy);
  float gyroZ = imu.calcGyro(imu.gz);
  float magX = imu.calcMag(imu.mx);
  float magY = imu.calcMag(imu.my);
  float magZ = imu.calcMag(imu.mz);

  SerialPort.println("Accel: " + String(accelX) + ", " +
              String(accelY) + ", " + String(accelZ) + " g");
  SerialPort.println("Gyro: " + String(gyroX) + ", " +
              String(gyroY) + ", " + String(gyroZ) + " dps");
  SerialPort.println("Mag: " + String(magX) + ", " +
              String(magY) + ", " + String(magZ) + " uT");
  SerialPort.println("Time: " + String(imu.time) + " ms");
  SerialPort.println();
}

  

更多程序

http上传程序

原文地址:https://www.cnblogs.com/kekeoutlook/p/11029447.html

时间: 2024-10-25 14:44:37

项目(一)ES32获取mpu9250数据网页交互显示的相关文章

项目(一)ES32获取mpu9250数据网页交互显示 (程序1) esp32获取mpu9250数据

. . /************************************************************ MPU9250_Basic Basic example sketch for MPU-9250 DMP Arduino Library Jim Lindblom @ SparkFun Electronics original creation date: November 23, 2016 https://github.com/sparkfun/SparkFun_M

[iOS微博项目 - 2.6] - 获取微博数据

github: https://github.com/hellovoidworld/HVWWeibo   A.新浪获取微博API 1.读取微博API 2.“statuses/home_timeline”接口 B.在app中获取微博数据 1.在“首页”控制器发送请求,获取json数据 1 /** 加载微博数据 */ 2 - (void) loadWeiboData { 3 // 创建AFNetworking的http操作中管理器 4 AFHTTPRequestOperationManager *m

项目中表中每条数据的序号显示自增的方法

一:如果用的是smarty模板 smarty有一个内置函数,用在{[email protected]}记录页面显示的条数 iteration是当前循环的次数,和index不同,iteration是从1开始.iteration在每次循环的时候都会加一 二:利用分页$i = ($page-1)*$per  echo  "<td>".++$i."</td>"; 序号初值 = (页号-1)*每页行数+1

kinect获取深度数据并显示

在上述深度帧获取的基础上,利用unity的Mesh组件,将深度帧显示出来. 工具为Unity5.6.Kinect开发包KinectForWindows_UnityPro_2.0.1410 首先讲一个Mesh的应用 Mesh有多种方式实现,这里只用最简单的,通过设定顶点组成三角形集合的方式,主要工作是设定三个属性: ①  vertices,顶点集合,Vector3类型,一般为所要显示的像素坐标集合,这里为深度帧每个像素的坐标值,其中z为深度值. 注意:Unity中顶点数量不能超过65000个. ②

用非GUI模式执行测试,[email&#160;protected] - PerfMon Metrics Collector会出现无法获取正确数据的解决办法

用非GUI模式执行测试,[email protected] - PerfMon Metrics Collector会出现无法获取正确数据(实际显示的是Response Times Over Time),解决办法:在GUI模式下,给[email protected] - PerfMon Metrics Collector指定一个已经存在的.jtl文件用于保存数据,如下图.然后非GUI模式执行测试后,打开该.jtl文件即可获得相应的数据.

iOS项目开发实战——获取网页源代码的二进制数据

我在上一篇博客<iOS项目开发实战--iOS网络编程获取网页Html源代码>中讲述了如何获取一个网页的HTML源代码,可以满足一定的需求.但是由于特殊原因,我们想获取的是一个网页的二进制数据,那么应该怎么办呢? 具体实现如下: (1)创建一个iOS项目,Language选择Swift,然后在ViewController.swift 中写入如下代码: override func viewDidLoad() { super.viewDidLoad() var data = NSData(conte

项目中需要将获取的数据按照顺序读取并且展示

1 项目中需要将获取的数据按照顺序读取并且展示的时候的实例, 2 下面截图是将获取到的小区的照片.按照获取的顺序同步到ES 搜索服务器上 3 用到的JSON包是alibaba.fastjson包,此包可以将获取的数据存放在指定的集合中,在此项目中就是定义了LinkedHashMap

WEB页获取串口数据

最近做一个B/S的项目,需要读取电子秤的值,之前一直没做过,也没有经验,于是在网上找到很多  大致分两种 使用ActiveX控件,JS调用MSCOMM32.dll的串口控件对串口进行控制 使用C#语言的控件对串口进行控制,然后使用JS+AJAX与C#进行交互获得串口数据 详情见  使用JS获得串口数据 http://blog.csdn.net/xuing/article/details/6688306    但是小弟用这两种办法都获取到数据 串口配置如下: 1 serialPort1.PortN

跨域获取服务器数据方式

学习AJAX跨域获取数据碰到这个问题,特此记录. 理解跨域首先必须要了解同源策略.同源策略是浏览器上为安全性考虑实施的非常重要的安全策略. 同源是什么?URL由协议.域名.端口和路径组成,如果两个URL的协议.域名和端口相同,则表示他们同源. 为什么需要同源? 假设从一个恶意网站打开支付宝或其他重要的页面(通过window.open),如果没有同源限制,恶意网页上的javascript脚本就可以任意操作你打开的支付宝等网页,这是极其危险的. 由于同源策略的限制,XmlHttpRequest只允许