mirror of
https://github.com/Mercantec-GHC/h5-projekt-mst.git
synced 2026-08-27 05:37:39 +02:00
extract mpu
This commit is contained in:
parent
336df77969
commit
da33911aa3
@ -1,5 +1,5 @@
|
|||||||
idf_component_register(
|
idf_component_register(
|
||||||
SRCS skateboard.c wifi.c
|
SRCS skateboard.c app_wifi.c app_mpu.c
|
||||||
PRIV_REQUIRES nvs_flash esp_wifi
|
PRIV_REQUIRES nvs_flash esp_wifi
|
||||||
INCLUDE_DIRS ".")
|
INCLUDE_DIRS ".")
|
||||||
|
|
||||||
|
|||||||
71
skateboard/main/app_mpu.c
Normal file
71
skateboard/main/app_mpu.c
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
#include "app_mpu.h"
|
||||||
|
#include "esp_log.h"
|
||||||
|
#include "mpu6050.h"
|
||||||
|
|
||||||
|
extern const char* TAG;
|
||||||
|
|
||||||
|
#ifdef CONFIG_MPU6050_I2C_ADDRESS_LOW
|
||||||
|
#define MPU6050_I2C_ADDRESS MPU6050_I2C_ADDRESS_LOW
|
||||||
|
#else
|
||||||
|
#define MPU6050_I2C_ADDRESS MPU6050_I2C_ADDRESS_HIGH
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define MPU6050_SDA_GPIO CONFIG_MPU6050_SDA_GPIO
|
||||||
|
#define MPU6050_SCL_GPIO CONFIG_MPU6050_SCL_GPIO
|
||||||
|
|
||||||
|
void app_mpu_init(AppMpu* mpu)
|
||||||
|
{
|
||||||
|
ESP_ERROR_CHECK(i2cdev_init());
|
||||||
|
|
||||||
|
ESP_ERROR_CHECK(mpu6050_init_desc(
|
||||||
|
&mpu->dev, MPU6050_I2C_ADDRESS, 0, MPU6050_SDA_GPIO, MPU6050_SCL_GPIO));
|
||||||
|
ESP_LOGI(TAG,
|
||||||
|
"Initializing MPU6050 device. Address: 0x%02x, SDA %d, SCL: %d",
|
||||||
|
MPU6050_I2C_ADDRESS,
|
||||||
|
MPU6050_SDA_GPIO,
|
||||||
|
MPU6050_SCL_GPIO);
|
||||||
|
|
||||||
|
int retries = 0;
|
||||||
|
while (true) {
|
||||||
|
esp_err_t res = i2c_dev_probe(&mpu->dev.i2c_dev, I2C_DEV_WRITE);
|
||||||
|
if (res == ESP_OK) {
|
||||||
|
ESP_LOGI(TAG, "Found MPU6050 device");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (retries >= 5) {
|
||||||
|
ESP_ERROR_CHECK(res);
|
||||||
|
}
|
||||||
|
ESP_LOGE(TAG, "MPU6050 not found. Retrying (%d/%d)", retries + 1, 5);
|
||||||
|
retries += 1;
|
||||||
|
vTaskDelay(pdMS_TO_TICKS(1000));
|
||||||
|
}
|
||||||
|
|
||||||
|
ESP_ERROR_CHECK(mpu6050_init(&mpu->dev));
|
||||||
|
|
||||||
|
ESP_LOGI(TAG, "MPU6050 acceleration range: %d", mpu->dev.ranges.accel);
|
||||||
|
ESP_LOGI(TAG, "MPU6050 gyroscope range: %d", mpu->dev.ranges.gyro);
|
||||||
|
}
|
||||||
|
|
||||||
|
void app_mpu_read_acceleration(AppMpu* mpu, float* x, float* y, float* z)
|
||||||
|
{
|
||||||
|
mpu6050_acceleration_t acceleration = { 0 };
|
||||||
|
ESP_ERROR_CHECK(mpu6050_get_acceleration(&mpu->dev, &acceleration));
|
||||||
|
*x = acceleration.x;
|
||||||
|
*y = acceleration.y;
|
||||||
|
*z = acceleration.z;
|
||||||
|
}
|
||||||
|
|
||||||
|
void app_mpu_read_rotation(AppMpu* mpu, float* x, float* y, float* z)
|
||||||
|
{
|
||||||
|
mpu6050_rotation_t rotation = { 0 };
|
||||||
|
|
||||||
|
ESP_ERROR_CHECK(mpu6050_get_rotation(&mpu->dev, &rotation));
|
||||||
|
*x = rotation.x;
|
||||||
|
*y = rotation.y;
|
||||||
|
*z = rotation.z;
|
||||||
|
}
|
||||||
|
|
||||||
|
void app_mpu_read_temperature(AppMpu* mpu, float* degree_celsius)
|
||||||
|
{
|
||||||
|
ESP_ERROR_CHECK(mpu6050_get_temperature(&mpu->dev, degree_celsius));
|
||||||
|
}
|
||||||
12
skateboard/main/app_mpu.h
Normal file
12
skateboard/main/app_mpu.h
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "mpu6050.h"
|
||||||
|
|
||||||
|
typedef struct AppMpu {
|
||||||
|
mpu6050_dev_t dev;
|
||||||
|
} AppMpu;
|
||||||
|
|
||||||
|
void app_mpu_init(AppMpu* mpu);
|
||||||
|
void app_mpu_read_acceleration(AppMpu* mpu, float* x, float* y, float* z);
|
||||||
|
void app_mpu_read_rotation(AppMpu* mpu, float* x, float* y, float* z);
|
||||||
|
void app_mpu_read_temperature(AppMpu* mpu, float* degree_celsius);
|
||||||
@ -1,4 +1,4 @@
|
|||||||
#include "wifi.h"
|
#include "app_wifi.h"
|
||||||
#include "esp_log.h"
|
#include "esp_log.h"
|
||||||
#include "esp_wifi.h"
|
#include "esp_wifi.h"
|
||||||
#include "freertos/idf_additions.h"
|
#include "freertos/idf_additions.h"
|
||||||
@ -1,25 +1,17 @@
|
|||||||
|
#include "app_mpu.h"
|
||||||
|
#include "app_wifi.h"
|
||||||
#include "esp_log.h"
|
#include "esp_log.h"
|
||||||
#include "esp_wifi.h"
|
|
||||||
#include "freertos/idf_additions.h"
|
#include "freertos/idf_additions.h"
|
||||||
#include "i2cdev.h"
|
#include "i2cdev.h"
|
||||||
#include "mpu6050.h"
|
#include "mpu6050.h"
|
||||||
#include "nvs_flash.h"
|
#include "nvs_flash.h"
|
||||||
#include "wifi.h"
|
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
|
|
||||||
const char* TAG = "skateboard";
|
const char* TAG = "skateboard";
|
||||||
|
|
||||||
#ifdef CONFIG_MPU6050_I2C_ADDRESS_LOW
|
|
||||||
#define MPU6050_I2C_ADDRESS MPU6050_I2C_ADDRESS_LOW
|
|
||||||
#else
|
|
||||||
#define MPU6050_I2C_ADDRESS MPU6050_I2C_ADDRESS_HIGH
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define MPU6050_SDA_GPIO CONFIG_MPU6050_SDA_GPIO
|
|
||||||
#define MPU6050_SCL_GPIO CONFIG_MPU6050_SCL_GPIO
|
|
||||||
|
|
||||||
typedef struct App {
|
typedef struct App {
|
||||||
AppWifi wifi;
|
AppWifi wifi;
|
||||||
|
AppMpu mpu;
|
||||||
} App;
|
} App;
|
||||||
|
|
||||||
void app_main(void)
|
void app_main(void)
|
||||||
@ -43,60 +35,37 @@ void app_main(void)
|
|||||||
};
|
};
|
||||||
|
|
||||||
app_wifi_init(&app.wifi);
|
app_wifi_init(&app.wifi);
|
||||||
|
app_mpu_init(&app.mpu);
|
||||||
ESP_ERROR_CHECK(i2cdev_init());
|
|
||||||
|
|
||||||
mpu6050_dev_t mpu = { 0 };
|
|
||||||
|
|
||||||
ESP_ERROR_CHECK(mpu6050_init_desc(
|
|
||||||
&mpu, MPU6050_I2C_ADDRESS, 0, MPU6050_SDA_GPIO, MPU6050_SCL_GPIO));
|
|
||||||
ESP_LOGI(TAG,
|
|
||||||
"Initializing MPU6050 device. Address: 0x%02x, SDA %d, SCL: %d",
|
|
||||||
MPU6050_I2C_ADDRESS,
|
|
||||||
MPU6050_SDA_GPIO,
|
|
||||||
MPU6050_SCL_GPIO);
|
|
||||||
|
|
||||||
while (true) {
|
|
||||||
esp_err_t res = i2c_dev_probe(&mpu.i2c_dev, I2C_DEV_WRITE);
|
|
||||||
if (res == ESP_OK) {
|
|
||||||
ESP_LOGI(TAG, "Found MPU6050 device");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
ESP_LOGE(TAG, "MPU6050 not found");
|
|
||||||
vTaskDelay(pdMS_TO_TICKS(1000));
|
|
||||||
}
|
|
||||||
|
|
||||||
ESP_ERROR_CHECK(mpu6050_init(&mpu));
|
|
||||||
|
|
||||||
ESP_LOGI(TAG, "Acceleration range: %d", mpu.ranges.accel);
|
|
||||||
ESP_LOGI(TAG, "Gyroscope range: %d", mpu.ranges.gyro);
|
|
||||||
|
|
||||||
ESP_LOGI(TAG, "Initialized");
|
ESP_LOGI(TAG, "Initialized");
|
||||||
ESP_LOGI(TAG, "Free memory: %" PRIu32 " bytes", esp_get_free_heap_size());
|
ESP_LOGI(TAG, "Free memory: %" PRIu32 " bytes", esp_get_free_heap_size());
|
||||||
|
|
||||||
while (true) {
|
while (true) {
|
||||||
|
float accel_x;
|
||||||
|
float accel_y;
|
||||||
|
float accel_z;
|
||||||
|
app_mpu_read_acceleration(&app.mpu, &accel_x, &accel_y, &accel_z);
|
||||||
|
|
||||||
|
float rotation_x;
|
||||||
|
float rotation_y;
|
||||||
|
float rotation_z;
|
||||||
|
app_mpu_read_rotation(&app.mpu, &rotation_x, &rotation_y, &rotation_z);
|
||||||
|
|
||||||
float temp;
|
float temp;
|
||||||
mpu6050_acceleration_t accel = { 0 };
|
app_mpu_read_temperature(&app.mpu, &temp);
|
||||||
mpu6050_rotation_t rotation = { 0 };
|
|
||||||
|
|
||||||
ESP_ERROR_CHECK(mpu6050_get_temperature(&mpu, &temp));
|
|
||||||
ESP_ERROR_CHECK(mpu6050_get_motion(&mpu, &accel, &rotation));
|
|
||||||
|
|
||||||
ESP_LOGI(TAG,
|
ESP_LOGI(TAG,
|
||||||
"******************************************************************"
|
"Acceleration: x=% 7.2f y=% 7.2f z=% 7.2f "
|
||||||
"****");
|
"Rotation: x=% 7.1f y=% 7.1f z=% 7.1f "
|
||||||
ESP_LOGI(TAG,
|
"Temperature: % 2.1f",
|
||||||
"Acceleration: x=%.4f y=%.4f z=%.4f",
|
accel_x,
|
||||||
accel.x,
|
accel_y,
|
||||||
accel.y,
|
accel_z,
|
||||||
accel.z);
|
rotation_x,
|
||||||
ESP_LOGI(TAG,
|
rotation_y,
|
||||||
"Rotation: x=%.4f y=%.4f z=%.4f",
|
rotation_z,
|
||||||
rotation.x,
|
temp);
|
||||||
rotation.y,
|
|
||||||
rotation.z);
|
|
||||||
ESP_LOGI(TAG, "Temperature: %.1f", temp);
|
|
||||||
|
|
||||||
vTaskDelay(pdMS_TO_TICKS(100));
|
vTaskDelay(pdMS_TO_TICKS(200));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user