From 07f0818ce781d8a98e194083ff3120a11c76131d Mon Sep 17 00:00:00 2001 From: YunHorn Technology Date: Wed, 20 Nov 2024 12:29:14 +0800 Subject: [PATCH] good maskoff_bitmap generated for floor layout barriers --- Core/Src/main.c | 1 - STM32CubeIDE/Release/WLE5CC_NODE_STS.elf | Bin 262156 -> 262532 bytes STS/Core/Inc/yunhorn_sts_sensors.h | 1 + STS/TOF/App/app_tof.c | 64 ++++++++++++++++++----- 4 files changed, 52 insertions(+), 14 deletions(-) diff --git a/Core/Src/main.c b/Core/Src/main.c index b01f0ea..90c0892 100644 --- a/Core/Src/main.c +++ b/Core/Src/main.c @@ -115,7 +115,6 @@ int main(void) MX_LoRaWAN_Init(); } - //MX_TOF_Process(); /* USER CODE BEGIN 2 */ diff --git a/STM32CubeIDE/Release/WLE5CC_NODE_STS.elf b/STM32CubeIDE/Release/WLE5CC_NODE_STS.elf index fdd85dc13f9cb7901d412982fb71fe088e36cd20..e32c6c9ce04b80bf42f7d573368965754725aed7 100644 GIT binary patch delta 48676 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 delta 48072 zcmb5Xd0bRw|NnnoXJ%kPR&fDA95zL9K|#eG5l0jhR8&lJOAAd6%eu9+!L7W@Oz)!| z_w>H48%qmCLfkFewcu7$OU+6Xb7@SIVV&RWeP#}G&3r%q{D#Njoag)fzTVel-IIo{l8M93`HT`rOds8smOut*Hyn&~4y*&fey^dTW85WPjHAWf-jA*l7E9UAEQU-I$@b z>g`^T{-ef#?L52QtOK=?|J%);w6`X}WU&5J!=i)Df!NwzL;ugI9E7cHH9;m_@sl?F z9fS3&a$~8%>LXuH4Cnsx--$8O?K-(l_l)M_>rMNm_!cLgvvNI;HCVr^lNWX`;49>t z-KX=J@~|HNkp5?rPxfdbeQA?_=+T*{%DSWl{2%g*NiXuJxN`M(ziBPd&+~8LoyTUvLB_6 z<$FlOdqRucMb)Lo@IA2^x{Z+aHdw=8!-nuZufFO%N7(@y`tw-b9~Ym=S+f2ndSY^}4?{}U>A#MWv%{V%i2kCVH$ZQVeX5L#o* zV8~W)wR(b41w`ZJ!96?1yx*7-&7zD&!PZ@ko$?bix1>#~EQ~SA#v)`WCP4PGzA3-e zvmaj|f88^Q%W^}{E_{ic&}&%aSGCBFvxq*ez5cA;ddj}@*<)2fse0?t6Y{!Vt=gyC zOy;0tsd{E&rCWVOfPeyFPh8qpETaejyZcWrm&G!{9ncPIXyJg;|*e=}s#Uj3`xFT=~)UEbb13N7?R@0jp8 z4bk~w$WZ4>)Mb(+OUP2;3xUYeSh=BhcS}`+gpz9A$f7%$g3WsC^@dL1z{a5BpkwR= zi)X0?!x*FJX4U93x#=_8YIdy3h!!#EIP`j!r?*Z;d(>Me*VwB+Zm?GmZnRfd*O3jg zet(oS88t*ailH5!KUOfTU|8cV=byYUCD8IEVp^?ZCJueO!xH{S940IJr=N4SDvsR$z-MpdL5tc~S7!y9R0C#cLh%H!K3PXE|Gj4-DWCU}Ig zG$g-SIWrmMetp`7fb8}1&OV)djr9(^SudaO z(>LyPy}``l|E^4q=4Kz%WmbK*wK(0q>7>X>eUrkXZSeh+&e`sDea_xC^DZj`_5+kN1Q`X0`nuD5=Clrg`9-lc{Sh7W_HxEySK-sTtuq+-;|iPdAd zF|l-2vED2d`J02Rbq#W_ev!|T7zs%WDwXqN(B0%|LDq)G;7lGHQNXMp*@CQIbpaVc z*0yy4nMhVzo9U7%$Qn^+uWnw;toj;mZL|kj1L~v9Xu8%;>YCa#WJfDdcpVd%k)^V{ zAZri#M8AptvfW_TS-05@={l<{$Mv7yaWV~V)~WXNRGoDO{&$|1Ld~hb-i}96T>m

9U3?AiWT`fO5C@y3I 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 diff --git a/STS/Core/Inc/yunhorn_sts_sensors.h b/STS/Core/Inc/yunhorn_sts_sensors.h index 3d3f5e1..4c411a4 100644 --- a/STS/Core/Inc/yunhorn_sts_sensors.h +++ b/STS/Core/Inc/yunhorn_sts_sensors.h @@ -320,6 +320,7 @@ void STS_PRESENCE_SENSOR_Function_Test_Process(uint8_t *self_test_result, uint8_ void STS_PRESENCE_SENSOR_Distance_Measure_Process(void); void STS_TOF_L8_Process(void); +void STS_TOF_L8_Reconfig(void); void STS_LMZ_Ambient_Height_Scan_Process(void); void STS_FHMOS_sensor_read(sts_fhmos_sensor_data_t *sts_fhmos_data); void STS_FHMOS_sensor_config_init(void); diff --git a/STS/TOF/App/app_tof.c b/STS/TOF/App/app_tof.c index 67556c6..80496c8 100644 --- a/STS/TOF/App/app_tof.c +++ b/STS/TOF/App/app_tof.c @@ -28,7 +28,7 @@ extern "C" { #include "sys_app.h" #include #include "usart.h" - +#include #if (defined(STS_P2)||defined(STS_T6)) #include "VL53L1X_api.h" #elif defined(L8) @@ -37,9 +37,11 @@ extern "C" { #include "yunhorn_sts_sensors.h" volatile uint8_t fhmos_fall=0, fhmos_human_movement=0, fhmos_occupancy=0, fhmos_sos_alarm=0; volatile uint32_t fhmos_fall_counter=0; +volatile uint32_t sts_low_threshold, sts_high_threshold; volatile sts_fhmos_sensor_data_t sts_fhmos_data; volatile sts_fhmos_sensor_config_t sts_fhmos_cfg; volatile sts_fhmos_sensor_ambient_height_t sts_fhmos_bg={0x0}; +volatile uint8_t mask_bitmap[8]={0x0}; extern volatile uint16_t sts_sensor_install_height; //in mm #endif #include "stm32wlxx_nucleo.h" @@ -162,7 +164,7 @@ void MX_TOF_Init(void) void STS_LMZ_Ambient_Height_Scan_Process(void) { - uint8_t i=0; + uint8_t i=0, repeat=1; uint32_t range_distance =0; for (i=0; i<64; i++) @@ -172,7 +174,12 @@ void STS_LMZ_Ambient_Height_Scan_Process(void) } // printf("sts sensor install height = %4d \r\n", (int)sts_sensor_install_height); - for (uint8_t k=0; k<10; k++) + + sts_high_threshold=sts_sensor_install_height; + sts_low_threshold=sts_sensor_install_height-1400; + STS_TOF_L8_Reconfig(); + //printf("%c[2H", 27); /* clear screen */ + for (uint8_t k=0; k range_distance) + //if (sts_sensor_install_height > range_distance) sts_fhmos_bg.h2cm[i] += ((uint32_t)sts_sensor_install_height - range_distance); + if (abs(sts_fhmos_bg.h2cm[i])<100){ + sts_fhmos_bg.maskoff[i] = 0; + } else { + sts_fhmos_bg.maskoff[i] = 1; + mask_bitmap[i/8] |= 1<<(7-i%8); + } + + if (i%8==0) printf("\r\n"); printf("|%4d %4d ", range_distance, sts_fhmos_bg.h2cm[i]); - if (i%8==0) printf("\r\n"); + } else { sts_fhmos_bg.h2cm[i] += 0; @@ -197,16 +212,11 @@ void STS_LMZ_Ambient_Height_Scan_Process(void) } for (i=0; i<64; i++) { - sts_fhmos_bg.h2cm[i] /= 10; - if (fabs(sts_sensor_install_height - sts_fhmos_bg.h2cm[i]) <500) { - sts_fhmos_bg.maskoff[i] = 0; - } else { - sts_fhmos_bg.maskoff[i] = 1; - } - - printf("|%d ", (uint32_t)sts_fhmos_bg.maskoff[i]); if (i%8==0) printf("\r\n"); + printf("|%d ", (uint8_t)sts_fhmos_bg.maskoff[i]); } + for (i=0; i<8; i++) + printf("%02X\r\n",mask_bitmap[i]); } @@ -308,6 +318,12 @@ void STS_TOF_L8_Process(void) } } +void STS_TOF_L8_Reconfig(void) +{ + MX_53L8A1_ThresholdDetection_ConfigIT(sts_low_threshold, sts_high_threshold); +} + + /* VL53L8A1 */ static void MX_53L8A1_ThresholdDetection_Init(void) { @@ -336,6 +352,28 @@ static void MX_53L8A1_ThresholdDetection_Init(void) } } +void MX_53L8A1_ThresholdDetection_ConfigIT(uint32_t low_threshold, uint32_t high_threshold) +{ + + RANGING_SENSOR_ITConfig_t ITConfig; + + status = VL53L8A1_RANGING_SENSOR_Stop(VL53L8A1_DEV_CENTER); + + /* threshold parameters */ + ITConfig.Criteria = RS_IT_IN_WINDOW; + ITConfig.LowThreshold = low_threshold; /* mm */ + ITConfig.HighThreshold = high_threshold; /* mm */ + + VL53L8A1_RANGING_SENSOR_ConfigIT(VL53L8A1_DEV_CENTER, &ITConfig); + + status = VL53L8A1_RANGING_SENSOR_Start(VL53L8A1_DEV_CENTER, RS_MODE_ASYNC_CONTINUOUS); + + if (status != BSP_ERROR_NONE) + { + printf("VL53L8A1_RANGING_SENSOR_Start failed\n"); + while (1); + } +} static void MX_53L8A1_ThresholdDetection_Process(void) {