เนื้อหาในบทความ
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
- Arduino IDE: ดาวน์โหลดที่นี่
- Node.js: (สำหรับติดตั้ง Node-RED)
- Web Browser (Chrome, Firefox ฯลฯ)
วิธีติดตั้ง 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
- เปิด Arduino IDE
- ไปที่ File → Examples → Firmata
- เลือก "StandardFirmata"
- เลือก Board และ Port ที่ถูกต้อง
- กด Upload (→)
⚠️ ข้อควรระวัง:
หลังจากอัปโหลด StandardFirmata แล้ว Arduino จะไม่สามารถรันโค้ดเดิมได้อีก จนกว่าจะอัปโหลด Sketch ใหม่
สร้าง Flow แรก: กระพริบ LED
ต่อวงจร
- ต่อ LED ที่ขา Digital Pin 13 (Built-in LED)
- ต่อ Resistor 220Ω อนุญาต (ถ้าใช้ External LED)
สร้าง Flow ใน Node-RED
- เปิด Node-RED Editor (http://localhost:1880)
- ลาก Node inject มาวางใน Canvas
- ลาก Node arduino out มาวาง
- ดับเบิลคลิก "arduino out"
- ตั้งค่า:
- Port: /dev/ttyUSB0 (หรือ COM port ของคุณ)
- Pin: Digital 13
- State: เลือก "Digital"
- เชื่อมต่อ Node inject → arduino out
- กด Deploy (ปุ่มแดงด้านบน)
- กดปุ่มที่ Node inject เพื่อทดสอบ!
✅ ผลลัพธ์:
LED บน Arduino จะกระพริบทุกครั้งที่คุณกดปุ่ม inject!
เชื่อมต่อ MQTT
MQTT คืออะไร?
MQTT (Message Queuing Telemetry Transport) คือ Protocol ที่ออกแบบมาสำหรับ IoT มีน้ำหนักเบา รวดเร็ว และประหยัดพลังงาน เหมาะสำหรับการสื่อสารแบบ Real-time
สร้าง MQTT Flow
- ลาก Node mqtt in มาวาง
- ดับเบิลคลิก "mqtt in"
- ตั้งค่า:
- Broker: broker.hivemq.com (หรือ MQTT Broker ของคุณ)
- Topic: cynoiot/arduino/test
- ลาก Node debug มาเชื่อมต่อ
- Deploy
- ส่งข้อความด้วย MQTT Explorer!
💡 ทดสอบ MQTT:
- ดาวน์โหลด MQTT Explorer
- เชื่อมต่อ broker.hivemq.com:1883
- Publish ไปที่ cynoiot/arduino/test
- ดูข้อความใน Debug Panel ของ Node-RED!
สร้าง Dashboard สำหรับ IoT
node-red-dashboard ใช้สร้าง UI สำหรับโปรเจกต์ IoT โดยไม่ต้องเขียน HTML/CSS/JavaScript
สร้าง Dashboard ง่ายๆ
- ลาก Node mqtt in มาวาง (รับข้อมูล)
- ลาก Node chart มาวาง (แสดงกราฟ)
- เชื่อมต่อ mqtt in → chart
- ดับเบิลคลิก chart แล้วตั้งค่า:
- Group: My Home
- Title: Temperature
- Type: Line
- Deploy
- เปิด 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 และการแก้ปัญหา
🚀 ถัดไปคืออะไร?
- สอนใช้งาน ESP32 กับ MQTT: เชื่อมต่อ IoT แบบ Real-time
- สร้างโหนดเซ็นเซอร์ ESP32 แบบหลายตัวสำหรับ Smart Home
- อัปโหลด Flow ของคุณไปที่ flows.nodered.org แชร์ให้ชุมชน!
💡 คำแนะนำ: Node-RED เป็นเครื่องมือที่ทรงพลังมาก ลองสร้างโปรเจกต์ของคุณเอง และเชื่อมต่อกับ CynoIoT Platform เพื่อใช้งานข้อมูล IoT ของคุณได้อย่างเต็มประสิทธิภาพ!