From 22aed14aa154eca200352b6a92c265979928094c Mon Sep 17 00:00:00 2001 From: YunHorn Technology <dp.s@yunhorn.com> Date: Mon, 8 Jan 2024 17:35:31 +0800 Subject: [PATCH] revised with env temperature --- Core/Src/yunhorn_sts_process.c | 3 +++ LoRaWAN/App/lora_app.c | 2 ++ mlx90640/mlx90640_lcd_display.c | 19 +++++++++---------- 3 files changed, 14 insertions(+), 10 deletions(-) diff --git a/Core/Src/yunhorn_sts_process.c b/Core/Src/yunhorn_sts_process.c index c4ae997..55f6979 100644 --- a/Core/Src/yunhorn_sts_process.c +++ b/Core/Src/yunhorn_sts_process.c @@ -59,6 +59,7 @@ volatile uint8_t sts_reed_hall_result =0; volatile uint8_t sts_water_leakage_result=0; volatile uint8_t sts_water_leakage_changed_flag=0; extern volatile uint8_t sensor_data_ready; +extern volatile float env_temperature; #ifdef YUNHORN_STS_O5_ENABLED #endif @@ -413,6 +414,8 @@ void STS_YunhornSTSEventP9_Process(void) { APP_LOG(TS_OFF, VLEVEL_L, "\r\n P9 Testing Process start\r\n"); //MX_I2C2_Init(); + env_temperature = (SYS_GetTemperatureLevel() >> 8); + mlx90640_display_init(); mlx90640_display_process(); } diff --git a/LoRaWAN/App/lora_app.c b/LoRaWAN/App/lora_app.c index f65b959..2c01a12 100644 --- a/LoRaWAN/App/lora_app.c +++ b/LoRaWAN/App/lora_app.c @@ -62,6 +62,7 @@ volatile uint32_t HeartBeatPeriodicity = 120000; //unit ms volatile uint8_t STS_LoRa_WAN_Joined = 0; #ifdef STS_TMG +volatile float env_temperature= 25.0; extern volatile uint8_t waterTempThreshold; extern volatile uint8_t humanTempThreshold; extern volatile uint8_t averageTempThreshold; @@ -818,6 +819,7 @@ static void SendTxData(void) //r0_data.battery_Pct = batteryLevel; //(uint8_t)(99*batteryLevel/254); // EnvSensors_Read(&sensor_data); +//env_temperature = (SYS_GetTemperatureLevel() >> 8); // APP_LOG(TS_ON, VLEVEL_M, "\r\nVDDA: %d\r\n", batteryLevel); // APP_LOG(TS_ON, VLEVEL_M, "\r\ntemp: %d\r\n", (int16_t)(sensor_data.temperature)); diff --git a/mlx90640/mlx90640_lcd_display.c b/mlx90640/mlx90640_lcd_display.c index 3db0d8c..e460df6 100644 --- a/mlx90640/mlx90640_lcd_display.c +++ b/mlx90640/mlx90640_lcd_display.c @@ -42,6 +42,7 @@ volatile float averageTemp=0.0f; volatile float averageTempInner=0.0f; volatile uint16_t waterSpillCount=0; extern volatile uint8_t sensor_data_ready; +extern volatile float env_temperature; char tempBuffer[256]; // variables for interpolated colors uint8_t red, green, blue; @@ -209,7 +210,7 @@ static void sortFocusAreas(void) { temp1 = (float)tempValues[(x) + (y*COL)]; - if ((temp1 + (float)(waterTempThreshold / 10.0)) < averageTemp ) // was max(averageTemp, normalWaterTemp)) + if ((temp1 + (float)(waterTempThreshold / 10.0)) < (float)env_temperature ) // was max(averageTemp, env_temperature)) { if (blackOutTag == 0) { zoneMask[y*COL+x] ++; @@ -221,7 +222,6 @@ static void sortFocusAreas(void) } } - } @@ -229,7 +229,7 @@ void STS_M1A_SENSOR_Read(STS_M1A_SensorDataTypeDef *m1a_data) { m1a_data->waterSpillCount = blackOutTag==0?waterSpillCount:0; - m1a_data->spillage_level = (uint8_t)((m1a_data->waterSpillCount)*99/560.0); //((ROW-2)*(COL-2))); // (24-4) * (32 -4) minus edge dots + m1a_data->spillage_level = (uint8_t)((m1a_data->waterSpillCount)*99/768.0); //((ROW-2)*(COL-2))); // (24-4) * (32 -4) minus edge dots m1a_data->averageTemp = averageTemp; m1a_data->averageTempInner = averageTempInner; m1a_data->centerTemp = centerTemp; @@ -257,8 +257,8 @@ void STS_M1A_SENSOR_Read(STS_M1A_SensorDataTypeDef *m1a_data) memcpy((void *)m1a_data->order, (const void *)order, sizeof(order)); memset(tempBuffer,0x0,sizeof(tempBuffer)); - sprintf(tempBuffer,(char *)"\r\n## Blackout=%u ######\n##Read Sensor Spot CNT=%4d (areas) \r\n## V_cnt=%2d (lane) H_cnt=%2d (lane) \r\n## Spillage Level =%02.2f%% \r\n## averageTempInner=%02.2f C averageTemp=%02.2f C centerTemp=%.2f C MinTemp=%02.2f C maxTemp=%02.2f C \r\n ######## Gap_Average= %02.2f Gap_Inner = %02.2f \r\n", - (uint8_t)blackOutTag, (int)m1a_data->waterSpillCount, (int)v_water_cnt, (int)h_water_cnt, (float)(m1a_data->spillage_level), (float)averageTempInner, (float)averageTemp, (float)centerTemp, (float)minTemp, (float)maxTemp, (float)(averageTemp - minTemp),(float)(averageTempInner - minTemp)); + sprintf(tempBuffer,(char *)"\r\n## Blackout=%u ######\n##Read Sensor Spot CNT=%4d (areas), \r\n Env_Temp =%02.2f C,\r\n## V_cnt=%2d (lane), H_cnt=%2d (lane), \r\n## Spillage Level =%u %, \r\n## averageTempInner=%02.2f C, averageTemp=%02.2f C, centerTemp=%.2f C, MinTemp=%02.2f C, maxTemp=%02.2f C, \r\n ######## Gap_Average= %02.2fC, Gap_Inner = %02.2fC \r\n", + (uint8_t)blackOutTag, (uint16_t)(m1a_data->waterSpillCount), (float)env_temperature, (int)v_water_cnt, (int)h_water_cnt, (uint8_t)(m1a_data->spillage_level), (float)averageTempInner, (float)averageTemp, (float)centerTemp, (float)minTemp, (float)maxTemp, (float)(averageTemp - minTemp),(float)(averageTempInner - minTemp)); APP_LOG(TS_OFF, VLEVEL_H,(char *)tempBuffer); if ((m1a_data->spot_cnt !=0 ) && (blackOutTag == 0)) @@ -284,24 +284,23 @@ void mlx90640_display_process(void) uint16_t spillcountTemp =0, spot_cntTemp=0; do { - //APP_LOG(TS_OFF, VLEVEL_H, "Detection Cycle = %u \r\n", detectCycle); readTempValues(); setTempScale(); sortFocusAreas(); findFocusArea(); - spillcountTemp +=waterSpillCount; + spillcountTemp += waterSpillCount; spot_cntTemp += spot_cnt; - } while (detectCycle++ < DetectCycleCount); + } while (++detectCycle < DetectCycleCount); - waterSpillCount = spillcountTemp/DetectCycleCount; + waterSpillCount = (uint16_t) (spillcountTemp/DetectCycleCount); spot_cnt /= DetectCycleCount ; //max(v_water_cnt, h_water_cnt); if (blackOutTag == 0) { - APP_LOG(TS_OFF, VLEVEL_H, "Water Spill Detected Level = %u of 600 \r\n", waterSpillCount); + APP_LOG(TS_OFF, VLEVEL_H, "Water Spill Detected Level = %u of 768 \r\n", (uint16_t)waterSpillCount); } }