IoT กับเครื่องจักร: เชื่อมต่อ CNC สู่ระบบอัตโนมัติด้วย MQTT

IoT (Internet of Things) คือการเชื่อมต่ออุปกรณ์และเครื่องจักรเข้าสู่เครือข่ายอินเทอร์เน็ต เพื่อให้สามารถติดตาม ควบคุม และวิเคราะห์การทำงานได้จากระยะไกล เมื่อนำ IoT มาใช้กับเครื่อง CNC จะเปลี่ยนจาก "เครื่องที่ต้องนั่งเฝ้า" ให้เป็น "เครื่องที่รายงานผลและควบคุมได้จากทุกที่"

IoT ช่วยงาน CNC ได้อย่างไร?

  • ติดตามสถานะเครื่องเรียลไทม์ — รู้ว่าเครื่องกำลังกัดงานอะไร ทำงานจบหรือยัง จากมือถือ
  • แจ้งเตือนอัตโนมัติ — งานเสร็จ / เครื่องมีปัญหา ส่งข้อความไปที่ Line หรือ Telegram
  • ควบคุมระยะไกล — เริ่ม/หยุดงาน ปรับความเร็ว ผ่านเว็บหรือแอป
  • เก็บข้อมูลวิเคราะห์ — บันทึกชั่วโมงทำงาน อุณหภูมิ การสั่นสะเทือน เพื่อบำรุงรักษาเชิงคาดการณ์
  • เชื่อมต่อสายการผลิต — เครื่อง CNC หลายตัวทำงานประสานกับหุ่นยนต์และระบบอื่น

MQTT คืออะไร ทำไมเป็นหัวใจของ IoT อุตสาหกรรม?

MQTT (Message Queuing Telemetry Transport) เป็นโปรโตคอลสื่อสารแบบ Publish/Subscribe ที่เบาและเร็ว เหมาะกับอุปกรณ์ IoT โดยมีหลักการ:

  • Broker — เซิร์ฟเวอร์กลางที่รับ/ส่งข้อความ (เช่น Mosquitto, thairobot.net ก็มีบริการนี้)
  • Publisher — อุปกรณ์ที่ส่งข้อมูลขึ้นหัวข้อ (Topic) เช่น เครื่อง CNC ส่งสถานะขึ้น topic cnc/status
  • Subscriber — อุปกรณ์/โปรแกรมที่ติดตามหัวข้อเพื่อรับข้อมูล เช่น แดชบอร์ดติดตามเครื่อง

ตัวอย่างหัวข้อ MQTT ในงาน CNC:

cnc/machine1/status      → "running" / "idle" / "alarm"
cnc/machine1/temperature → 45.2
cnc/machine1/job_done    → true
cnc/machine1/control     → "stop" (ใช้สั่งควบคุม)

การเชื่อมต่อ ESP32 (เครื่อง CNC) กับ MQTT

ESP32-GRBL / FluidNC มี MQTT สนับสนุนในตัว หรือเขียน MicroPython ต่อ MQTT ได้ง่าย:

⚠️ ก่อนเริ่ม: broker ของเราปิดการเชื่อมต่อแบบไม่ระบุตัวตน (anonymous) ไว้แล้ว — ต้องใช้ username/password ที่ขอจากผู้ดูแลระบบ และควรเชื่อมผ่านพอร์ต 8883 (TLS) ไม่ใช่ 1883 เพื่อไม่ให้รหัสผ่านเดินทางแบบไม่เข้ารหัส

พอร์ต การใช้งาน แนะนำ
8883MQTT over TLS✅ ใช้ตัวนี้ (เข้ารหัสทั้งรหัสผ่านและข้อมูล)
443 path /mqttWebSocket over TLS✅ ใช้กับเว็บแดชบอร์ด
1883MQTT แบบไม่เข้ารหัส⚠️ ไม่แนะนำ — ข้อมูลวิ่งแบบ plaintext

ตัวอย่าง MicroPython (ESP32) — เชื่อมต่ออย่างปลอดภัย:

import network, time, ssl
from umqtt.simple import MQTTClient

# เชื่อม WiFi ...
sta_if = network.WLAN(network.STA_IF)
sta_if.active(True)
sta_if.connect("WIFI_SSID", "WIFI_PASSWORD")
while not sta_if.isconnected():
    time.sleep(0.5)

# ข้อมูลติดต่อ (ขอจากผู้ดูแลระบบ — อย่าใส่รหัสจริงลงในโค้ดที่แชร์สาธารณะ)
MQTT_HOST = "thairobot.net"
MQTT_PORT = 8883                 # TLS
MQTT_USER = "<username ที่ได้รับ>"
MQTT_PASS = "<password ที่ได้รับ>"
CLIENT_ID = "cnc_machine1"

ctx = ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT)
ctx.verify_mode = ssl.CERT_NONE  # ESP32 ประหยัด RAM: ไม่เก็บ CA
                                  # production ควรฝัง CA ของ server ลงไปแทน

mqtt = MQTTClient(CLIENT_ID, MQTT_HOST, port=MQTT_PORT,
                  user=MQTT_USER, password=MQTT_PASS, ssl=ctx)
mqtt.connect()
mqtt.publish("cnc/machine1/status", "running")   # ส่งสถานะ
mqtt.disconnect()

สิ่งที่ต้องระวัง:

  • ถ้าได้ข้อความ not authorised = username/password ไม่ถูก หรือยังไม่ได้ขอสิทธิ์
  • ssl.CERT_NONE ทำให้ข้อมูลเข้ารหัสแต่ไม่ได้ตรวจว่าเป็น server ตัวจริง — เหมาะกับการทดลอง สำหรับใช้งานจริงให้ฝัง CA certificate ของ server ลงใน ESP32
  • ห้ามโพสต์รหัสผ่านจริงลงในเว็บ/ฟอรั่ม — ถ้าต้องแชร์โค้ด ให้ใส่เป็น placeholder แบบตัวอย่างนี้

ทดสอบจากคอมพิวเตอร์ก่อนลง ESP32 (ใช้ mosquitto_pub):

mosquitto_pub -h thairobot.net -p 8883 \
  -u "<username>" -P "<password>" \
  --cafile /etc/ssl/certs/ca-certificates.crt \
  -t "cnc/test/status" -m "running"

สถาปัตยกรรมระบบ IoT สำหรับโรงงานขนาดเล็ก

  1. ชั้นอุปกรณ์ (Device) — ESP32, เซนเซอร์, เครื่อง CNC ที่ติดตั้งเฟิร์มแวร์ IoT
  2. ชั้นสื่อสาร (Connectivity) — WiFi, MQTT Broker, WSS
  3. ชั้นประมวลผล (Processing) — ระบบหลังบ้านรับข้อมูล เก็บลงฐานข้อมูล
  4. ชั้นแสดงผล (Application) — Web Dashboard, Line/Telegram แจ้งเตือน, แอปมือถือ

ตัวอย่างระบบ IoT เต็มรูปแบบที่ PanmaneeCNC มีอยู่จริง

PanmaneeCNC ให้บริการ MQTT Broker (รองรับทั้ง MQTT, TLS และ WebSocket) และมีระบบ FastAPI สำหรับติดตามกล้องและเครื่องจักร ทำให้ผู้ประกอบการสามารถต่อยอดได้ทันทีโดยไม่ต้องสร้างโครงสร้างเอง

สรุป

IoT เปลี่ยนเครื่อง CNC จากเครื่องจักรธรรมดาให้เป็น "เครื่องอัจฉริยะ" ที่ติดตาม ควบคุม และวิเคราะห์ได้จากระยะไกล MQTT คือโปรโตคอลที่ทำให้ทุกอย่างเชื่อมถึงกันได้อย่างเบาและรวดเร็ว หากต้องการนำ IoT มาใช้กับเครื่องจักร หรือต้องการตั้ง MQTT Broker เอง PanmaneeCNC พร้อมให้คำปรึกษาและติดตั้งระบบให้ครับ