diff --git a/CMakeLists.txt b/CMakeLists.txt index 4c8dcc1..f228a1d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,9 +4,9 @@ include(cmake/toolchain.cmake) project(xlsw_3dp_ultrasonic_300K) set(POWER_VOLTAGE "12V") -set(VERSION_MAJOR 0) -set(VERSION_MINOR 1) -set(VERSION_PATCH 14) +set(VERSION_MAJOR 1) +set(VERSION_MINOR 0) +set(VERSION_PATCH 0) set(VERSION "V${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}") string(TIMESTAMP CURRENT_DATE "%Y-%m-%d") diff --git a/README.md b/README.md index 64890e3..e32a538 100644 --- a/README.md +++ b/README.md @@ -2,15 +2,27 @@ ## 传感器数据传输与样式 -- USART +- RS485 - baudrate 115200 - 8N1 +- 命令格式 + - `M1` 读取超声距离数据 + - `M2` 读取红外温度数据 + - 数据格式 -```cap_val:183 Distance: 7361 Temp:2735``` - - cap_val:183 超声死区外的ToF数据 - - Distance: 7361 距离数据,100倍mm距离值 - - Temp:2735 温度数据,100倍摄氏度值 + - 超声 (uint16_t) + - 有效值:`M1: 8772` 88.72mm + - 最小值:`M1: 4250` 42.50mm + - 最大值:`M1: 13005` 130.05mm + - 红外 (int) + - 有效值:`M2: 2225` 22.25℃ + - 最小值:`M2: -4000` -40.00℃ + - 最大值:`M2: 8500` 85.00℃ +- 数据获取间隔 + - 超声波:500ms + - 红外:500ms + ## 供电与数据 @@ -31,9 +43,7 @@ 1. XLSW_US-IR_FW: 表示该项目为300K模拟超声波测距与IR非接触式测温方案的MCU固件 2. 12V: 表示目前编译固件为12V供电情况下优化的校正参数,建议与实际对应,这样可以获得更好的测距准确度 3. 2024-x-x: 表示编译日期 - - - +- 请注意,如果需要修改供电电压,请同时修改以上两个地方,否则可能会导致供电电压不匹配的问题。 ## TODO List @@ -59,8 +69,8 @@ - [x] 配置IIC接口到PF0/1 - [x] 移植读取目标温度的函数 - [ ] 设置不同反射率下的校准 -- [ ] 读取环境温度 +- [x] 读取环境温度 ### 条件编译 -- [ ] 自动判断某一个条件编译是否开启,并在CmakeList中添加对应选项,输出文件时加以标识 \ No newline at end of file +- [x] 自动判断某一个条件编译是否开启,并在CmakeList中添加对应选项,输出文件时加以标识 \ No newline at end of file diff --git a/inc/mlx90614.h b/inc/mlx90614.h index c4138dc..4230eb0 100644 --- a/inc/mlx90614.h +++ b/inc/mlx90614.h @@ -27,6 +27,6 @@ /* this function configures I2C Peripheral & GPIO AF for I2C */ void MLX90614_I2CConfig(void); /* this function reads object temperature */ -uint16_t MLX90614_GetObjectTemperature(void); +int MLX90614_GetObjectTemperature(void); #endif //MLX90614_H diff --git a/src/RS485.c b/src/RS485.c index afccdb5..993e5a2 100644 --- a/src/RS485.c +++ b/src/RS485.c @@ -12,15 +12,15 @@ #define BUFSIZE 8 extern uint16_t g_distance_uint16; -extern uint16_t g_temperature_uint16; +extern int g_temperature_int; void process_command(char *cmd) { if (strncmp(cmd, "M1", 2) == 0) { - printf("M1 -=-=- OK!\r\n"); + // printf("M1 -=-=- OK!\r\n"); printf("Distance: %d\r\n", g_distance_uint16); } else if (strncmp(cmd, "M2", 2) == 0) { - printf("M2 -=-=- OK!\r\n"); - printf("Temperature: %d\r\n", g_temperature_uint16); + // printf("M2 -=-=- OK!\r\n"); + printf("Temperature: %d\r\n", g_temperature_int); // } else if (strncmp(cmd, "M3", 2) == 0) { // char *param_str = cmd + 2; // Skip "M3" // int param = atoi(param_str + 1); // Skip "S" and convert to integer diff --git a/src/main.c b/src/main.c index ea21744..64bd640 100644 --- a/src/main.c +++ b/src/main.c @@ -15,7 +15,7 @@ extern uint32_t g_capture_value; uint16_t g_distance_uint16; -uint16_t g_temperature_uint16; +int g_temperature_int; /*! \brief main function @@ -37,11 +37,11 @@ int main(void) /* ---------- debug end ---------- */ - printf("\r\n"); - printf("XLSW-3DP-UltraSonic Analog 300K! V0.1.14\r\n"); - printf("\r\n"); - - delay_ms(2000); + // printf("\r\n"); + // printf("XLSW-3DP-UltraSonic Analog 300K! V0.1.14\r\n"); + // printf("\r\n"); + // + // delay_ms(2000); while (1) { @@ -58,7 +58,7 @@ int main(void) // printf(result, distance_uint16); // printf("Temp:%d\n", MLX90614_GetObjectTemperature()); - g_temperature_uint16 = MLX90614_GetObjectTemperature(); + g_temperature_int = MLX90614_GetObjectTemperature(); } } diff --git a/src/mlx90614.c b/src/mlx90614.c index e2af93a..d8c5b4d 100644 --- a/src/mlx90614.c +++ b/src/mlx90614.c @@ -39,9 +39,9 @@ void MLX90614_I2CConfig(void) { * @param[out] temp_raw: object temperature * @retval None */ -uint16_t MLX90614_GetObjectTemperature(void) { +int MLX90614_GetObjectTemperature(void) { uint8_t data[3] = {0}; - uint16_t temp_raw = 0; + int temp_raw = 0; uint16_t timeout = 0; i2c_ack_config(IR_I2C, I2C_ACK_ENABLE);