<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 ESP8266控制LED燈并返回控制結果 實驗不成功,是不是提供代碼有問題?

    作者:devilzh | 更新時間:2016-11-16 | 瀏覽量:2275

    教程地址  http://www.arduino.cn/thread-19051-1-1.html

    按著這個來連接的,但代碼好像不完整,整篇代碼里,沒找到 WIFI密碼的設置和云服務器的連接啊??絕對新手,請指教。。。

     

    kaiguan.ino 文件代碼如下,只燒這部分代碼總感覺有問題??

    #include <aJSON.h>
    //=============  此處必須修該============
    String DEVICEID="1047"; // 你的設備編號   這個編號和下面的密碼自己隨便起嗎?增加設備時也沒讓輸入啊,還是先增加設備,生成后再寫到這里??
    String  APIKEY="f54631de6"; // 設備密碼==
    //=======================================
    const int LED = 4;// LED正極連接針腳4
    unsigned long lastCheckInTime = 0; //記錄上次報到時間
    const unsigned long postingInterval = 40000; // 每隔40秒向服務器報到一次
    String inputString = "";
    boolean stringComplete = false;
    boolean CONNECT = true; 
    char* parseJson(char *jsonString);
    void setup() {
      pinMode(LED, OUTPUT);
      Serial.begin(115200);
      delay(5000);
    }
    void loop() {
      if(millis() - lastCheckInTime > postingInterval || lastCheckInTime==0) {
        checkIn();
      }
      serialEvent();
        if (stringComplete) {
          inputString.trim();
          //Serial.println(inputString);
          if(inputString=="CLOSED"){
            Serial.println("connect closed!");
            CONNECT=false;        
          }else{
            int len = inputString.length()+1;    
            if(inputString.startsWith("{") && inputString.endsWith("}")){
              char jsonString[len];
              inputString.toCharArray(jsonString,len);
              aJsonObject *msg = aJson.parse(jsonString);
              processMessage(msg);
              aJson.deleteItem(msg);          
            }
          }      
          // clear the string:
          inputString = "";
          stringComplete = false;    
      }
    }
    void checkIn() {
      if (!CONNECT) {
        Serial.print("+++");
        delay(500);  
        Serial.print("\r\n"); 
        delay(1000);
        Serial.print("AT+RST\r\n"); 
        delay(6000);
        CONNECT=true;
        lastCheckInTime=0;
      }
      else{
        Serial.print("{\"M\":\"checkin\",\"ID\":\"");
        Serial.print(DEVICEID);
        Serial.print("\",\"K\":\"");
        Serial.print(APIKEY);
        Serial.print("\"}\r\n");
        lastCheckInTime = millis();   
      }
    }
    void processMessage(aJsonObject *msg){
      aJsonObject* method = aJson.getObjectItem(msg, "M");
      aJsonObject* content = aJson.getObjectItem(msg, "C");     
      aJsonObject* client_id = aJson.getObjectItem(msg, "ID");  
      //char* st = aJson.print(msg);
      if (!method) {
        return;
      }
        //Serial.println(st); 
        //free(st);
        String M=method->valuestring;
        String C=content->valuestring;
        String F_C_ID=client_id->valuestring;
        if(M=="say"){
          if(C=="play"){
            digitalWrite(LED, HIGH);
            sayToClient(F_C_ID,"LED on!");    
          }
          if(C=="stop"){
            digitalWrite(LED, LOW);
            sayToClient(F_C_ID,"LED off!");    
          }
        }
    }
    void sayToClient(String client_id, String content){
      Serial.print("{\"M\":\"say\",\"ID\":\"");
      Serial.print(client_id);
      Serial.print("\",\"C\":\"");
      Serial.print(content);
      Serial.print("\"}\r\n");
      lastCheckInTime = millis();
    }
    void serialEvent() {
      while (Serial.available()) {
        char inChar = (char)Serial.read();
        inputString += inChar;
        if (inChar == '\n') {
          stringComplete = true;
        }
      }
    }


    評論:共19條

    貝殼物聯 評論于:2016-11-17 08:58:37
    esp模塊在本示例中的使用前提是要進行透傳設置,參見:http://www.eqytg.org/talk/1.html
    聯網相關設置在透傳中進行,教程里在硬件部分有說明。
    devilzh 回復于:2016-11-17 11:16:35
    回復 @貝殼物聯:
    如果按您的教程里,先燒錄 config.ino,再按 上面的教程,燒錄 kaiguan.ino,豈不是把 配置的代碼覆蓋了,還是沒有用啊??我是小白,麻煩了。
    貝殼物聯 回復于:2016-11-17 11:38:17
    回復 @devilzh:config.ino完成它的設置使命之后,可有放心覆蓋了。
    devilzh 回復于:2016-11-17 15:00:47
    回復 @貝殼物聯:
    多謝,config將聯網的配置寫入ESP,重啟后,ESP按寫入的配置自動聯網。kaiguan.ino 只負責處理通信,控制LED就完事了,是這個意思吧。
    devilzh 回復于:2016-11-17 15:02:00
    回復 @貝殼物聯:
    再麻煩一下,那個編號和下面的密碼是自己隨便起嗎?增加設備時也沒讓輸入啊,還是先增加設備,生成后再寫到那里??
    貝殼物聯 回復于:2016-11-18 16:09:38
    回復 @devilzh:在用戶中心添加設備,每一個設備都有對應的id和apikey。
    hyd8058 回復于:2017-06-09 11:34:17
    回復 @貝殼物聯您好,我想先燒錄webconfig的init.lua和main.lua,然后再燒錄kaiguan的nit.lua和main.lua,而kaiguan里的wifi配置我隱藏掉,這樣可以把kaiguan和webconfig兩者結合,您看這樣可以嗎?
    ignore 評論于:2016-11-18 14:29:03
    問一下,你是否實現了LED 的控制,我有個情況搞不明白,顯示在線,發送play,返回不了LED turn on
    貝殼物聯 回復于:2016-11-18 16:11:19
    回復 @ignore:改動過源代碼嗎?除了id和key
    ignore 回復于:2016-11-18 16:59:21
    回復 @貝殼物聯:沒有,
    貝殼物聯 回復于:2016-11-18 17:03:44
    回復 @ignore:具體細節問題可進群交流。
    ignore 回復于:2016-11-18 17:27:30
    回復 @貝殼物聯:具體原因搞不懂,刷nodemcu是可以的,唯獨刷arduino不行,剛接觸,不知道是不是提供的代碼有問題!
    貝殼物聯 回復于:2016-11-18 21:21:28
    回復 @ignore:代碼都經過大家檢驗的,應該沒有問題,當然也可能設備的特殊性引起問題。
    devilzh 回復于:2016-11-19 16:18:12
    回復 @ignore:
    我的費了很大勁才連成功,但有一些還在理解中,剛接觸這塊,需要學習的東西太多了。

    ignore 回復于:2016-11-21 13:54:46
    回復 @devilzh:我想請教你下,你具體是卡在什么地方?
    devilzh 回復于:2016-11-21 14:08:51
    回復 @ignore: 先燒寫config 后燒寫 kaiguan.ino,連線弄錯了,我用的arduino,沒用TTL,兩次用的串口的引腳不同,我注意,浪費時間了。
    ignore 回復于:2016-11-22 14:12:16
    回復 @devilzh:kaiguan的程序中沒有寫明串口,config里面是2、3,kaiguan.ino怎么沒寫啊?
    zwa7788 回復于:2016-12-29 12:45:55
    回復 @devilzh:是kaiguan.ino還是kaiguan.lua?
    吱吱吱 評論于:2017-05-03 18:06:20
    能不能用UDP協議實現?
    返回頂部
    <noscript id="mmkmi"><source id="mmkmi"></source></noscript>
  • <noscript id="mmkmi"><kbd id="mmkmi"></kbd></noscript>
  • <table id="mmkmi"><source id="mmkmi"></source></table>
  • 三上悠亚在线观看