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" ให้ถูกต้องโดย
เลือก Port ในตัวอย่างเป็น "COM12"
ทดสอบโดย เว็บเบราเซอร์ (web browser)
เริ่มด้วย เปิด เว็บเบราเซอร์ (web browser) ขึ้นมา
พิมพ์ http://192.168.1.38
หรือ 192.168.1.38
ทดลองคลิกที่ปุ่ม Turn On ไฟ LED จะติด (ถ้าไฟไม่ติดให้ทดลองกลับขั้ว LED)
หรือ คลิกที่ปุ่ม Turn Off ไฟ LED จะดับ
ก่อนการอัพโหลดต้องแก้ไขโค้ด ตรง = "xxxxx" ให้ถูกต้องโดย
ssid = "ชื่อwifiที่ต้องการเชื่อมต่อ"
password = "รหัสผ่าน"
password = "รหัสผ่าน"
เลือก Port ในตัวอย่างเป็น "COM12"
เลือก Board : NodeMCU 1.0 (ESP-12E Module)
แล้วจึงอัพโหลดโค้ดที่แก้ไขแล้ว เข้าไปยัง NodeMCU V2
รอจนกระทั่ง Done uploading.
ไปที่ Serial Monitor
ตั้งค่า baud rate เป็น 115200 และปรับช่องในรูปให้เป็น ฺBoth NL & CR
ไปที่ 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 จะดับ