ESP8266 NodeMCU JQuery JavaScript
- ESP8266 สามารถสร้าง html และ css รวมทั้งคำสั่ง javascript ได้ โดยคำสั่งเหล่านี้เราทำงานที่เครื่อง client จึงไม่ต้องกังวลในการประมวลผลยาก ๆ เช่น JQuery หรือ CSS
- JQuery มีการใช้งานได้หลายหลาย ในตัวอย่างนี้เราจะมาทดลองใช้ JQuery ในการอัพเดทแสดงข้อมูลหน้าเว็บแบบ AJAX ซึ่งทำให้เราไม่ต้องโหลดข้อมูลทั้งหมดทุกครั้งที่มีการอัพเดท เพิ่มประสิทธิภาพและลดภาระงานให้ ESP8266
- ตัวอย่างโคด JQuery ตามตัวอย่างนี้ ดาวน์โหลดที่นี่ ประกอบด้วย 2 ไฟล์คือ
- ไฟล์ Demo.html สำหรับหน้าแสดงผล โดยนำข้อมูลจากหน้า value มาอัพเดททุก 5 วินาที หรือเมื่อกดปุ่ม Refresh
Value Sensor
ไฟล์ value สำหรับเก็บข้อมูล
555
จากไฟล์ที่ดาวน์โหลด ทดลองเปิดไฟล์ Demo.html ขึ้นมา กดปุ่ม Refresh หรือทุก 5 วินาที ส่วนอื่นจะไม่มีการเปลี่ยนแปลง จะเปลี่ยนแค่ค่าจากไฟล์ value มาแสดงผล ทำให้ลดการประมวลผลและการส่งข้อมูลจาก ESP8266 ในการเขียนโคดกับ Arduino เพื่อให้โคดกระชับประหยัดพื้นที่โปรแกรม เราสามารถย่อ html ให้มีขนาดเล็ก ได้จากเว็บนี้ http://www.textfixer.com/html/compress-html-compression.php จะได้ผลลัพธ์ดังนี้
Value Sensor
เขียนโคด Arduino อ่านค่าจาก เซนเซอร์ตัวต้านทานปรับค่าได้ ที่ขา A0 ให้รีเฟรชทุก 5 วินาที หรือเมื่อกดปุ่ม Refresh ได้ดังนี้
#include
#include
const char* ssid = "wifi_ssid";
const char* password = "wifi_password";
const int sensor = A0;
ESP8266WebServer server(80);
void handle_sensor() {
String val = String(analogRead(A0));
Serial.println(val);
server.send(200, "text/html", val);
}
void setup(void) {
pinMode(A0,INPUT);
Serial.begin(115200);
// Connect to WiFi network
WiFi.begin(ssid, password);
// 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());
server.on("/", []() {
server.send(200, "text/html", "
Value Sensor
"); }); server.on("/value", handle_sensor); server.begin(); } void loop(void) { // check for incomming client connections frequently in the main loop: server.handleClient(); }
ถ้าต้องการให้อัพเดทเร็ว ๆ ก็เปลี่ยนค่าเวลา ใน Jquery ที่ฟังก์ชัน setInterval เป็นค่าน้อย ๆ เช่น 500 คือให้อัพเดททุก 0.5 วินาที ดังตัวอย่างในโคดนี้
#include
#include
const char* ssid = "wifi_ssid";
const char* password = "wifi_password";
const int sensor = A0;
ESP8266WebServer server(80);
void handle_sensor() {
String val = String(analogRead(A0));
Serial.println(val);
server.send(200, "text/html", val);
}
void setup(void) {
pinMode(A0, INPUT);
Serial.begin(115200);
// Connect to WiFi network
WiFi.begin(ssid, password);
// Wait for connection
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.println(".");
}
Serial.println("");
Serial.print("Connected to ");
Serial.println(ssid);
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
server.on("/", []() {
server.send(200, "text/html", "
Value Sensor
"); }); server.on("/value", handle_sensor); server.begin(); } void loop(void) { // check for incomming client connections frequently in the main loop: server.handleClient(); }
คลิปวีดีโอสอน Arduino ESP8266 NodeMCU JQuery JavaScript