精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

使用CW32單片機通過ESP8266連接OneNET物聯網平臺

武漢芯源半導體 ? 來源:武漢芯源半導體 ? 2023-11-09 14:32 ? 次閱讀

一、簡介



1.這期視頻向大家介紹如何使用CW32單片機通過ESP8266連接OneNET物聯網平臺,發送溫濕度數據到平臺,并接受平臺的云控制。

二、所需物料


2.本實驗使用到了CW32-48F大學計劃開發板、DHT11溫濕度傳感器模塊、ESP8266WIFI模塊及Keil5開發環境。


3.接線:根據原理圖,把模塊連接到開發板上


(1)ESP8266WIFI模塊:


開發板上預留了該模塊接口,通過串口向ESP8266寫入指令。

8967bbb6-7ec9-11ee-939d-92fbcf53809c.png


(2)DHT11模塊:開發板上預留了該模塊接口

896b7580-7ec9-11ee-939d-92fbcf53809c.png


4.(1)MQTT協議介紹:


MQTT是一種輕量級的發布/訂閱消息傳輸協議,常用于物聯網領域。它的特點是簡化和減少了網絡流量,可以高效地進行數據傳輸。在本次應用中,我們將使用MQTT協議進行數據上傳。


(2)OneNET代碼介紹:


在使用OneNet平臺時,我們需要使用TCP協議進行連接。首先需要設置好TCP協議的相關參數,然后通過POST方法將溫濕度數據上傳到OneNet平臺中。在上傳數據時需要使用OneNet平臺提供的API接口進行數據傳輸。


注:#define PROID"XXX" //xxx產品ID


#define ACCESS_KEY "XXX" //xxx為acess_key訪問密鑰


#define DEVICE_NAME"XXX" //xxx為設備名稱


8978373e-7ec9-11ee-939d-92fbcf53809c.png


898fedd4-7ec9-11ee-939d-92fbcf53809c.png


三、核心代碼

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...
");
 while(ESP8266_SendCmd(ESP8266_ONENET_INFO, "CONNECT")) //ESP8266聯網
  Delay_ms(500);
 UsartPrintf(USART_DEBUG, "NET_OK
"); 
 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
",temperature,humidity);
   UsartPrintf(USART_DEBUG, "OneNet_SendData
");
   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
", 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
");
  break;
  case MQTT_PKT_SUBACK:                //發送Subscribe消息的Ack
 
   if(MQTT_UnPacketSubscribe(cmd) == 0)
    UsartPrintf(USART_DEBUG, "Tips: MQTT Subscribe OK
");
   else
    UsartPrintf(USART_DEBUG, "Tips: MQTT Subscribe Err
");
  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
");
 ? ? ? ?//開燈
 ? ? ? ?PA07_SETLOW();
 ? ? ? ?TFTShowString(5,0,"light: ON ");
 ? ? ?}
 ? ? ?else if(num == 0) ? ? ? ? ? ? ?//控制數據如果為0,代表關
 ? ? ?{
 ? ? ? ?UsartPrintf(USART_DEBUG, "接收到0
");
 ? ? ? ?//關燈
 ? ? ? ?PA07_SETHIGH();
 ? ? ? ?TFTShowString(5,0,"light: OFF");
 ? ? ?}
 ? ?}
 ?}
 ?if(type == MQTT_PKT_CMD || type == MQTT_PKT_PUBLISH)
 ?{
 ? ?MQTT_FreeBuffer(cmdid_topic);
 ? ?MQTT_FreeBuffer(req_payload);
 ?}
}
審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 傳感器
    +關注

    關注

    2548

    文章

    50664

    瀏覽量

    751942
  • 單片機
    +關注

    關注

    6032

    文章

    44514

    瀏覽量

    632951
  • 物聯網
    +關注

    關注

    2903

    文章

    44262

    瀏覽量

    371217
  • CW32
    +關注

    關注

    1

    文章

    183

    瀏覽量

    585

原文標題:【CW32】基于CW32的物聯網應用

文章出處:【微信號:武漢芯源半導體,微信公眾號:武漢芯源半導體】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    關于esp8266連接聯網問題

    esp8266怎么連接上互聯網,以實現遠程通過3G網控制esp8266來控制單片機工作。
    發表于 07-30 22:06

    基于ONENET平臺實現的遠程溫控

    溫控設備開關APP描述綁定設備:輸入ONENET平臺上對應的設備ID和KEY聯網配置:輸入WiFi名稱和密碼,配置ESP8266連接到路由器
    發表于 11-04 15:23

    STM32F4/F1+ESP8266連接OneNET的主要問題有哪些

    STM32F4/F1+ESP8266是怎樣與OneNET進行連接的?STM32F4/F1+ESP8266連接
    發表于 10-25 08:15

    將OLED顯示屏與NodeMCU ESP8266連接的方法

    /thread-1183-1-1.html在本篇文章中,我們將OLED顯示屏與NodeMCU ESP8266連接。 NodeMCU是一個開源的聯網
    發表于 11-01 09:17

    怎樣去控制基于STM32單片機ESP8266連接服務器呢

    ESP8266 station模式的操作邏輯流程是怎樣的?怎樣去控制基于STM32單片機ESP8266連接服務器呢?
    發表于 11-08 07:26

    STM32+ESP8266+MQTT協議如何連接OneNet聯網平臺

    STM32+ESP8266+MQTT協議如何連接OneNet聯網平臺
    發表于 12-02 06:52

    使用esp8266實現STM32聯網(最簡單USART方法)

    到電腦上的java程序 這一篇 esp8266與STM32連接,電腦通過STM32配置esp8266實現聯網發送數據具體流程如下圖 2=
    發表于 11-22 11:51 ?1.2w次閱讀

    51單片機通過ESP8266模塊與手機進行通訊

    51單片機通過ESP8266模塊與手機進行通訊WIFI 工作方式:1.AP模式 提供熱點2.Station模式 作為設備接入熱點3.同時支持配置通過USB轉TTL模塊把
    發表于 11-12 12:06 ?34次下載
    51<b class='flag-5'>單片機</b><b class='flag-5'>通過</b><b class='flag-5'>ESP8266</b>模塊與手機進行通訊

    51單片機通過WIFI模塊ESP8266控制四路繼電器

    目錄一、系統方案二、硬件設計三、單片機軟件設計四、Android APP軟件設計一、系統方案手機APP通過ESP8266 WIFI模塊與51單片機通信控制四路繼電器。下位
    發表于 11-23 16:51 ?43次下載
    51<b class='flag-5'>單片機</b><b class='flag-5'>通過</b>WIFI模塊<b class='flag-5'>ESP8266</b>控制四路繼電器

    基于51單片機+DHT11溫濕度模塊+ESP8266模塊+上傳oneNET APP顯示+LCD1602顯示

    基于51單片機+ESP8266上傳oneNET平臺 APP顯示基本介紹器件51單片機ESP8266
    發表于 11-23 16:51 ?70次下載
    基于51<b class='flag-5'>單片機</b>+DHT11溫濕度模塊+<b class='flag-5'>ESP8266</b>模塊+上傳<b class='flag-5'>oneNET</b> APP顯示+LCD1602顯示

    基于STM32單片機ESP8266聯網阿里云的遠程控制LED系統

    模塊USB轉TTL模塊3.3V供電設備一、整體思路:①:首先STM32單片機通過ESP8266模塊連接路由器進而和阿里云建立TCP連接②:在
    發表于 12-24 19:20 ?42次下載
    基于STM32<b class='flag-5'>單片機</b><b class='flag-5'>ESP8266</b><b class='flag-5'>物</b><b class='flag-5'>聯網</b>阿里云的遠程控制LED系統

    ESP8266通過MQTT協議連接ONENET

    ESP8266通過MQTT協議連接ONENET一、設計目標二、ONENET平臺搭建三、硬件準備四
    發表于 01-12 19:58 ?53次下載
    <b class='flag-5'>ESP8266</b><b class='flag-5'>通過</b>MQTT協議<b class='flag-5'>連接</b><b class='flag-5'>ONENET</b>

    51單片機通過WIFI模塊ESP8266控制四路繼電器

    手機APP通過ESP8266 WIFI模塊與51單片機通信控制四路繼電器。下位單片機ESP8266
    發表于 02-09 09:34 ?131次下載
    51<b class='flag-5'>單片機</b><b class='flag-5'>通過</b>WIFI模塊<b class='flag-5'>ESP8266</b>控制四路繼電器

    使用WIFI模塊ESP8266連接單片機與上位通信

    ATK-ESP8266 是 ALIENTEK 推出的一款高性能的 UART-WiFi(串口-無線)模塊,此處使用的是正點原子團隊自主開發的ATK-ESP-01模塊。該模塊通過串口與 單片機
    發表于 05-09 10:50 ?15次下載
    使用WIFI模塊<b class='flag-5'>ESP8266</b><b class='flag-5'>連接單片機</b>與上位<b class='flag-5'>機</b>通信

    使用Firebase的ESP8266聯網平臺

    電子發燒友網站提供《使用Firebase的ESP8266聯網平臺.zip》資料免費下載
    發表于 07-03 09:54 ?0次下載
    使用Firebase的<b class='flag-5'>ESP8266</b><b class='flag-5'>物</b><b class='flag-5'>聯網</b><b class='flag-5'>平臺</b>