ภาพรวมบทเรียน
บทที่ 8 Arduino และ Node MCU มุ่งเน้นการใช้ Blynk IoT ร่วมกับ NodeMCU ESP8266 เพื่อให้ผู้เรียนสามารถควบคุมอุปกรณ์และตรวจสอบข้อมูลผ่านสมาร์ตโฟนได้อย่างสะดวก โดยสไลด์ประกอบด้วย 2 ตัวอย่างสำคัญ คือ
- ตัวอย่างที่ 8.1 โปรแกรมเปิด–ปิดไฟด้วย Blynk
- ตัวอย่างที่ 8.2 โปรแกรมดูอุณหภูมิและความชื้นด้วย Blynk
แนวคิดสำคัญคือการใช้ Template, Datastream และ Widgets ใน Blynk เพื่อเชื่อมโยงกับโค้ดบน NodeMCU ผ่าน Virtual Pin เช่น V0, V1, V2
Learning Objectives
หลังเรียนบทนี้ ผู้เรียนควรสามารถสร้างโปรเจกต์ Blynk IoT และเชื่อมต่อกับ NodeMCU ESP8266 ได้
8.1 แนะนำอุปกรณ์
สไลด์เริ่มจากการทบทวนอุปกรณ์พื้นฐานที่ใช้พัฒนาโปรเจกต์ Blynk กับ ESP8266 ได้แก่ NodeMCU, LED, ตัวต้านทาน, บอร์ดทดลอง และสาย Jumper รวมถึงอุปกรณ์เสริมสำหรับตัวอย่างวัดอุณหภูมิและความชื้น
NodeMCU ESP8266
บอร์ดไมโครคอนโทรลเลอร์ที่มี Wi‑Fi ในตัว เหมาะสำหรับงาน IoT และเชื่อมต่อกับ Blynk ได้สะดวก
LED
ใช้เป็นอุปกรณ์เอาต์พุตเพื่อทดลองการเปิด–ปิดผ่านแอป Blynk
ตัวต้านทาน
ใช้จำกัดกระแสให้ LED และช่วยให้วงจรปลอดภัยมากขึ้น
Breadboard
ใช้ทดลองวงจรได้สะดวกโดยไม่ต้องบัดกรี
Jumper Wire
สายต่อวงจร มีทั้งผู้–ผู้ ผู้–เมีย และเมีย–เมีย ตามสไลด์
DHT Sensor
ใช้ในตัวอย่างที่ 8.2 เพื่อวัดอุณหภูมิและความชื้นแล้วส่งขึ้น Blynk
8.2 การใช้งาน Blynk กับ ESP8266
ตามสไลด์ Blynk เป็นแพลตฟอร์มที่ช่วยให้ผู้ใช้สร้างโปรเจกต์ IoT และควบคุมอุปกรณ์ผ่านแอปบนมือถือหรือแท็บเล็ตได้ง่าย โดยแนวคิดหลักคือ
- สร้างโปรเจกต์ Blynk และรับ Auth / Device Credentials
- ติดตั้งไลบรารี Blynk ใน Arduino IDE
- เลือกบอร์ด ESP8266 ที่ใช้งาน
- เขียนโค้ดเชื่อมต่อ Wi‑Fi และ Blynk Cloud
- สร้าง Widgets เช่น Button, Gauge และเชื่อมกับ Virtual Pin
ภาพรวมการทำงานของ Blynk IoT
8.3 วิธีติดตั้ง Blynk ใน Arduino IDE
จากสไลด์ ขั้นตอนติดตั้ง Blynk มีดังนี้
- เปิด Arduino IDE
- ไปที่เมนู Sketch → Include Library → Manage Libraries...
- ค้นหาคำว่า blynk
- กด Install เพื่อทำการติดตั้ง
- จากนั้นเปิดตัวอย่างโปรเจกต์ผ่านเมนู File → Examples → Blynk
โครงสร้างโปรเจกต์ Blynk ที่ควรโฟกัส
ในสไลด์ได้เน้นว่าโครงสร้างของ Project Blynk มี 2 ส่วนหลักที่ควรเข้าใจ คือ ส่วน Connect (เชื่อมต่อ Blynk Cloud และ Wi‑Fi) และ ส่วน Control (รับคำสั่งจากแอปหรือส่งข้อมูลไปยังแอป)
ภาพประกอบขั้นตอนติดตั้งและใช้งาน Blynk
8.4 ตัวอย่างที่ 8.1 โปรแกรมเปิด–ปิดไฟด้วย Blynk
ในตัวอย่างแรก ผู้เรียนจะใช้ Blynk เพื่อควบคุมการเปิด–ปิด LED โดยอุปกรณ์ตามสไลด์ประกอบด้วย NodeMCU V2, สาย Micro USB, Breadboard, Jumper Wire และ LED หลายดวง
อุปกรณ์ที่ใช้
- NodeMCU V2 LUA based ESP8266-12E
- สาย Micro USB Type B to USB 2.0 Type A
- Breadboard 830 Point
- Jumper ผู้–ผู้ และ ผู้–เมีย
- LED สีแดง และ LED สีเขียว
8.5 การสร้าง Template และ Datastream ใน Blynk
จากสไลด์ ขั้นตอนในเว็บ blynk.io มีลำดับดังนี้
- สมัครและเข้าสู่ระบบที่ https://blynk.io/
- เลือก New Template
- ตั้งชื่อโปรเจกต์ และกำหนด Hardware เป็น ESP8266
- คัดลอก key / user / password หรือข้อมูลเชื่อมต่อที่ระบบให้มา
- ไปที่หน้า Datastreams แล้วเลือก New Datastream → Virtual Pin
- กำหนดสำหรับตัวอย่างเปิด–ปิด LED เป็น V2 ชื่อเช่น LED_1
- ที่แอป Blynk กดรูปไขควง เพิ่ม Widget แบบ Button และเชื่อมกับ Datastream V2
- ปรับโหมดปุ่มจาก Push เป็น Switch
| องค์ประกอบใน Blynk | ใช้ทำอะไร | ตัวอย่างในสไลด์ |
|---|---|---|
| Template | กำหนดโครงสร้างโปรเจกต์ | Project สำหรับ ESP8266 |
| Datastream | ช่องทางรับ–ส่งข้อมูล | V2 สำหรับ LED, V0/V1 สำหรับเซ็นเซอร์ |
| Button Widget | สั่งเปิด–ปิดอุปกรณ์ | ปุ่มควบคุม LED ผ่าน V2 |
| Gauge Widget | แสดงค่าตัวเลขแบบมิเตอร์ | แสดงอุณหภูมิและความชื้น |
ภาพประกอบ: Virtual Pin และ Widgets
8.6 ตัวอย่างโค้ดเปิด–ปิด LED ด้วย Blynk
จากสไลด์ ระบุว่าให้เขียนฟังก์ชันสำหรับ V2 โดยเมื่อค่าที่ส่งมามีค่าเท่ากับ 1 ให้หลอดไฟติด และเมื่อค่าเป็น 0 ให้หลอดดับ ตัวอย่างโค้ดด้านล่างเป็นเวอร์ชันสมัยใหม่ของ Blynk IoT ที่สอดคล้องกับแนวคิดในสไลด์
#define BLYNK_TEMPLATE_ID "TMPLxxxxxx"
#define BLYNK_TEMPLATE_NAME "LED Control"
#define BLYNK_AUTH_TOKEN "YourAuthToken"
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
char ssid[] = "YOUR_WIFI_NAME";
char pass[] = "YOUR_WIFI_PASSWORD";
const int LED_PIN = D2;
BLYNK_WRITE(V2) {
int value = param.asInt(); // รับค่าจาก Button Widget
if (value == 1) {
digitalWrite(LED_PIN, HIGH);
} else {
digitalWrite(LED_PIN, LOW);
}
}
void setup() {
pinMode(LED_PIN, OUTPUT);
digitalWrite(LED_PIN, LOW);
Serial.begin(115200);
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
}
void loop() {
Blynk.run();
}V2 จะถูกส่งมายัง NodeMCU และสั่งให้ LED เปิดหรือปิดตามสถานะของปุ่ม8.7 วิธีการต่ออุปกรณ์และภาพการต่อวงจร
สไลด์ระบุว่าการต่อ LED สามารถใช้ขาเช่น D0 และ D2 กับ NodeMCU ได้ โดยต้องต่อผ่านตัวต้านทานก่อนเข้าขา Anode ของ LED และต่อ Cathode ลง GND
ภาพประกอบการต่อ NodeMCU กับ LED
8.8 ตัวอย่างที่ 8.2 โปรแกรมดูอุณหภูมิและความชื้นด้วย Blynk
สไลด์ตัวอย่างที่ 8.2 ใช้ NodeMCU ESP8266 ร่วมกับ Sensor อุณหภูมิและความชื้น และแสดงค่าบน Blynk โดยใช้ Gauge Widget ซึ่งแตกต่างจากตัวอย่างเปิด–ปิดไฟตรงที่เน้นการส่งข้อมูลจากเซ็นเซอร์ขึ้นแอป แทนการรับคำสั่งจากแอป
ขั้นตอนสำคัญตามสไลด์ ได้แก่
- สร้าง Project Blynk คล้ายกับตัวอย่าง 8.1
- สร้าง Datastream สำหรับ Temperature และ Humidity
- กำหนดอุณหภูมิไปที่ V0 และความชื้นไปที่ V1
- เพิ่ม Widget แบบ Gauge แล้วเชื่อมกับ Datastream ที่สร้างไว้
| ข้อมูล | Datastream | Widget | หน้าที่ |
|---|---|---|---|
| Temperature | V0 | Gauge | แสดงค่าอุณหภูมิ |
| Humidity | V1 | Gauge | แสดงค่าความชื้น |
ภาพประกอบ: Blynk Gauge สำหรับอุณหภูมิและความชื้น
8.9 ตัวอย่างโค้ดอุณหภูมิและความชื้นด้วย Blynk
จากสไลด์ โค้ดจะเรียกใช้ไลบรารี DHT และในส่วน loop() จะอ่านค่าอุณหภูมิและความชื้น จากนั้นส่งอุณหภูมิไปยัง V0 และความชื้นไปยัง V1 พร้อมแสดงผลใน Serial Monitor ตัวอย่างโค้ดสรุปได้ดังนี้
#define BLYNK_TEMPLATE_ID "TMPLxxxxxx"
#define BLYNK_TEMPLATE_NAME "TempHum Monitor"
#define BLYNK_AUTH_TOKEN "YourAuthToken"
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include "DHT.h"
char ssid[] = "YOUR_WIFI_NAME";
char pass[] = "YOUR_WIFI_PASSWORD";
#define DHTPIN D2
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
BlynkTimer timer;
void sendSensor() {
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(h) || isnan(t)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
Serial.print("Temperature: ");
Serial.print(t);
Serial.print(" C, Humidity: ");
Serial.print(h);
Serial.println(" %");
Blynk.virtualWrite(V0, t); // Temperature
Blynk.virtualWrite(V1, h); // Humidity
}
void setup() {
Serial.begin(115200);
dht.begin();
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
timer.setInterval(2000L, sendSensor);
}
void loop() {
Blynk.run();
timer.run();
}ข้อควรระวังในการใช้งานจริง
- ตรวจสอบว่า Datastream ในแอปตรงกับ Virtual Pin ในโค้ด
- ตรวจสอบว่า NodeMCU เชื่อมต่อ Wi‑Fi ได้จริง
- กำหนดช่วงค่าของ Gauge ให้เหมาะสม เช่น อุณหภูมิ 0–50°C และความชื้น 0–100%
- หากค่าไม่ขึ้น ให้ดู Serial Monitor เพื่อตรวจสอบการเชื่อมต่อและการอ่านค่า DHT
เปรียบเทียบตัวอย่าง 8.1 และ 8.2
ตัวอย่าง 8.1 เน้นการรับคำสั่งจากแอป → ส่งไปที่ NodeMCU → ควบคุม LED
ตัวอย่าง 8.2 เน้นการอ่านค่าจาก Sensor → ส่งขึ้นแอป Blynk → แสดงผลบน Gauge
ต้องการทำระบบ Blynk IoT ใช้งานจริง?
Siam2Dev ช่วยออกแบบระบบ NodeMCU/ESP32, เซ็นเซอร์, Blynk IoT, Dashboard, Database และระบบแจ้งเตือนผ่านมือถือหรือ LINE OA สำหรับ Smart Home, Smart Farm และงานวิจัย
สรุปบทเรียน
บทที่ 8 ทำให้ผู้เรียนเข้าใจการใช้งาน Blynk IoT ร่วมกับ NodeMCU ESP8266 ตั้งแต่การติดตั้งไลบรารี การสร้าง Template และ Datastream ไปจนถึงการควบคุม LED และการแสดงค่าอุณหภูมิ/ความชื้นผ่านมือถือ ซึ่งเป็นพื้นฐานสำคัญของระบบ IoT แบบ Remote Monitoring และ Remote Control
แบบฝึกหัดท้ายบท
- อธิบายบทบาทของ Blynk Cloud, Datastream และ Widget ในระบบ IoT
- สรุปขั้นตอนการติดตั้ง Library Blynk ใน Arduino IDE
- อธิบายความแตกต่างระหว่าง Button Widget กับ Gauge Widget
- สร้าง Datastream สำหรับ LED โดยกำหนดให้ใช้ Virtual Pin
V2 - เขียนโค้ด
BLYNK_WRITE(V2)เพื่อควบคุมการเปิด–ปิด LED - กำหนด Datastream สำหรับอุณหภูมิและความชื้นให้ใช้
V0และV1 - อธิบายลำดับการไหลของข้อมูลในตัวอย่างวัดอุณหภูมิและความชื้นด้วย Blynk
- ออกแบบหน้าจอ Blynk App อย่างง่ายสำหรับระบบ Smart Home ที่มี 2 ปุ่มและ 2 Gauge