Robofun 機器人論壇
標題:
請教有關於Arduino使用ESP8266接收訊息
[打印本頁]
作者:
adolclistin
時間:
2016-7-22 11:30
標題:
請教有關於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[512] = {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數,那我應該如何改可以看到收到的內容。
謝謝!
歡迎光臨 Robofun 機器人論壇 (https://robofun.net/forum/)
Powered by Discuz! X3.2