adolclistin 發表於 2016-7-22 11:30:38

請教有關於Arduino使用ESP8266接收訊息

各位arduino的前輩,
我想請教有關arduino使用ESP8266接收訊息,其程式碼如下:

#include "ESP8266.h"
#include "SoftwareSerial.h"


#define HOST_NAME   "184.106.153.149" //thingspeaks 的網址
#define HOST_PORT   (80)                     // thingspeaks 的port

/*
下面的兩個字串,我已經使用Serial monitor 測試過,SENT的字串是將資料送上thingspeaks,而GET的字串是用來收thingspeaks,這兩組字串在Serial monitor裡使用AT 指令測試過,都可以收到thingspeaks所回傳的資料。
*/
String SENT = "GET /update?key=6C8BLQMLKM62WL45&field1=6&field2=8\r\n";
String GET = "GET /channels/126861/fields/1/last.json?api_key=2TUA6G8KZUICSJBA&timezone=Asia/Taipei\r\n";

SoftwareSerial esp01(4,5);   //設定esp8266的rx tx 於第4和5pin
ESP8266 wifi(esp01, uint32_t(57600));

/*
由於esp8266第一次設定好了,就會自動連線,所以在這個程式裡沒有連接wifi的程式。
*/
void setup() {
Serial.begin(57600);
Serial.println(wifi.getLocalIP().c_str()); //show出目前esp8266連線wifi的區域ip,如果有顯示的話,表示有連上wifi

}

unsigned int counter = 0;

void loop() {


uint8_t buf = {0};

if(wifi.createTCP(HOST_NAME, HOST_PORT)) //等效於AT+CIPSTART 使用tcp傳輸
   Serial.print("create tcp ok\r\n");
else
   Serial.print("create tcp err\r\n");

   /*
   傳送要求的訊息
   */
   esp01.print("AT+CIPSEND=");
   esp01.println(GET.length());
   if(esp01.find(">")){
      Serial.print("start sentdata");
      esp01.print(GET);
      delay(200);
   }else{
      Serial.print("fail");
      esp01.println("AT+CIPCLOSE");
   }

/*
   下面是收thingspeak的資訊,不過從serial monitor上看到都是收到多少的byte
*/
unsigned int index = 0;
while (esp01.available())
{
    Serial.write(esp01.read());

}

counter++;
Serial.println(counter);
delay(15000);
}


在arduino的 函式serial.read(),從官網來看是回傳收到資訊的byte數,那我應該如何改可以看到收到的內容。

謝謝!
頁: [1]
查看完整版本: 請教有關於Arduino使用ESP8266接收訊息