基于STM32L431与LiteOS的智慧农业物联网系统设计1. 项目概述1.1 系统架构本设计实现了一套完整的智慧农业监测系统采用STM32L431RCT6作为主控制器搭载Huawei LiteOS实时操作系统通过BH1750光强度传感器和SHT30温湿度传感器采集环境数据并借助ESP8266 WiFi模块将数据上传至华为云IoT平台。系统架构分为三个层次感知层传感器数据采集模块网络层ESP8266无线通信模块应用层华为云IoT平台及Web可视化界面1.2 核心功能环境参数实时监测光照、温湿度补光灯与直流电机远程控制数据云端存储与分析Web端可视化展示2. 硬件设计2.1 主控制器选型系统采用STM32L431RCT6作为主控芯片主要基于以下考虑低功耗特性适合农业场景长期运行丰富的外设接口I2C、UART、GPIO等充足的Flash256KB和RAM64KB资源内置硬件浮点单元便于数据处理2.2 传感器模块设计2.2.1 BH1750光强度传感器接口类型I2C支持400kHz高速模式测量范围1-65535 lx典型电路连接VCC: 3.3VSDA: PB7SCL: PB6ADDR: GND选择0x23地址2.2.2 SHT30温湿度传感器接口类型I2C与BH1750共用总线测量范围温度-40℃~125℃湿度0%RH~100%RH典型误差温度±0.3℃湿度±2%RH2.3 执行机构设计模块类型控制方式GPIO引脚驱动电流补光灯GPIO输出PA120mA直流电机GPIO输出PA2需外接MOSFET2.4 通信模块设计采用ESP8266 WiFi模块实现云端连接硬件设计要点工作模式Station模式接口类型UART115200bps硬件流控禁用供电设计独立LDO稳压3.3V/500mA3. 软件架构3.1 LiteOS任务管理系统基于Huawei LiteOS实现多任务调度主要任务及优先级配置任务名称优先级功能描述Sensor_Collect3传感器数据采集Cloud_Report4数据上报云端CMD_Process2云端指令处理UI_Update5本地显示更新任务创建示例代码UINT32 creat_collection_task(VOID) { UINT32 uwRet LOS_OK; TSK_INIT_PARAM_S task_init_param; UINT32 TskHandle; task_init_param.usTaskPrio 3; // 任务优先级 task_init_param.pcName Sensor_Collect; // 任务名称 task_init_param.pfnTaskEntry (TSK_ENTRY_FUNC)sensor_collect_task; task_init_param.uwStackSize 0x800; // 任务栈大小 uwRet LOS_TaskCreate(TskHandle, task_init_param); if(LOS_OK ! uwRet){ return uwRet; } return uwRet; }3.2 传感器驱动实现3.2.1 BH1750驱动关键函数float BH1750_Read_Lux(void) { uint8_t buf[2]; I2C_Read(BH1750_ADDR, BH1750_ONE_TIME_H_RES_MODE, buf, 2); return (float)((buf[0]8)|buf[1])/1.2f; }3.2.2 SHT30驱动关键函数void SHT30_Read(float *temp, float *humi) { uint8_t buf[6]; I2C_Write(SHT30_ADDR, SHT30_MEAS_HIGHREP); HAL_Delay(20); I2C_Read(SHT30_ADDR, 0, buf, 6); *temp -45 175*(float)((buf[0]8)|buf[1])/65535; *humi 100*(float)((buf[3]8)|buf[4])/65535; }3.3 云端通信实现3.3.1 Agent Tiny初始化void agent_tiny_entry(void) { atiny_param_t *atiny_params g_atiny_params; atiny_device_info_t *device_info g_device_info; device_info-endpoint_name AGRICULTURE_DEV_01; atiny_params-server_params.binding UQ; if(ATINY_OK ! atiny_init(atiny_params, g_phandle)){ return; } LOS_TaskCreate(NULL, Cloud_Report, cloud_report_task, NULL, 0x800, 4); LOS_TaskCreate(NULL, CMD_Process, cmd_process_task, NULL, 0x800, 2); atiny_bind(device_info, g_phandle); }3.3.2 数据上报协议采用二进制编码格式减少传输数据量| 温度(2B) | 湿度(2B) | 光照(2B) | 补灯状态(1B) | 电机状态(1B) |4. 云端配置4.1 产品模型(Profile)开发在华为云IoT平台创建产品模型主要定义以下服务服务类型属性数据类型访问权限EnvironmenttemperaturefloatREnvironmenthumidityfloatREnvironmentlightintRControlledboolRWControlmotorboolRW4.2 编解码插件开发实现二进制数据与JSON格式的转换逻辑function binaryToJson(binaryData) { let view new DataView(binaryData); return { temperature: view.getInt16(0)/100, humidity: view.getInt16(2)/100, light: view.getUint16(4), led: view.getUint8(6), motor: view.getUint8(7) }; }5. 系统优化设计5.1 低功耗策略传感器采集周期默认60秒可远程配置WiFi连接策略数据上报后立即断开CPU运行模式空闲时进入STOP模式5.2 数据可靠性保障本地数据缓存最多50条记录断网自动重连机制指数退避算法重要状态非易失存储6. BOM关键器件清单器件名称型号数量关键参数MCUSTM32L431RCT61LQFP64, 80MHz光传感器BH1750FVI1I2C, 1-65535lx温湿度传感器SHT30-DIS-B1I2C, ±0.3℃WiFi模块ESP8266-12F1802.11b/g/nLDOAMS1117-3.323.3V, 1AMOS管IRLML64021P-MOS, 20V/3.7A7. 系统测试结果7.1 传感器精度测试参数标准值测量值误差温度(25℃)25.0℃25.2℃0.8%湿度(50%RH)50.0%49.5%-1.0%光照(1000lx)1000lx1023lx2.3%7.2 通信性能测试数据上报成功率99.7%72小时测试平均响应延迟1.2s云端到设备最大重连时间8.3s信号强度-85dBm