วันศุกร์ที่ 27 พฤษภาคม พ.ศ. 2559

NodeMCU esp8266 Web server

esp8266 Web server
การทดลองนี้มีจุดประสงค์เพื่อทดสอบว่า
ESP8266 สามารถควบคุมจาก PC ผ่าน IP ของ
ESP8266 ได้หรือไม่

อุปกรณ์

1.LED
2.ESP8266
3.สายจัมป์เปอร์
4.Notebook 
5.โทรศัพท์ที่สามารถแชร์ Wifi ได้

วิธีการทดลอง

1.Load Code ลงบอร์ด
2.ต่อ LED ตาม GPIO ที่ได้เขียนไว้ใน Code
3.แชร์ Wifi จากโทรศัพท์ของเรา
4.ทดสอบเข้า IP ของ ESP8266 ด้วย Browser
5.ลองกด Switch LED ON ,LED OFF

Code

#include 
#define LED D0 //กำหนดขาที่ต่อ LED เป็นขา D0
const char* ssid = "sleep"; //กำหนด SSID (อย่าลืมแก้เป็นของตัวเอง)
const char* password = "22222222"; //กำหนด Password(อย่าลืมแก้เป็นของตัวเอง)
unsigned char status_led = 0; //กำหนดตัวแปร ที่เก็บค่าสถานะของ LED
WiFiServer server(80); //กำหนดใช้งาน TCP Server ที่ Port 80
void setup() {
Serial.begin(115200); //เปิดใช้ Serial
pinMode(LED, OUTPUT); //กำหนด Pin ที่ต่อกับ LED เป็น Output
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password); //เชื่อมต่อกับ AP
while (WiFi.status() != WL_CONNECTED) //รอการเชื่อมต่อ
{ delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected"); //แสดงข้อความเชื่อมต่อสำเร็จ
server.begin(); //เปิด TCP Server
Serial.println("Server started");
Serial.println(WiFi.localIP()); // แสดงหมายเลข IP ของ Server
}
void loop() {
WiFiClient client = server.available(); //รอรับ การเชื่อมต่อจาก Client
if (!client) { //ถ้าไม่มี Client เข้ามาให้เริ่มกับไปวน loop รอรับใหม่
return;
}
Serial.println("new client");
while (!client.available())
{
delay(1);
}
String req = client.readStringUntil('\r'); //อ่านค่าที่ได้รับจากclient จากข้อมูลแรกถึง ‘\r’
Serial.println(req); //แสดงค่าที่ได้รับทาง Serial
client.flush();
if (req.indexOf("/ledoff") != -1) //ตรวจสอบว่า data ที่เข้ามามีข้อความ”/ledoff”หรือไม่
{
status_led = 0; //ถ้ามีให้กำหนดค่า ในตัวแปรใน status_led=0
digitalWrite(LED, HIGH); //ให้ LED ดับ
Serial.println("LED OFF");
}
else if (req.indexOf("/ledon") != -1) //ตรวจสอบว่า data ที่เข้ามามีข้อความ”/ledon”หรือไม่
{
status_led = 1; //ถ้ามีให้กำหนดค่า ในตัวแปรใน status_led=1
digitalWrite(LED, LOW); //ให้ LED ติด
Serial.println("LED ON");
}
String web = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n";
web += "\r\n";
web += "\r\n";
web += "

LED Status

\r\n"; web += "

\r\n"; if(status_led==1) web += "LED On\r\n"; else web += "LED Off\r\n"; web += "

\r\n"; web += "

\r\n"; web += "\r\n"; web += "\r\n"; web += "\r\n"; web += "

\r\n"; web += "\r\n"; web += "\r\n"; web += "\r\n"; web += "\r\n"; web += "\r\n"; client.print(web); }

ผลลัพธ์:




Share:

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

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