<noscript id="mmkmi"><source id="mmkmi"></source></noscript>
  • <noscript id="mmkmi"><kbd id="mmkmi"></kbd></noscript>
  • <table id="mmkmi"><source id="mmkmi"></source></table>
  • 遠程控制通訊——基于Arduino IDE ESP8266控制LED燈(不需要arduino)

    作者:chenyuechi | 更新時間:2016-05-29 | 瀏覽量:6487

    一、目標

    通過ESP8266連接貝殼物聯服務,實現遠程控制LED燈亮滅,并將結果反饋至控制界面。


    二、硬件

    三、軟件

     首先下載arduino IDE 百度網盤:http://pan.baidu.com/s/1qWSpA92

     安裝arduino成功后,再根據arduino中文社區一位大神的教程配置一下環境:http://www.arduino.cn/thread-17895-1-1.html

    如果wifi塊是ESP8266-01的按以下接線:(按燒寫模式接線)

    運行模式接線方法:(用USBTTL串口連接模塊與PC)

    esp8266-01         u轉串

    VCC-----------3.3

    GND----------GND

    CH_PD--------3.3

    RX-------------TX

    TX-------------Rx

    GPIO2---------LED正極

    GND------------LED負極


    其余引腳為空。

    燒寫模式接線方法:燒寫模式時需要將gpio0接地,工作模式時gpio0懸空

    (注意有時8266需要獨立供電,不直接在ttl取電,很多出現問題都在供電上,別對自己的電源太自信)

    參考這篇帖子上的說明進行接線:http://www.arduino.cn/forum.php?mod=viewthread&tid=17896&page=1&extra=#pid148026

    四、代碼

    #include <ESP8266WiFi.h>
     WiFiClient client;
    #define relay1 2 //LED連接在8266的GPIO2上
    const char *ssid     = "*****";//這里是我的wifi,你使用時修改為你要連接的wifi ssid
    const char *password = "**********";//你要連接的wifi密碼
    const char *host = "121.42.180.30";
    
    void setup() {
      Serial.begin(115200);
      delay(10);
      pinMode(relay1,OUTPUT);
      // We start by connecting to a WiFi network
    
      Serial.println();
      Serial.println();
      Serial.print("Connecting to ");
      Serial.println(ssid);
      
      WiFi.begin(ssid, password);
      
      while (WiFi.status() != WL_CONNECTED) {
        delay(500);
        Serial.print(".");
      }
    
      Serial.println("");
      Serial.println("WiFi connected");  
      Serial.println("IP address: ");
      Serial.println(WiFi.localIP());
      const int httpPort =8181;
      if (!client.connect(host, httpPort)) {
        Serial.println("connection failed");
        return;
      }
      Serial.print("connecting to ");
      Serial.println(host);
      client.write("{\"M\":\"checkin\",\"ID\":\"***\",\"K\":\"*******\"}\r\n");//登陸設備,修改成自己的ID和key
      delay(10);
    }
    
    void loop() {
     char valueread;
          while(client.available()){
          String line = client.readStringUntil('\r');
         Serial.print(line);
         int i;     
         for(i=0;i<=150;i++)
         { 
          if((line[i]=='o') &&( line[i+1]=='n'))
          {  
            digitalWrite(relay1,HIGH);
            client.write("{\"M\":\"say\",\"ID\":\"ALL\",\"C\":\"LED1 is on\",\"SIGN\":\"ok\"}\r\n");        
            }
    
             if((line[i]=='o') && (line[i+1]=='f'))
          {  
            digitalWrite(relay1,LOW);
            client.write("{\"M\":\"say\",\"ID\":\"ALL\",\"C\":\"LED1 is off\",\"SIGN\":\"ok\"}\r\n");  
           }
      
         
         }   
      }
      client.write("{\"M\":\"say\",\"ID\":\"***\",\"C\":\"123456\"}\r\n");//修改自己的ID,向設備發送信息,防止掉線
      delay(2000);
    }



    評論:共19條

    貝殼物聯 評論于:2016-03-18 21:27:02
    多謝分享,注釋很詳細!
    chenyuechi 回復于:2016-03-18 21:29:41
    回復 @貝殼物聯:我這個識別指令的方法好蠢,靠數位,哭蝦
    貝殼物聯 回復于:2016-03-18 21:52:05
    回復 @chenyuechi:json數據的順序,萬一改變,這個方法就不行了-_-!!!
    命令可以長一點,判斷接收到的字符串中是否包括你發送的命令。
    wony366 回復于:2016-04-05 19:25:18
    回復 @貝殼物聯站長,回復怎么不能帶符合呀,我暈
    貝殼物聯 回復于:2016-04-07 09:58:50
    回復 @wony366: 修復了一下,你再試試
    peter 回復于:2016-10-11 17:25:38
    回復 @chenyuechi:你好,按你的程序燒到ESP8266里可以聯網,控制開打“on”LED亮,但打
    “of”或者"off"LED不能關閉,貝殼網站返回一直是:LED1 is on,不知道我哪里沒搞對,請指教下,謝謝。
    bmy9 回復于:2017-07-27 20:47:13
    回復 @peter:我現在也有這個問題。。
    ωǒ為иǐ存在 回復于:2018-04-07 14:06:51
    回復 @bmy9:你的問題解決了嗎?我也遇到了不會呢
    z956618955 回復于:2018-10-15 11:19:30
    回復 @peter:你好 我和你的情況一樣 你調試好了嗎
    z956618955 回復于:2018-10-15 12:00:04
    回復 @ωǒ為иǐ存在:你好擬解決了嗎
    ωǒ為иǐ存在 回復于:2018-11-05 21:45:54
    回復 @z956618955:解決了
    ETHOME 回復于:2019-02-19 21:03:01
    回復 @貝殼物聯:作者已經沒有在貝殼了嗎? 我按這個代碼寫進去以后,發現經常會掉線不會重連,有什么解決辦法嗎
    厝命1 回復于:2019-04-03 01:09:41
    回復 @貝殼物聯:請問按作者的方法進行操作后,led燈常亮并且貝殼網顯示不在線是怎么回事呢 純小白 ballball大佬
    wony366 評論于:2016-04-05 19:21:48
    這個例子很不錯,我試了,很成功,本人是個業余arduino 愛好者我想問下 client.write 的語法是怎樣的,github 上好像沒有單獨介紹的,比如 “ 有些不明白,我自己照你這大致的編寫方法寫了一句 client.writeMupdateID138V119trn 用來上傳溫度,t 是溫度標量,串口輸出是正常傳感器溫度,但是 傳不到平臺,一直更新不了溫度值,138 是設備ID,119 是數據接口ID,希望大神能給予幫助。
    奮斗し 回復于:2019-04-24 15:50:31
    回復 @wony366:嘗試一下重連貝殼物聯平臺,設置后在開始透傳
    wony366 評論于:2016-04-05 19:23:24
    是什么時候用,有些不明白。。。。傳字母符合時是怎么用,傳變量時又怎么用?
    火箭飛行兵 評論于:2016-05-24 10:00:10
    您好、我是小白、請問一下47位是怎么數的、
    chenyuechi 回復于:2016-05-25 17:43:21
    回復 @火箭飛行兵:我改進了程序,你再看一下
    厝命1 評論于:2019-04-03 00:55:56
    按作者的方法進行操作后,led燈常亮并且貝殼網顯示不在線是怎么回事呢 純小白 各位大佬求救
    返回頂部
    <noscript id="mmkmi"><source id="mmkmi"></source></noscript>
  • <noscript id="mmkmi"><kbd id="mmkmi"></kbd></noscript>
  • <table id="mmkmi"><source id="mmkmi"></source></table>
  • 三上悠亚在线观看