close
√ 以ESP8266為Client端,使用Arduino終端機做初始化設定
可搭配Android Server端sample code:[Android] [Studio] Socket Server接收測試程式
⌲ 簡單呼叫AT:
void AT() { Serial1.print("AT"); Serial1.write(0x0D); Serial1.write(0x0A); }
⌲ 設定模式:(mode1:STA,mode2:AP,mode3:Both)
void SetMode(byte mode) { //變更模組狀態 Serial1.print("AT+CWMODE="); //mode1=STA, mode2=AP, mode3=both Serial1.print(mode); Serial1.write(0x0D); Serial1.write(0x0A); }
⌲ 查詢附近可連線之基地台:
void ShowAP() { //查詢附近可連線之基地台 Serial1.print("AT+CWLAP"); Serial1.write(0x0D); Serial1.write(0x0A); }
⌲ 查詢查詢附近可連線之基地台:
void ShowJAP() { //查詢目前連線之基地台 Serial1.print("AT+CWJAP?"); Serial1.write(0x0D); Serial1.write(0x0A); }
⌲ 連線基地台:
void ConnectAP(String ssip, String password) { //連線基地台 Serial1.print("AT+CWJAP=\""); Serial1.print(ssip); Serial1.print("\",\""); Serial1.print(password); Serial1.print("\""); Serial1.write(0x0D); Serial1.write(0x0A); }
⌲ 離開目前連線之基地台:
void QuitAP() { //離開目前連線之基地台 Serial1.print("AT+CWQAP"); Serial1.write(0x0D); Serial1.write(0x0A); }
⌲ 與相同網域之裝置進行TCP/IP連線:
void ConnectTCP(String IP, String port) { //與裝置進行TCP/IP連線 Serial1.print("AT+CIPSTART=\"TCP\",\""); Serial1.print(IP); Serial1.print("\","); Serial1.print(port); Serial1.write(0x0D); Serial1.write(0x0A); }
⌲ 傳送資料:
void SendData(int datalength, String data) { //傳送資料 Serial1.print("AT+CIPSEND="); Serial1.write(0x0D); Serial1.write(0x0A); enter(); delay(100); Serial1.print(data); Serial1.write(0x0D); Serial1.write(0x0A); }
⌲ 完整範例:
(範例中使用之Timer Library:https://github.com/JChristensen/Timer)
#include "Timer.h"
Timer tcb;
void setup() {
tcb.every(50, timer50ms);
Serial.begin(115200);
Serial1.begin(115200);
}
void loop() {
tcb.update();
if (Serial1.available()) {
Serial.write(Serial1.read());
}
}
void timer50ms() {
test();
}
void test() {
switch (Serial.read()) {
case 0x31:
Serial.println("mode1");
SetMode(1);
break;
case 0x32:
AT();
break;
case 0x33:
ConnectAP("Xin 的 iPhone", "55555555");
break;
case 0x34:
ConnectTCP("192.168.31.230", "9999");
break;
case 0x35:
SendData(5, "hello");
case 0x36:
QuitAP();
}
}
void AT() {
Serial1.print("AT");
enter();
}
void SetMode(byte mode) { //變更模組狀態
Serial1.print("AT+CWMODE="); //mode1=STA, mode2=AP, mode3=both
Serial1.print(mode);
enter();
}
void ShowAP() { //查詢附近可連線之基地台
Serial1.print("AT+CWLAP");
enter();
}
void ShowJAP() { //查詢目前連線之基地台
Serial1.print("AT+CWJAP?");
enter();
}
void ConnectAP(String ssip, String password) { //連線基地台
Serial1.print("AT+CWJAP=\"");
Serial1.print(ssip);
Serial1.print("\",\"");
Serial1.print(password);
Serial1.print("\"");
enter();
}
void QuitAP() { //離開目前連線之基地台
Serial1.print("AT+CWQAP");
enter();
}
void ConnectTCP(String IP, String port) { //與裝置進行TCP/IP連線
Serial1.print("AT+CIPSTART=\"TCP\",\"");
Serial1.print(IP);
Serial1.print("\",");
Serial1.print(port);
enter();
}
void SendData(int datalength, String data) { //傳送資料
Serial1.print("AT+CIPSEND=");
Serial1.print(datalength);
enter();
delay(100);
Serial1.print(data);
enter();
}
void enter() {
Serial1.write(0x0D);
Serial1.write(0x0A);
}
執行後終端機之畫面如下:
(ESP8266資料成功送出後,會接收到「OK」,在此沒有多做判斷。)
連線後Server端收到之資料如下:(收到Hello)(使用之測試軟體:iPhone-Socket Tester)
文章標籤
全站熱搜
留言列表