Arduino 記事本 05 : 網路連線-物聯網實驗
網頁筆記本-005
Arduino 記事本 05 : 網路連線-物聯網實驗
- 硬體&連線 (ESP8266 RS232速率設定9600)
1、提供ESP8266使用的3.3V電壓(建議使用外接變壓器)
2、ESP8266-GND對接
3、ESP8266-Tx接到MEGA的RX1
4、ESP8266-Rx接到MEGA的TX1
5、ESP8266-CH-P接到3.3V電壓
- 程式
// 無線網路基地台
#define LinkWIFI "AT+CWJAP=\"Tenda_ABCD\",\"ABCD1234\""
#define QuitWIFI "AT+CWQAP"
#define Link_TCP "AT+CIPSTART=\"TCP\",\"api.thingspeak.com\",80"
// ThingSpeak Server (物聯網實驗)
#define ThingSpeakHTTP "api.thingspeak.com"
// 設定 GET 傳送資料的格式
// GET https://api.thingspeak.com/update?api_key=KJABN12YJC34H6YF&field1=0
String GET = "GET /update?key=KJABN12YJC34H6YF";
// 全域變數 {陣列需要先預設內容}
float TS_DATA[9] = {1.1, 3.3, 5.5, 7.7, 9.9, 10.01, 15.51, 20.02, 30.03};
char cData[100];
bool bLinkTCP = false;
void setup() {
// 設定 COM Port
Serial.begin(9600); // Debug Port
Serial1.begin(9600); // RS232通訊 - ESP8266用
bool bStatus = false;
int i=0;
while(bStatus == false){
// 測試ESP8266是否存在
Serial.print("S : "); // Show Sned Message
Serial.println("AT");
Serial1.println("AT");
for(i=0; i<10; i++) {
if(Serial1.find("OK")) {
// 取得回傳字串 "OK"
bStatus = true;
break;
}
else {
Serial.println("."); // Show Sned Message
delay(1000);
}
}
// 確認與ESP8266連接是否正確
if(bStatus == false){
Serial.println("R : Error#001"); // Show Sned Message
delay(10000);
}
else{
Serial.println("R : OK"); // Show Sned Message
}
}
// 選擇型態 (此指令需重啟後才會生效!!!)
Serial1.println("AT+CWMODE=1");
bool bLink = false;
while(bLink == false){
Serial.print("S : "); // Show Sned Message
Serial.println(LinkWIFI);
Serial1.println(LinkWIFI);
// 確認是否連上無線網路
for(i=0; i<10; i++){
if(Serial1.find("OK")){
// 取得回傳字串 "OK"
bLink = true;
break;
}
else {
Serial.println("."); // Show Sned Message
delay(1000);
}
}
// 確認網路是否正確連線
if(bLink == false){
Serial.println("R : Error#002"); // Show Sned Message
Serial.println(QuitWIFI);
delay(10000); // 10秒後重連
}
else{
Serial.println("R : OK"); // Show Sned Message
}
}
}
void loop() {
delay(2000); // 停頓2秒後上傳
int i=0;
Serial.print("S : "); // Show Sned Message
Serial.println(Link_TCP);
Serial1.println(Link_TCP);
if( Serial1.find( "Error" ) ){
Serial.println("R : Error#003"); // Show Sned Message
bLinkTCP = false;
}
else{
bLinkTCP = true;
}
if(bLinkTCP==true){
String strUpdataData = GET + "&field1=" + TS_DATA[0] + "&field2=" + TS_DATA[1] +"\r\n";
Serial.print("S : "); // Show Sned Message
Serial.print("AT+CIPSEND="); // Show Sned Message
Serial.println(strUpdataData.length()); // Show Sned Message
Serial1.print( "AT+CIPSEND=" );
Serial1.println( strUpdataData.length() );
if(Serial1.find( ">" ) ){
Serial.print(">"); // Show Sned Message
Serial.print(strUpdataData); // Show Sned Message
Serial1.print(strUpdataData);
}
if( Serial1.find("OK") ){
Serial.println("S : OK"); // Show Sned Message
}
else{
Serial.println("R : Error#004"); // Show Sned Message
}
}
delay(10000);
}
留言
張貼留言