兩個ESP8266通過雲端實現遠程數據交互

兩個ESP8266通過雲端遠程數據交互

原理講解

原理簡述:利用發佈訂閱模式。一個ESP8266作爲消息發佈者,另一個ESP8266作爲消息訂閱者,由於訂閱者可以接收消息發佈者發佈的消息,從而實現兩個ESP8266通過雲端的遠程數據交互。兩個ESP8266在遠端通過主題(topic)進行消息耦合,也就是說 訂閱者訂閱了這個主題,發佈者往這個主題發佈消息,訂閱者就可以收到消息了。

關於發佈訂閱:

訂閱(訂閱):訂閱給定的一個主題/頻道的信息。
發佈(發佈)將信息發送到指定的主題/頻道。

只有訂閱該主題的設備纔可以收到發往該主題的消息。

通俗的來講:就是像郵件訂閱的場景,什麼意思呢,也就是說100個人訂閱了你的博客,如果博主發表了文章,那麼100個人就會同時收到通知郵件,訂閱/發佈模式就是這樣的原理。

如果還不理解的話再通俗講一下,就像生活中聽收音機,要想聽收音機,肯定就是調頻啦,只有在正確的頻道上面,我們才能聽得到好聽的節目,所以說訂閱首先要訂閱一個頻道/主題,只有訂閱了該主題,我們才能收到發往該頻道/主題的消息。

在這裏插入圖片描述

例程下載

點擊下載

本demo 是利用arduino IDE開發,關於arduino IDE 的ESP8266環境配置可參考:環境配置: 點擊跳轉

需要修改的地方:

///****************需要修改的地方*****************///

//WIFI名稱,區分大小寫,不要寫錯
#define DEFAULT_STASSID  "PDCN"
//WIFI密碼
#define DEFAULT_STAPSW "air123456"
//用戶私鑰,可在控制檯獲取,修改爲自己的UID
String UID = "4d9ec352e0376f2110a0c601a2857225";
//主題名字,可在控制檯新建
String TOPIC = "mysender";


///*********************************************///

兩個程序都應該修改的,WIFI名稱和密碼區分大小寫,主題topic也區分大小寫,兩個程序主題應該保持一致,這樣纔可以一個往主題發消息,一個接收主題消息。

巴法創客雲控制檯 新建一個主題,主題名字隨意,例如mysender,本實例用用mysender,使用示例代碼時應修改爲自己的主題名字,字母或數字或字母加數字組合。UID爲用戶私鑰,在 巴法創客雲控制檯 註冊登陸後可獲得。
登陸完成後,可在控制檯看到自己的私鑰UID,如圖所示:

在這裏插入圖片描述

創建主題,在控制檯,可創建主題。

  • 第一輸入主題,字母或數字或字母+數字組合。
  • 點擊創建主題。

在這裏插入圖片描述

WIFI名稱爲自己的路由器WIFI名稱,區分大小寫,寫錯會導致連接不上網絡的。

例程中,每兩秒上傳一次數據:

    if(millis() - predataTick >= upDataTime){//上傳數據
      predataTick = millis();
      
      String upstr = "";
      upstr = "cmd=2&uid="+UID+"&topic="+TOPIC+"&msg=hello_i_am_sender"+intNumber+"\r\n";
      intNumber++;
      sendtoTCPServer(upstr);
      upstr = "";
      
    }

接收者接收打印數據:

  if((TcpClient_Buff.length() >= 1) && (millis() - TcpClient_preTick>=200))
  {//data ready
    TCPclient.flush();
    Serial.println("Recieve: ");
    Serial.println(TcpClient_Buff);
   TcpClient_Buff="";
   TcpClient_BuffIndex = 0;
  }

如果路由器有網絡的話,兩個ESP8266就會連接到網絡中,一個往服務器的一個主題發送消息,一個從雲端的主題中接收數據,從而實現了兩個ESP8266通過雲端的遠程數據交互。

可以通過串口調試助手查看兩個ESP8266數據發送和數據接收的日誌情況,如下圖:
波特率115200

在這裏插入圖片描述

具體應用就要靠大家發散思維了,可以用在遠程控制、設備聯動、智能家居、智能玩具等等。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章