如何使用CW32单片机通过ESP8266连接OneNET物联网平台,发送温湿度数据到平台,并接受平台的云控制?
一、简介
1、本文向大家介绍如何使用CW32单片机通过ESP8266连接OneNET物联网平台,发送温湿度数据到平台,并接受平台的云控制。
二、所需物料
2、本实验使用到了CW32-48F大学计划开发板、DHT11温湿度传感器模块、ESP8266WIFI模块及Keil5开发环境。
3、接线:根据原理图,把模块连接到开发板上
(1)ESP8266WIFI模块:
开发板上预留了该模块接口,通过串口向ESP8266写入指令。
(2)DHT11模块:开发板上预留了该模块接口
4.(1)MQTT协议介绍:
MQTT是一种轻量级的发布/订阅消息传输协议,常用于物联网领域。它的特点是简化和减少了网络流量,可以高效地进行数据传输。在本次应用中,我们将使用MQTT协议进行数据上传。
(2)OneNET代码介绍:
在使用OneNet平台时,我们需要使用TCP协议进行连接。首先需要设置好TCP协议的相关参数,然后通过POST方法将温湿度数据上传到OneNet平台中。在上传数据时需要使用OneNet平台提供的API接口进行数据传输。
三、核心代码
main.c
int main(void)
{
unsigned short timeCount = 0; //发送间隔变量
unsigned char *dataPtr = NULL;
Hardware_Init(); //初始化外围硬件
while(DHT11_Init()) //检测DHT11
Delay_ms(200);
ESP8266_Init(); //初始化ESP8266
UsartPrintf(USART_DEBUG, "Connect MQTTs Server...\r\n");
while(ESP8266_SendCmd(ESP8266_ONENET_INFO, "CONNECT")) //ESP8266联网
Delay_ms(500);
UsartPrintf(USART_DEBUG, "NET_OK\r\n");
while(OneNet_DevLink()) //接入OneNET
Delay_ms(500);
OneNET_Subscribe(); //订阅消息传输,允许接受下发指令
TFTShowString(0,0," OneNET "); //界面
TFTShowString(1,0," 智能物联平台 ");
TFTShowString(3,0,"humidity: %");
TFTShowString(4,0,"temperature: C");
while(1)
{
if(++timeCount >= 50)
{
DHT11_Read_Data(&temperature,&humidity); //读取温湿度值
TFTShowNumber(3,10,humidity);
TFTShowNumber(4,12,temperature);
UsartPrintf(USART_DEBUG,"TEMP:%d HUMI:%d\r\n",temperature,humidity);
UsartPrintf(USART_DEBUG, "OneNet_SendData\r\n");
OneNet_SendData(); //数据上传
timeCount = 0;
ESP8266_Clear(); //清除缓存
}
dataPtr = ESP8266_GetIPD(0); //接收OneNET平台返回的数据
if(dataPtr != NULL)
OneNet_RevPro(dataPtr); //确认返回数据,执行下发命令
Delay_ms(10);
}
}
Onenet.c:
#define PROID "3OB4R7cKCw" //产品ID(名称)
#define ACCESS_KEY "n7GptYNpf9U97zHTz2ltc1Pvy4GB+0MXsU1nKel9ixc=" //产品访问密钥
#define DEVICE_NAME "111" //设备ID(名称)
void OneNet_RevPro(unsigned char *cmd)
{
char *req_payload = NULL;
char *cmdid_topic = NULL;
unsigned short topic_len = 0;
unsigned short req_len = 0;
unsigned char qos = 0;
static unsigned short pkt_id = 0;
unsigned char type = 0;
short result = 0;
char *dataPtr = NULL;
char numBuf[10];
int num = 0;
type = MQTT_UnPacketRecv(cmd);
switch(type)
{
case MQTT_PKT_PUBLISH: //接收的Publish消息
result = MQTT_UnPacketPublish(cmd, &cmdid_topic, &topic_len, &req_payload, &req_len, &qos, &pkt_id);
if(result == 0)
{
char *data_ptr = NULL;
UsartPrintf(USART_DEBUG, "topic: %s, topic_len: %d, payload: %s, payload_len: %d\r\n", cmdid_topic, topic_len, req_payload, req_len);
data_ptr = strstr(cmdid_topic, "request/"); //查找cmdid
if(data_ptr)
{
char topic_buf[80], cmdid[40];
data_ptr = strchr(data_ptr, '/');
data_ptr++;
memcpy(cmdid, data_ptr, 36); //复制cmdid
cmdid[36] = 0;
snprintf(topic_buf, sizeof(topic_buf), "$sys/%s/%s/cmd/response/%s",
PROID, DEVICE_NAME, cmdid);
OneNET_Publish(topic_buf, "ojbk"); //回复命令
}
}
case MQTT_PKT_PUBACK: //发送Publish消息,平台回复的Ack
if(MQTT_UnPacketPublishAck(cmd) == 0)
UsartPrintf(USART_DEBUG, "Tips: MQTT Publish Send OK\r\n");
break;
case MQTT_PKT_SUBACK: //发送Subscribe消息的Ack
if(MQTT_UnPacketSubscribe(cmd) == 0)
UsartPrintf(USART_DEBUG, "Tips: MQTT Subscribe OK\r\n");
else
UsartPrintf(USART_DEBUG, "Tips: MQTT Subscribe Err\r\n");
break;
default:
result = -1;
break;
}
ESP8266_Clear(); //清空缓存
if(result == -1)
return;
dataPtr = strchr(req_payload, ':'); //搜索':'
if(dataPtr != NULL) //如果找到了
{
dataPtr++;
while(*dataPtr >= '0' && *dataPtr <= '9') //判断是否是下发的命令控制数据
{
numBuf[num++] = *dataPtr++;
}
numBuf[num] = 0;
num = atoi((const char *)numBuf); //转为数值形式
if(strstr((char *)req_payload, "light")) //搜索"light",判断":"后面的数值进行控制
{
if(num == 1) //控制数据如果为1,代表开
{
UsartPrintf(USART_DEBUG, "接收到1\r\n");
//开灯
PA07_SETLOW();
TFTShowString(5,0,"light: ON ");
}
else if(num == 0) //控制数据如果为0,代表关
{
UsartPrintf(USART_DEBUG, "接收到0\r\n");
//关灯
PA07_SETHIGH();
TFTShowString(5,0,"light: OFF");
}
}
}
if(type == MQTT_PKT_CMD || type == MQTT_PKT_PUBLISH)
{
MQTT_FreeBuffer(cmdid_topic);
MQTT_FreeBuffer(req_payload);
}
}
- |
- +1 赞 0
- 收藏
- 评论 0
本文由咪猫转载自武汉芯源 微信公众号,原文标题为:【CW32】基于CW32的物联网应用,本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。
相关推荐
【经验】芯源CW32系列单片机低功耗模式介绍及UART深度休眠模式示例
CW32单片机低功耗模式介绍及UART深度休眠模式示例。
武汉芯源CW32系列单片机数字电压电流表产品硬件设计指南
本文基于武汉芯源CW32系列单片机,介绍数字电压电流表产品硬件设计指南,希望对各位工程师有所帮助。
【经验】CW32F030C8T6单片机如何通过看手册配置时钟树
本章简单展示了如何查找手册来配置寄存器,且再次强调库函数的本质就是操作寄存器。单片机都会有一个时钟树,时钟树的图可以在编程手册(不是数据表和内核手册)中找到。部分单片机想要工作在高工作频率下,需要设置flash等待时间并打开缓存和预取指令使能。
【产品】集成高性能32bit微处理器的海思Hi系列2.4GWiFi模块,提供最大72.2Mbit/s物理层速率
Hi系列模组(下称模块)是由深圳市安信可科技有限公司开发的Wi-Fi模块。可广泛应用于智能家居、智能安防、智慧城市等物联网相关智能终端产品。模块搭载Hi3861V100/Hi3861LV100核心处理器芯片。
WiFi模块在工业自动化中的优势及具体应用
WiFi模块在工业自动化中凭借无线连接、高带宽、广泛覆盖、易集成扩展和成本效益等优势,广泛应用于工业设备远程监控与管理、智能工厂无线传感器网络、AGV 与移动机器人导航控制、生产线数据采集与传输以及工业物联网平台连接与通信等方面,有力推动工业自动化发展。本文天工测控来为大家介绍WiFi模块在工业自动化中的优势及具体应用,希望对各位工程师朋友有所帮助。
WiFi Mesh让生活更智能——飞易通物联网通信模块BW246,轻松实现WiFi Mesh网络构建
FEASYCOM BW246模组是一款高性能的物联网通信模块,它集成了WiFi Mesh协议栈,为设备连接和通信提供了便捷的解决方案。BW246模组支持WiFi Mesh的各种功能,可以使用其 SoftAP接口建立多个下行连接,同时使用其 Station接口建立一个上行连接。
飞易通WiFi模块FSC-WF152C,数据速率高达286.8Mbps,可满足行车记录仪数据传输要求
飞易通推出的一款用在行车记录仪的模块FSC-WF152C,该模块采用了高性能的SoC,是业界领先的2.4G Wi-Fi6的芯片。在支持WiFi6的所有指标的同时,功耗是行业中最低的。FSC-WF152C可用于通过UART/USB/GPIO/PCM进行控制和数据传输,并可快速应用于任何基于微控制器的设计。该模块极大的满足了行车记录仪数据传输要求,数据速率高达286.8Mbps。
【选型】 高品质国产5G WiFi模块推荐
5G WiFi是指采用802.11ac协议,运行在5Ghz频段的WiFi。和时下热门的5G通信有别的是,前者的5G是指第五代通讯技术——5-Generation,而5G WiFi是5GHz无线电波频段。作为WiFi模块专业研发厂商,SKYLAB就经常接到有关5G WiFi模块的应用咨询。在这里SKYLAB小编简单为大家介绍几款SKYLAB 5G WiFi模块WG217,WG211。
【元件】小巧型嵌入式WiFi模块SKW100搭载双芯片,支持2.4/5GHz双频工作733Mbps数据速率,性能稳定可靠
SKW100是天工测控自主研发的一款WiFi模块产品,搭载双芯片QCA9531和QCA9887,性能稳定可靠,尺寸小巧更易集成(47.8*35.4*9.5mm)。同时具备高速率,支持2.4/5GHz双频工作733Mbps数据速率,集成了5端口10/100Mbps快速以太网交换机。
解析CW32单片机的独立看门狗IWDT和窗口看门狗WWDT
看门狗在那些对安全性和稳定性要求较高的应用中特别重要,如工业控制、汽车电子、医疗设备和航空航天等领域。通过使用看门狗,可以大大减少系统因软件故障而导致的长时间不可用或错误操作的风险。本文介绍CW32单片机的两个看门狗:独立看门狗IWDT和窗口看门狗WWDT。
【技术】武汉芯源CW32单片机UART基本数据收发功能介绍
通用异步收发器是一种通用串行数据总线,常用于系统内各子模块间的数据交换。本文将以武汉芯源推出的CW32系列单片机的CW32L083为例,介绍UART基本数据收发功能。
【技术】4G模块和WiFi模块的区别及其功能和应用场景
在物联网行业中,4G模块和WiFi模块经常会被使用,虽然都作用于物联网无线传输,但是二者的工作原理和场景还是有很大区别。本篇SKYLAB小编就来带大家详细了解下4G模块和WiFi模块的功能和应用场景。有关4G模块和WiFi模块的定义。
wifi模块选型参考注意点
物联网的快速发展,WiFi技术的成熟的情况下,越来越多的场景需要用到WiFi来无线传输数据,尤其是移动设备中,怎么在设备中选择合适的WiFi模块呢?下面我们来介绍下wifi模块选型参考。
【选型】用于物联网智能家居领域的WiFi/蓝牙/WiFi+蓝牙组合模块推荐
本文讲解基于WiFi模块、蓝牙模块、WiFi+蓝牙组合模块串口通信的物联网智能家居升级体验。SKYLAB智能家居产品中内置UART WiFi+UART蓝牙二合一组合模块(WG215/WG222),用户手机下载相关APP,通过手机蓝牙与智能家居产品中的BLE蓝牙模块建立连接,也可以通过路由器连接WiFi与智能家居产品中的WiFi模块建立连接,获得智能家居产品的控制权限。
WiFi模块SKW103为物联网、工业控制、智能家居等领域提供高效稳定可靠的无线网络连接和数据传输服务
wifi模块SKW103可以有效的帮助设备完成信息采集以及数据上传,满足物联网低功耗、低成本的自动化和传感器解决方案WiFi模块需求。
电子商城
现货市场
服务
可定制温度范围-230℃~1150℃、精度可达±0.1°C;支持NTC传感器、PTC传感器、数字式温度传感器、热电堆温度传感器的额定量程和输出/外形尺寸/工作温度范围等参数定制。
提交需求>
可定制无线位移传感器量程范围10~600mm,采用了无线传输方式,可远程自动实时检(监)测位移量值,准确度级别(级):0.2、0.5;内置模块:无线传输模块、供电模块;传输距离L(m):可视距离1000 (Zigbee、 LORA)。
最小起订量: 1pcs 提交需求>
登录 | 立即注册
提交评论