zoukankan      html  css  js  c++  java
  • 项目(1-2)ES32获取mpu9250传入数据库

     报一个错,找不到min函数

    #define min(X,Y) ((X) < (Y) ? (X) : (Y))
    

    手动添加

     

     之后不报错了

     

    、最原始的采集

    /************************************************************
    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 | UPDATE_TEMP);
        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);
     // long imu_temperature=imu.temperature;
      
      SerialPort.println();
      SerialPort.print("Time: " + String(imu.time) + " ms");
      SerialPort.print("Accel: " + String(accelX) + ", " +
                  String(accelY) + ", " + String(accelZ) + " g");
      SerialPort.print("  ");
      SerialPort.print("Gyro: " + String(gyroX) + ", " +
                  String(gyroY) + ", " + String(gyroZ) + " dps");
      SerialPort.print("  ");
      SerialPort.print("Mag: " + String(magX) + ", " +
                  String(magY) + ", " + String(magZ) + " uT");
      SerialPort.print("  ");
    //  SerialPort.print("temperature: " +imu_temperature);
    }
    

      

    增加数据库交互,增加wifi连接

    修改自己的数据库地址

    #include <Arduino.h>
    
    #include <WiFi.h>
    #include <WiFiMulti.h>
    
    #include <HTTPClient.h>
    
    
    #include <SparkFunMPU9250-DMP.h>
    
    
    #define USE_SERIAL Serial
    #define SerialPort Serial
    
    WiFiMulti wifiMulti;
    
    MPU9250_DMP imu;
    
    
    const char* ssid     = "love";
    const char* password = "love123456";
    
    // 1 WIFI连接初始化
    void wifi_int(){
        USE_SERIAL.println();
        USE_SERIAL.println();
        USE_SERIAL.println();
    
        WiFi.begin(ssid, password);
        while (WiFi.status() != WL_CONNECTED) {
            delay(500);
            Serial.print(".");
        }
    
        Serial.println("");
        Serial.println("WiFi connected.");
        Serial.println("IP address: ");
        Serial.println(WiFi.localIP());
        
     //   wifiMulti.addAP("love", "love123456");
      }
    
    // 2 传感器初始化
     void IMU_int(){
       // 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
      
      
      }
    
    
    
    
    
    //3 发送数据给服务器 数据库
    void send_imu_http(float accelX,float accelY , float accelZ, float gyroX , float gyroY, float gyroZ,float magX,float magY,float magZ,float imu_temperature){
            HTTPClient http;
            USE_SERIAL.print("[HTTP] begin...
    ");
           // String http_msg="http://45.76.105.89/IMU/msql_inset.php?ax=1.0&ay=2.0&az=3.0&gx=4.0&gy=5.0&gz=6.0&mx=7.0&my=8.0&mz=9.0&temperature=10.0"; 
    
           // -1 修改自己的服务器
              String http_msg=String("")+"http://45.76.105.89/IMU/msql_inset.php?"
                             +"ax="+accelX+"&ay="+accelY+"&az="+accelZ
                            +"&gx="+gyroX+"&gy="+gyroY+"&gz="+ gyroZ
                            +"&mx="+magX+"&my="+magY+"&mz="+magZ
                            +"&temperature="+imu_temperature; 
              
            http.begin(http_msg); //HTTP
            USE_SERIAL.print("[HTTP] GET...
    ");
            // start connection and send HTTP header
            int httpCode = http.GET();
            // httpCode will be negative on error
            if(httpCode > 0) {
                // HTTP header has been send and Server response header has been handled
                USE_SERIAL.printf("[HTTP] GET... code: %d
    ", httpCode);
    
                // file found at server
                if(httpCode == HTTP_CODE_OK) {
                    String payload = http.getString();
                    USE_SERIAL.println(payload);
                }
            } else {
                USE_SERIAL.printf("[HTTP] GET... failed, error: %s
    ", http.errorToString(httpCode).c_str());
            }
            http.end();
      
      }
    
      
    // 4 主函数 初始化
    void setup() {
    
        USE_SERIAL.begin(115200);//串口初始化
    
        wifi_int();// wifi连接初始化
    
        IMU_int();// 传感器初始化 mpu9250
    
    }
    
    // 5 主函数 无限循环
    void loop() {
    
     delay(9000);// 延迟9秒  程序运行约1秒 加起来10秒循环一次
    
    // 读取传感器数据
     if ( imu.dataReady() )
      {
       imu.update(UPDATE_ACCEL | UPDATE_GYRO | UPDATE_COMPASS | UPDATE_TEMP);// 
    
    // 原始数据转换
      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();
      SerialPort.print("Time: " + String(imu.time) + " ms");
      SerialPort.print("Accel: " + String(accelX) + ", " +
                  String(accelY) + ", " + String(accelZ) + " g");
      SerialPort.print("  ");
      SerialPort.print("Gyro: " + String(gyroX) + ", " +
                  String(gyroY) + ", " + String(gyroZ) + " dps");
      SerialPort.print("  ");
      SerialPort.print("Mag: " + String(magX) + ", " +
                  String(magY) + ", " + String(magZ) + " uT");
      SerialPort.print("  ");
    //  SerialPort.print("temperature: " +imu_temperature);
    
    //发送给服务器数据库
      send_imu_http(accelX,accelY,accelZ,gyroX,gyroY,gyroZ,magX,magY,magZ,23.5);
      }
      
         
    
    }
    

      

    数据库php代码

    <?php
    
    //   http://45.76.105.88/IMU/msql_inset.php?ax=1.0&ay=2.0&az=3.0&gx=4.0&gy=5.0&gz=6.0&mx=7.0&my=8.0&mz=9.0&temperature=10.0
     echo "设备请求插入新数据:<br>";
    // 1获取请求参数
    echo "服务器时间:".date('Y-m-d H:i:s')."<br>";// 当前时间
    
    echo "加速度   ";
    echo "ax:   ";echo $_GET["ax"]."    ";// 
    echo "ay:   ";echo $_GET["ay"]."    ";// 
    echo "az:   ";echo $_GET["az"]."    ";// 
    
    echo "陀螺仪   ";
    echo "gx:   ";echo $_GET["gx"]."    ";// 
    echo "gy:   ";echo $_GET["gy"]."    ";// 
    echo "gz:   ";echo $_GET["gz"]."    ";// 
    
    echo "磁力计   ";
    echo "mx:   ";echo $_GET["mx"]."    ";// 
    echo "my:   ";echo $_GET["my"]."    ";// 
    echo "mz:   ";echo $_GET["mz"]."    ";// 
    
    echo "温度   ";
    echo $_GET["temperature"];
    
    echo "<br>";
    
    // 2交互数据库
    
    // 2-1连接
    $servername = "localhost";
    $username = "root";
    $password = "root";
    $dbname = "IMU";// 数据库
    $tablename = "IMU";// 数据库
    //创建数据库连接
    $conn = new mysqli($servername, $username, $password, $dbname);
    //检测是否连接成功
    if ($conn->connect_error) {
        die("数据库连接失败: " . $conn->connect_error."<br>");
    }
    echo "数据库连接成功<br> ";
    
    // 2-2插入
    
    
    $sql="INSERT INTO ".$tablename." (ax,ay,az,gx,gy,gz,mx,my,mz,temperature) VALUES (".$_GET["ax"].",".$_GET["ay"].",".$_GET["az"].",".$_GET["gx"].",".$_GET["gy"].",".$_GET["gz"].",".$_GET["mx"].",".$_GET["my"].",".$_GET["mz"].",".$_GET["temperature"].");";
    
    if ($conn->query($sql) === TRUE) {
        echo "新记录插入成功" . "<br>";
    } else {
        echo "数据库插入失败: " . $sql . "<br>" . $conn->error;
    }
     
    
    
    
    
    
    
    // 2-4关闭结束
    
    $conn->close();
    //echo "数据库关闭<br>";
    
    ?>
    

      

  • 相关阅读:
    在页面跳转的时候,在跳转后的页面中使用js 获取到 页面跳转的url中携带的参数。
    使用js处理后台返回的Date类型的数据
    java后端时间处理工具类,返回 "XXX 前" 的字符串
    前端分页神器,jquery grid的使用(前后端联调),让分页变得更简单。
    后端分页神器,mybatis pagehelper 在SSM与springboot项目中的使用
    使用SSM 或者 springboot +mybatis时,对数据库的认证信息(用户名,密码)进行加密。
    swagger2 常用注解的使用
    SSM项目 以及 springboot 中引入swagger2的方法
    jquery grid 获取选中的行的数据,以及获取所有行的方法
    关于使用ssm与spring时,配置tomcat 虚拟目录( doBase )中的一些坑
  • 原文地址:https://www.cnblogs.com/kekeoutlook/p/11032862.html
Copyright © 2011-2022 走看看