# STM32智能传感器节点 基于STM32F10x微控制器的多功能智能传感器节点,集成OLED显示屏、WiFi通信、多种传感器和外设控制功能。 ## 功能特性 - 🌡️ **传感器监测**: DHT11温湿度传感器 + ADC多通道模拟量采集 - 📡 **WiFi通信**: ESP8266模块,支持TCP客户端连接 - 🖥️ **OLED显示**: 128x64分辨率,支持中英文显示 - 💡 **状态指示**: 3路LED + 蜂鸣器报警 - ⚙️ **系统保护**: 独立看门狗(IWDG)监控 - 📦 **数据格式**: JSON格式数据传输 ## 硬件连接 ### 核心连接 ``` DHT11传感器: PC10 ESP8266 WiFi: PA2(TX)/PA3(RX) - USART2 OLED显示屏: PB6(SCL)/PB7(SDA) - I²C LED指示灯: PB0/PB1/PB2 蜂鸣器: PB5 ADC输入: PA0-PA7 ``` ### 系统架构 ``` ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ 传感器层 │ │ 处理层 │ │ 通信层 │ │ │ │ │ │ │ │ • DHT11温湿度 │───▶│ • STM32F103 │───▶│ • ESP8266 WiFi │ │ • ADC模拟输入 │ │ • 数据处理 │ │ • TCP协议 │ │ • GPIO输入 │ │ • OLED显示 │ │ • JSON数据 │ └─────────────────┘ └─────────────────┘ └─────────────────┘ ``` ## 快速开始 ### 1. 环境配置 - IDE: Keil MDK-ARM v5.0+ - 调试器: ST-Link V2 - 开发板: STM32F103C8T6 ### 2. 网络配置 先将 `user/network_config.example.h` 复制为 `user/network_config.h`,再编辑其中的配置参数(本地配置不上传仓库): ```c #define WIFI_SSID "Your_WiFi_Name" #define WIFI_PASS "Your_WiFi_Password" #define SERVER_IP "192.168.1.100" #define SERVER_PORT 5000 #define DEVICE_ID "sensor_001" ``` ### 3. 编译烧录 ```bash cd 32/project # 打开 myproject.uvprojx # F7编译 → F8烧录 ``` ### 4. 运行状态 - **LED0**: 系统电源 (常亮=正常) - **LED1**: WiFi状态 (闪烁=连接中, 常亮=已连接) - **LED2**: 服务器状态 (闪烁=连接中, 常亮=已连接) - **OLED**: 实时显示温湿度数据 ## 数据协议 ### 设备注册 ```json { "type": "register", "device_id": "sensor_001", "action": "connect" } ``` ### 传感器数据 ```json { "device_id": "sensor_001", "temp": 25.6, "humidity": 60.2, "adc0": 1.23, "led0": 1, "led1": 1, "led2": 1 } ``` ## 目录结构 ``` 32/ ├── cmsis/ # CMSIS核心库 ├── fwlib/ # STM32标准外设库 ├── mylib/ # 自定义驱动库 │ ├── dht11.c/.h # DHT11传感器驱动 │ ├── esp8266.c/.h # ESP8266 WiFi驱动 │ ├── oled.c/.h # OLED显示驱动 │ ├── adc.c/.h # ADC模数转换 │ ├── led.c/.h # LED控制 │ ├── beep.c/.h # 蜂鸣器控制 │ ├── systick.c/.h # 系统定时器 │ └── usart1.c/.h # 串口通信 ├── user/ # 用户应用代码 │ ├── main.c # 主程序 │ └── stm32f10x_it.c/.h # 中断服务 ├── project/ # Keil项目文件 ├── README.md # 项目说明 ├── HARDWARE_SETUP.md # 硬件连接指南 └── QUICK_START.md # 快速开始指南 ``` ## 核心API ### WiFi通信模块 ```c void esp8266_init(void); int esp8266_connect_wifi(const char *ssid, const char *passwd); int esp8266_tcp_connect(const char *ip, uint16_t port); int esp8266_write(const char *data, uint16_t len); ``` ### 传感器模块 ```c void dht11_init(void); int dht11_get_values(u8 buf[5]); // [湿度整数, 湿度小数, 温度整数, 温度小数, 校验和] void adc1_init(void); float adc1_read_channel(u8 channel); ``` ### 显示模块 ```c void oled_init(void); void oled_clear(void); void oled_draw_text8(u8 x, u8 y, const char *text); void oled_draw_text16(u8 x, u8 y, const char *text); ``` ## 故障排除 ### WiFi连接失败 - 检查SSID/密码配置 - 确认ESP8266供电稳定 - 查看串口调试信息 ### 传感器读取异常 - 检查DHT11接线(PC10) - 确认供电电压3.3V - 更换传感器测试 ### OLED无显示 - 检查I²C接线(PB6/PB7) - 确认I²C地址(0x3C/0x3D) - 检查显示屏供电 ## 性能指标 - **启动时间**: < 10秒 - **数据频率**: 200ms间隔(可配置) - **测量精度**: 温度±0.5°C, 湿度±2%RH - **系统稳定性**: 连续运行24小时无故障 - **资源使用**: Flash 60KB, RAM 8KB ## 开发文档 - [硬件连接指南](HARDWARE_SETUP.md) - 详细硬件连接步骤 - [快速开始指南](QUICK_START.md) - 5分钟快速上手 - [系统架构设计](ARCHITECTURE.md) - 系统架构和模块设计 - [模块接口文档](MODULES.md) - 各模块接口说明 - [核心算法实现](ALGORITHMS.md) - 关键算法实现详解 ## 许可证 MIT License --- **最后更新**: 2025-11-16 **版本**: v2.0.0