ชุดการเรียนรู้ Smart Farm ชุดที่ 2 เรื่องการรับข้อมูลอุณหภูมิ

มาเรียนรู้โค้ดกันเถอะ

อธิบายโค้ด

#include <WiFi.h> : คือคำสั่งในภาษา C++ ที่นำเข้าไลบรารี Arduino สำหรับการเชื่อมต่อ Wi-Fi โดยใช้มอดูล ESP32 ซึ่งเป็นอุปกรณ์ที่ใช้ในการเชื่อมต่อกับเครือข่ายไร้สาย Wi-Fi.

#include <PubSubClient.h> : นี่คือคำสั่งในภาษา C++ ที่นำเข้าไลบรารี PubSubClient ซึ่งเป็นไลบรารีสำหรับการเชื่อมต่อและสื่อสารกับ MQTT (Message Queuing Telemetry Transport) บริโอกเกส์.

#include <DHT.h> : นี่คือคำสั่งในภาษา C++ ที่นำเข้าไลบรารี Arduino สำหรับใช้งานเซนเซอร์ DHT11 ซึ่งเป็นเซนเซอร์วัดอุณหภูมิและความชื้นในสภาพแวดล้อม.

#define DHTPIN 4 : นี่คือการกำหนดค่าคงที่ (constant) โดยใช้ #define ซึ่งกำหนดว่าขาที่เซนเซอร์ DHT11 ถูกเชื่อมต่อที่ขาดิจิตอลหมายเลข 4 ของ Arduino

#define DHTTYPE DHT11 : นี่คือการกำหนดค่าคงที่ที่ระบุว่าเราใช้เซนเซอร์ DHT11.

4 บรรทัดนี้คือการกำหนดค่าสำหรับการเชื่อมต่อ Wi-Fi และ MQTT สำหรับอุปกรณ์ Arduino ที่ใช้เครือข่ายไร้สาย Wi-Fi และ MQTT ในการสื่อสาร โดยสิ่งที่ระบุมี 3 อย่างด้วยกันได้แก่ 1.ชื่อของ Wifi 2.รหัสของ Wifi 3.ชื่อ Server MQTT และมีคำสั่ง WiFiClient คือการสร้างอ็อบเจกต์ WiFiClient ที่ชื่อ espClient เพื่อใช้ในการเชื่อมต่อกับเครือข่าย Wi-Fi ในภายหลัง. โดยขั้นตอนนี้เราจะต้องกำหนด Wifi ตามที่เราต้องใช้งาน

การกำหนดการเชื่อมต่อ Wi-Fi และ MQTT สำหรับอุปกรณ์ Arduino ที่ใช้เครือข่ายไร้สาย Wi-Fi เพื่อสื่อสารข้อมูลผ่าน MQTT และเตรียมตัวแปรที่ใช้ในการสื่อสารด้วย MQTT ได้แก่ PubSubClient สำหรับการเชื่อมต่อ MQTT และตัวแปรอื่น ๆ สำหรับการเก็บข้อมูล

ฟังก์ชัน setup_wifi() ใช้ในการกำหนดการเชื่อมต่อ Wi-Fi ของอุปกรณ์ Arduino โดยใช้ชื่อเครือข่าย (SSID) และรหัสผ่านของเครือข่าย Wi-Fi ที่คุณระบุ ซึ่งสามารถใช้ในการเชื่อมต่อกับเครือข่ายไร้สาย Wi-Fi

ฟังก์ชัน reconnect() ที่ใช้ในการเชื่อมต่อหรือเชื่อมต่อใหม่กับเซิร์ฟเวอร์ MQTT หากการเชื่อมต่อสูญหายหรือไม่เชื่อมต่อในเริ่มต้น

ฟังก์ชัน setup() เป็นฟังก์ชันที่ถูกเรียกในตอนเริ่มต้นการทำงานของ Arduino โดยในแต่ล่ะบรรทัดมีความหมายดังนี้ ;

1.Serial.begin (9600) คือ คำสั่งนี้ใช้ในการเริ่มใช้การสื่อสารผ่าน Serial Monitor ที่อุปกรณ์ Arduino ที่เริ่มต้นที่อัตราบิต (baud rate) 9600 บิตต่อวินาที

2.setup_wifi() คือ กำหนดการเชื่อมต่อ Wi-Fi ของ Arduino

3.client.setServer(mqtt_server, 1883) คือ กำหนดเซิร์ฟเวอร์ MQTT ที่ Arduino จะเชื่อมต่อด้วยคำสั่ง client.setServer() โดยค่า mqtt_server คือค่าที่กำหนดไปในขั้นตอนที่ 2 และ 1883 คือค่าพอร์ตของ MQTT ทั่วไป

4.dht.begin คือ คำสั่งเริ่มการใช้งานเซนเซอร์วัดค่าอุณหภูมิและความชื้น

ฟังก์ชัน loop()  นี้ใช้ในการตรวจสอบการเชื่อมต่อ MQTT, ควบคุมการสื่อสาร MQTT, อ่านข้อมูลจากเซนเซอร์ DHT11, และส่งข้อมูล MQTT ความชืนและอุณหภูมิไปยังเซิร์ฟเวอร์ MQTT โดยระบุหัวข้อของการส่งในที่นี้คือ iot_kit/smart_farm/sensor และควบคุมความถี่ในการส่งข้อมูล