eBook: บทที่ 14 เรียนรู้การสื่อสารผ่าน MQTT

UTEN BOONLIAM Avatar
บทที่ 14

📨

เรียนรู้การสื่อสารผ่าน MQTT

การใช้งานร่วมกับการสื่อสารผ่าน MQTT

A diagram of a broker AI-generated content may be incorrect.

รูปที่ 14.1 แสดงหลักการทำงานของโปรโตคอล MQTT แบบ Publish/Subscribe ผ่าน
MQTT Broker.

📨14.1 บทนำ

ในโลกของเทคโนโลยี Internet of Things (IoT)
การสื่อสารระหว่างอุปกรณ์มีความสำคัญอย่างยิ่ง
โดยเฉพาะอย่างยิ่งเมื่อมีอุปกรณ์จำนวนมากที่ต้องส่งข้อมูลไปยังศูนย์กลางหรือรับคำสั่งกลับมา
โปรโตคอล MQTT (Message Queuing Telemetry Transport)
จึงได้รับความนิยมอย่างแพร่หลาย เนื่องจากเป็นโปรโตคอลที่ออกแบบมาให้มีขนาดเล็ก ใช้งานง่าย
และรองรับการเชื่อมต่อในเครือข่ายที่มีความไม่เสถียร

ทฤษฎีเกี่ยวกับ MQTT Protocol

MQTT เป็นโปรโตคอลการสื่อสารแบบ Publish/Subscribe ที่ทำงานผ่าน TCP/IP
โดยอุปกรณ์ที่เรียกว่า Publisher จะส่งข้อความไปยัง Broker และอุปกรณ์ที่สนใจในหัวข้อนั้น
(เรียกว่า Subscriber) จะได้รับข้อความที่ถูกส่งมา
รูปแบบนี้ช่วยลดการใช้ทรัพยากรของระบบเมื่อเทียบกับการส่งแบบ Point-to-Point หรือ
Client-Server แบบดั้งเดิม

ประวัติความเป็นมาของ MQTT

MQTT ถูกพัฒนาโดย Andy Stanford-Clark แห่ง IBM และ Arlen Nipper แห่ง Arcom
ในปี ค.ศ. 1999 โดยมีเป้าหมายเพื่อใช้ในระบบสื่อสารระยะไกลที่มีข้อจำกัดด้านแบนด์วิดธ์ เช่น
ระบบควบคุมแท่นขุดเจาะน้ำมัน ซึ่งต้องการโปรโตคอลที่เบาและเชื่อถือได้
แม้ในเครือข่ายที่มีความเร็วต่ำและไม่เสถียร

IoT กับ MQTT

โปรโตคอล MQTT ได้กลายเป็นหนึ่งในมาตรฐานหลักของระบบ IoT
เนื่องจากรองรับการส่งข้อมูลจากอุปกรณ์หลากหลายชนิด เช่น เซนเซอร์, แหล่งพลังงาน,
อุปกรณ์ควบคุมแสง, ระบบแจ้งเตือน และอื่น ๆ
ซึ่งต้องการการสื่อสารแบบเรียลไทม์และมีความหน่วงต่ำ (Low Latency)

ตัวอย่างการประยุกต์ใช้งาน MQTT

  • ระบบ Smart Home: ใช้ MQTT เพื่อควบคุมอุปกรณ์ไฟฟ้า เช่น หลอดไฟ, พัดลม,
    เครื่องปรับอากาศ

  • ระบบ Smart Farming: เก็บข้อมูลอุณหภูมิ, ความชื้น, ปริมาณน้ำฝน
    จากแปลงเกษตร

  • ระบบ Smart Building: ส่งข้อมูลจากเซนเซอร์ไปยัง Gateway
    เพื่อบันทึกและวิเคราะห์

  • ระบบแจ้งเตือนภัย: ตรวจจับเหตุการณ์และแจ้งเตือนผ่านมือถือหรือ Dashboard
    แบบเรียลไทม์

MQTT เทียบกับโปรโตคอลอื่น

ด้าน MQTT HTTP CoAP
โครงสร้าง Publish/Subscribe Request/Response Request/Response
ขนาดข้อมูล ขนาดเล็ก ใหญ่กว่า MQTT ขนาดเล็ก
ความเร็ว เร็ว ช้า เร็ว
ความซับซ้อน ต่ำ ปานกลาง ต่ำ
ความเหมาะสม IoT, Embedded Device Web, API Low-power IoT
Broker ต้องใช้ ไม่ต้องใช้ ไม่ต้องใช้
Security TLS/SSL ได้ HTTPS DTLS

ตารางที่ 14.1 แสดง MQTT เมื่อเทียบกับโปรโตคอลอื่น

MQTT มีข้อได้เปรียบชัดเจนในด้านขนาดแพ็กเกจและความเบา
จึงเหมาะอย่างยิ่งสำหรับระบบที่ใช้พลังงานต่ำและมีข้อจำกัดด้านการสื่อสาร เช่น อุปกรณ์ในระบบ
Smart Building หรือ Smart Farm ที่มีการเชื่อมต่อผ่าน LoRa, Wi-Fi หรือเครือข่าย
4G/5G

📨14.2 อุปกรณ์ที่ใช้ในการทดลอง

ลำดับที่ รายละเอียด
1 บอร์ด Smart Building IoT (Gateway Board) x 1
2. บอร์ด Smart Building IoT (Sensor Board) x 2
3. Raspberry Pi
4. เซนเซอร์ตรวจจับความเข้มแสง(BH1750) x 1
5. เซนเซอร์วัดอุณหภูมิและความชื้นในอากาศ(SHT30) x 1

ตารางที่ 14.2: รายการอุปกรณ์ที่ใช้ในการทดลอง

📨14.3 การเชื่อมต่อกับบอร์ด

A diagram of a computer network AI-generated content may be incorrect.

รูปที่ 14.2 แสดงการเชื่อมต่อของอุปกรณ์ในระบบ Smart Building IoT เพื่อส่งข้อมูลผ่าน
LoRa และ MQTT.

  1. Sensor board #1

  • อ่านค่าจากเซนเซอร์ SHT30 (อุณหภูมิและความชื้น)

  • ส่งข้อมูลผ่าน LoRa Wireless ไปยัง Gateway

  1. Sensor board #2

  • อ่านค่าจากเซนเซอร์ BH1750 (ค่าความเข้มแสง)

  • ส่งข้อมูลผ่าน LoRa Wireless ไปยัง Gateway เช่นเดียวกัน

  1. Gateway board

  • ทำหน้าที่รวมข้อมูลจาก Sensor ทั้ง 2 บอร์ดผ่าน LoRa

  • เชื่อมต่อ Wi-Fi Router เพื่อส่งข้อมูลผ่าน MQTT Protocol ไปยัง MQTT Broker
    บน Raspberry Pi

  1. Raspberry Pi (MQTT Broker)

  • ทำหน้าที่เป็น เซิร์ฟเวอร์กลาง รอรับข้อมูลจาก Gateway

  • เชื่อมต่อกับ Wi-Fi Router เพื่อให้สามารถเข้าถึงจากอุปกรณ์อื่นได้

  1. Laptop Computer

  • ติดตั้งโปรแกรม MQTT Explorer บนคอมพิวเตอร์

  • ทำหน้าที่ Subscribe ข้อมูลจาก Broker
    เพื่อแสดงค่าจากเซนเซอร์ในรูปแบบเรียลไทม์

📨สรุปภาพรวมการทำงาน

  • Sensor board ทั้ง 2 บอร์ด ทำหน้าที่เก็บข้อมูลสิ่งแวดล้อม

  • Gateway รวมและส่งข้อมูลผ่าน MQTT

  • Raspberry Pi รับข้อมูลในฐานะ Broker

  • Laptop หรืออุปกรณ์อื่นทำหน้าที่ Subscribe เพื่อรับและแสดงผล
    รวมถึงสั่งงาน

📨14.4 ติดตั้งโปรแกรม MQTT Explorer

เริ่มขั้นตอนการติดตั้งโปรแกรม MQTT Explorer ได้ดังนี้

1. เข้าเว็บไซต์

  • เปิดเว็บเบราว์เซอร์ แล้วเข้าไปที่ https://mqtt-explorer.com

2. ดาวน์โหลดไฟล์ติดตั้ง

คลิกปุ่ม Download ตามระบบปฏิบัติการที่คุณใช้งาน:

  • Windows: .exe

  • macOS: .dmg

  • Linux: .AppImage หรือ .deb

3. ติดตั้งโปรแกรม

สำหรับ Windows:

  • ดับเบิลคลิกไฟล์ .exe ที่ดาวน์โหลดมา

  • คลิก “Next” ไปตามขั้นตอนจนเสร็จ

สำหรับ macOS:

  • เปิดไฟล์ .dmg

  • ลากไอคอน MQTT Explorer ไปที่ Applications

4. เปิดโปรแกรมและตั้งค่า MQTT Broker

  • เมื่อเปิดโปรแกรมครั้งแรก:

  • คลิก + New Connection

  • กำหนดค่า MQTT Broker เช่น:

  • Name: Smart Building MQTT

  • Host: ใส่ IP ของ Raspberry Pi (เช่น 192.168.1.10)

  • Port: 1883 (ค่าเริ่มต้นของ Mosquitto)

  • [✔] Keep Alive, Clean Session, Auto Reconnect

จากนั้นคลิก Save & Connect

5. เริ่มใช้งาน

  • เมื่อเชื่อมต่อสำเร็จ คุณจะเห็น topic ต่าง ๆ ปรากฏแบบ tree

  • สามารถคลิกแต่ละ topic เพื่อดูค่าที่ Gateway ส่งมา

A screenshot of a computer AI-generated content may be incorrect.

รูปที่ 14.3 หน้าจอตั้งค่าการเชื่อมต่อ MQTT Broker

📨14.5 LoRa Module

A diagram of a cloud computing system AI-generated content may be incorrect.

รูปที่ 14.4 LoRa Network

LoRa (Long Range) เป็นเทคโนโลยีการสื่อสารไร้สายแบบระยะไกล กำลังต่ำ (LPWAN:
Low Power Wide Area Network) ซึ่งเหมาะสำหรับระบบ IoT ที่ต้องการส่งข้อมูลระยะไกล
โดยใช้พลังงานต่ำและมีความถี่ในการส่งข้อมูลไม่สูงมาก

ในระบบ Smart Building IoT นี้ LoRa ใช้เป็นช่องทางส่งข้อมูลจาก Sensor Board
ไปยัง Gateway Board ก่อนที่ Gateway จะส่งข้อมูลต่อไปยัง MQTT Broker ผ่าน Wi-Fi

องค์ประกอบของระบบที่ใช้ LoRa

  • Sensor Board #1: อ่านค่าจาก SHT30 (อุณหภูมิ/ความชื้น)

  • Sensor Board #2: อ่านค่าจาก BH1750 (ความเข้มแสง)

  • LoRa Module (SLX1276): ส่งข้อมูลจาก Sensor Board ไปยัง Gateway
    แบบไร้สาย

  • Gateway Board: รับข้อมูลผ่าน LoRa และส่งต่อไปยัง MQTT Server

ข้อดีของ LoRa ในระบบนี้

  • ส่งข้อมูลได้ไกลกว่าระบบ Wi-Fi ทั่วไป (มากกว่า 1 กิโลเมตร
    ในพื้นที่เปิด)

  • ใช้พลังงานต่ำ เหมาะกับบอร์ดที่ใช้พลังงานจากแบตเตอรี่

  • ไม่ต้องพึ่งพาอินเทอร์เน็ตที่ต้นทาง (Sensor Board)

กระบวนการทำงานโดยสังเขป

  • บอร์ด Sensor อ่านค่าจากเซนเซอร์

  • แปลงข้อมูลเป็น JSON และส่งผ่าน LoRa

  • Gateway รับข้อมูลผ่าน LoRa และส่งต่อเข้า MQTT Broker

  • โปรแกรม MQTT Client หรือ Node-RED แสดงค่าบน Dashboard

📨14.6 ตัวอย่างโค้ดและการใช้งาน

Example Code 14.1

โค้ดสำหรับ Sensor Board #1 ใช้อ่านค่าจากเซนเซอร์ SHT30 แล้วส่งข้อมูลในรูปแบบ
JSON ผ่าน LoRa ไปยัง Gateway Board

A screenshot of a computer AI-generated content may be incorrect.

รูปที่ 14.5 ตัวอย่างโค้ดสำหรับ Sensor Board #1 ใช้อ่านค่าจากเซนเซอร์ SHT30

A qr code with black squares AI-generated content may be incorrect.

Example Code 14.2

โค้ดสำหรับ Sensor Board #2 ใช้อ่านค่าจากเซนเซอร์ BH1750 แล้วส่งข้อมูลในรูปแบบ
JSON ผ่าน LoRa ไปยัง Gateway Board

A screenshot of a computer AI-generated content may be incorrect.

รูปที่ 14.6 ตัวอย่างโค้ดสำหรับ Sensor Board #2 อ่านค่าจากเซนเซอร์ BH1750

A qr code with black squares AI-generated content may be incorrect.

Example Code 14.3

โค้ดสำหรับ Gateway Board รับข้อมูล JSON จาก Sensor Board ผ่าน LoRa
จากนั้นส่งข้อมูลไปยัง MQTT Broker (Raspberry Pi) ผ่านการ publish

A screenshot of a computer AI-generated content may be incorrect.

รูปที่ 14.7 ตัวอย่างโค้ดสำหรับ Gateway Board

A qr code with black squares AI-generated content may be incorrect.

ก่อนอัปโหลดโค้ด Example Code 14.3 ไปยังบอร์ด Smart Building IoT (Gateway
Board) ให้ดำเนินการแก้ไขค่าพารามิเตอร์สำหรับการเชื่อมต่อ Wi-Fi และ MQTT Broker
ดังนี้:

1. แก้ไขค่าการเชื่อมต่อ Wi-Fi

  • ให้ระบุ ชื่อ WiFi (SSID) และ รหัสผ่าน (Password)
    ที่ใช้งานในเครือข่ายของคุณ

  • แก้ไขในโค้ดตามบรรทัดตัวอย่างด้านล่าง:

A close-up of a computer code AI-generated content may be incorrect.

รูปที่ 14.8 ตัวอย่างโค้ดที่ใช้กำหนดค่า Wi-Fi SSID, Password และ IP ของ MQTT
Server (Raspberry Pi)

2. แก้ไข IP Address ของ MQTT Server

  • ตรวจสอบ IP Address ของ Raspberry Pi ที่ติดตั้ง Mosquitto Broker
    โดยดูจากหน้าจอของ Raspberry Pi

  • นำค่า IP ที่ได้ไปกรอกในบรรทัดของ MQTT_SERVER:

A black case with a screen and electronic components AI-generated content may be incorrect.A screenshot of a computer AI-generated content may be incorrect.

รูปที่ 14.9 แสดงหน้าจอแสดงผลบน Raspberry Pi ที่ใช้ตรวจสอบค่าต่าง ๆ เช่น IP
Address ของ MQTT Server

3. เพิ่ม LoRa IDs ที่ Gateway อนุญาตให้รับข้อมูล

นำค่า Device ID ของ Sensor Board ที่แสดงอยู่บนหน้าจอ OLED มาใส่ในตัวแปร
lora_id_1, lora_id_2 เพื่อให้ Gateway ยอมรับเฉพาะข้อมูลจากอุปกรณ์ที่ระบุ:

A close-up of a number AI-generated content may be incorrect.

รูปที่ 14.10 ตัวอย่างการกำหนดค่า LoRa ID เพื่อให้ Gateway รับข้อมูลเฉพาะจาก
Sensor Board ที่กำหนดไว้.

เมื่อตั้งค่าทั้งสองส่วนเรียบร้อยแล้ว บอร์ด Gateway
จะสามารถเชื่อมต่อเครือข่ายและส่งข้อมูลผ่าน MQTT ไปยัง Raspberry Pi
ได้อย่างสมบูรณ์ครับ

📨14.7 ทดลองรันโปรแกรม MQTT Explorer

A blue circle with white circles and dots AI-generated content may be incorrect.

MQTT Explorer คือโปรแกรมแบบ graphical interface
สำหรับตรวจสอบการส่งและรับข้อมูลผ่านโปรโตคอล MQTT โดยสามารถดูหัวข้อ (Topic)
และข้อความ (Payload) ที่มีการ publish และ subscribe ได้แบบ real-time
เหมาะสำหรับการทดสอบระบบ IoT ที่มีการสื่อสารแบบ MQTT

  ขั้นตอนการทดลอง

  1. เปิดโปรแกรม MQTT Explorer

  2. คลิกปุ่ม ➕ เพิ่มการเชื่อมต่อ (Connection)

A screenshot of a computer AI-generated content may be incorrect.

รูปที่ 14.11 หน้าจอตั้งค่า MQTT Explorer สำหรับเชื่อมต่อกับ MQTT Broker

  1. ใส่ค่าต่าง ๆ ดังนี้:

  • Name: ตั้งชื่อการเชื่อมต่อ เช่น MQTT

  • Protocol: mqtt://

  • Host: ใส่ IP Address ของ MQTT Broker (ดูค่าจาก Raspberry Pi เช่น
    192.168.1.xx)

  • Port: ค่า default คือ 1883

  • Username/Password: ใส่ค่าตามที่กำหนดไว้ใน Mosquitto
    หรือสามารถเว้นว่างถ้าไม่ตั้งค่า

  1. กดปุ่ม SAVE แล้วคลิก CONNECT

  2. เมื่อเชื่อมต่อสำเร็จ ให้สังเกตหัวข้อ (Topic) ที่ปรากฏทางฝั่งซ้าย และข้อมูล JSON
    ทางฝั่งขวา

ตัวอย่างค่า JSON ที่อ่านได้:

A screenshot of a computer AI-generated content may be incorrect.

รูปที่ 14.12 ตัวอย่างหน้าจอการแสดงค่า JSON ที่ส่งจาก Gateway ผ่าน MQTT
Broker

{

  “timestamp”: “08:43:02”,

  “gateway_id”: “esp32gw-73BE54”,

  “gateway_fw”: “1.0”,

  “gateway_topic”: “esp32hub”,

  “wifi_ssid”: “innovation-lap”,

  “wifi_ip”: “192.168.1.13”,

  “wifi_rssi”: -62,

  “client_id”: “esp32hub-4784A4”,

  “client_counter”: 87,

  “client_fw”: “0.1”,

  “client_topic”: “esp32hub”

}

ชื่อฟิลด์ ความหมาย
timestamp   เวลาที่ข้อมูลถูกส่งจาก Gateway (ตามเวลาบนบอร์ด)
gateway_id ID ของ Gateway ที่ใช้ส่งข้อมูล
gateway_fw  เวอร์ชันของซอฟต์แวร์บน Gateway
gateway_topic       ชื่อ topic ที่ Gateway ใช้ในการส่งข้อมูล
wifi_ssid     ชื่อเครือข่าย WiFi ที่ Gateway เชื่อมต่อ
wifi_ip IP Address ที่ Gateway ได้รับจาก Router
wifi_rssi      ค่าความแรงของสัญญาณ WiFi (RSSI ยิ่งติดลบน้อยยิ่งดี)
client_id ID ของ Sensor board ที่ส่งข้อมูลมาให้ Gateway
client_counter      ตัวนับจำนวนครั้งที่ Sensor ส่งข้อมูล
client_fw  เวอร์ชันซอฟต์แวร์ของ Sensor board
client_topic  ชื่อ topic ที่ Sensor board ใช้ในการสื่อสารกับ Gateway

ตารางที่ 14.3: อธิบายแต่ละฟิลด์

โปรแกรมนี้ช่วยให้นักเรียนเข้าใจโครงสร้างของการสื่อสาร MQTT ในระบบ IoT จริง
ทั้งการตั้งค่าการเชื่อมต่อกับ Broker
และการตรวจสอบข้อมูลที่ถูกส่งแบบเรียลไทม์อย่างมีประสิทธิภาพ

หากต้องการให้สรุปผลการเรียนรู้หรือคำถามท้ายใบงานในหัวข้อนี้ด้วย แจ้งได้เลยครับ.

📨สรุปผลการเรียนรู้

จากบทเรียนนี้ นักเรียนสามารถเข้าใจหลักการทำงานของโปรโตคอล MQTT
และบทบาทของแต่ละอุปกรณ์ในระบบ IoT ได้อย่างชัดเจน โดยสามารถ

  • อธิบายความสำคัญและโครงสร้างการทำงานแบบ Publish/Subscribe ของ
    MQTT

  • เชื่อมต่อและตั้งค่าอุปกรณ์ Sensor Board, Gateway Board และ MQTT Broker บน
    Raspberry Pi ได้ถูกต้อง

  • เขียนและปรับแก้โค้ดการรับส่งข้อมูลระหว่าง Sensor → Gateway → MQTT Broker
    ได้

  • ทดสอบและตรวจสอบข้อมูลที่ส่งผ่าน MQTT Explorer ได้แบบเรียลไทม์

  • นำความรู้ไปประยุกต์ใช้ในระบบ Smart Building และระบบควบคุมต่าง ๆ
    ได้อย่างมั่นใจ

✅ คำถามท้ายใบงาน 💡

1.อธิบายโครงสร้างการทำงานของโปรโตคอล MQTT และเปรียบเทียบกับ HTTP หรือ CoAP
ว่ามีความแตกต่างกันอย่างไร?

…………………………………………………………………………………………………………………………………………..………………………………………………………………………………………………………………………………………..…………………………………………………………………………………………………………………

2.หาก Sensor Board ต้องการส่งข้อมูลไปยัง MQTT Broker ผ่าน Gateway
ต้องมีขั้นตอนการเชื่อมต่อและแก้ไขโค้ดอย่างไรบ้าง?

…………………………………………………………………………………………………………………………………………..………………………………………………………………………………………………………………………………………..…………………………………………………………………………………………………………………

3.จากค่าที่แสดงใน MQTT Explorer เช่น “wifi_rssi”: -62 และ
“client_counter”: 87 หมายถึงอะไร และมีประโยชน์อย่างไรในการตรวจสอบระบบ?

…………………………………………………………………………………………………………………………………………..………………………………………………………………………………………………………………………………………..…………………………………………………………………………………………………………………

📝 พื้นที่สรุปผลการเรียนรู้

🔹 หลังจากทำกิจกรรมและศึกษาข้อมูลจากชุดฝึกนี้ ฉันได้เรียนรู้ว่า…

…………………………………………………………………………………………………………………………………………..………………………………………………………………………………………………………………………………………..…………………………………………………………………………………………………………………

🔹 ความเข้าใจเพิ่มเติมที่ได้รับจากใบงานนี้คือ…

…………………………………………………………………………………………………………………………………………..………………………………………………………………………………………………………………………………………..…………………………………………………………………………………………………………………

🔹 ข้อเสนอแนะ/ข้อสงสัยเพิ่มเติม

…………………………………………………………………………………………………………………………………………..………………………………………………………………………………………………………………………………………..…………………………………………………………………………………………………………………

“ข้อมูลที่ทรงพลังที่สุด คือข้อมูลที่ส่งถึงผู้ที่ต้องใช้มัน”

“Knowledge is powerless unless stored and used.”

Leave a Reply

Your email address will not be published. Required fields are marked *