5分钟极速搭建STM32ESP8266物联网微信小程序控制方案最近在帮几个学生做毕业设计时发现很多初学者对物联网设备接入云平台存在畏难心理。其实借助现成的开发板和模块配合国内成熟的云服务平台完全可以在极短时间内搭建一个可用的物联网原型系统。今天我们就以最常见的STM32F103C8T6开发板俗称蓝莓派和ESP8266 WiFi模块为例手把手教你如何快速实现传感器数据上云和小程序远程控制。这个方案特别适合需要快速验证想法的创客或参加电子竞赛的学生所有代码和配置都已优化到最简你只需要准备好硬件并按步骤操作即可。我们将使用中国移动的Onenet物联网平台作为数据中转站微信小程序作为控制终端整个流程包含硬件连接、云端配置和小程序开发三个部分。1. 硬件准备与基础连接首先确认你手头有以下硬件设备STM32F103C8T6开发板其他STM32F1系列也可ESP8266 WiFi模块推荐ESP-01S0.96寸OLED显示屏SSD1306驱动DHT11温湿度传感器其他可选LED、蜂鸣器、舵机等执行器件硬件连接示意图STM32引脚连接模块备注PA9ESP8266 TX需交叉连接PA10ESP8266 RX需交叉连接PB6OLED SCLI2C时钟线PB7OLED SDAI2C数据线PA0电位器ADC输入PC13LED板载LED注意ESP8266模块需要单独3.3V供电建议使用稳压模块避免因供电不足导致WiFi连接不稳定。连接完成后先测试各模块是否正常工作。可以使用以下简化的测试代码// OLED测试 void OLED_Test() { OLED_Init(); OLED_ShowString(0,0,Hello World!,16); } // ESP8266测试 void ESP8266_Test() { printf(AT\r\n); // 应返回OK delay(100); printf(ATCWMODE1\r\n); // 设置为STA模式 delay(100); }2. Onenet平台快速配置Onenet是中国移动推出的物联网开放平台为开发者提供设备接入、数据存储和消息转发等服务。我们主要利用其MQTT协议实现设备与云端的双向通信。2.1 创建产品与设备登录Onenet控制台https://open.iot.10086.cn/进入产品开发→创建产品产品名称STM32_ESP8266_Demo行业其他联网方式WiFi数据协议MQTT旧版协议在产品列表中进入刚创建的产品选择设备列表→添加设备设备名称My_Device_01设备鉴权信息自定义一个字符串建议包含数字字母创建成功后记录以下关键信息产品ID在产品概况页面查看设备ID在设备列表页面查看鉴权信息添加设备时设置的字符串2.2 数据流与APIKey配置进入设备详情页选择数据流模板→添加数据流temperature温度humidity湿度adc_valueADC值进入APIKey管理→新增APIKey权限选择所有API权限。提示APIKey只在创建时显示一次请妥善保存。如果遗失需要重新生成。3. STM32端代码配置我们已经将核心代码封装成几个简单模块你只需要修改关键配置即可使用。项目代码结构如下├── Core ├── Drivers ├── ESP8266 │ ├── esp8266.c // WiFi配置 │ └── esp8266.h ├── Onenet │ ├── onenet.c // 云平台配置 │ └── onenet.h └── User ├── main.c // 主程序 └── oled.c // 显示驱动3.1 关键配置修改打开ESP8266/esp8266.c文件修改以下参数// WiFi账号密码配置 const char* WIFI_SSID Your_WiFi_SSID; const char* WIFI_PWD Your_WiFi_Password; // Onenet MQTT服务器地址 const char* MQTT_SERVER 183.230.40.39; const uint16_t MQTT_PORT 6002;打开Onenet/onenet.c文件修改设备三元组信息// 设备鉴权信息 const char* PRODUCE_ID Your_Product_ID; const char* DEVICE_ID Your_Device_ID; const char* AUTH_INFO Your_Auth_Info;3.2 数据上传逻辑主程序中已经实现了定时采集和上传数据的逻辑你只需要关注传感器读取部分void Sensor_Update() { // 读取温湿度 DHT11_Read_Data(temperature, humidity); // 读取ADC值0-3.3V对应0-4095 adc_value Get_ADC_Value(ADC_CHANNEL_0); // OLED本地显示 OLED_ShowNum(0, 16, temperature, 2, 16); OLED_ShowNum(0, 32, humidity, 2, 16); OLED_ShowNum(0, 48, adc_value, 4, 16); // 上传到Onenet Onenet_Upload(temperature, temperature); Onenet_Upload(humidity, humidity); Onenet_Upload(adc_value, adc_value); }4. 微信小程序开发微信小程序作为控制终端主要实现数据显示和设备控制功能。我们提供了完整的小程序模板你只需要修改几个关键配置即可使用。4.1 开发环境准备下载微信开发者工具https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html注册小程序账号并获取AppID一个邮箱只能注册一个小程序配置服务器域名在小程序后台开发→开发管理→服务器域名中添加https://api.heclouds.com4.2 关键配置修改修改project.config.json文件中的appid{ appid: Your_AppID, projectname: Onenet_Control }修改pages/index/index.js中的设备信息// Onenet设备配置 const deviceConfig { deviceId: Your_Device_ID, apiKey: Your_API_Key }4.3 小程序功能解析小程序核心功能包括实时数据显示通过定时请求Onenet API获取最新数据设备控制发送MQTT指令到Onenet平台再由平台转发给设备报警阈值设置当传感器数值超过阈值时触发蜂鸣器控制LED的示例代码// 控制LED函数 function controlLED(status) { wx.request({ url: https://api.heclouds.com/cmds?device_id deviceConfig.deviceId, method: POST, header: { api-key: deviceConfig.apiKey }, data: status ? LED_ON : LED_OFF, success(res) { console.log(控制命令发送成功) } }) }5. 常见问题与调试技巧在实际部署过程中可能会遇到以下典型问题5.1 ESP8266连接不稳定现象WiFi经常断开或无法连接Onenet解决方案检查供电是否充足建议单独3.3V稳压降低ESP8266的通信波特率建议9600添加重连机制void WiFi_Reconnect() { if(ESP8266_Check() ! 0) { ESP8266_Init(); Onenet_Connect(); } }5.2 数据上传失败现象Onenet平台收不到数据排查步骤使用串口调试助手查看ESP8266原始通信数据检查设备三元组信息是否正确确认网络时间同步需要正确的UTC时间戳5.3 小程序控制无响应现象小程序发送指令但设备不执行解决方法检查Onenet平台是否收到指令在设备管理→下发命令记录查看确认STM32正确解析了MQTT消息void Onenet_MessageHandler(char* topic, char* payload) { if(strstr(payload, LED_ON)) { HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_SET); } else if(strstr(payload, LED_OFF)) { HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET); } }完成以上所有步骤后你应该已经拥有了一个完整的物联网监控系统。通过这个基础框架你可以轻松扩展更多传感器和控制功能。比如添加光照传感器、继电器控制等只需要遵循相同的MQTT通信协议即可。
保姆级教程:用STM32+ESP8266+微信小程序,5分钟搞定Onenet数据上传和设备控制
发布时间:2026/5/30 7:23:10
5分钟极速搭建STM32ESP8266物联网微信小程序控制方案最近在帮几个学生做毕业设计时发现很多初学者对物联网设备接入云平台存在畏难心理。其实借助现成的开发板和模块配合国内成熟的云服务平台完全可以在极短时间内搭建一个可用的物联网原型系统。今天我们就以最常见的STM32F103C8T6开发板俗称蓝莓派和ESP8266 WiFi模块为例手把手教你如何快速实现传感器数据上云和小程序远程控制。这个方案特别适合需要快速验证想法的创客或参加电子竞赛的学生所有代码和配置都已优化到最简你只需要准备好硬件并按步骤操作即可。我们将使用中国移动的Onenet物联网平台作为数据中转站微信小程序作为控制终端整个流程包含硬件连接、云端配置和小程序开发三个部分。1. 硬件准备与基础连接首先确认你手头有以下硬件设备STM32F103C8T6开发板其他STM32F1系列也可ESP8266 WiFi模块推荐ESP-01S0.96寸OLED显示屏SSD1306驱动DHT11温湿度传感器其他可选LED、蜂鸣器、舵机等执行器件硬件连接示意图STM32引脚连接模块备注PA9ESP8266 TX需交叉连接PA10ESP8266 RX需交叉连接PB6OLED SCLI2C时钟线PB7OLED SDAI2C数据线PA0电位器ADC输入PC13LED板载LED注意ESP8266模块需要单独3.3V供电建议使用稳压模块避免因供电不足导致WiFi连接不稳定。连接完成后先测试各模块是否正常工作。可以使用以下简化的测试代码// OLED测试 void OLED_Test() { OLED_Init(); OLED_ShowString(0,0,Hello World!,16); } // ESP8266测试 void ESP8266_Test() { printf(AT\r\n); // 应返回OK delay(100); printf(ATCWMODE1\r\n); // 设置为STA模式 delay(100); }2. Onenet平台快速配置Onenet是中国移动推出的物联网开放平台为开发者提供设备接入、数据存储和消息转发等服务。我们主要利用其MQTT协议实现设备与云端的双向通信。2.1 创建产品与设备登录Onenet控制台https://open.iot.10086.cn/进入产品开发→创建产品产品名称STM32_ESP8266_Demo行业其他联网方式WiFi数据协议MQTT旧版协议在产品列表中进入刚创建的产品选择设备列表→添加设备设备名称My_Device_01设备鉴权信息自定义一个字符串建议包含数字字母创建成功后记录以下关键信息产品ID在产品概况页面查看设备ID在设备列表页面查看鉴权信息添加设备时设置的字符串2.2 数据流与APIKey配置进入设备详情页选择数据流模板→添加数据流temperature温度humidity湿度adc_valueADC值进入APIKey管理→新增APIKey权限选择所有API权限。提示APIKey只在创建时显示一次请妥善保存。如果遗失需要重新生成。3. STM32端代码配置我们已经将核心代码封装成几个简单模块你只需要修改关键配置即可使用。项目代码结构如下├── Core ├── Drivers ├── ESP8266 │ ├── esp8266.c // WiFi配置 │ └── esp8266.h ├── Onenet │ ├── onenet.c // 云平台配置 │ └── onenet.h └── User ├── main.c // 主程序 └── oled.c // 显示驱动3.1 关键配置修改打开ESP8266/esp8266.c文件修改以下参数// WiFi账号密码配置 const char* WIFI_SSID Your_WiFi_SSID; const char* WIFI_PWD Your_WiFi_Password; // Onenet MQTT服务器地址 const char* MQTT_SERVER 183.230.40.39; const uint16_t MQTT_PORT 6002;打开Onenet/onenet.c文件修改设备三元组信息// 设备鉴权信息 const char* PRODUCE_ID Your_Product_ID; const char* DEVICE_ID Your_Device_ID; const char* AUTH_INFO Your_Auth_Info;3.2 数据上传逻辑主程序中已经实现了定时采集和上传数据的逻辑你只需要关注传感器读取部分void Sensor_Update() { // 读取温湿度 DHT11_Read_Data(temperature, humidity); // 读取ADC值0-3.3V对应0-4095 adc_value Get_ADC_Value(ADC_CHANNEL_0); // OLED本地显示 OLED_ShowNum(0, 16, temperature, 2, 16); OLED_ShowNum(0, 32, humidity, 2, 16); OLED_ShowNum(0, 48, adc_value, 4, 16); // 上传到Onenet Onenet_Upload(temperature, temperature); Onenet_Upload(humidity, humidity); Onenet_Upload(adc_value, adc_value); }4. 微信小程序开发微信小程序作为控制终端主要实现数据显示和设备控制功能。我们提供了完整的小程序模板你只需要修改几个关键配置即可使用。4.1 开发环境准备下载微信开发者工具https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html注册小程序账号并获取AppID一个邮箱只能注册一个小程序配置服务器域名在小程序后台开发→开发管理→服务器域名中添加https://api.heclouds.com4.2 关键配置修改修改project.config.json文件中的appid{ appid: Your_AppID, projectname: Onenet_Control }修改pages/index/index.js中的设备信息// Onenet设备配置 const deviceConfig { deviceId: Your_Device_ID, apiKey: Your_API_Key }4.3 小程序功能解析小程序核心功能包括实时数据显示通过定时请求Onenet API获取最新数据设备控制发送MQTT指令到Onenet平台再由平台转发给设备报警阈值设置当传感器数值超过阈值时触发蜂鸣器控制LED的示例代码// 控制LED函数 function controlLED(status) { wx.request({ url: https://api.heclouds.com/cmds?device_id deviceConfig.deviceId, method: POST, header: { api-key: deviceConfig.apiKey }, data: status ? LED_ON : LED_OFF, success(res) { console.log(控制命令发送成功) } }) }5. 常见问题与调试技巧在实际部署过程中可能会遇到以下典型问题5.1 ESP8266连接不稳定现象WiFi经常断开或无法连接Onenet解决方案检查供电是否充足建议单独3.3V稳压降低ESP8266的通信波特率建议9600添加重连机制void WiFi_Reconnect() { if(ESP8266_Check() ! 0) { ESP8266_Init(); Onenet_Connect(); } }5.2 数据上传失败现象Onenet平台收不到数据排查步骤使用串口调试助手查看ESP8266原始通信数据检查设备三元组信息是否正确确认网络时间同步需要正确的UTC时间戳5.3 小程序控制无响应现象小程序发送指令但设备不执行解决方法检查Onenet平台是否收到指令在设备管理→下发命令记录查看确认STM32正确解析了MQTT消息void Onenet_MessageHandler(char* topic, char* payload) { if(strstr(payload, LED_ON)) { HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_SET); } else if(strstr(payload, LED_OFF)) { HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET); } }完成以上所有步骤后你应该已经拥有了一个完整的物联网监控系统。通过这个基础框架你可以轻松扩展更多传感器和控制功能。比如添加光照传感器、继电器控制等只需要遵循相同的MQTT通信协议即可。