พัดลมอัจฉริยะควบคุมด้วยเซนเซอร์ตรวจวัดอุณหภูมิ (Smart fan controlled by air temperature sensor)

ผู้เขียนบทความ : 093 นางสาวเพียงฟ้า สัมปะรัม COE #15

คณะวิศวกรมมศาสตร์ สาขาวิศวกรรมคอมพิวเตอร์

วิชา : 04-513-201 การโปรแกรมคอมพิวเตอร์ชั้นสูง 1/2566

1.ความเป็นมาและความสำคัญของปัญหา

ปัจจุบันนี้ประเทศไทยมีการพัฒนาความเจริญก้าวหน้าด้านเทคโนโลยีเป็นอย่างมากโดยเฉพาะเทคโนโลยีสำหรับปรับอากาศ โดยการตรวจสอบอุณหภูมิภายในห้องนั้นเป็นสิ่งที่สำคัญสำหรับการพัฒนาเทคโนโลยีด้านการปรับอากาศ เพื่อให้สามารถตรวจสอบค่าอุณหภูมิอากาศแบบเรียลไทม์ได้ ควบคู่กับการทำงานแบบอัตโนมัติ และยังคงสามารถปรับอุณหภูมิภายในบ้านได้ตามความต้องการอีกด้วย จึงได้มีการนำตัวเซนเซอร์ตรวจวัดอุณหภูมิมาใช้เพื่อบรรลุวัตถุประสงค์ดังกล่าว แต่เดิมนั้นการปรับอุณหภูมิอากาศจะเป็นการใช้พัดลมที่เป็นระบบแมนนวล โดยเมื่อกดที่ปุ่มสวิตช์ ระบบจะควบคุมการเปิด-ปิด ตามการใช้งาน แต่ได้ค้นพบปัญหาที่พบเจออยู่บ่อยครั้ง คือ หากต้องการปรับอุณหภูมิอากาศ จะต้องเสียเวลาเพื่อไปกดปุ่มใช้งานด้วยตนเองและอีกหนึ่งปัญหาหลักคือ ไม่สามารถควบคุมอุณหภูมิได้ตามต้องการ ซึ่งปัญหานี้ถือเป็นปัญหาสำคัญ ที่ต้องการจะแก้ไข

จากปัญหาดังกล่าวผู้พัฒนาจึงได้นำเทคโนโลยีด้านการปรับอุณหภูมิอากาศที่มีอยู่ในปัจจุบัน มาประยุคก์ใช้กับเซนเซอร์ตรวจวัดอุณหภูมิารโดยการนำตัวเซนเซอร์ตรวจวัดอุณหภูมิติดตั้งภายในที่พักอาศัย ให้สามารถรับค่าอุณหภูมิแบบเรียลไทม์ และแก้ปัญหาดังกล่าวด้วยการกำหนดค่าอุณหภูมิอากาศเพื่อจะให้พัดลมสามารถทำงานได้ตามค่าที่กำหนด และเพื่อแก้ปัญหาได้อย่างมีประสิทธิภาพ

2.วัตถุประสงค์

2.1 เพื่อศึกษาและเข้าใจการเขียนโปรแกรมภาษา python เพื่อให้พัดลมทำงานตามอุณหภูมิอากาศ

2.2 เพื่อนำความรู้การเขียนโปรแกรมภาษา python ไปประยุกต์ได้จริง

2.3 เพื่อพัฒนาพัดลมธรรมดาให้สามารถตอบสนองความต้องการของผู้บริโภคได้

3.ขอบเขตการทำงาน

3.1 อุณหภูมิต่ำกว่าหรือเท่ากับ 32 องศาเซลเซียส พัดลมจะปิดการทำงาน

3.2 อุณหภูมิมากกว่า 32 องศาเซลเซียส พัดลมจะเปิดการทำงาน

3.3 สามารถตรวจดูอุณหภูมิได้แบบเรียลไทม์ด้วยแอปพลิเคชั่น Blynk

3.4 สามารถเปิด-ปิดพัดลมได้ด้วยสวิตช์

4.ประโยชน์ที่คาดว่าจะได้รับ

4.1 ได้ศึกษาและเข้าใจการเขียนโปรแกรมภาษา python เพื่อให้พัดลมทำงานตามอุณหภูมิอากาศ

4.2 สามารถนำความรู้การเขียนโปรแกรมภาษา python ไปประยุกต์ใช้ได้จริง

4.3  สามารถเขียนโปรแกรมภาษา python เพื่อให้พัดลมทำงานตามอุณหภูมิอากาศได้

5.ความรู้ที่เกี่ยวข้อง

5.1 Switching Power Supply : Power Supply จริงๆ ก็คือแหล่งจ่ายพลังงานไฟฟ้าให้กับตัวอุปกรณ์หรือ Device ที่เราใช้งาน ซึ่งก็มีหลากหลายประเภท มีแบบที่เป็น linear Power Supply ก็คือพวก Tranfromer กับ Non-linear Power Supply หรือ Switching Power Supply โดยเฉพาะ Switching Power Supply ที่เราจะมาแนะนำนี้ เป็นอุปกรณ์ที่จ่ายพลังงานไฟฟ้าให้กับอุปกรณ์ไฟฟ้าต่างๆ โดยจะทำหน้าที่แปลงแรงดันไฟฟ้ากระแสสลับ (AC) เป็นแรงดันไฟฟ้ากระแสตรง (DC) เนื่องจากอุปกรณ์ไฟฟ้าต่างๆ ต้องการแรงดันไฟฟ้ากระแสตรงเพื่อให้ฟังก์ชันในอุปกรณ์ทำงานได้ (ส่งแรงดันไฟฟ้าไปยัง Capacitor หรือ Chips ของอุปกรณ์นั้น) (ไฟเลี้ยงวงจร)

5.2 เซนเซอร์ DHT11 : DHT11 Digital Temperature and Humidity Sensor เป็นโมดูลวัดอุณหภูมิ (Temperature) และความชื้นสัมพัทธ์ (Humidity) โดยใช้ชิพ DHT11 ให้ Output ออกมาเป็นแบบ Digital Output ใช้ไฟ DC ขนาด 3.5 – 5.5 โวลต์ เหมาะสำหรับวัดอุณหภูมิ (Temperature) ในช่วง 0-60° c และความชื้นสัมพัทธ์ (Humidity) ในช่วง 20-90 % RH. สามารถต่อกับบอร์ด Arduino ใช้งานได้ทันที (เป็นอินพุต)

5.3 ESP32 : MCU – ESP32  เป็น Micro Controller ที่รองรับการเชื่อมต่อ WiFi , Bluetooth – BLE ในตัว ภาษาที่ใช้ในการพัฒนาโปรแกรมคือ ภาษา C หรือ Python  ภาษา Python ต้องทำการอัพเกรดเฟิร์มแวร์ให้รองรับ Python การพัฒนาโปรแกรมขึ้นอยู่กับผู้ที่พัฒนา โปรแกรม IDE ที่ใช้พัฒนาคือ Arduino IDE หรือ Visual Studio สำหรับ Visual Studio จำเป็นต้องติดตั้ง Plugin Espressif IDF หรือ PlatformIO IDE และต้อง Enable (Arduino) (เป็นตัวประมวลผล)

5.4 Liquid Crystal Display :

ด้านหลังจอจะมีไฟส่องสว่าง หรือที่เรียกว่า Backlight อยู่ เมื่อมีการปล่อยกระแสไฟฟ้าเข้าไปกระตุ้นที่ผลึก ก็จะท า
ให้ผลึกโปร่งแสง ท าให้แสงที่มาจากไฟ Backlight แสดงขึ้นมาบนหน้าจอ ส่วนอื่นที่โดนผลึกปิดกั้นไว้จะไม่สว่าง
ผลึกมีสีที่แตกต่างกันตามสีของผลึกคริสตอล เช่นสีเขียว หรือ สีฟ้าฯลฯ ท าให้เมื่อมองไปที่จอก็จะพบกับตัวหนังสือ
แล้วพบกับพื้นหลังสีต่างๆกัน Character LCD เป็นจอที่แสดงผลเป็นตัวอักษรตามช่องแบบตายตัว เช่นจอ LCD ขนาด 16×2 หมายถึงใน 1 แถวมีตัวอักษรใส่ได้ 16 ตัว และมีทั้งหมด 2 บรรทัดให้ใช้งาน ส่วน 20×4 จะหมายถึงใน 1 แถวมี
ตัวอักษรใส่ได้ 20 ตัว และมีทั้งหมด 2 บรรทัด (ใช้เเสดงผล)

5.5 Relay : คืออุปกรณ์อิเล็กทรอนิกส์ที่ทำหน้าเปรียบเสมือนสวิตซ์สำหรับตัดต่อในวงจรควบคุมอัตโนมัติ ซึ่งหลักการทำงานของรีเลย์จะทำงานโดยการป้อนไฟฟ้าให้กับขดลวด เพื่อเปลี่ยนแรงดันไฟฟ้าให้เป็นสนามแม่เหล็กไปใช้สำหรับดูดหน้าสัมผัส (contact) ให้เปลี่ยนทิศทางการไหลของไฟฟ้า

5.6 พัดลม 12v (เป็นเอาท์พุต)

6.การดำเนินงาน

การออกแบบระบบ

วิธีการใช้งาน

ระบบควบคุมอุณหภูมิภายในบ้านเรือนนั้น มีการใช้งาน 2 ระบบ ประกอบด้วยระบบอัตโนมัติ และระบบแมนนวล

ระบบอัตโนมัติ จะเป็นการควบคุมด้วยรีเลย์ หากค่าอุณหภูมิเกินกว่าที่กำหนดพัดลมจะทำงานโดยอัตโนมัติ โดยที่ในระบบอัติโนมัตินั้น เซนเซอร์จะรับค่าอุณหภูมิเพื่อส่งไปยังไมโครคอนโทรลเลอร์เพื่อที่จะประมวลผลส่งต่อไปยังรีเลย์เพื่อกำหนดเงื่อนไขอุณภูมิ หากอุณหภูมิมากกว่าที่กำหนดพัดลมจะทำงาน และแสดงค่าอุณหภูมิและสถานะสวิตช์แบบเรียลไทม์บนจอ LCD และแอปพลิเคชั่น Blynk มีการแสดงค่าอุณหภูมิ สถานะของสวิตช์และรีเลย์แบบเรียลไทม์ว่ามีการทำงานหรือไม่

ระบบแมนนวล จะเป็นการควบคุมด้วยสวิตช์กดติดกดดับ หากกดติดพัดลมจะทำงาน หากกดดับพัดลมจะหยุดการทำงานโดยที่ในระบบแมนนวลนั้น จะแสดงค่าอุณหภูมิและสถานะสวิตช์บนจอLCDแบบเรียลไทม์ และแสดงสถานะสวิตช์รีเลย์บนแอปพลิเคชั่น Blynk แบบเรียลไทม์ โดยที่ไม่จำเป็นต้องผ่านการประมวลผลที่ไมโครคอนโทรลเลอร์

สามารถเขียนโค้ดได้ดังนี้

6.1 #include เพื่อรวมไลบรารี 

การรวมไลบรารีเหล่านี้ไว้ในArduino จะสามารถเข้าถึงฟังก์ชันและคุณสมบัติต่างๆ มากมาย ความพยายามในการทำงานในโครงการที่เกี่ยวข้องกับการสื่อสาร I2C จอ LCD หรือการเชื่อมต่อ IoT ผ่านแพลตฟอร์ม Blynk ไลบรารีเหล่านี้จะสรุปรายละเอียดระดับต่ำจำนวนมาก ทำให้คุณมุ่งเน้นไปที่ตรรกะระดับสูงกว่าของโปรเจ็กต์ของคุณได้ง่ายขึ้น

#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include "DHT.h"

6.2 เริ่มต้นด้วยการกำหนดข้อมูลสำหรับการเชื่อมต่อ Wi-Fi, การกำหนดค่าของเซนเซอร์ DHT11, และการกำหนดขาของอุปกรณ์อื่น ๆ ที่เชื่อมต่อกับ Arduino

6.2.1 char ssid[] = "Crvl": ค่า SSID (ชื่อของเครือข่าย Wi-Fi) ที่ต้องการใช้ในการเชื่อมต่อกับเครือข่าย Wi-Fi.

6.2.2 char pass[] = "oooooooo": รหัสผ่านของเครือข่าย Wi-Fi ที่ต้องการใช้ในการเชื่อมต่อ.

6.2.3 int DHTPIN = 27: ขาที่เชื่อมต่อกับเซนเซอร์ DHT11 (ในกรณีนี้คือขา 27).

6.2.4 #define DHTTYPE DHT11: ประกาศประเภทของเซนเซอร์ DHT11 ว่าเป็น DHT11.

6.2.5 DHT dht(DHTPIN, DHTTYPE): สร้างobject DHT โดยกำหนดขาที่เชื่อมต่อและประเภทของเซนเซอร์ DHT ที่ต้องการใช้.

6.2.6 กำหนดขาของอุปกรณ์อื่น ๆ:

  • int sw = 18: ขาที่เชื่อมต่อกับสวิตช์ (ในกรณีนี้คือขา 18).
  • int Relay = 23: ขาที่เชื่อมต่อกับ Relay (ในกรณีนี้คือขา 23).

และจากนั้น นำไปสู่การสร้างคลาส TemperatureController ซึ่งเป็นส่วนหลักของโปรแกรม Arduino คลาส TemperatureController นี้คอยจัดการกับการเชื่อมต่อ Wi-Fi, การอ่านข้อมูลจากเซนเซอร์ DHT11, การควบคุมอุปกรณ์ Relay, และการสื่อสารกับแพลตฟอร์ม Blynk ในฟังก์ชัน setup() และ loop() ของคลาส TemperatureController. คลาสนี้อาจมีการดำเนินการเพิ่มเติมในส่วนของฟังก์ชัน setup() และ loop() ซึ่งเกี่ยวข้องกับการควบคุมอุปกรณ์และการตรวจวัดอุณหภูมิในโปรแกรม

// Wi-Fi credentials  
char ssid[] = "Crvl";  
char pass[] = "00000000"; 

int DHTPIN = 27;  
#define DHTTYPE DHT11 
DHT dht (DHTPIN, DHTTYPE); 

int sw = 18; 
int Relay = 23;
class TemperatureController { 
public: 
TemperatureController() {} 

6.3ฟังก์ชันsetup()ใน Arduino

setup()ฟังก์ชันมีหน้าที่รับผิดชอบในการตั้งค่าเงื่อนไขเริ่มต้นและการกำหนดค่าที่จำเป็นสำหรับระบบตรวจวัดอุณหภูมิอากาศรวมถึงการเริ่มต้นการสื่อสารแบบอนุกรม การกำหนดค่าพิน การเริ่มต้นจอแสดงผล LCD การตั้งค่ารีเลย์ไปยังสถานะเริ่มต้น และสร้างการเชื่อมต่อกับ แพลตฟอร์ม Blynk สำหรับการตรวจสอบและควบคุมระยะไกล ฟังก์ชันนี้จะถูกดำเนินการเพียงครั้งเดียวเมื่อโปรแกรมเริ่มทำงาน มีลำดับการทำงานดังนี้:

6.3.1 Serial.begin(115200): โค้ดเริ่มต้นการสื่อสารผ่านทาง Serial ที่ความเร็ว 115200 bps ซึ่งช่วยในการดูข้อมูลและข้อผิดพลาดผ่านทาง Serial Monitor ของ Arduino IDE.

6.3.2 dht.begin(): เริ่มต้นเซนเซอร์ DHT11 เพื่อเริ่มการส่งคำขอการวัดอุณหภูมิและความชื้นจากเซนเซอร์.

6.3.3 pinMode(sw, INPUT): กำหนดขา sw ให้เป็นขาในโหมด INPUT ซึ่งหมายความว่าขานี้จะอ่านค่าจากสวิตช์ที่เชื่อมต่อ.

6.3.4 pinMode(DHTPIN, INPUT): กำหนดขา DHTPIN (ขาที่เชื่อมต่อ DHT11) ให้เป็นขาในโหมด INPUT เพื่อรับข้อมูลจากเซนเซอร์ DHT11.

6.3.5 pinMode(Relay, OUTPUT): กำหนดขา Relay ให้เป็นขาในโหมด OUTPUT เพื่อสั่งการควบคุมอุปกรณ์ที่เชื่อมต่อกับ Relay โดยสามารถส่งสัญญาณ HIGH หรือ LOW เพื่อเปิดหรือปิดอุปกรณ์.

6.3.6 lcd.begin(16, 2): เริ่มต้นหน้าจอ LCD ที่มีขนาด 16 ตัวอักษรในแนวนอนและ 2 ตัวอักษรในแนวตั้ง.

6.3.7 lcd.backlight(): เปิดใช้งานแสงหลังจากเริ่มต้นหน้าจอ LCD เพื่อให้แสดงผลข้อมูล.

6.3.8 digitalWrite(Relay, LOW): กำหนดค่าเริ่มต้นของขา Relay ให้เป็น LOW ซึ่งอาจจะหมายถึงการปิดอุปกรณ์ที่เชื่อมต่อกับ Relay เมื่อเริ่มทำงาน.

6.3.9 Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass): เริ่มต้นการเชื่อมต่อกับแพลตฟอร์ม Blynk โดยใช้ BLYNK_AUTH_TOKEN และข้อมูลการเชื่อมต่อ Wi-Fi (SSID และ Password) ที่คุณระบุไว้ในโค้ด.

void setup() { 
Serial.begin(115200); 
dht.begin(); 
pinMode(sw, INPUT); 
pinMode(DHTPIN, INPUT); 
pinMode(Relay, OUTPUT); 
lcd.begin(16, 2); 
lcd.backlight(); 
digitalWrite(Relay, LOW); 
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass); 
}

6.4ฟังก์ชันsetup()ใน Arduino

setup()ฟังก์ชันมีหน้าที่รับผิดชอบในการตั้งค่าเงื่อนไขเริ่มต้นและการกำหนดค่าที่จำเป็นสำหรับระบบควบคุมความชื้นในดิน  รวมถึงการเริ่มต้นการสื่อสารแบบอนุกรม การกำหนดค่าพิน การเริ่มต้นจอแสดงผล LCD การตั้งค่ารีเลย์ไปยังสถานะเริ่มต้น และสร้างการเชื่อมต่อกับ แพลตฟอร์ม Blynk สำหรับการตรวจสอบและควบคุมระยะไกล ฟังก์ชันนี้จะถูกดำเนินการเพียงครั้งเดียวเมื่อโปรแกรมเริ่มทำงาน มีลำดับการทำงานดังนี้:

6.4.1 Blynk.run(): คำสั่งนี้เรียกใช้งาน Blynk ในการตรวจสอบและรับข้อมูลจากแพลตฟอร์ม Blynk อาจมีคำสั่งควบคุมอื่น ๆ ที่เกี่ยวกับการควบคุมหรือรับข้อมูลจาก Blynk ในส่วนนี้.

6.4.2 float temperature = dht.readTemperature(): โค้ดนี้ใช้อ่านอุณหภูมิจากเซนเซอร์ DHT11 โดยเรียกใช้เมธอด readTemperature() ของเซนเซอร์ DHT11 และเก็บค่าอุณหภูมิที่ได้ลงในตัวแปร temperature.

6.4.3 int switchState = digitalRead(sw): โค้ดนี้ใช้อ่านสถานะของสวิตช์ที่เชื่อมต่อกับขา sw โดยเรียกใช้เมธอด digitalRead() และเก็บค่าสถานะในตัวแปร switchState.

6.4.4 if (isnan(temperature)) { ... }: ตรวจสอบว่าค่าอุณหภูมิที่ได้จากเซนเซอร์ DHT11 เป็นค่าที่ถูกต้องหรือไม่ ถ้าค่าไม่ถูกต้อง (เช่น ถ้าค่าเป็น NaN ซึ่งหมายถึง Not-a-Number) จะแสดงข้อความ “Failed to read from DHT sensor!” ผ่านทาง Serial Monitor และจบการทำงานในลูปนี้โดยใช้คำสั่ง return; ซึ่งหมายถึงการออกจากฟังก์ชัน loop() ทันที.

6.4.5 if (switchState == 0) { ... }: ตรวจสอบสถานะของสวิตช์ ถ้าสวิตช์ถูกปิด (ค่า switchState เป็น 0) จะเรียกใช้เมธอด updateRelayState(temperature) เพื่อควบคุมอุปกรณ์ตามค่าอุณหภูมิที่ได้รับจาก DHT11. ถ้าสวิตช์เปิด (ค่า switchState เป็น 1) จะเรียกใช้เมธอด handleSwitchOn() เพื่อเปิดอุปกรณ์.

void loop() { 
Blynk.run(); 
float temperature = dht.readTemperature(); 
int switchstate = digitalRead(sw); 
if (isnan(temperature)) { 
Serial.println(F("Failed to read from DHT sensor!")); 
return; } 
if (switchState == 0) {  
updateRelayState(temperature); 
} else { handleSwitchOn(); } }

6.5) ฟังก์ชัน updateRelayState(float temp) ทำหน้าที่ควบคุมสถานะของอุปกรณ์และแสดงข้อมูลอุณหภูมิบนหน้าจอ LCD รวมถึงส่งข้อมูลไปยังแพลตฟอร์ม Blynk โดยมีลำดับการทำงานดังนี้:

6.5.1 int relayState = (temp < 35) ? LOW : HIGH;: ตรวจสอบค่าอุณหภูมิ temp ถ้า temp น้อยกว่า 35 องศาเซลเซียส จะกำหนด relayState เป็น LOW (ปิดอุปกรณ์) แต่ถ้า temp มากกว่าหรือเท่ากับ 35 จะกำหนด relayState เป็น HIGH (เปิดอุปกรณ์).

6.5.2 digitalWrite(Relay, relayState);: ใช้ digitalWrite() เพื่อควบคุมอุปกรณ์ที่เชื่อมต่อกับขา Relay โดยใช้ค่า relayState ที่กำหนดในขั้นตอนที่ 1.

6.5.3 int status = (relayState == LOW) ? 0 : 1;: กำหนดค่า status เป็น 0 ถ้า relayState เป็น LOW (อุปกรณ์ปิด) หรือเป็น 1 ถ้า relayState เป็น HIGH (อุปกรณ์เปิด).

6.5.4 จัดการกับหน้าจอ LCD:

  • lcd.setCursor(0, 1);: กำหนดตำแหน่งเริ่มต้นสำหรับการแสดงข้อมูลบนหน้าจอ LCD ที่แถวด้านล่าง.
  • lcd.print("Temp = ");: แสดงข้อความ “Temp = “.
  • lcd.setCursor(7, 1);: กำหนดตำแหน่งเพื่อแสดงค่าอุณหภูมิ temp.
  • lcd.print(temp);: แสดงค่าอุณหภูมิ temp.
  • lcd.print(" C");: แสดงหน่วยองศาเซลเซียส (Celsius).
  • lcd.setCursor(13, 1);: กำหนดตำแหน่งเพื่อแสดงสถานะอุปกรณ์ (“ON” หรือ “OFF”) บนหน้าจอ LCD.

6.5.5 ส่งข้อมูลไปยังแพลตฟอร์ม Blynk:

  • Blynk.virtualWrite(V6, status);: ส่งค่า status ไปยังแพลตฟอร์ม Blynk
void updateRelayState(float temp) {
int relaystate = (temp < 35) ? LOW : HIGH; 
digitalWrite(Relay, relayState); 

int status = (relayState == LOW) ? 0 : 1;  

lcd.setCursor(0, 1); 
lcd.print("Temp = "); 
lcd.setCursor(7, 1);  
lcd.print(temp); 
lcd.print("C");  
lcd.setCursor(13, 1); 
lcd.print((status == 0) ? "OFF" : "ON");  

Blynk.virtualwrite (V6, status); 
lcd.setCursor(0, 0); 
lcd.print("Piangpha Sumpharum");  

Blynk.virtualwrite (V5, digitalRead(sw)); 
Blynk.virtualWrite(V7, temp); 

delay(1000); 
lcd.clear();  
} 

6.6) ดัดแปลงสำหรับการควบคุมอุปกรณ์เมื่อสวิตช์เปิด (handleSwitchOn) มีลำดับการทำงานดังนี้:

6.6.1 Serial.println(" ON "): แสดงข้อความ ” ON ” ผ่านทาง Serial Monitor เพื่อบ่งบอกว่าสวิตช์ถูกเปิด.

6.6.2 digitalWrite(Relay, HIGH): สั่งให้ขา Relay เป็น HIGH เพื่อเปิดอุปกรณ์ที่เชื่อมต่อกับ Relay.

6.6.3 int status = 1: กำหนดค่า status เป็น 1 เพื่อบ่งบอกสถานะว่าอุปกรณ์เปิด.

6.6.4 แสดงข้อมูลบนหน้าจอ LCD:

  • lcd.setCursor(0, 0): กำหนดตำแหน่งเริ่มต้นสำหรับการแสดงข้อมูลบนหน้าจอ LCD ที่แถวด้านบน.
  • lcd.print("Piangpha Sumpharum"): แสดงข้อความ “Piangpha Sumpharum” บนหน้าจอ LCD.
  • lcd.setCursor(2, 1): กำหนดตำแหน่งเพื่อแสดงข้อความ “Switch = on” ในแถวด้านล่างของหน้าจอ LCD.

6.6.5 ส่งข้อมูลไปยังแพลตฟอร์ม Blynk:

  • Blynk.virtualWrite(V5, digitalRead(sw)): ส่งค่าสถานะของสวิตช์ (digitalRead(sw)) ไปยังแพลตฟอร์ม Blynk ผ่าน Virtual Pin V5 เพื่อให้สามารถตรวจสอบสถานะของสวิตช์ผ่านแอป Blynk.
  • Blynk.virtualWrite(V6, status): ส่งค่า status (ค่า 1) ไปยังแพลตฟอร์ม Blynk ผ่าน Virtual Pin V6 เพื่อให้สามารถตรวจสอบสถานะของอุปกรณ์ที่เปิดผ่านแอป Blynk.

โค้ดนี้ควบคุมการทำงานของอุปกรณ์เมื่อสวิตช์ถูกเปิดและแสดงข้อมูลบนหน้าจอ LCD และส่งข้อมูลไปยังแพลตฟอร์ม Blynk เพื่อควบคุมและตรวจสอบสถานะของอุปกรณ์ผ่านแอป Blynk ได้.

void handleSwitchOn() { 
Serial.println(" ON ");  
digitalWrite(Relay, HIGH);

int status = 1; 

lcd.setCursor(0, 0); 
lcd.print("Piangpha Sumpharum"); 
lcd.setCursor(2, 1);  
lcd.print("Switch = on"); 

Blynk.virtualWrite(V5, digitalRead(sw)); 
Blynk.virtualWrite(V6, status);  }  
}; 

TemperatureController tempController; 

void setup() { 
tempController.setup();  
} 

void loop() { 
tempController.loop(); 
} 

7.การทดลอง

ทดลองการรับค่าที่ได้จากเซนเซอร์ DHT11 กับแอปพลิเคชั่น Weather

ทดลองการแสดงค่าอุณหภูมิ สถานะการทำงานของสวิตช์และรีเลย์บนแอปพลิเคชั่น Blynk

ทดลองสถานะการทำงานร่วมกันระหว่างรีเลย์และสวิตช์ของระบบแมนนวล

8.ผลการทดลอง

ผลการทดลองการแสดงค่าอุณหภูมิ สถานะการทำงานของสวิตช์และรีเลย์บนแอปพลิเคชั่น Blynk

ผลการทดลองการรับค่าที่ได้จากเซนเซอร์ DHT11 กับแอปพลิเคชั่น Weather

ผลการทดลองสถานะการทำงานร่วมกันระหว่างรีเลย์และสวิตช์ของระบบแมนนวล

สรุปผลการทดลอง

จากการทดลองการแสดงค่าอุณหภูมิ สถานะการทำงานของสวิตช์และรีเลย์บนแอปพลิเคชั่น Blynk , การรับค่าที่ได้จากเซนเซอร์ DHT11 กับแอปพลิเคชั่น Weather , สถานะการทำงานร่วมกันระหว่างรีเลย์และสวิตช์ของระบบแมนนวล พบว่าสถานะการทำงานของสวิตช์และรีเลย์บนแอปพลิเคชั่น Blynk นั้นมีการทำงานตามที่กำหนด และการรับค่าที่ได้จากเซนเซอร์ DHT11 กับแอปพลิเคชั่น Weather มีค่าที่ตรงกัน สถานะการทำงานร่วมกันระหว่างรีเลย์และสวิตช์ของระบบแมนนวลมีการทำงานร่วมกันได้เป็นอย่างดี ไม่พบข้อผิดพลาดใดๆ

9.อ้างอิง

[1] Akhila; N Divakara. “Intelligent sensing systems for adjusting temperatures in air conditioners” 2014 International Conference on Contemporary Computing and Informatics (IC3I),2014, pp. 1-5, doi: 10.1109/IC3I.2014.7019763 .

[2] Gurmu M. Debele; Xiao Qian “Automatic Room Temperature Control System Using ESP32 UNO R3 and DHT11 Sensor” 2020 17th International Computer Conference on Wavelet Active Media Technology and Information Processing (ICCWAMTIP),2020, pp. 1-6, doi: 10.1109/ICCWAMTIP51612.2020.9317307.

You may also like...

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *