From 7a5f675ac2e0e2483c328646e4a261fbe23a0660 Mon Sep 17 00:00:00 2001 From: czq <860517298@qq.com> Date: Fri, 18 Apr 2025 10:31:57 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E6=9A=82=E5=AD=98=20?= =?UTF-8?q?=E4=BC=98=E5=8C=96ML307R=E5=9C=A8=E7=9D=A1=E7=9C=A0=E6=A8=A1?= =?UTF-8?q?=E5=BC=8F=E4=B8=8B=E7=9A=84=E5=8A=9F=E8=80=97=EF=BC=8C=E7=9B=AE?= =?UTF-8?q?=E5=89=8D70uA=E5=B7=A6=E5=8F=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .mrs/launch.json | 6 +-- APP/peripheral_main.c | 2 +- HAL/SLEEP.c | 2 - README.md | 5 +- bsp/inc/bsp_bmp390.h | 1 + bsp/src/bsp_bmp390.c | 20 ++++---- bsp/src/bsp_key.c | 2 +- bsp/src/bsp_ml307r.c | 113 ++++++++++++++++++++++++------------------ 8 files changed, 83 insertions(+), 68 deletions(-) diff --git a/.mrs/launch.json b/.mrs/launch.json index 8595f7b..4356125 100644 --- a/.mrs/launch.json +++ b/.mrs/launch.json @@ -5,7 +5,7 @@ "type": "mrs-debugger", "request": "launch", "name": "IoT_SCV_CH584M1", - "cwd": "c:\\Users\\123\\Desktop\\物联网自闭阀", + "cwd": "c:\\Users\\123\\Desktop\\物联网自闭阀\\iot_-scv_-ch584-m", "openOCDCfg": { "useLocalOpenOCD": true, "executable": "d:/MounRiverV2/MounRiver_Studio2/resources/app/resources/win32/components/WCH/OpenOCD/OpenOCD/bin/openocd.exe", @@ -39,8 +39,8 @@ "additionalCommands": [] }, "loadedFiles": { - "executableFile": "c:\\Users\\123\\Desktop\\物联网自闭阀\\obj\\IoT_SCV_CH584M1.elf", - "symbolFile": "c:\\Users\\123\\Desktop\\物联网自闭阀\\obj\\IoT_SCV_CH584M1.elf", + "executableFile": "c:\\Users\\123\\Desktop\\物联网自闭阀\\iot_-scv_-ch584-m\\obj\\IoT_SCV_CH584M1.elf", + "symbolFile": "c:\\Users\\123\\Desktop\\物联网自闭阀\\iot_-scv_-ch584-m\\obj\\IoT_SCV_CH584M1.elf", "executableFileOffset": 0, "symbolFileOffset": 0 }, diff --git a/APP/peripheral_main.c b/APP/peripheral_main.c index ad84b32..0d086b9 100644 --- a/APP/peripheral_main.c +++ b/APP/peripheral_main.c @@ -78,7 +78,7 @@ int main(void) SysTick_Config( GetSysClock() / 1000 * SYSTICK_INTERVAL); //趨ʱ1ms #if(defined(HAL_SLEEP)) && (HAL_SLEEP == TRUE) GPIOA_ModeCfg(GPIO_Pin_All, GPIO_ModeIN_PD); - // GPIOB_ModeCfg(GPIO_Pin_All, GPIO_ModeIN_PD); // ʱ + GPIOB_ModeCfg(GPIO_Pin_All, GPIO_ModeIN_PD); #endif #ifdef DEBUG diff --git a/HAL/SLEEP.c b/HAL/SLEEP.c index 6f6f725..b0ce265 100644 --- a/HAL/SLEEP.c +++ b/HAL/SLEEP.c @@ -20,13 +20,11 @@ static volatile bool block_sleep_flag = false; void BSP_RequestSleep(void) { - printf("block_sleep_flag1 = %d\r\n",block_sleep_flag); block_sleep_flag = false; } void BSP_BlockSleep(void) { - printf("block_sleep_flag3 = %d\r\n",block_sleep_flag); block_sleep_flag = true; } diff --git a/README.md b/README.md index 44169c0..3537416 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,2 @@ -系统进入睡眠模式后,需要长按键盘按键来激活letter shell -激活后可正常使用letter shell -30秒无操作后自动进入睡眠 +1.4G模组偶先连接失败问题 +2.需添加如果短时间内多次改变阀门状态时4G可以都上报的功能 diff --git a/bsp/inc/bsp_bmp390.h b/bsp/inc/bsp_bmp390.h index fa6bd43..6e10240 100644 --- a/bsp/inc/bsp_bmp390.h +++ b/bsp/inc/bsp_bmp390.h @@ -18,6 +18,7 @@ void PRESS_LowPower(void); void BSP_PRESS_Init(void); void Function_Check(void); +extern uint8_t volatile fault_state; #include "bmp3.h" diff --git a/bsp/src/bsp_bmp390.c b/bsp/src/bsp_bmp390.c index 820d003..da3a1fe 100644 --- a/bsp/src/bsp_bmp390.c +++ b/bsp/src/bsp_bmp390.c @@ -5,8 +5,10 @@ #include "CONFIG.h" #include "log.h" #include "bsp_ml307r.h" +#include "SLEEP.h" -uint8_t flag, fault_state; +uint8_t flag; +uint8_t volatile fault_state = 0; extern uint8_t motor_flag; extern Shell shell; @@ -380,14 +382,14 @@ void Lower_IO_Deinit(void) //4G // ر3.8V - // GPIOB_ResetBits(ENABLE_3_8_V); - // GPIOB_ModeCfg(ENABLE_3_8_V, GPIO_ModeIN_PD); - // // Ϊ© - // GPIOB_ModeCfg(ML307_PWR_PIN | ML307_RST_PIN, GPIO_ModeIN_PD); - // // UARTΪ - // GPIOB_ModeCfg(ML307_UART_TX_PIN | ML307_UART_RX_PIN, GPIO_ModeIN_PU); - // // SIMΪ - // GPIOB_ModeCfg(USIM_DECT_PIN, GPIO_ModeIN_PD); + GPIOB_ResetBits(ENABLE_3_8_V); + GPIOB_ModeCfg(ENABLE_3_8_V, GPIO_ModeIN_PD); + // Ϊ© + GPIOB_ModeCfg(ML307_PWR_PIN | ML307_RST_PIN, GPIO_ModeIN_PD); + // UARTΪ + GPIOB_ModeCfg(ML307_UART_TX_PIN | ML307_UART_RX_PIN, GPIO_ModeIN_PU); + // SIMΪ + GPIOB_ModeCfg(USIM_DECT_PIN, GPIO_ModeIN_PD); //motor GPIOB_ResetBits(NSLEEP_PIN); diff --git a/bsp/src/bsp_key.c b/bsp/src/bsp_key.c index 5aef5b3..1f98c36 100644 --- a/bsp/src/bsp_key.c +++ b/bsp/src/bsp_key.c @@ -39,7 +39,7 @@ void app_task_handler(TeAppEvtType app_evt_type) BSP_KEY_EnterLowpower(); // DelayMs(10); // BSP_RequestSleep(); - // logDebug("gpio relase;BSP_RequestSleep "); + logDebug("gpio relase;BSP_RequestSleep "); break; default: diff --git a/bsp/src/bsp_ml307r.c b/bsp/src/bsp_ml307r.c index 1e5f3bc..bf73472 100644 --- a/bsp/src/bsp_ml307r.c +++ b/bsp/src/bsp_ml307r.c @@ -7,6 +7,7 @@ #include "CONFIG.h" #include "SLEEP.h" #include "bsp_iwdg.h" +#include "bsp_bmp390.h" #undef LOG_ENABLE #define LOG_ENABLE 1 @@ -118,13 +119,12 @@ static uint16_t Ml307_Power_Handle(uint8_t task_id, uint16_t events) // ϵ logDebug("ML307 power on complete\n"); GPIOB_ResetBits(ML307_PWR_PIN); - ml307_power_state = POWER_STATE_INIT; + ml307_power_state = POWER_STATE_ON_COMPLETE; // ʼ if (ml307r_obj != NULL) { BSP_ML307_SetActive(); // ģʼ tmos_set_event(ml307_task_id, ML307_PERIODIC_EVT); - // ִкʼ logDebug("BSP_Read_Module\n"); BSP_Read_Module(); @@ -135,7 +135,7 @@ static uint16_t Ml307_Power_Handle(uint8_t task_id, uint16_t events) BSP_Module_Connect_CtWing(); logDebug("BSP_ML307_SendMessage\n"); BSP_ML307_SetActive(); - BSP_ML307_SendMessage(); + // BSP_ML307_SendMessage(); } break; @@ -173,7 +173,7 @@ static uint16_t Ml307_Power_Handle(uint8_t task_id, uint16_t events) logDebug("ML307 power off complete\n"); ml307_power_state = POWER_STATE_INIT; // ϵͳ˯״̬ - // BSP_RequestSleep(); + BSP_RequestSleep(); break; default: @@ -226,17 +226,6 @@ int Ml307r_Gpio_Init(void) return 0; } -// ֹͣ4Gͨţֹͣѯ -void BSP_Stop_ML307_Task(void) -{ - if (ml307_task_id != INVALID_TASK_ID) { - tmos_stop_task(ml307_task_id, ML307_PERIODIC_EVT); - // Ml307_Power_Off(); - // BSP_RequestSleep(); - Ml307_Power_Off_NonBlocking(); - logDebug("4G module polling stopped\n"); - } -} static int Module_Read_State(at_env_t *e) { @@ -310,7 +299,7 @@ static void simcom_init(void) attr.cb = simcom_init_callback; //ص // ӳ٣ģӦʱ attr.timeout = 2000; // ӳʱʱ䵽2 - attr.retry = 2; // Դ + attr.retry = 3; // Դ at_send_multiline(ml307r_obj, &attr, cmds); } @@ -324,7 +313,7 @@ static int BSP_Module_Connect_CtWing_Handle(at_env_t *e) { case 0: logDebug("create device...\r\n"); - e->println(e, "AT+MIPOPEN=0,\"TCP\",\"112.125.89.8\",43192,,1"); // 8.135.10.183,32994 + e->println(e, "AT+MIPOPEN=0,\"TCP\",\"112.125.89.8\",46763,,1"); // 8.135.10.183,32994 e->reset_timer(e); e->state++; break; @@ -333,6 +322,10 @@ static int BSP_Module_Connect_CtWing_Handle(at_env_t *e) { logDebug("create device complete\r\n"); e->finish(e, AT_RESP_OK); + BSP_ML307_SetActive(); + BSP_ML307_SendMessage(); + // BSP_ML307_SetActive(); + // BSP_ML307_SendMessage(); } else if (e->is_timeout(e, 5000)) { @@ -426,7 +419,7 @@ uint16_t Ml307r_Handle(uint8_t task_id, uint16_t events) { FEED_IWDG(); Ml307r_Loop(); - tmos_start_task(ml307_task_id, ML307_PERIODIC_EVT, MS1_TO_SYSTEM_TIME(200)); //5 + tmos_start_task(ml307_task_id, ML307_PERIODIC_EVT, MS1_TO_SYSTEM_TIME(5)); //5 return (events ^ ML307_PERIODIC_EVT); } return 0; @@ -441,6 +434,40 @@ void BSP_Module_Send_Data(uint8_t* data, uint8_t len) at_send_data(ml307r_obj, &attr, data, len); } +void BSP_ML307_SendMessage(void) +{ + if(fault_state){ + char json_buffer[300]; + snprintf(json_buffer, sizeof(json_buffer), + "{" + "\"device\":{" + "\"id\":\"SCV001\"," + "\"time\":\"2025\"" + "}," + "\"status\":\"closed\"," + "\"fault\":{" + "\"lowBattery\":true," + "\"code\":1" + "}," + "\"monitor\":{" + "\"pressure\":0.8," + "\"lowVoltage\":true" + "}," + "\"network\":{" + "\"sinr\":15.2," + "\"signal\":4" + "}," + "\"standards\":{" + "\"iotId\":\"IoT-SCV-12345\"" + "}" + "}"); + + BSP_Module_Send_Data((uint8_t*)json_buffer, strlen(json_buffer)); + // logDebug("fault_state: %d\n", fault_state); + logDebug("BSP_ML307_SendMessage: %s\n", json_buffer); + } +} + // ϵ籣ϱ void BSP_Module_Emergency_Send(uint8_t* data, uint8_t len) { @@ -465,7 +492,8 @@ void BSP_Module_Emergency_Send(uint8_t* data, uint8_t len) void BSP_Ml307r_Init(void) { - + if(ml307_power_state == POWER_STATE_INIT) + { Ml307r_Gpio_Init(); // Ml307_Power_On(); @@ -473,7 +501,7 @@ void BSP_Ml307r_Init(void) BSP_UART1_Init(); ml307r_obj = at_obj_create(&at_adapter);//Create AT communication object - at_obj_set_urc(ml307r_obj, urc_table, sizeof(urc_table) / sizeof(urc_table[0])); + // at_obj_set_urc(ml307r_obj, urc_table, sizeof(urc_table) / sizeof(urc_table[0])); ml307_task_id = TMOS_ProcessEventRegister(Ml307r_Handle); // tmos_set_event(ml307_task_id, ML307_PERIODIC_EVT); @@ -483,6 +511,9 @@ void BSP_Ml307r_Init(void) // ʽԴʼڵԴɺԶ Ml307_Power_On_NonBlocking(); + + + // logDebug("BSP_Read_Module\n"); // BSP_Read_Module(); // logDebug("simcom_init\n"); @@ -492,8 +523,21 @@ void BSP_Ml307r_Init(void) // logDebug("BSP_Module_Send_Data\n"); // // BSP_Module_Send_Data(databuf, 5); // BSP_ML307_SendMessage(); + } + } +// ֹͣ4Gͨţֹͣѯ +void BSP_Stop_ML307_Task(void) +{ + if (ml307_task_id != INVALID_TASK_ID) { + tmos_stop_task(ml307_task_id, ML307_PERIODIC_EVT); + // Ml307_Power_Off(); + Ml307_Power_Off_NonBlocking(); + logDebug("4G module polling stopped\n"); + // BSP_RequestSleep(); + } +} /** * @brief ML307ʱ @@ -532,32 +576,3 @@ void BSP_ML307_SetActive(void) } -void BSP_ML307_SendMessage(void) -{ - char json_buffer[300]; - snprintf(json_buffer, sizeof(json_buffer), - "{" - "\"device\":{" - "\"id\":\"SCV001\"," - "\"time\":\"2025\"" - "}," - "\"status\":\"closed\"," - "\"fault\":{" - "\"lowBattery\":true," - "\"code\":1001" - "}," - "\"monitor\":{" - "\"pressure\":0.8," - "\"lowVoltage\":true" - "}," - "\"network\":{" - "\"sinr\":15.2," - "\"signal\":4" - "}," - "\"standards\":{" - "\"iotId\":\"IoT-SCV-12345\"" - "}" - "}"); - BSP_Module_Send_Data((uint8_t*)json_buffer, strlen(json_buffer)); - logDebug("BSP_ML307_SendMessage: %s\n", json_buffer); -} \ No newline at end of file