วันพฤหัสบดีที่ 26 พฤษภาคม พ.ศ. 2559

NodeMCU TCP Hercules server

การทดลองนี้จะเป็นการทดลองใช้โปรแกรมHercules กับ ESP8266 
โดยให้ Hercules เป็น Server แล้ว ESP8266 เป็น Client 
ใน Arduino IDE จะต้องเขียนโปรแกรมให้เชื่อมต่อ กับ IP ของ Notebook 
และ SSID กับ Password ของ Wifi ที่ Notebook กำลังเชื่อมต่ออยู่
อุปกรณ์การทดลอง
1.โปรแกรม Hercules
2.Board MCU ESP8266
3.Notebook
4.โปรแกรม Arduino IDE
วิธีการทดลอง
1.เปิดโปรแกรม Hercules เลือกtab TCP Server แล้วตั้ง Port เป็น 8000
2.โหลด code ลง ESP8266 3.กดที่ Serial port มีลักษณะคล้ายแว่นขยาย 4.ทดสอบดูผลลัพธ์ว่า มีการเชื่อมต่อเข้ามาจาก Client หรือไม่ คำเตือน! อย่าลืมตั้ง Baudrate ให้ตรงกับที่ set ไว้ใน code จาก code จะเห็นว่า Baudrate คือ 115200
Code
#include 
#define SERVER_PORT 8000 //ค่า port ที่ต้องการเชื่อมต่อ
IPAddress server_ip = {192, 168, 43, 215}; //ค่า ip ของ Server (อย่าลืมแก้เป็น IP ของตัวเอง)
const char* ssid = "sleep"; //ค่าของ SSID (อย่าลืมแก้เป็น ชื่อ SSID ของตัวเอง)
const char* password = "22222222"; //ค่าของ SSID (อย่าลืมแก้เป็น password ของตัวเอง)
WiFiServer server(SERVER_PORT); //สร้าง object server และกำหนด port ที่ต้องการเชื่อมต่อกับ server
WiFiClient client; //สร้าง object client
void setup()
{
Serial.begin(115200); //เปิดใช้ Serial
WiFi.begin(ssid, password); //เชื่อมต่อกับ AP
while (WiFi.status() != WL_CONNECTED) //รอการเชื่อมต่อ
{
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP()); //แสดงหมายเลข IP
Serial.println("Connect TCP Server");
while (!client.connect(server_ip, SERVER_PORT)) //เชื่อมต่อกับ Server
{
Serial.print(".");
delay(100);
}
Serial.println("Success");
ESP.wdtDisable(); //ปิด watch dog Timer
}
void loop()
{
while (client.available()) //ตรวจเช็ตว่ามี Data ส่งมาจาก Server หรือไม่
{
uint8_t data = client.read(); //อ่าน Data จาก Buffer
Serial.write(data); //แสดงผล Data ทาง Serial
}
client.println("Hello"); //ส่งค่าที่ได้รับกลับไปยัง Server
delay(1000);
}
ผลลัพธ์ :
คราวนี้มาลองให้ Hercules เป็น Client แล้วให้ ESP8266 เป็น Server ดูบ้างครับ
#include 
#define SERVER_PORT 8000 //กำหนด Port ใช้งาน
const char* ssid = "sleep"; //กำหนด SSID
const char* password = "22222222"; //กำหนด Password
WiFiServer server(SERVER_PORT); //สร้าง object server และกำหนด port
void setup()
{ Serial.begin(115200); //เปิดใช้ Serial
Serial.println("");
Serial.println("");
WiFi.begin(ssid, password); //เชื่อมต่อกับ AP
while (WiFi.status() != WL_CONNECTED) //รอการเชื่อมต่อ
{ delay(500);
Serial.print(".");
}
Serial.println("WiFi connected"); //แสดงข้อความเชื่อมต่อสำเร็จ
Serial.println("IP address: ");
Serial.println(WiFi.localIP()); //แสดงหมายเลข IP
server.begin(); //เริ่มต้นทำงาน TCP Server
Serial.println("Server started"); //แสดงข้อความ server เริ่มทำงาน
ESP.wdtDisable(); //ปิด watch dog Timer
}
void loop()
{ WiFiClient client = server.available(); //รอรับ การเชื่อมต่อจาก Client
if (client) //ตรวจเช็คว่ามี Client เชื่อมต่อเข้ามาหรือไม่
{
Serial.println("new client"); //แสดงข้อความว่ามี Client เชื่อมต่อเข้ามา
while (1) //วนรอบตลอด
{ while (client.available()) //ตรวจเช็ตว่ามี Data ส่งมาจาก Client หรือไม่
{ uint8_t data = client.read(); //อ่าน Data จาก Buffer
Serial.write(data); //แสดงผล Data ทาง Serial
}
if (server.hasClient()) //ตรวจเช็คว่ายังมี Client เชื่อมต่ออยู่หรือไม่
{ return; //ถ้าไม่มีให้ออกจาก ลูป ไปเริ่มต้นรอรับ Client ใหม่
}
}
}
ผลลัพธ์:
Share:

0 ความคิดเห็น:

แสดงความคิดเห็น