一、实物图
前端uniapp效果图(实现与onenet同步更新数据)
首先要确定接线图和接线顺序:
1、stm32c8t6开发板连接stlinkv2下载线
ST-LINK V2 | STM32 |
---|---|
3.3V | 3.3V |
SWDIO | SWIO |
SWCLK | SWCLK |
GND | GND |
2、ch340串口连接底座(注意RXD和TXD的连接方式)
CH340 | 底座 |
---|---|
3.3V | 3.3V |
RXD | TXD |
TXD | RXD |
GND | GND |
3、https://open.iot.10086.cn/console/device/manage/devs
在onenet官网创建设备,名字地区随便写,创建成功后点击设备详情页面
4、产品开发栏进行添加属性
附上main.c一部分代码文件
//单片机头文件
#include "stm32f10x.h"
//网络协议层
#include "onenet.h"
//网络设备
#include "esp8266.h"
//硬件驱动
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "key.h"
#include "dht11.h"
#include "oled.h"
//C库
#include <string.h>
#define ESP8266_ONENET_INFO "AT+CIPSTART=\"TCP\",\"mqtts.heclouds.com\",1883\r\n"
void Hardware_Init(void);
void Display_Init(void);
void Refresh_Data(void);
u8 temp,humi;
/*
************************************************************
* 函数名称: main
*
* 函数功能:
*
* 入口参数: 无
*
* 返回参数: 0
*
* 说明:
************************************************************
*/
int main(void)
{
unsigned short timeCount = 0; //发送间隔变量
unsigned char *dataPtr = NULL;
Hardware_Init(); //初始化外围硬件
ESP8266_Init(); //初始化ESP8266
// UsartPrintf(USART_DEBUG, "Connect MQTTs Server...\r\n");
OLED_Clear(); OLED_ShowString(0,0,"Connect MQTTs Server...",16);
while(ESP8266_SendCmd(ESP8266_ONENET_INFO, "CONNECT"))
DelayXms(500);
// UsartPrintf(USART_DEBUG, "Connect MQTT Server Success\r\n");
OLED_ShowString(0,4,"Connect MQTT Server Success",16); DelayXms(500);
OLED_Clear(); OLED_ShowString(0,0,"Device login ...",16);
while(OneNet_DevLink()) //接入OneNET
{
ESP8266_SendCmd(ESP8266_ONENET_INFO, "CONNECT");
DelayXms(500);
}
OneNET_Subscribe();
Display_Init();
while(1)
{
if(++timeCount >= 100) //发送间隔5s
{
DHT11_Read_Data(&temp,&humi);
// UsartPrintf(USART_DEBUG, "OneNet_SendData\r\n");
OneNet_SendData(); //发送数据
timeCount = 0;
ESP8266_Clear();
}
dataPtr = ESP8266_GetIPD(0);
if(dataPtr != NULL)
OneNet_RevPro(dataPtr);
Refresh_Data();
DelayMs(10);
}
}