📨
เรียนรู้การสื่อสารผ่าน MQTT
การใช้งานร่วมกับการสื่อสารผ่าน MQTT

รูปที่ 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 การเชื่อมต่อกับบอร์ด

รูปที่ 14.2 แสดงการเชื่อมต่อของอุปกรณ์ในระบบ Smart Building IoT เพื่อส่งข้อมูลผ่าน
LoRa และ MQTT.
-
Sensor board #1
-
อ่านค่าจากเซนเซอร์ SHT30 (อุณหภูมิและความชื้น)
-
ส่งข้อมูลผ่าน LoRa Wireless ไปยัง Gateway
-
Sensor board #2
-
อ่านค่าจากเซนเซอร์ BH1750 (ค่าความเข้มแสง)
-
ส่งข้อมูลผ่าน LoRa Wireless ไปยัง Gateway เช่นเดียวกัน
-
Gateway board
-
ทำหน้าที่รวมข้อมูลจาก Sensor ทั้ง 2 บอร์ดผ่าน LoRa
-
เชื่อมต่อ Wi-Fi Router เพื่อส่งข้อมูลผ่าน MQTT Protocol ไปยัง MQTT Broker
บน Raspberry Pi
-
Raspberry Pi (MQTT Broker)
-
ทำหน้าที่เป็น เซิร์ฟเวอร์กลาง รอรับข้อมูลจาก Gateway
-
เชื่อมต่อกับ Wi-Fi Router เพื่อให้สามารถเข้าถึงจากอุปกรณ์อื่นได้
-
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 ส่งมา

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

รูปที่ 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

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

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

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

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

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

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

รูปที่ 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:


รูปที่ 14.9 แสดงหน้าจอแสดงผลบน Raspberry Pi ที่ใช้ตรวจสอบค่าต่าง ๆ เช่น IP
Address ของ MQTT Server
3. เพิ่ม LoRa IDs ที่ Gateway อนุญาตให้รับข้อมูล
นำค่า Device ID ของ Sensor Board ที่แสดงอยู่บนหน้าจอ OLED มาใส่ในตัวแปร
lora_id_1, lora_id_2 เพื่อให้ Gateway ยอมรับเฉพาะข้อมูลจากอุปกรณ์ที่ระบุ:

รูปที่ 14.10 ตัวอย่างการกำหนดค่า LoRa ID เพื่อให้ Gateway รับข้อมูลเฉพาะจาก
Sensor Board ที่กำหนดไว้.
เมื่อตั้งค่าทั้งสองส่วนเรียบร้อยแล้ว บอร์ด Gateway
จะสามารถเชื่อมต่อเครือข่ายและส่งข้อมูลผ่าน MQTT ไปยัง Raspberry Pi
ได้อย่างสมบูรณ์ครับ
📨14.7 ทดลองรันโปรแกรม MQTT Explorer

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

รูปที่ 14.11 หน้าจอตั้งค่า MQTT Explorer สำหรับเชื่อมต่อกับ MQTT Broker
-
ใส่ค่าต่าง ๆ ดังนี้:
-
Name: ตั้งชื่อการเชื่อมต่อ เช่น MQTT
-
Protocol: mqtt://
-
Host: ใส่ IP Address ของ MQTT Broker (ดูค่าจาก Raspberry Pi เช่น
192.168.1.xx) -
Port: ค่า default คือ 1883
-
Username/Password: ใส่ค่าตามที่กำหนดไว้ใน Mosquitto
หรือสามารถเว้นว่างถ้าไม่ตั้งค่า
-
กดปุ่ม SAVE แล้วคลิก CONNECT
-
เมื่อเชื่อมต่อสำเร็จ ให้สังเกตหัวข้อ (Topic) ที่ปรากฏทางฝั่งซ้าย และข้อมูล JSON
ทางฝั่งขวา
ตัวอย่างค่า JSON ที่อ่านได้:

รูปที่ 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