- วัสดุที่ต้องการ:
- วิธีการทำงาน:
- ข้อกำหนดเบื้องต้น:
- การทำงานของรีโมท AC:
- แผนภาพวงจรและคำอธิบาย:
- การถอดรหัสสัญญาณรีโมท AC ของคุณ:
- โปรแกรม Arduino หลัก:
- การทำงานของระบบควบคุมอุณหภูมิ AC อัตโนมัติ:
เครื่องปรับอากาศ (เครื่องปรับอากาศ) ซึ่งครั้งหนึ่งเคยถือเป็นสินค้าฟุ่มเฟือยและพบได้เฉพาะในโรงแรมใหญ่โรงภาพยนตร์ร้านอาหาร ฯลฯ แต่ตอนนี้เกือบทุกคนมีเครื่องปรับอากาศในบ้านของเราเพื่อเอาชนะฤดูร้อน / ฤดูหนาวและผู้ที่มีมันกังวลเกี่ยวกับเรื่องธรรมดาอย่างหนึ่ง นั่นคือการใช้ไฟฟ้าและเครื่องชาร์จที่สูงเนื่องจากมัน ในโครงการนี้เรากำลังจะทำให้มีขนาดเล็กอัตโนมัติควบคุมอุณหภูมิวงจรที่สามารถลดการชาร์จกระแสไฟฟ้าโดยการที่แตกต่างกันอุณหภูมิกรรมการตรวจสอบโดยอัตโนมัติตามอุณหภูมิห้องโดยการเปลี่ยนอุณหภูมิที่ตั้งไว้เป็นระยะ ๆ เราสามารถหลีกเลี่ยงการทำให้ AC ทำงานเพื่อลดค่าอุณหภูมิเป็นเวลานานและทำให้ใช้พลังงานน้อยลง
พวกเราส่วนใหญ่คงเคยประสบกับสถานการณ์ที่เราต้องเปลี่ยนอุณหภูมิที่ตั้งไว้ของเครื่องปรับอากาศให้เป็นค่าต่างๆในช่วงเวลาต่างๆของวันเพื่อให้เราสบายตัวตลอดเวลา ในการทำให้กระบวนการนี้เป็นไปโดยอัตโนมัติโครงการนี้ใช้เซ็นเซอร์อุณหภูมิ (DHT11)ซึ่งอ่านอุณหภูมิปัจจุบันของห้องและขึ้นอยู่กับค่านั้นระบบจะส่งคำสั่งไปยัง AC ผ่านIR blaster ที่คล้ายกับรีโมทของ AC AC จะตอบสนองต่อคำสั่งเหล่านี้ราวกับว่ากำลังทำปฏิกิริยากับรีโมทและปรับอุณหภูมิ เมื่ออุณหภูมิในห้องของคุณเปลี่ยนแปลงไปArduinoจะปรับอุณหภูมิที่ตั้งไว้ของ AC เพื่อรักษาอุณหภูมิในแบบที่คุณต้องการ ฟังดูดีใช่มั้ย… มาดูวิธีสร้างกัน
วัสดุที่ต้องการ:
- Arduino เมกะ 2560
- TSOP1738 (HS0038)
- IR นำ
- DHT11 เซ็นเซอร์อุณหภูมิ / ความชื้น
- LED สีใดก็ได้และตัวต้านทาน 1K (อุปกรณ์เสริม)
- เขียงหั่นขนม
- การเชื่อมต่อสายไฟ
วิธีการทำงาน:
รีโมทคอนโทรลทั้งหมดในบ้านของเราที่เราใช้ควบคุมทีวีโฮมเธียเตอร์ AC และอื่น ๆ ทำงานได้ด้วยความช่วยเหลือของ IR Blasters IR Blasterคืออะไร แต่ไฟ LED IR ซึ่งอาจประลัยสัญญาณโดยการเต้นซ้ำ; สัญญาณนี้จะถูกอ่านโดยเครื่องรับในอุปกรณ์อิเล็กทรอนิกส์ สำหรับแต่ละปุ่มที่แตกต่างกันบนรีโมทสัญญาณที่ไม่ซ้ำกันจะถูกทำลายซึ่งหลังจากอ่านโดยผู้รับจะใช้เพื่อทำงานที่กำหนดไว้ล่วงหน้าโดยเฉพาะ หากเราสามารถอ่านสัญญาณนี้ที่ออกมาจากรีโมทได้เราก็สามารถเลียนแบบสัญญาณเดียวกันโดยใช้ IR LED เมื่อจำเป็นต้องใช้ในการทำงานนั้น ๆ ก่อนหน้านี้เราได้ทำวงจร IR Blaster สำหรับ Universal IR Remote
TSOPเป็นตัวรับสัญญาณ IR ที่สามารถนำมาใช้ในการถอดรหัสสัญญาณที่มาจากรีโมท ตัวรับนี้จะเชื่อมต่อกับ Arduino เพื่อส่งสัญญาณสำหรับแต่ละปุ่มจากนั้น IR Led จะใช้กับ Arduino เพื่อเลียนแบบสัญญาณเมื่อจำเป็น ด้วยวิธีนี้เราสามารถควบคุม AC ของเราโดยใช้ Arduino
ตอนนี้สิ่งที่เหลือคือการอ่านค่าอุณหภูมิโดยใช้ DHT11 และสั่งให้ AC ตามโดยใช้สัญญาณ IR เพื่อให้โครงการดูน่าสนใจยิ่งขึ้นและเป็นมิตรกับผู้ใช้ฉันได้เพิ่มจอแสดงผล OLEDที่แสดงอุณหภูมิความชื้นและอุณหภูมิที่ตั้งไว้ในปัจจุบัน เรียนรู้เพิ่มเติมเกี่ยวกับการใช้ OLED กับ Arduino
ข้อกำหนดเบื้องต้น:
นี้โครงการอัตโนมัติ AC ควบคุมอุณหภูมิจะสูงขึ้นเล็กน้อยในระดับเริ่มต้น แต่ด้วยความช่วยเหลือของบทเรียนอื่น ๆ ไม่กี่ทุกคนสามารถสร้างนี้กับเรื่องของเวลา ดังนั้นหากคุณเป็นมือใหม่อย่างแท้จริงกับ OLED, DHT11 หรือ TSOP โปรดกลับไปที่บทช่วยสอนเหล่านี้ด้านล่างซึ่งคุณสามารถเรียนรู้พื้นฐานและวิธีเริ่มต้นใช้งานสิ่งเหล่านี้ รายการอาจจะดูยาวไปหน่อย แต่เชื่อเถอะว่ามันง่ายและคุ้มค่าที่จะเรียนรู้และมันจะเปิดประตูไปสู่โครงการใหม่ ๆ มากมาย
- วงจรพื้นฐานโดยใช้ TSOP และ IR LED ภายใต้การทำงาน
- คู่มือการเชื่อมต่อพื้นฐานสำหรับ DHT11 กับ Arduino
- คู่มือการเชื่อมต่อพื้นฐานสำหรับ OLED กับ Arduino
- การเชื่อมต่อ TSOP กับ Arduino เพื่ออ่านค่าระยะไกล IR
ตรวจสอบให้แน่ใจว่าคุณมีArduino Megaและ Arduino รุ่นอื่น ๆ เนื่องจากขนาดโค้ดมีน้ำหนักมาก ตรวจสอบด้วยว่าคุณได้ติดตั้งไลบรารี Arduino ต่อไปนี้แล้วหรือไม่หากไม่ได้ติดตั้งจากลิงค์ด้านล่าง
- IR Remote Library สำหรับ TSOP และ IR Blaster
- Adafruit Library สำหรับ OLED
- GFX Graphics Library สำหรับ OLED
- DHT11 Sensor Library สำหรับเซ็นเซอร์อุณหภูมิ
การทำงานของรีโมท AC:
ก่อนที่เราจะดำเนินการในโครงการโปรดใช้เวลาสักครู่และสังเกตว่ารีโมท AC ของคุณทำงานอย่างไร รีโมท AC ทำงานในลักษณะที่แตกต่างกันเล็กน้อยเมื่อเทียบกับรีโมททีวี DVD IR. อาจมีเพียง 10-12 ปุ่มบนรีโมทของคุณ แต่สามารถส่งสัญญาณประเภทต่างๆได้มากมาย หมายความว่ารีโมทไม่ส่งรหัสเดียวกันทุกครั้งสำหรับปุ่มเดียวกัน ตัวอย่างเช่นเมื่อคุณลดอุณหภูมิโดยใช้ปุ่มลงเพื่อให้เป็น 24 ° C (องศาเซลเซียส) คุณจะได้รับสัญญาณพร้อมชุดข้อมูล แต่เมื่อคุณกดอีกครั้งเพื่อตั้งค่า 25 ° C คุณจะไม่เหมือนเดิม ข้อมูลเนื่องจากตอนนี้อุณหภูมิอยู่ที่ 25 และไม่ใช่ 24 ในทำนองเดียวกันรหัสสำหรับ 25 จะแตกต่างกันไปตามความเร็วพัดลมการตั้งค่าการนอนหลับ ฯลฯ ดังนั้นอย่าไปยุ่งกับตัวเลือกทั้งหมดและเน้นเฉพาะค่าอุณหภูมิด้วยค่าคงที่สำหรับการตั้งค่าอื่น ๆ.
ปัญหาอีกประการหนึ่งคือจำนวนข้อมูลที่ถูกส่งสำหรับการกดแต่ละปุ่มรีโมทปกติที่ส่ง 24 บิตหรือ 48 บิต แต่รีโมท AC อาจส่งได้มากถึง 228 บิตเนื่องจากแต่ละสัญญาณมีข้อมูลจำนวนมากเช่นอุณหภูมิความเร็วพัดลม จังหวะการนอนสไตล์สวิงเป็นต้นนี่คือเหตุผลว่าทำไมเราถึงต้องการ Arduino Mega เพื่อตัวเลือกการจัดเก็บที่ดีกว่า
แผนภาพวงจรและคำอธิบาย:
โชคดีที่การตั้งค่าฮาร์ดแวร์ของโครงการควบคุมอุณหภูมิ AC อัตโนมัตินี้ทำได้ง่ายมาก คุณสามารถใช้เขียงหั่นขนมและทำการเชื่อมต่อดังที่แสดงด้านล่าง
คุณสามารถใช้ตารางต่อไปนี้เพื่อยืนยันการเชื่อมต่อของคุณได้
ส. ไม่: |
พินส่วนประกอบ |
Arduino Pin |
1 |
OLED - Vcc |
5V |
2 |
OLED - Gnd |
Gnd |
3 |
OLED- SCK, D0, SCL, CLK |
4 |
4 |
OLED-SDA, D1, MOSI, ข้อมูล |
3 |
5 |
OLED- RES, RST, รีเซ็ต |
7 |
6 |
OLED- DC, A0.2 |
5 |
7 |
OLED-CS, เลือกชิป |
6 |
8 |
DHT11 - Vcc |
5V |
9 |
DHT11 - Gnd |
Gnd |
10 |
DHT11 - สัญญาณ |
13 |
11 |
TSOP - Vcc |
5V |
12 |
TSOP - Gnd |
Gnd |
13 |
IR Led - แอโนด |
9 |
14 |
IR Led - แคโทด |
Gnd |
เมื่อคุณเชื่อมต่อเสร็จแล้วควรมีลักษณะดังนี้ที่แสดงด้านล่าง ฉันใช้ Breadboard เพื่อจัดระเบียบสิ่งต่างๆแล้ว แต่คุณยังสามารถใช้สาย Male to Female โดยตรงเพื่อเชื่อมต่อส่วนประกอบทั้งหมดได้
การถอดรหัสสัญญาณรีโมท AC ของคุณ:
ขั้นตอนแรกในการควบคุม AC คุณคือการใช้ TSOP1738 เพื่อถอดรหัส AC ระยะไกลรหัสควบคุม ทำการเชื่อมต่อทั้งหมดตามที่แสดงในแผนภาพวงจรและตรวจสอบว่าคุณได้ติดตั้งไลบรารีที่กล่าวถึงทั้งหมดแล้ว ตอนนี้เปิดโปรแกรมตัวอย่าง“ IRrecvDumpV2 ” ซึ่งสามารถพบได้ที่ File -> ตัวอย่าง -> IRremote -> IRrecvDumpV2 อัปโหลดโปรแกรมไปยัง Arduino Mega ของคุณและเปิด Serial Monitor
ชี้รีโมทของคุณไปที่ TSOP แล้วกดปุ่มใด ๆสำหรับแต่ละปุ่มที่คุณกดสัญญาณตามลำดับจะถูกอ่านโดย TSOP1738 ซึ่งถอดรหัสโดย Arduino และแสดงใน Serial Monitor สำหรับทุกการเปลี่ยนแปลงของอุณหภูมิบนรีโมทของคุณคุณจะได้รับข้อมูลที่แตกต่างกัน บันทึกข้อมูลนี้เพื่อที่เราจะใช้ในโปรแกรมหลักของเรา มอนิเตอร์แบบอนุกรมของคุณจะมีลักษณะเช่นนี้ฉันยังได้แสดงไฟล์ Word ที่ฉันบันทึกข้อมูลที่คัดลอกไว้
ภาพหน้าจอแสดงรหัสสำหรับการตั้งอุณหภูมิที่ 26 ° C สำหรับรีโมท AC ของฉัน ขึ้นอยู่กับรีโมทของคุณคุณจะได้รับชุดรหัสที่แตกต่างกัน ในทำนองเดียวกันคัดลอกรหัสสำหรับระดับอุณหภูมิที่แตกต่างกันทั้งหมด คุณสามารถตรวจสอบรหัส IR ของรีโมทคอนโทรลเครื่องปรับอากาศทั้งหมดในรหัส Arduino ที่ระบุไว้ในตอนท้ายของบทช่วยสอนนี้
โปรแกรม Arduino หลัก:
สมบูรณ์โปรแกรม Arduino หลักสามารถพบได้ที่ด้านล่างของหน้านี้ แต่คุณไม่สามารถใช้โปรแกรมเดียวกัน คุณต้องเปลี่ยนค่ารหัสสัญญาณที่เราได้รับจากร่างตัวอย่างด้านบน เปิดโปรแกรมหลักบน Arduino IDE ของคุณและเลื่อนลงไปที่พื้นที่นี้ที่แสดงด้านล่างซึ่งคุณต้องแทนที่ค่าอาร์เรย์ด้วยค่าที่คุณได้รับจากรีโมทของคุณ
โปรดทราบว่าฉันใช้ 10 Arraysซึ่งสองอันใช้ในการเปิดและปิด AC ในขณะที่ส่วนที่เหลือ 8 ใช้เพื่อตั้งอุณหภูมิที่แตกต่างกัน ตัวอย่างเช่น Temp23 ใช้เพื่อตั้งค่า 23 ° C บน AC ของคุณดังนั้นให้ใช้รหัสตามลำดับใน Array นั้น เมื่อเสร็จแล้วคุณเพียงแค่อัปโหลดรหัสไปยัง Arduino ของคุณและวางไว้ตรงข้ามกับ AC ของคุณและเพลิดเพลินไปกับ Cool Breeze
คำอธิบายของรหัสมีดังต่อไปนี้ก่อนอื่นเราต้องใช้เซ็นเซอร์อุณหภูมิ DHT1 เพื่ออ่านอุณหภูมิและความชื้นและแสดงบน OLED ทำได้โดยรหัสต่อไปนี้
DHT.read11 (DHT11_PIN); // อ่าน Temp and Humidity Measured_temp = DHT.temperature + temp_error; Measured_Humi = DHT ความชื้น; // การทดสอบการแสดงข้อความ display.setTextSize (1); display.setTextColor (สีขาว); display.setCursor (0,0); display.print ("อุณหภูมิ:"); display.print (Measured_temp); display.println ("C"); display.setCursor (0,10); display.print ("ความชื้น:"); display.print (Measured_Humi); display.println ("%");
เมื่อเรารู้ว่าอุณหภูมิของห้องพักเราก็ต้องเปรียบเทียบกับค่าที่ต้องการค่าที่ต้องการนี้เป็นค่าคงที่ซึ่งกำหนดไว้ที่ 27 ° C (องศาเซลเซียส) ในโปรแกรมของฉัน จากการเปรียบเทียบนี้เราจะตั้งอุณหภูมิ AC ที่สอดคล้องกันดังที่แสดงด้านล่าง
if (Measured_temp == Desired_temperature + 3) // ถ้า AC เปิดอยู่และอุณหภูมิที่วัดได้สูงกว่าที่ต้องการมาก {irsend.sendRaw (Temp24, sizeof (Temp24) / sizeof (Temp24), khz); ดีเลย์ (2000); // ส่งสัญญาณตั้ง 24 * C AC_Temp = 24; }
ที่นี่ AC จะถูกตั้งค่าเป็น 24 ° C เมื่ออุณหภูมิที่วัดได้คือ 30 ° C (เนื่องจากอุณหภูมิที่ต้องการคือ 27) ในทำนองเดียวกันเราสามารถสร้าง If หลาย ๆลูปเพื่อกำหนดระดับอุณหภูมิที่แตกต่างกันตามอุณหภูมิที่วัดได้ดังที่แสดงด้านล่าง
if (Measured_temp == Desired_temperature-1) // ถ้า AC เปิดอยู่และอุณหภูมิที่วัดได้ต่ำกว่าค่าที่ต้องการ {irsend.sendRaw (Temp28, sizeof (Temp28) / sizeof (Temp28), khz); delay (2000); // ส่งสัญญาณตั้ง 28 * C AC_Temp = 28; } if (Measured_temp == Desired_temperature-2) // ถ้า AC เปิดอยู่และอุณหภูมิที่วัดได้ต่ำกว่าค่าที่ต้องการมาก {irsend.sendRaw (Temp29, sizeof (Temp29) / sizeof (Temp29), khz); delay (2000); // ส่งสัญญาณไปตั้ง 29 * C AC_Temp = 29; } if (Measured_temp == Desired_temperature-3) // ถ้า AC เปิดอยู่และอุณหภูมิที่วัดได้ต่ำมากค่าที่ต้องการ {irsend.sendRaw (Temp30, sizeof (Temp30) / sizeof (Temp30), khz); delay (2000); // ส่งสัญญาณไปตั้ง 30 * C AC_Temp = 30; }
การทำงานของระบบควบคุมอุณหภูมิ AC อัตโนมัติ:
เมื่อรหัสและฮาร์ดแวร์ของคุณพร้อมแล้วให้อัปโหลดโค้ดไปยังบอร์ดของคุณและคุณควรสังเกตว่า OLED แสดงสิ่งที่คล้ายกันนี้
ตอนนี้วางวงจรตรงข้ามกับเครื่องปรับอากาศของคุณและคุณสังเกตเห็นว่าอุณหภูมิของ AC ได้รับการควบคุมตามอุณหภูมิห้อง คุณสามารถลองเพิ่มอุณหภูมิใกล้เซ็นเซอร์ DHT11 เพื่อตรวจสอบว่าอุณหภูมิของ AC ถูกควบคุมตามที่ปรากฏในวิดีโอด้านล่าง
คุณสามารถปรับแต่งโปรแกรมเพื่อดำเนินการตามที่ต้องการ สิ่งที่คุณต้องมีคือรหัสที่คุณได้รับจากร่างตัวอย่าง หวังว่าคุณจะเข้าใจโครงการตัวควบคุมอุณหภูมิอัตโนมัตินี้และสนุกกับการสร้างสิ่งที่คล้ายกันมาก ฉันรู้ว่ามีสถานที่มากมายที่จะติดขัด แต่ไม่ต้องกังวลไป เพียงใช้ฟอรัมหรือส่วนแสดงความคิดเห็นเพื่ออธิบายปัญหาของคุณแล้วคนที่นี่จะช่วยคุณแก้ไขได้อย่างแน่นอน