การใช้งาน NodeMCU V2 ESP8266 ESP-12E Module



NodeMCU V2  เป็นบอร์ดที่ใช้ ESP8266 เป็น CPU สำหรับประมวลผลโปรแกรมต่างๆ มีข้อดีกว่า Arduino ตรงที่ตัวมันมีขนาดเล็กกว่า มีพื้นที่เขียนโปรแกรมลงไปมากกว่า และสามารถเชื่อมต่อกับ WiFi ได้ บนบอร์ดรุ่นนี้ใช้ ESP8266 12e มีพื้นที่หน่วยความจำรอมสูงถึง 4MB เพียงพอสำหรับการเขียนโปรแกรมขนาดใหญ่ อีกทั้งภายในยังเป็น ARM ขนาดย่อมๆ ใช้ความถี่สูงถึง 40MHz ทำให้สามารถประมวลผลโค้ดโปรแกรมได้อย่างรวดเร็ว

การจะใช้ NodeMCU ได้นั้น จำเป็นต้องติดตั้ง แพลตฟอร์ม ESP8266 เพื่อ ทำการติดต่อ ระหว่าง Arduino IDE กับ NodeMCU


ลิงค์ : ขั้นตอนการติดตั้ง แพลตฟอร์ม ESP8266


https://robotsiam.blogspot.com/2017/06/esp8266-platform-nodemcu.html




จากนั้นทดสอบการทำงานของ NodeMCU V2 ESP8266 ESP-12E Module



โดยใช้โปรเจค 
ควบคุม การ ปิด / เปิด LED จาก เว็บเบราเซอร์ โดยใช้ NodeMcu


โปรเจคนี้ จะควมคุมผ่าน ระบบ
อินทราเน็ต ที่ใช้ WiFi หรือ วง แลน หรือใช้ เราเตอร์ เดียวกัน เท่านั้น


เราจะเชื่อมต่อ NodeMCU V2 กับเราเตอร์ WiFi โดยใช้ SSID หรือ ชื่อ WiFi ที่ต้องการเชื่อมต่อ และรหัสผ่าน ของเครือข่าย

ซึ่ง ESP8266 เมื่อเชื่อมต่อกับ WiFi ของเราแล้ว จะสร้างเว็บเซิร์ฟเวอร์ ซึ่งสามารถเข้าถึงได้โดยการมองผ่าน Serial Monitor ของ Arduino IDE และ ควบคุมผ่านทาง เว็บเบราเซอร์ ของคอมพิวเตอร์ ที่เชื่อมต่อ WiFi วงเดียวกัน


อุปกรณ์ที่ใช้  



1. 
NodeMCU V2 CP2102 Lua WIFI ESP8266 ESP-12E

2. Micro USB Cable Wire 1m for NodeMCU

3. Breadboard 8.5CM x 5.5CM 400 holes

4. หลอดไฟ LED





ต่ออุปกรณ์ตามรูป



ให้ตรวจสอบการติดตั้งไดร์เวอร์ ของ NodeMCU V2 



โดย 
คลิกขวา Computet -> Properties






คลิกที่ Device Manager




ที่ Ports (COM & LPT) จะพบ ไดร์เวอร์ ของ NodeMCU V2 ในตัวอย่างเป็น "COM12"


(ถ้าไม่พบให้ทำการติดตั้ง
ไดร์เวอร์ก่อน)





ต่อ LED เข้าที่ขา D5 และ GND ตามรูป






การใช้งาน Digital/Input ซึ่งการใช้งาน Digital I/O ของ ESP8266 นั้น สามารถใช้งานคำสั่ง digitalWrite, digitalRead ได้เช่นเดียวกับการใช้งาน Digital I/O ของ Arduino โดยกำหนดหมายเลขของ Pin เช่นตัวอย่าง Pin ที่  14 หรือจะกำหนดชื่อ Pin โดยอ้างตามชื่อ Pin บนบอร์ด NodeMCU  V2 เป็น D5 ก็ได้เช่นกัน






โค้ด 
ควบคุม การ ปิด / เปิด LED จาก เว็บเบราเซอร์ โดยใช้ NodeMcu V2



#include <ESP8266WiFi.h>
const char* ssid = "xxxxx";
const char* password = "xxxxx";
int ledPin = 14; // D5
WiFiServer server(80);
void setup() {
  Serial.begin(115200);
  delay(10);
  pinMode(ledPin, OUTPUT);
  digitalWrite(ledPin, LOW);
  // Connect to WiFi network
  Serial.println();
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");
  // Start the server
  server.begin();
  Serial.println("Server started");
  // Print the IP address
  Serial.print("Use this URL to connect: ");
  Serial.print("http://");
  Serial.print(WiFi.localIP());
  Serial.println("/");
}
void loop() {
  // Check if a client has connected
  WiFiClient client = server.available();
  if (!client) {
    return;
  }
  // Wait until the client sends some data
  Serial.println("new client");
  while(!client.available()){
    delay(1);
  }
  // Read the first line of the request
  String request = client.readStringUntil('\r');
  Serial.println(request);
  client.flush();
  // Match the request
  int value = LOW;
  if (request.indexOf("/LED=ON") != -1)  {
    digitalWrite(ledPin, HIGH);
    value = HIGH;
  }
  if (request.indexOf("/LED=OFF") != -1)  {
    digitalWrite(ledPin, LOW);
    value = LOW;
  }
// Set ledPin according to the request
//digitalWrite(ledPin, value);
  // Return the response
  client.println("HTTP/1.1 200 OK");
  client.println("Content-Type: text/html");
  client.println(""); //  do not forget this one
  client.println("<!DOCTYPE HTML>");
  client.println("<html>");
  client.print("Led pin is now: ");
  if(value == HIGH) {
    client.print("On");
  } else {
    client.print("Off");
  }
  client.println("<br><br>");
  client.println("<a href=\"/LED=ON\"\"><button>Turn On </button></a>");
  client.println("<a href=\"/LED=OFF\"\"><button>Turn Off </button></a><br />");  
  client.println("</html>");
  delay(1);
  Serial.println("Client disonnected");
  Serial.println("");
}



ก่อนการอัพโหลดต้องแก้ไขโค้ด ตรง = "xxxxx" ให้ถูกต้องโดย


ssid = "ชื่อwifiที่ต้องการเชื่อมต่อ"

password =  "รหัสผ่าน"




เลือก Port ในตัวอย่างเป็น "COM12"





เลือก Board : NodeMCU 1.0 (ESP-12E Module)





แล้วจึงอัพโหลดโค้ดที่แก้ไขแล้ว เข้าไปยัง NodeMCU V2



รอจนกระทั่ง Done uploading.




ไปที่ Serial Monitor



ตั้งค่า baud rate เป็น 115200 และปรับช่องในรูปให้เป็น ฺBoth NL & CR



 

ปิดลงไป Serial Monitor แล้วจึงเปิดขึ้นมาใหม่ จะแสดง ไอพี ของ  NodeMCU V2 ในตัวอย่างเป็น 192.168.1.38 (นำ ไอพี ที่ได้นี้ ไปใช้งานต่อไป)






ทดสอบโดย เว็บเบราเซอร์ (web browser)


เริ่มด้วย เปิด เว็บเบราเซอร์ (web browser) ขึ้นมา

พิมพ์ http://192.168.1.38
หรือ 192.168.1.38



ทดลองคลิกที่ปุ่ม Turn On 
ไฟ LED จะติด (ถ้าไฟไม่ติดให้ทดลองกลับขั้ว LED)



หรือ 
คลิกที่ปุ่ม Turn Off  ไฟ LED จะดับ