จากตอนที่แล้วนะคะเราได้สอนวิธีการติดตั้ง Arduino IDE เพื่อให้สามารถใช้งานกับ NodeMCU กันไปเป็นที่เรียบร้อยแล้ว วันนี้เราจะมาสอนการใช้งาน NodeMCU ในเบื้องต้นกัน พร้อมกับมาทดลองทำตัวอย่างง่ายๆ โดยใช้โค้ดตัวอย่างที่มีอยู่ใน Arduino IDE นั่นก็คือ Example HelloServer นั่นเอง ซึ่งในที่นี่เราจะใช้บอร์ดเป็น NodeMCU Devkit 1.0 (ESP-12E) กันค่ะ สำหรับใครที่ใช้เป็น NodeMCU Devkit 0.9 (ESP-12) เวอร์ชั่นแรกก็ลองนำมาปรับใช้ได้เช่นกันค่ะ คิดว่าไม่น่าจะต่างกันมาก งั้นเรามาเริ่มต้นกันเลยดีกว่า

ก่อนอื่นทำการเปิดโปรแกรม Arduino IDE ขึ้นมาก่อน ซึ่งในบทความก่อนเราได้สอนการติดตั้งและวิธีการเซ็ตค่าต่างๆไปแล้ว ใครที่ยังไม่ได้ติดตั้งหรือเซ็ทค่าให้กับ Arduino IDE ให้ไปเซ็ทค่าต่างๆตามบทความ NodeMCU กับ IoT ตอนที่ 2 : ติดตั้ง Arduino IDE สำหรับใช้งาน NodeMCU ESP8266 ก่อน ใครที่เซ็ททุกอย่างเสร็จเรียบร้อยแล้วก็มาต่อกันได้เลย

ในการใช้งาน NodeMCU นั้นเราจำเป็นที่จะต้องมีสาย Micro USB เพื่อใช้เชื่อมต่อกับคอมพิวเตอร์ สำหรับการอัพโหลดโปรแกรมลงบอร์ด การอัพโหลดเฟิร์มแวร์ และการจ่ายไฟเลี้ยง (+5 Volt) ให้กับบอร์ด เริ่มต้นจากนำสาย Micro USB ต่อ NodeMCU เข้ากับคอมพิวเตอร์ จากนั้นจะมีไฟสีฟ้ากระพริบขึ้นบนบอร์ดแสดงว่าพร้อมใช้งานแล้ว และเมื่อเราลองเข้าไปดูที่เมนู  Tools > Ports “COM…” จะมี port ที่เราเชื่อมต่อกับ NodeMCU ขึ้นมา ซึ่งในแต่ละเครื่องก็อาจจะได้เลข port ไม่เหมือนกันก็ได้ แต่ในที่นี้ได้มาเป็น port COM3 ก็ให้คลิกเลือกที่ COM3 เพราะถ้าหากไม่ได้เลือก port ไว้หรือเลือก port ผิด เวลาอัพโหลดโปรแกรมก็จะทำให้ไม่สามารถอัพโหลดโปรแกรมลงบอร์ดได้

เมื่อทำการเลือก port เสร็จแล้ว ต่อมาเราก็จะมาทดลองอัพโหลดโค้ดตัวอย่างที่ Arduino IDE เตรียมไว้ให้กัน โดยให้เข้าไปที่เมนู File > Examples > ESP8266WebServer > HelloServer

ก็จะมีหน้าต่างใหม่เด้งขึ้นมา ซึ่งจะมีโค้ดเหมือนกับด้านล่างนี้

 #include <WiFiClient.h>
 #include <ESP8266WebServer.h>
 #include <ESP8266mDNS.h>

const char* ssid = "……..";
 const char* password = "……..";
 MDNSResponder mdns;

ESP8266WebServer server(80);

const int led = 13;

void handleRoot() {
 digitalWrite(led, 1);
 server.send(200, "text/plain", "hello from esp8266!");
 digitalWrite(led, 0);
 }

void handleNotFound(){
 digitalWrite(led, 1);
 String message = "File Not Found\n\n";
 message += "URI: ";
 message += server.uri();
 message += "\nMethod: ";
 message += (server.method() == HTTP_GET)?"GET":"POST";
 message += "\nArguments: ";
 message += server.args();
 message += "\n";
 for (uint8_t i=0; i<server.args(); i++){
 message += " " + server.argName(i) + ": " + server.arg(i) + "\n";
 }
 server.send(404, "text/plain", message);
 digitalWrite(led, 0);
 }

void setup(void){
 pinMode(led, OUTPUT);
 digitalWrite(led, 0);
 Serial.begin(115200);
 WiFi.begin(ssid, password);
 Serial.println("");

// Wait for connection
 while (WiFi.status() != WL_CONNECTED) {
 delay(500);
 Serial.print(".");
 }
 Serial.println("");
 Serial.print("Connected to ");
 Serial.println(ssid);
 Serial.print("IP address: ");
 Serial.println(WiFi.localIP());

if (mdns.begin("esp8266", WiFi.localIP())) {
 Serial.println("MDNS responder started");
 }
 server.on("/", handleRoot);
 server.on("/inline", [](){
 server.send(200, "text/plain", "this works as well");
 });
 server.onNotFound(handleNotFound);
 server.begin();
 Serial.println("HTTP server started");
 }

void loop(void){
 server.handleClient();
 }

โดยในตัวอย่างนี้จะเป็นการจำลอง NodeMCU ให้ทำหน้าที่เป็นเหมือน Web Server ขนาดเล็ก โดยจะทำการแสดงหน้าเว็บที่เป็น Text ธรรมดา แสดงคำว่า “hello from esp8266!” จากโค้ดตัวอย่างนี้ เราจะต้องทำการแก้ไขเล็กน้อย โดยส่วนที่เราจะต้องไปทำการแก้ไข ก็คือตรง ssid = “……..” และ password = “……..” นั่นเอง ตัวแปร ssid ให้ใส่ชื่อ WiFi router ของคุณ ส่วนตัวแปร password ก็ให้ใส่ password สำหรับเข้าใช้งาน router นั้น

const char* ssid = “ชื่อ WiFi router”;
const char* password = “รหัสผ่านWiFi”;

จากนั้นก็ลองกด compile และทำการ upload ลงบอร์ดดู

Compile

Upload

หลังจากนั้นจะขึ้นว่า “Done Uploading.” แสดงว่า upload เสร็จเรียบร้อยแล้ว  ก็ให้เปิด Serial Monitor ขึ้นมาดู โดยคลิกรูปไอคอนที่อยู่ตรงมุมขวาของโปรแกรม

จะมีหน้าต่าง Serial Monitor ขึ้นมา และจะขึ้นผลลัพธ์ดังรูปด้านล่าง ว่าได้เชื่อมต่อกับ Access Point เรียบร้อยแล้ว ถ้าของใครที่ขึ้นเป็น ….. ไปเรื่อยๆ แสดงว่ามันทำการเชื่อมต่อไม่สำเร็จ ให้ลองไปเช็คดูว่าใส่ ssid และ password ถูกต้องหรือเปล่า ส่วนของใครที่หน้า Serial Monitor ไม่มีอะไรขึ้นเลยแม้แต่น้อย ให้ลองกดปุ่ม Reset ที่บอร์ดดูอีกครั้งหนึ่ง แล้วก็อย่าลืมเซ็ท baud rate หรือ อัตรารับส่งขอมูลที่อยู่ตรงมุมล่างขวาให้ตรงกับ Upload Speed ที่เราเลือกไว้ (ดูที่เมนู Tools > Upload Speed :”……”) ในที่นี้จะเป็น 115200 baud ซึ่งถ้าหากเซ็ทไม่ตรงกัน ก็อาจจะได้ผลลัพธ์ออกมาผิดพลาดเช่นเดียวกัน

จากนั้นนำเลข IP address ที่ได้มาจาก Serial Monitor ลองไปเปิดบน browser ดู จะปรากฎหน้าเว็บที่มีคำว่า “hello from esp8266! ”  ขึ้นมา แสดงว่าตอนนี้ NodeMCU เป็น Server แล้วเรียบร้อยค่ะ วันนี้ก็ขอจบบทความเพียงเท่านี้ ครั้งหน้าจะมีอะไรมาให้เล่นกันอีก อย่าลืมติดตามต่อในตอนต่อไปนะค่ะ