Robofun 機器人論壇

標題: 搞不定使用ESP8266上傳溫溼度數值到thingspeak [打印本頁]

作者: greenman0723    時間: 2016-4-7 13:21
標題: 搞不定使用ESP8266上傳溫溼度數值到thingspeak
各位前輩好,已經研究ESP8266快要一個月了,我無論怎麼設定,都一直無法將DHT-11的溫溼度值上傳到thingspeak上頭。我是依循:ㄆㄜ ㄊㄧㄡ ㄙˋ的機碼進行修改的:


#include <SoftwareSerial.h>
#include "DHT.h"

#define DEBUG

#define _ledpin     13

//*-- Hardware Serial
#define _baudrate   115200

//*-- Software Serial
//
#define _rxpin      2
#define _txpin      3
SoftwareSerial debug( _rxpin, _txpin ); // RX, TX

//*-- DHT11
#define _dhtpin     8
#define _dhttype    DHT11

DHT dht11( _dhtpin, _dhttype );
uint8_t dhtbuf[2];

//*-- IoT Information
#define SSID "KKMAN"
#define PASS "0727071289"
#define IP "184.106.153.149" // ThingSpeak IP Address: 184.106.153.149
// 使用 GET 傳送資料的格式
// GET /update?key=[THINGSPEAK_KEY]&field1=[data 1]&filed2=[data 2]...;
String GET = "GET /update?key=IBLZ275PB8XKAKBZ";

void setup() {
    Serial.begin( _baudrate );
    debug.begin( _baudrate );

    sendDebug("AT");
    delay(5000);
    if(Serial.find("OK"))
    {
        debug.println("RECEIVED: OK\nData ready to sent!");
        connectWiFi();
    }

    // DHT11
    dht11.begin();

    pinMode( _ledpin, OUTPUT );
    digitalWrite( _ledpin, LOW );
}

void loop() {
    dhtbuf[0] = dht11.readHumidity();
    dhtbuf[1] = dht11.readTemperature();

    // 確認取回的溫溼度數據可用
    if( isnan(dhtbuf[0]) || isnan(dhtbuf[1]) )
    {
        debug.println( "Failed to read form DHT11" );
    }
    else
    {
        digitalWrite( _ledpin, HIGH );
        char buf[3];
        String HH, TT;
        buf[0] = 0x30 + dhtbuf[1] / 10;
        buf[1] = 0x30 + dhtbuf[1] % 10;
        TT = (String(buf)).substring( 0, 2 );
        buf[0] = 0x30 + dhtbuf[0] / 10;
        buf[1] = 0x30 + dhtbuf[0] % 10;
        HH = (String(buf)).substring( 0, 2 );

        updateDHT11( TT, HH );
        #ifdef DEBUG
            debug.print("Humidity: ");
            debug.print( HH );
            debug.print(" %\t");
            debug.print("Temperature: ");
            debug.print( TT );
            debug.println(" *C\t");
        #endif
        digitalWrite( _ledpin, LOW );
    }

    delay(60000);   // 60 second
}

void updateDHT11( String T, String H )
{
    // 設定 ESP8266 作為 Client 端
    String cmd = "AT+CIPSTART=\"TCP\",\"";
    cmd += IP;
    cmd += "\",80";
    sendDebug(cmd);
    delay(2000);
    if( Serial.find( "Error" ) )
    {
        debug.print( "RECEIVED: Error\nExit1" );
        return;
    }

    cmd = GET + "&field1=" + T + "&field2=" + H +"\r\n";
    Serial.print( "AT+CIPSEND=" );
    Serial.println( cmd.length() );
    if(Serial.find( ">" ) )
    {
        debug.print(">");
        debug.print(cmd);
        Serial.print(cmd);
    }
    else
    {
        sendDebug( "AT+CIPCLOSE" );
    }
    if( Serial.find("OK") )
    {
        debug.println( "RECEIVED: OK" );
    }
    else
    {
        debug.println( "RECEIVED: Error\nExit2" );
    }
}

void sendDebug(String cmd)
{
    debug.print("SEND: ");
    debug.println(cmd);
    Serial.println(cmd);
}

boolean connectWiFi()
{
    Serial.println("AT+CWMODE=1");
    delay(2000);
    String cmd="AT+CWJAP=\"";
    cmd+=SSID;
    cmd+="\",\"";
    cmd+=PASS;
    cmd+="\"";
    sendDebug(cmd);
    delay(5000);
    if(Serial.find("OK"))
    {
        debug.println("RECEIVED: OK");
        return true;
    }
    else
    {
        debug.println("RECEIVED: Error");
        return false;
    }

    cmd = "AT+CIPMUX=0";
    sendDebug( cmd );
    if( Serial.find( "Error") )
    {
        debug.print( "RECEIVED: Error" );
        return false;
    }
}


然後可以看得到ESP8266上頭除了紅色的電源燈有亮外,基板在發訊號的時候,藍色的燈也會閃一下閃一下....但是去看thingspeak仍然是沒有任何紀錄的,請問基本上會是那個地方出錯呢?
謝謝了~
作者: 超新手    時間: 2016-4-7 13:47
本帖最後由 超新手 於 2016-4-7 15:33 編輯

1. ESP8266 是接到 0 和 1 嗎?
    RX 接 TX, TX 接 RX嗎?
2. SSID 和 密碼是對的嗎?   有試過使用 PC 連上你的 KKMAN, 使用瀏灠器(IE)連上 184.106.153.149 嗎?   這個KEY "IBLZ275PB8XKAKBZ"是對的嗎?
3. 有接 DEBUG 線(2, 3)出來看嗎?
   程式是掛在那? 是 WIFI 有問題還是溫濕度就有問題?
作者: greenman0723    時間: 2016-4-7 20:20
是我的錯,原來ESP8266 是要接到 0 和 1 ....,之前一直以為是2跟3,感謝您~

現在已經正常運作中了~~




歡迎光臨 Robofun 機器人論壇 (https://robofun.net/forum/) Powered by Discuz! X3.2