สอนใช้งาน Node-RED กับ Arduino: Visual Programming สำหรับ IoT

เรียนรู้วิธีการใช้งาน Node-RED กับ Arduino สำหรับสร้างระบบ IoT แบบ Visual Programming โดยไม่ต้องเขียนโค้ดซับซ้อน เหมาะสำหรับมือใหม่และนักพัฒนา IoT ทุกระดับ

📅 7 มีนาคม 2026 ⏱️ 15 นาที 🎯 ระดับเริ่มต้น - กลาง

Node-RED คืออะไร?

Node-RED คือเครื่องมือ Visual Programming ที่พัฒนาโดย IBM ใช้สำหรับเชื่อมต่ออุปกรณ์ Hardware, APIs และ Online Services ด้วยการลากและวาง (Drag & Drop) ทำให้สามารถสร้างระบบ IoT ที่ซับซ้อนได้ง่ายและรวดเร็ว

✨ ทำไมต้องใช้ Node-RED?

  • ง่าย: ไม่ต้องเขียนโค้ดมาก
  • รวดเร็ว: สร้าง Prototype ได้ในไม่กี่นาที
  • ยืดหยุ่น: เชื่อมต่อกับทุก Service ได้
  • ฟรี: Open Source ใช้งานฟรี
  • ชุมชน: มี Node และ Flow ให้ใช้มากมาย

การใช้งานร่วมกับ Arduino

Node-RED สามารถเชื่อมต่อกับ Arduino ได้หลายวิธี:

  • Firmata Protocol: ควบคุม Arduino ผ่าน Serial/USB โดยตรง
  • MQTT: สื่อสารแบบ Real-time ผ่าน MQTT Broker
  • HTTP API: Arduino ทำหน้าที่เป็น Web Server
  • Serial: รับ-ส่งข้อมูลผ่าน Serial Port

ข้อกำหนดเบื้องต้น

Hardware

  • Arduino Board (Uno, Nano, Mega ฯลฯ)
  • สาย USB สำหรับ Arduino
  • (Optional) LED, Resistor, Sensor

Software

วิธีติดตั้ง Node-RED

บน Windows/Mac/Linux

# ติดตั้ง Node.js ก่อน (ถ้ายังไม่มี)
# ดาวน์โหลดจาก: https://nodejs.org/

# ติดตั้ง Node-RED
npm install -g --unsafe-perm node-red

# รัน Node-RED
node-red

💡 เปิด Node-RED Editor:

หลังจากรัน Node-RED แล้ว เปิด Browser ไปที่ http://localhost:1880

ติดตั้ง Dashboard (Optional)

Dashboard ใช้สร้าง UI สำหรับโปรเจกต์ IoT ได้อย่างง่ายดาย

# หยุด Node-RED ก่อน (Ctrl+C)

# ติดตั้ง node-red-dashboard
cd ~/.node-red
npm install node-red-dashboard

# รัน Node-RED อีกครั้ง
node-red

ตั้งค่า Arduino ด้วย Firmata

Firmata คืออะไร?

Firmata คือ Protocol ที่ให้ Software เชื่อมต่อกับ Microcontroller ได้โดยตรง ทำให้ Node-RED สามารถควบคุม Arduino ผ่าน Serial Port ได้ทันที

อัปโหลด Firmata ไปยัง Arduino

  1. เปิด Arduino IDE
  2. ไปที่ File → Examples → Firmata
  3. เลือก "StandardFirmata"
  4. เลือก Board และ Port ที่ถูกต้อง
  5. กด Upload (→)

⚠️ ข้อควรระวัง:

หลังจากอัปโหลด StandardFirmata แล้ว Arduino จะไม่สามารถรันโค้ดเดิมได้อีก จนกว่าจะอัปโหลด Sketch ใหม่

สร้าง Flow แรก: กระพริบ LED

ต่อวงจร

  • ต่อ LED ที่ขา Digital Pin 13 (Built-in LED)
  • ต่อ Resistor 220Ω อนุญาต (ถ้าใช้ External LED)

สร้าง Flow ใน Node-RED

  1. เปิด Node-RED Editor (http://localhost:1880)
  2. ลาก Node inject มาวางใน Canvas
  3. ลาก Node arduino out มาวาง
  4. ดับเบิลคลิก "arduino out"
  5. ตั้งค่า:
    • Port: /dev/ttyUSB0 (หรือ COM port ของคุณ)
    • Pin: Digital 13
    • State: เลือก "Digital"
  6. เชื่อมต่อ Node inject → arduino out
  7. กด Deploy (ปุ่มแดงด้านบน)
  8. กดปุ่มที่ Node inject เพื่อทดสอบ!

ผลลัพธ์:

LED บน Arduino จะกระพริบทุกครั้งที่คุณกดปุ่ม inject!

เชื่อมต่อ MQTT

MQTT คืออะไร?

MQTT (Message Queuing Telemetry Transport) คือ Protocol ที่ออกแบบมาสำหรับ IoT มีน้ำหนักเบา รวดเร็ว และประหยัดพลังงาน เหมาะสำหรับการสื่อสารแบบ Real-time

สร้าง MQTT Flow

  1. ลาก Node mqtt in มาวาง
  2. ดับเบิลคลิก "mqtt in"
  3. ตั้งค่า:
    • Broker: broker.hivemq.com (หรือ MQTT Broker ของคุณ)
    • Topic: cynoiot/arduino/test
  4. ลาก Node debug มาเชื่อมต่อ
  5. Deploy
  6. ส่งข้อความด้วย MQTT Explorer!

💡 ทดสอบ MQTT:

  1. ดาวน์โหลด MQTT Explorer
  2. เชื่อมต่อ broker.hivemq.com:1883
  3. Publish ไปที่ cynoiot/arduino/test
  4. ดูข้อความใน Debug Panel ของ Node-RED!

สร้าง Dashboard สำหรับ IoT

node-red-dashboard ใช้สร้าง UI สำหรับโปรเจกต์ IoT โดยไม่ต้องเขียน HTML/CSS/JavaScript

สร้าง Dashboard ง่ายๆ

  1. ลาก Node mqtt in มาวาง (รับข้อมูล)
  2. ลาก Node chart มาวาง (แสดงกราฟ)
  3. เชื่อมต่อ mqtt in → chart
  4. ดับเบิลคลิก chart แล้วตั้งค่า:
    • Group: My Home
    • Title: Temperature
    • Type: Line
  5. Deploy
  6. เปิด Dashboard: http://localhost:1880/ui

ผลลัพธ์:

Dashboard สวยงามพร้อมกราฟและ Controls!

Best Practices

1. จัดระเบียบ Flow

ใช้ Tab และ Subflow เพื่อแบ่ง Flow ขนาดใหญ่ ให้เป็นสัดส่วน

2. ตั้งชื่อ Node

ตั้งชื่อ Node ทุกตัว เพื่อให้อ่านและแก้ไขง่าย

3. ใช้ Comment Node

เพิ่มคำอธิบายใน Flow เพื่อให้คนอื่นเข้าใจ

4. Backup Flow

สำรอง Flow บ่อยๆ ด้วย Menu → Export → Clipboard หรือไฟล์ .json

5. ใช้ Environment Variables

เก็บค่า Sensitivity (เช่น API Keys) ไว้ใน Environment Variables ไม่ใช่ Hardcode

ปัญหาที่พบบ่อยและวิธีแก้ไข

ปัญหา: Arduino ไม่ติดต่อได้

สาเหตุ:

  • Port ผิดหรือไม่ได้เลือก
  • Arduino ไม่ได้อัปโหลด StandardFirmata
  • โปรแกรมอื่นใช้ Port อยู่

วิธีแก้ไข:

  • ตรวจสอบ Port ใน Arduino IDE
  • ปิดโปรแกรมอื่นที่ใช้ Serial Port
  • อัปโหลด StandardFirmata ใหม่

ปัญหา: MQTT เชื่อมต่อไม่ได้

สาเหตุ:

  • Broker ผิดหรือ Down
  • Port ผิด (ปกติ 1883)
  • Firewall บล็อก

วิธีแก้ไข:

  • ลอง Broker อื่น (test.mosquitto.org)
  • ตรวจสอบ Port
  • ปิด Firewall ชั่วคราว

ปัญหา: Dashboard ไม่แสดงผล

วิธีแก้ไข:

  • ตรวจสอบว่าติดตั้ง node-red-dashboard
  • รีสตาร์ท Node-RED
  • เปิด /ui หลัง localhost:1880

สรุป

ในบทความนี้ เราได้เรียนรู้:

  • Node-RED คืออะไรและทำไมต้องใช้
  • วิธีติดตั้ง Node-RED
  • การเชื่อมต่อ Arduino ด้วย Firmata
  • การสร้าง Flow แรก (กระพริบ LED)
  • การเชื่อมต่อ MQTT
  • การสร้าง Dashboard สำหรับ IoT
  • Best Practices และการแก้ปัญหา

💡 คำแนะนำ: Node-RED เป็นเครื่องมือที่ทรงพลังมาก ลองสร้างโปรเจกต์ของคุณเอง และเชื่อมต่อกับ CynoIoT Platform เพื่อใช้งานข้อมูล IoT ของคุณได้อย่างเต็มประสิทธิภาพ!