ปรึกษา IoT
Internet of Things • Chapter 08

บทที่ 8 Arduino และ Node MCU

เรียนรู้การใช้งาน Blynk IoT ร่วมกับ NodeMCU ESP8266 เพื่อควบคุมอุปกรณ์และแสดงข้อมูลผ่านสมาร์ตโฟน เช่น การเปิด–ปิด LED ด้วยปุ่มในแอป และการดูค่าอุณหภูมิ/ความชื้นด้วย Gauge Widget

NodeMCU ESP8266 Blynk IoT LED Control Virtual Pin Gauge Widget DHT Sensor

หัวข้อสำคัญในสไลด์

  • แนะนำอุปกรณ์ NodeMCU, LED, Breadboard, Jumper
  • วิธีติดตั้ง Library Blynk ใน Arduino IDE
  • การสร้าง Project / Template / Datastream ใน Blynk
  • ตัวอย่าง 8.1 เปิด–ปิดไฟด้วย Blynk
  • ตัวอย่าง 8.2 ดูอุณหภูมิและความชื้นด้วย Blynk
อ้างอิงสไลด์บทที่ 8
Blynk IoT
ESP8266 Wi‑Fi
Virtual Pin & Widgets

ภาพรวมบทเรียน

บทที่ 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 ได้

อธิบายหลักการทำงานของ Blynk กับ ESP8266 ได้
ติดตั้ง Library Blynk และเปิดตัวอย่างโปรเจกต์ได้
สร้าง Template, Datastream และ Widgets ใน Blynk ได้
เขียนโปรแกรมควบคุม LED และส่งค่าอุณหภูมิ/ความชื้นขึ้นแอปได้

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 และควบคุมอุปกรณ์ผ่านแอปบนมือถือหรือแท็บเล็ตได้ง่าย โดยแนวคิดหลักคือ

  1. สร้างโปรเจกต์ Blynk และรับ Auth / Device Credentials
  2. ติดตั้งไลบรารี Blynk ใน Arduino IDE
  3. เลือกบอร์ด ESP8266 ที่ใช้งาน
  4. เขียนโค้ดเชื่อมต่อ Wi‑Fi และ Blynk Cloud
  5. สร้าง Widgets เช่น Button, Gauge และเชื่อมกับ Virtual Pin

ภาพรวมการทำงานของ Blynk IoT

Blynk App สมาร์ตโฟน Blynk Cloud Template / Datastream / Device NodeMCU ESP8266 LED / DHT Sensor Blynk App ⇄ Blynk Cloud ⇄ NodeMCU ESP8266

8.3 วิธีติดตั้ง Blynk ใน Arduino IDE

จากสไลด์ ขั้นตอนติดตั้ง Blynk มีดังนี้

  1. เปิด Arduino IDE
  2. ไปที่เมนู Sketch → Include Library → Manage Libraries...
  3. ค้นหาคำว่า blynk
  4. กด Install เพื่อทำการติดตั้ง
  5. จากนั้นเปิดตัวอย่างโปรเจกต์ผ่านเมนู File → Examples → Blynk

โครงสร้างโปรเจกต์ Blynk ที่ควรโฟกัส

ในสไลด์ได้เน้นว่าโครงสร้างของ Project Blynk มี 2 ส่วนหลักที่ควรเข้าใจ คือ ส่วน Connect (เชื่อมต่อ Blynk Cloud และ Wi‑Fi) และ ส่วน Control (รับคำสั่งจากแอปหรือส่งข้อมูลไปยังแอป)

ภาพประกอบขั้นตอนติดตั้งและใช้งาน Blynk

1. Arduino IDEManage Libraries 2. Install Blynkค้นหา blynk 3. New Templateเลือก ESP8266 4. DatastreamV0 / V1 / V2 5. Upload CodeSSID / PASS / TOKEN 6. Add WidgetButton / Gauge 7. Runทดสอบระบบ

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 มีลำดับดังนี้

  1. สมัครและเข้าสู่ระบบที่ https://blynk.io/
  2. เลือก New Template
  3. ตั้งชื่อโปรเจกต์ และกำหนด Hardware เป็น ESP8266
  4. คัดลอก key / user / password หรือข้อมูลเชื่อมต่อที่ระบบให้มา
  5. ไปที่หน้า Datastreams แล้วเลือก New Datastream → Virtual Pin
  6. กำหนดสำหรับตัวอย่างเปิด–ปิด LED เป็น V2 ชื่อเช่น LED_1
  7. ที่แอป Blynk กดรูปไขควง เพิ่ม Widget แบบ Button และเชื่อมกับ Datastream V2
  8. ปรับโหมดปุ่มจาก Push เป็น Switch
องค์ประกอบใน Blynkใช้ทำอะไรตัวอย่างในสไลด์
Templateกำหนดโครงสร้างโปรเจกต์Project สำหรับ ESP8266
Datastreamช่องทางรับ–ส่งข้อมูลV2 สำหรับ LED, V0/V1 สำหรับเซ็นเซอร์
Button Widgetสั่งเปิด–ปิดอุปกรณ์ปุ่มควบคุม LED ผ่าน V2
Gauge Widgetแสดงค่าตัวเลขแบบมิเตอร์แสดงอุณหภูมิและความชื้น

ภาพประกอบ: Virtual Pin และ Widgets

Datastreams V2 → LED_1 V0 → Temperature V1 → Humidity Widgets Button T H Button + Gauge NodeMCU อ่าน/เขียนค่า ผ่าน Virtual Pin

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();
}
ผลลัพธ์: เมื่อกดปุ่ม Switch ในแอป Blynk ค่าใน Virtual Pin V2 จะถูกส่งมายัง NodeMCU และสั่งให้ LED เปิดหรือปิดตามสถานะของปุ่ม

8.7 วิธีการต่ออุปกรณ์และภาพการต่อวงจร

สไลด์ระบุว่าการต่อ LED สามารถใช้ขาเช่น D0 และ D2 กับ NodeMCU ได้ โดยต้องต่อผ่านตัวต้านทานก่อนเข้าขา Anode ของ LED และต่อ Cathode ลง GND

ภาพประกอบการต่อ NodeMCU กับ LED

NodeMCU ESP8266 D0 D2 GND 220Ω LED 220Ω LED ตัวอย่างการต่อ LED ผ่านขา D0 และ D2 ตามแนวคิดในสไลด์

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 ที่สร้างไว้
ข้อมูลDatastreamWidgetหน้าที่
TemperatureV0Gaugeแสดงค่าอุณหภูมิ
HumidityV1Gaugeแสดงค่าความชื้น

ภาพประกอบ: Blynk Gauge สำหรับอุณหภูมิและความชื้น

Blynk App Temperature V0 Humidity V1 NodeMCU + DHT ส่งค่าไปยัง V0 / V1 Gauge Widget ช่วยให้ติดตามข้อมูลเซ็นเซอร์ผ่านแอปได้แบบเรียลไทม์

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

แบบฝึกหัดท้ายบท

  1. อธิบายบทบาทของ Blynk Cloud, Datastream และ Widget ในระบบ IoT
  2. สรุปขั้นตอนการติดตั้ง Library Blynk ใน Arduino IDE
  3. อธิบายความแตกต่างระหว่าง Button Widget กับ Gauge Widget
  4. สร้าง Datastream สำหรับ LED โดยกำหนดให้ใช้ Virtual Pin V2
  5. เขียนโค้ด BLYNK_WRITE(V2) เพื่อควบคุมการเปิด–ปิด LED
  6. กำหนด Datastream สำหรับอุณหภูมิและความชื้นให้ใช้ V0 และ V1
  7. อธิบายลำดับการไหลของข้อมูลในตัวอย่างวัดอุณหภูมิและความชื้นด้วย Blynk
  8. ออกแบบหน้าจอ Blynk App อย่างง่ายสำหรับระบบ Smart Home ที่มี 2 ปุ่มและ 2 Gauge

คำถามที่พบบ่อยเกี่ยวกับบทที่ 8

โดยทั่วไป Blynk IoT ต้องใช้อินเทอร์เน็ตเพื่อให้ Blynk App, Blynk Cloud และ NodeMCU ติดต่อกันได้ หากไม่มีอินเทอร์เน็ต แอปจะไม่สามารถส่งคำสั่งหรือดูค่าจากอุปกรณ์ได้ตามปกติ

Virtual Pin คือช่องทางสื่อสารเชิงตรรกะระหว่างแอป Blynk และโค้ดใน NodeMCU เช่น V2 ใช้รับคำสั่งจากปุ่ม, V0 และ V1 ใช้ส่งค่าจากเซ็นเซอร์ขึ้นไปแสดงผลในแอป

ให้ตรวจสอบว่า Wi‑Fi เชื่อมต่อสำเร็จ, Auth Token ถูกต้อง, Datastream ตรงกับ Virtual Pin, เลือกโหมดปุ่มเป็น Switch และต่อวงจร LED เข้ากับขาที่ถูกต้องพร้อมตัวต้านทาน

สาเหตุที่พบบ่อยคือ Datastream ในแอปไม่ตรงกับ V0/V1 ในโค้ด, อ่านค่า DHT ไม่สำเร็จ, ช่วงเวลาในการส่งค่าไม่เหมาะสม หรือ NodeMCU หลุดการเชื่อมต่อกับ Blynk Cloud
อ่านต่อ

ต่อยอดจากบทที่ 8

เมื่อเข้าใจ Blynk IoT แล้ว สามารถพัฒนาเป็นระบบควบคุมอุปกรณ์จากระยะไกล ติดตามข้อมูลเซ็นเซอร์แบบเรียลไทม์ และเชื่อมต่อฐานข้อมูลหรือระบบแจ้งเตือนได้