ก่อนหน้านี้เราได้กล่าวถึงระบบอัตโนมัติในบ้านหลายประเภทโดยใช้เทคโนโลยีต่างๆเช่น DTMF Based Home Automation, PC Controlled Home Automation โดยใช้ Arduino, Home Automation ที่ควบคุมด้วย Bluetooth ในโครงการนี้เราใช้การสื่อสารไร้สายที่ใช้ IR เพื่อควบคุมเครื่องใช้ภายในบ้าน ในโครงการนี้ Arduino ใช้สำหรับควบคุมกระบวนการทั้งหมด เราส่งคำสั่งบางอย่างไปยังระบบควบคุมโดยใช้รีโมท IR TV / DVD / MP3 สำหรับควบคุมเครื่องใช้ไฟฟ้าภายในบ้าน หลังจากได้รับสัญญาณจากรีโมท IR แล้ว Arduino จะส่งสัญญาณที่เกี่ยวข้องไปยังรีเลย์ซึ่งมีหน้าที่ในการเปิดหรือปิดเครื่องใช้ภายในบ้านผ่านตัวขับรีเลย์
คำอธิบายการทำงาน:
การทำงานของโครงการนี้เป็นเรื่องที่เข้าใจได้ง่าย เมื่อเรากดปุ่มใด ๆ ของIR Remoteจากนั้นรีโมทจะส่งรหัสในรูปแบบของรถไฟของพัลส์ที่เข้ารหัสโดยใช้ความถี่มอดูเลต 38Khz พัลส์เหล่านี้ได้รับโดยเซ็นเซอร์TSOP1738และอ่านโดย Arduino จากนั้น Arduino จะถอดรหัสที่ได้รับรถไฟของพัลส์เป็นค่าฐานสิบหกและเปรียบเทียบค่าที่ถอดรหัสกับค่าฐานสิบหกที่กำหนดไว้ล่วงหน้าของปุ่มที่กด หากการแข่งขันใด ๆ เกิดขึ้น Arduino จะทำการดำเนินการแบบสัมพัทธ์และผลลัพธ์ที่เกี่ยวข้องจะแสดงบนจอ LCD 16x2 โดยใช้คำสั่งที่เหมาะสม ในโครงการนี้เราได้ใช้หลอดไฟ 3 สีที่แตกต่างกันเพื่อการสาธิตซึ่งบ่งบอกถึงพัดลมไฟและทีวี
มี IR Remote หลายประเภทสำหรับอุปกรณ์ที่แตกต่างกัน แต่ส่วนใหญ่ใช้งานได้กับสัญญาณความถี่ 38KHz ที่นี่ในโครงการนี้เราควบคุมเครื่องใช้ภายในบ้านโดยใช้รีโมททีวี IR สำหรับการตรวจจับสัญญาณรีโมท IR เราใช้ TSOP1738 IR Receiver เซ็นเซอร์ TSOP1738 นี้สามารถตรวจจับสัญญาณความถี่ 38Khz การทำงานของรีโมท IR และ TSOP1738 มีรายละเอียดอยู่ในบทความนี้: IR Transmitter and Receiver
ส่วนประกอบ:
- Arduino UNO
- TSOP1738
- รีโมททีวี / ดีวีดี IR
- ULN2003
- รีเลย์ 5 โวลต์
- หลอดไฟพร้อมที่ยึด
- การเชื่อมต่อสายไฟ
- กระดานขนมปัง
- 16x2 LCD
- แหล่งจ่ายไฟ
- PVT
- IC 7805
ในโครงการนี้เราได้ใช้ปุ่มตัวเลข 7, 8 และ 9 ของรีโมท IR ในการควบคุมพัดลมไฟและทีวีตามลำดับและปุ่มเปิด / ปิด (ปุ่มเปิด / ปิด) ใช้สำหรับเปิดและปิดเครื่องใช้ทั้งหมดพร้อมกัน
ที่นี่เราได้ใช้วิธีการสลับสำหรับเปิดและปิดเครื่องใช้ไฟฟ้าภายในบ้านเครื่องเดียว วิธีการสลับ ไม่มีอะไรนอกจากจะได้รับว่าไม่ว่าจะกดปุ่มครั้งใดหรือไม่มีครั้งแปลก สิ่งนี้พบได้จากการรับการแจ้งเตือนหลังจากหารด้วย 2 (i% 2) หากมีการแจ้งเตือนบางอย่างอุปกรณ์จะเปิดและหากการแจ้งเตือนเป็น 0 ระบบจะปิด สมมติว่ากดคีย์ 7 บนรีโมทจากนั้นรีโมทจะส่งสัญญาณไปยัง Arduino ผ่าน TSOP IR Receiver จากนั้น Arduino จะถอดรหัสและเก็บค่าที่ถอดรหัสลงในตัวแปรผลลัพธ์ ตอนนี้ตัวแปรผลลัพธ์มีค่าฐานสิบหก 0x1FE00FF หลังจากจับคู่กับค่าฐานสิบหกที่กำหนดไว้ล่วงหน้าของคีย์ 7 (ดูภาพด้านบน) Arduino จะเปิดพัดลม ตอนนี้เมื่อเรากดปุ่มเดียวกัน (คีย์ 7) อีกครั้งจากนั้น IR จะส่งรหัสเดียวกัน Arduino ได้รับรหัสเดียวกันและจับคู่กับรหัสเดียวกันเหมือนก่อนหน้านี้ แต่คราวนี้ Fan ปิดเนื่องจากการสลับบิต (i% 2)
การถอดรหัสสัญญาณควบคุมระยะไกล IR โดยใช้ Arduino:
นี่คือรายการของดีวีดี NEC ชนิดถอดรหัสรหัสเอาต์พุตระยะไกล:
หากคุณไม่ทราบว่าเอาต์พุตถอดรหัสสำหรับรีโมท IR ของคุณสามารถหาได้ง่ายเพียงทำตามขั้นตอนเหล่านี้:
- ดาวน์โหลด IR remote library จากที่นี่
- เปิดเครื่องรูดและวางไว้ในโฟลเดอร์ Arduino 'Libraries' จากนั้นเปลี่ยนชื่อโฟลเดอร์ที่แยกเป็น IRremote
- เรียกใช้โปรแกรมด้านล่างจาก Arduino ของคุณและเปิดหน้าต่าง Serial Monitor ใน Arduino IDE ตอนนี้กดปุ่ม IR Remote และดูเอาต์พุตฐานสิบหกที่ถอดรหัสที่เกี่ยวข้องในหน้าต่าง Serial Monitor
* IRremote: IRrecvDemo - สาธิตการรับรหัส IR ด้วย IRrecv * ต้องเชื่อมต่อเครื่องตรวจจับ / ตัวถอดรหัส IR กับอินพุต RECV_PIN * เวอร์ชัน 0.1 กรกฎาคม 2552 * ลิขสิทธิ์ 2009 Ken Shirriff * http://arcfn.com * / #include
โปรแกรมข้างต้นนำมาจากโฟลเดอร์ 'ตัวอย่าง' ของห้องสมุด IRremote คุณสามารถดูตัวอย่างเพิ่มเติมเพื่อเรียนรู้เพิ่มเติมเกี่ยวกับการใช้รีโมท IR นั่นคือวิธีที่เราถอดรหัสเอาต์พุตระยะไกล IR
คำอธิบายวงจร:
การเชื่อมต่อของวงจรนี้ทำได้ง่ายมากที่นี่จอแสดงผลคริสตัลเหลวใช้สำหรับแสดงสถานะของเครื่องใช้ภายในบ้านที่เชื่อมต่อโดยตรงกับ arduino ในโหมด 4 บิต พินข้อมูลของ LCD ได้แก่ RS, EN, D4, D5, D6, D7 เชื่อมต่อกับพินดิจิตอลของ arduino หมายเลข 6, 7, 8, 9, 10, 11 และขาเอาต์พุตของ TSOP1738 เชื่อมต่อโดยตรงที่พินดิจิตอลหมายเลข 14 (A) ของ Arduino และขา Vcc เชื่อมต่อกับ +5 โวลต์และพิน GND เชื่อมต่อที่ขั้วกราวด์ของวงจร นอกจากนี้ยังใช้ไดรเวอร์รีเลย์คือ ULN2003 สำหรับรีเลย์ขับ 5 โวลต์ SPDT 3 รีเลย์ใช้สำหรับควบคุม LIGHT, FAN และ TV และรีเลย์เชื่อมต่อกับขา arduino หมายเลข 3, 4 และ 5 ผ่านรีเลย์ไดรเวอร์ ULN2003 สำหรับควบคุม LIGHT, FAN และ TV ตามลำดับ
คำอธิบายรหัส:
ในการเขียนโปรแกรมเป็นส่วนหนึ่งของโครงการนี้ก่อนอื่นในการเขียนโปรแกรมเรามีไลบรารีสำหรับรีโมท IR ซึ่งหาได้ง่ายที่ Google และกำหนดพินและประกาศตัวแปร.
# รวม
จากนั้นรวมส่วนหัวสำหรับจอแสดงผลคริสตัลเหลวจากนั้นเราจะกำหนดข้อมูลและหมุดควบคุมสำหรับ LCD และเครื่องใช้ภายในบ้าน
# รวม
หลังจากนั้นเราต้องเริ่มต้น LCD และกำหนดทิศทางของพินที่ใช้สำหรับพัดลมไฟและทีวี
การตั้งค่าเป็นโมฆะ () {Serial.begin (9600); lcd.begin (16,2); pinMode (พัดลมเอาท์พุท); pinMode (แสง, เอาท์พุท); pinMode (ทีวีเอาท์พุท);
ดังที่ได้อธิบายไปแล้วส่วนด้านล่างของโค้ดใช้เพื่อเปรียบเทียบค่าฐานสิบหกที่ได้รับกับรหัสฐานสิบหกที่กำหนดไว้แล้วของปุ่มนั้น หากตรงกันการดำเนินการแบบสัมพัทธ์จะดำเนินการโดยใช้ฟังก์ชันที่เหมาะสมที่กำหนดในโค้ด
เป็นโมฆะ loop () {if (irrecv.decode (& results)) {Serial.println (results.value, HEX); ล่าช้า (100); lcd.setCursor (0,0); lcd.print ("พัดลมไลท์ทีวี"); ถ้า (results.value == 0x1FE00FF) {i ++; int x = ผม% 2; digitalWrite (พัดลม, x);