การเชื่อมต่อตัวรับสัญญาณอินฟราเรดกับ Arduino Arduino: รีโมทคอนโทรลและตัวรับสัญญาณอินฟราเรด ห้องสมุดสำหรับการทำงานร่วมกับ IR

การเชื่อมต่อตัวรับสัญญาณอินฟราเรดกับ Arduino Arduino: รีโมทคอนโทรลและตัวรับสัญญาณอินฟราเรด ห้องสมุดสำหรับการทำงานร่วมกับ IR

  • แรงดันไฟฟ้าขาเข้า: 4.0 ... 5.5 V (ระบุ 5 V)
  • การใช้กระแสไฟ: สูงสุด 100 mA ในโหมดพัลส์ (ที่ Vcc = 5 V)
  • ความยาวคลื่นแสง: 940 นาโนเมตร (ค่าสูงสุด)
  • ความถี่สัญญาณสูงสุด: สูงสุด 10 MHz
  • ระยะการส่งข้อมูล: สูงสุด 10 เมตร (ที่ Vcc = 5V)
  • อุณหภูมิในการทำงาน: -25 … 85 °C
  • มุมทิศทาง: 120° (มีการสูญเสียพลังงาน< 50%)

โมดูลทั้งหมดของสาย "Trema" ถูกสร้างขึ้นในรูปแบบเดียวกัน

การเชื่อมต่อ:

สะดวกในการเชื่อมต่อโมดูลได้ 3 วิธี ขึ้นอยู่กับสถานการณ์:

วิธีการ - 1:โดยใช้สายเคเบิลแบบมีสายและ Piranha UNO

ห้องสมุดใช้ตัวจับเวลาฮาร์ดแวร์ตัวที่สอง

อย่าส่งสัญญาณ PWM ไปที่ 3 หรือ 11 OUTPUT!

อ่านเพิ่มเติมเกี่ยวกับการติดตั้งไลบรารี่ใน...

ข้อมูลเพิ่มเติมเกี่ยวกับการทำงานกับโมดูล:

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

จำนวนแพ็คเกจข้อมูลรีโมทคอนโทรลส่วนใหญ่มีหนึ่งอัน แต่อุปกรณ์บางอย่าง เช่น เครื่องปรับอากาศ จะใช้แพ็กเก็ตข้อมูล 2, 3 หรือมากกว่านั้น

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

ระยะเวลาของการหยุดชั่วคราวระหว่างแพ็กเก็ต:โดยปกติแล้วจะไม่เกิน 200ms

โปรโตคอลการถ่ายโอนข้อมูล:กำหนดพารามิเตอร์พื้นฐานต่อไปนี้:

ความถี่ของผู้ให้บริการ:สำหรับรีโมทคอนโทรลส่วนใหญ่จะอยู่ที่ 38 kHz ซึ่งเป็นความถี่ที่ตัวรับสัญญาณ Trema IR ปรับไว้

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

สัญญาณเริ่ม หยุด และสลับ:ตามชื่อจะอยู่ที่จุดเริ่มต้นจุดสิ้นสุดหรือตรงกลางของบรรจุภัณฑ์

หยุด:เมื่อเข้ารหัสการหยุดชั่วคราวเป็นเวลานาน ไม่สามารถระบุค่าของบิตสุดท้ายในแพ็กเก็ตได้ เนื่องจากแพ็กเก็ตตามมาด้วยการหยุดชั่วคราวเป็นเวลานาน และบิตสุดท้ายจะถูกกำหนดให้เป็น "1" เสมอ ดังนั้นสัญญาณ Stop จะถูกเพิ่มเข้าไป ไปยังแพ็กเก็ตซึ่งเป็นพัลส์ที่ไม่มีข้อมูลใดๆ

เริ่ม:ด้วยการเข้ารหัสแบบสองเฟส จำเป็นต้องมีสัญญาณเริ่มต้น เนื่องจากเป็นไปไม่ได้ที่จะเริ่มส่งแพ็กเก็ตจากการหยุดชั่วคราว

สลับ:นี่เป็นบิตที่เปลี่ยนค่าด้วยการกดปุ่มใหม่แต่ละครั้ง ซึ่งใช้ในโปรโตคอล RS5, RS5X, RS6 (Philips) โดยที่แพ็กเก็ตซ้ำจะทำซ้ำข้อมูลของแพ็กเก็ตข้อมูลโดยสมบูรณ์ ด้วยวิธีนี้ อุปกรณ์รับสัญญาณสามารถแยกความแตกต่างระหว่างการกดปุ่มค้างไว้และการกดอีกครั้ง

การเข้ารหัสความยาวพัลส์- ขั้นแรกให้ส่งพัลส์ ความยาวซึ่งขึ้นอยู่กับค่าของบิตที่ส่ง จากนั้นจึงหยุดชั่วคราวตาม ความยาวซึ่งไม่ขึ้นอยู่กับค่าของบิต ตัวอย่างเช่น: ในโปรโตคอล SIRC (Sony) ความยาวพัลส์สำหรับบิต “1” = 1200 µs และสำหรับบิต “0” = 600 µs ความยาวของการหยุดชั่วคราวจะเป็น 600 µs เสมอ ด้วยวิธีนี้ คุณสามารถแยกแยะ "1" จาก "0" ด้วยความยาวของพัลส์

หยุดการเข้ารหัสความยาวชั่วคราว- ขั้นแรกให้ส่งพัลส์ ความยาวไม่ขึ้นอยู่กับค่าของบิตที่ส่ง ตามด้วยการหยุดชั่วคราว ความยาวนั้นขึ้นอยู่กับค่าของบิต ตัวอย่างเช่น: ในโปรโตคอล NEC ความยาวหยุดชั่วคราวสำหรับบิต “1” = 1687.5 µs และสำหรับบิต “0” = 562.5 µs ความยาวพัลส์จะเป็น 562.5 µs เสมอ ดังนั้น คุณสามารถแยกแยะ "1" จาก "0" ได้ด้วยความยาวของการหยุดชั่วคราว

การเข้ารหัสแบบสองเฟส- ความยาวของพัลส์เท่ากับความยาวของการหยุดชั่วคราวและลำดับจะกำหนดประเภทของบิตที่ส่ง ตัวอย่างเช่น: ในโปรโตคอล RS5 (Philips) สำหรับบิต "1" พัลส์จะตามหลังการหยุดชั่วคราว และสำหรับบิต "0" การหยุดจะตามหลังพัลส์ สำหรับโปรโตคอล NRC (Nokia) ในทางกลับกัน สำหรับบิต “1” การหยุดชั่วคราวจะเป็นไปตามพัลส์ และสำหรับบิต “0” พัลส์จะเป็นไปตามการหยุดชั่วคราว

ตัวอย่าง:

การถ่ายโอนข้อมูลครั้งเดียว:

#รวม // เชื่อมต่อไลบรารีเพื่อทำงานร่วมกับเครื่องส่งสัญญาณ IR iarduino_IR_TX VD(10); // ประกาศวัตถุ VD โดยระบุพินที่เชื่อมต่อกับเครื่องส่งสัญญาณ IR การตั้งค่าเป็นโมฆะ())( VD.begin(); // เริ่มต้นทำงานกับเครื่องส่งสัญญาณ IR VD.send(0x00FFA25D); // ส่งรหัส 0x00FFA25D หนึ่งครั้ง โดยไม่มีแพ็กเก็ตซ้ำ ) void loop()() // Arduino จะส่งโค้ด 0x00FFA25D เพื่อส่งสัญญาณว่าเปิดอยู่

การส่งข้อมูลด้วยแพ็กเก็ตลองใหม่:

#รวม // เชื่อมต่อไลบรารีเพื่อทำงานร่วมกับเครื่องส่งสัญญาณ IR iarduino_IR_TX VD(2); // ประกาศวัตถุ VD โดยระบุพินที่เชื่อมต่อเครื่องส่งสัญญาณ IR การตั้งค่าโมฆะ())( pinMode(3,INPUT); // กำหนดค่าพิน 3 ซึ่งปุ่มเชื่อมต่ออยู่เป็นอินพุต pinMode(4, INPUT); // กำหนดค่าพิน 5 ซึ่งเชื่อมต่อปุ่มเป็นอินพุต pinMode(5,INPUT); // กำหนดค่าพิน 5 ซึ่งเชื่อมต่อปุ่มเป็นอินพุต VD.begin(); เริ่มต้นการทำงานกับเครื่องส่งสัญญาณ IR ) void loop())( if(digitalRead(3))(VD.send(0x00FFA25D, true);) // หากกดปุ่มเชื่อมต่อกับพิน 3 เราจะส่งรหัส 0x00FFA25D และเมื่อกดค้างไว้เราจะส่งแพ็กเก็ตซ้ำเนื่องจากฟังก์ชันถูกเรียกใช้ด้วยพารามิเตอร์จริง if(digitalRead(4))(VD.send(0x00FF629D, true);) // หากกดปุ่มเชื่อมต่อกับพิน 4 จากนั้นเราจะส่งโค้ด 0x00FF629D และเมื่อกดค้างไว้ เราจะส่งแพ็กเก็ตซ้ำ เนื่องจากฟังก์ชันถูกเรียกใช้ด้วยพารามิเตอร์ true if(digitalRead(5))(VD.send(0x00FFE21D, true);) // ถ้า กดปุ่มที่เชื่อมต่อกับพิน 5 จากนั้นเราจะส่งรหัส 0x00FFE21D และเมื่อกดค้างไว้เราจะส่งแพ็กเก็ตซ้ำเนื่องจากฟังก์ชันถูกเรียกใช้ด้วยพารามิเตอร์จริง )

การถ่ายโอนข้อมูลระบุโปรโตคอล:

#รวม // เชื่อมต่อไลบรารีเพื่อทำงานร่วมกับเครื่องส่งสัญญาณ IR iarduino_IR_TX VD(5); // ประกาศวัตถุ VD โดยระบุพินที่เชื่อมต่อเครื่องส่งสัญญาณ IR การตั้งค่าเป็นโมฆะ() ( VD.begin(); // เริ่มต้นทำงานกับเครื่องส่งสัญญาณ IR pinMode(6,INPUT); // กำหนดค่าพิน 6 ที่ ปุ่มเป็นอินพุต pinMode(7,INPUT); // กำหนดค่าพิน 7 ที่ปุ่มเชื่อมต่ออยู่เป็นอินพุต pinMode(8,INPUT); // กำหนดค่าพิน 8 ที่ปุ่มเชื่อมต่ออยู่เป็น input VD.protocol("AeQQV" ~zK]Kp^KJp[@@@@@@@Bp"); // ระบุโปรโตคอลการถ่ายโอนข้อมูลจากรีโมทคอนโทรล ELENBERG) // คุณสามารถรับบรรทัดโปรโตคอลได้โดยกดปุ่มใดก็ได้ ปุ่มบนรีโมทคอนโทรลของทีวี // และเรียกใช้ฟังก์ชันตัวรับที่มีชื่อเดียวกันโดยไม่มีพารามิเตอร์ void loop())( if(digitalRead(4))(VD.send(0x417, true);) // ส่ง ON/ สัญญาณ OFF (ด้วยแพ็กเก็ตซ้ำ แพ็กเก็ตจะถูกทำซ้ำหลังจากช่วงเวลาที่ระบุไว้ในโปรโตคอล) ถ้า(digitalRead(5) )(VD.send(0x425, true);) // ส่งสัญญาณ VOL- (พร้อมแพ็กเก็ตซ้ำ แพ็กเก็ต จะถูกทำซ้ำหลังจากช่วงเวลาที่ระบุไว้ในโปรโตคอล) if(digitalRead(6))(VD.send(0x427);) // ส่งสัญญาณ VOL+ (หากไม่มีแพ็กเก็ตซ้ำ ระดับเสียงจะเพิ่มขึ้นเร็วขึ้น เนื่องจากฟังก์ชันถูกเรียกใช้ใน วนซ้ำโดยไม่มีช่วงเวลา))

ตัวอย่างนี้แสดงให้เห็นว่าเครื่องส่งสัญญาณสามารถจำลองสัญญาณของรีโมทคอนโทรล IR อื่นๆ ได้อย่างสมบูรณ์ได้อย่างไร

สตริงโปรโตคอลที่ได้จะต้องส่งผ่านเป็นพารามิเตอร์ไปยังฟังก์ชัน protocol() หลังจากนั้นคุณสามารถส่งโค้ดปุ่มโดยใช้ฟังก์ชัน send() ได้ เป็นผลให้อุปกรณ์จะตอบสนองต่อตัวส่งสัญญาณ IR ราวกับว่าพวกเขากำลังตอบสนองต่อรีโมทคอนโทรล IR ของตัวเอง

คำอธิบายของฟังก์ชั่นหลักของห้องสมุด:

การเชื่อมต่อห้องสมุด:

#รวม // เชื่อมต่อไลบรารีเพื่อทำงานกับเครื่องส่งสัญญาณ IR iarduino_IR_TX VD(PIN_NO[,อินเวอร์เตอร์]); // ประกาศวัตถุ VD โดยระบุหมายเลขพินที่เชื่อมต่อเครื่องส่งสัญญาณ IR

// พารามิเตอร์ตัวที่สองประเภท bool สามารถระบุได้ว่าข้อมูลที่ส่งไปยังเครื่องส่งจำเป็นต้องกลับด้าน

  • ฟังก์ชั่น start();
  • วัตถุประสงค์: การเริ่มต้นการทำงานกับเครื่องส่งสัญญาณ IR
  • ไวยากรณ์: start();
  • ตัวเลือกสินค้า: ไม่มี.
  • ส่งกลับค่า: ไม่มี
  • หมายเหตุ: โทรหนึ่งครั้งในรหัสการตั้งค่า
ตัวอย่าง:

VD.begin(); // เริ่มต้นการทำงานกับเครื่องส่งสัญญาณ IR

  • ฟังก์ชั่นส่ง();
  • วัตถุประสงค์: การถ่ายโอนข้อมูล
  • ไวยากรณ์: send(DATA [, HOLD ]);
    • พารามิเตอร์:
    • ข้อมูล - รหัส เช่น uint32_t ที่ต้องถ่ายโอน
  • ตัวเลือกสินค้า: ไม่มี.
  • หมายเหตุ: หากฟังก์ชันถูกเรียกใช้โดยไม่มีพารามิเตอร์ HOLD หรือเท่ากับเท็จ ฟังก์ชันจะส่งโค้ดที่ระบุแต่ละครั้งทุกครั้งที่เรียกใช้ฟังก์ชัน ถ้าฟังก์ชันถูกเรียกด้วยพารามิเตอร์ HOLD เท่ากับ true ฟังก์ชันจะดีเด้งกลับปุ่มและส่งแพ็กเก็ตลองใหม่ (ตามช่วงเวลาที่ระบุในโปรโตคอล) เมื่อปุ่มถูกพักไว้
  • หมายเหตุ: โทรหนึ่งครั้งในรหัสการตั้งค่า
VD.ส่ง(0xCCDDEEFF); // ส่งโค้ด 0xCCDDEEFF หากเรียกใช้ฟังก์ชันอย่างต่อเนื่องแบบวนซ้ำ ฟังก์ชันจะส่งโค้ดนี้ทุกครั้ง VD.send(0xCCDDEEFF, จริง); // ส่งโค้ด 0xCCDDEEFF หากฟังก์ชันถูกเรียกใช้อย่างต่อเนื่องในลูป ฟังก์ชันจะส่งโค้ดในครั้งแรกเท่านั้น จากนั้นจะส่งแพ็กเก็ตซ้ำตามโปรโตคอลการถ่ายโอนข้อมูลที่ระบุ

โปรโตคอลฟังก์ชัน ();

  • วัตถุประสงค์: การตั้งค่าโปรโตคอลการถ่ายโอนข้อมูล
  • ไวยากรณ์: โปรโตคอล (STRING);
  • ไวยากรณ์: send(DATA [, HOLD ]);
    • LINE - ประกอบด้วยอักขระโปรโตคอล 25 ตัว + อักขระท้ายบรรทัด สามารถรับสตริงนี้ได้โดยการเรียกใช้ฟังก์ชันที่มีชื่อเดียวกัน โดยไม่มีพารามิเตอร์ สำหรับตัวรับ
  • ค่าที่ส่งคืน: bool - สตริงมีข้อมูลโปรโตคอลที่ถูกต้องหรือไม่
  • หมายเหตุ: ฟังก์ชันนี้จะตั้งค่าโปรโตคอลการถ่ายโอนข้อมูล ดังนั้นตัวส่งสัญญาณ IR จึงสามารถจำลองสัญญาณของรีโมทคอนโทรลแบบทั่วไปได้ หลังจากเรียกใช้ฟังก์ชันนี้แล้ว การถ่ายโอนข้อมูลโดยใช้ฟังก์ชัน send() จะดำเนินการโดยใช้โปรโตคอลใหม่ โปรโตคอลการถ่ายโอนข้อมูลเริ่มต้นสอดคล้องกับรีโมทคอนโทรล “Car mp3”
  • หมายเหตุ: โทรหนึ่งครั้งในรหัสการตั้งค่า
VD.protocol("AeQQV~zK]Kp^KJp[@@@@@@@Bp"); // ระบุโปรโตคอลการถ่ายโอนข้อมูลจากรีโมทคอนโทรล ELENBERG

// ตอนนี้เครื่องส่งสัญญาณจะส่งข้อมูลโดยเข้ารหัสตามโปรโตคอลที่ระบุ

  • // คุณสามารถรับสตริงโปรโตคอลได้โดยการกดปุ่มใดก็ได้บนรีโมทคอนโทรลของทีวีและเรียกใช้ฟังก์ชันที่มีชื่อเดียวกันสำหรับตัวรับสัญญาณ IR โดยไม่มีพารามิเตอร์
  • ตัวแปรความถี่:
  • ค่า: ตั้งค่าความถี่พาหะของการส่งข้อมูลในหน่วย kHz;
ประเภทข้อมูล: uint8_t;

หมายเหตุ: หากไม่ได้กำหนดค่าตัวแปร การส่งข้อมูลจะดำเนินการที่ความถี่ที่ระบุในโปรโตคอล หากคุณระบุค่าเป็น 0 ข้อมูลจะถูกส่งโดยไม่มีการปรับ

  • VD.ความถี่=36; // ตั้งค่าความถี่พาหะสำหรับการส่งข้อมูลเป็น 36 kHz VD.ส่ง(0xCCDDEEFF); // ส่งข้อมูลด้วยความถี่พาหะ 36 kHz VD.ส่ง(0xABCDEF); // ส่งข้อมูลด้วยความถี่พาหะ 36 kHz
  • การเปิด/ปิดแสงสว่าง การทำความร้อน การระบายอากาศ การรดน้ำ ฯลฯ
  • การเปิด/ปิดประตู มู่ลี่ หน้าต่างหลังคา ช่องระบายอากาศ ฯลฯ

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

ความเกียจคร้านเป็นคุณสมบัติที่บังคับให้เราต้องพยายามลดต้นทุนพลังงานโดยรวม

นับเป็นครั้งแรกที่นักประดิษฐ์นิโคลา เทสลาแสดงการควบคุมระยะไกลให้โลกเห็น ในปีพ.ศ. 2441 ที่นิทรรศการในเมดิสันสแควร์การ์เดน เขาได้นำเสนอเรือควบคุมด้วยวิทยุที่เรียกว่า "เทเลอัตโนมัติ" ปัจจุบันเทคโนโลยีนี้แพร่หลายมากขึ้น มีเพียงวิธีการส่งคำสั่ง (ช่องทางการสื่อสาร) ที่แตกต่างกันเท่านั้นที่ได้ถูกเพิ่มเข้ามา

ช่องทางการสื่อสารหลักได้แก่:

  • สถานีวิทยุ
  • อัลตราโซนิก
  • อินฟราเรด

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

กาลครั้งหนึ่งที่งานเก่าของฉัน ฉันได้หยิบรีโมทคอนโทรลและ "ช่องมองภาพ" (ตัวรับสัญญาณ IR) จากระบบรักษาความปลอดภัยที่ถูกตัดออกไป มันไม่ได้ใช้งานเป็นเวลานาน และในที่สุดฉันก็ได้ตรวจสอบการทำงาน .

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

ฉันยังร่างวงจรที่คล้ายกันด้วยตัวรับสี่ตัวในกรณีที่ฉันต้องการ ฉันใช้ตัวรับ IR TSOP1836 แต่คุณสามารถใช้ตัวอื่นได้ เพื่อให้แน่ใจว่ารับสัญญาณได้ 360 องศา คุณต้องเลือกตัวรับสัญญาณ IR ที่เหมาะสม (พร้อมมุมรับสัญญาณที่กว้าง) และวางไว้ใกล้กันมากที่สุด ฉันไม่สังเกตเห็นปัญหาการรับสัญญาณใดๆ กับเครื่องรับของฉัน ฉันยังรวมแผงวงจรพิมพ์และตำแหน่งขององค์ประกอบต่างๆ ไว้ในเอกสารแนบด้วย

ในการประมวลผลคำสั่ง ฉันจะใช้ arduino uno โดยธรรมชาติ ฉันสามารถใช้ตัวรับ IR ได้
TSOP34836 (มีช่วงการรับสัญญาณสูง แต่มีราคาแพงกว่า) หรือ TL1838 คุณสามารถใช้รีโมตคอนโทรล IR ใดก็ได้ แม้แต่จากทีวีก็ตาม หากคุณต้องการรีโมตคอนโทรลของคุณเองคุณสามารถซื้อชุดสำหรับ Arduino ได้

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

คุณยังสามารถส่งข้อมูลในระยะใกล้โดยใช้คลื่น IR หากต้องการส่งคำสั่งหรือข้อมูล คุณสามารถใช้ Arduino ตัวที่สองกับเครื่องส่งสัญญาณ IR แต่ความเร็วของการส่งข้อมูลดังกล่าวช้ามาก ข้อดีของช่องอินฟราเรด ได้แก่ ความไม่ไวต่อการรบกวนทางแม่เหล็กไฟฟ้า

ในการรับสัญญาณ Arduino IR เราจะเชื่อมต่อตัวรับสัญญาณ IR ดังนี้:

โปรดทราบว่าตำแหน่งของขาตัวรับสัญญาณอาจแตกต่างกันไป


เครื่องรับมีแหล่งจ่ายไฟ 3 ขาคือ "+" และ "-" (แรงดันไฟฟ้าหลักอยู่ที่ 3.3-5V) และขาข้อมูลคือสิ่งที่ส่งข้อมูลไปยังอุปกรณ์ (ในกรณีของเราคือ Arduino) แรงดันไฟฟ้าสำหรับ TSOP34836 คือ 2.7-5.5 โวลต์ ฉันจะใช้ 5 โวลต์จากเอาต์พุต Arduino มาตรฐาน

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

#รวม int RECEIVE_PIN = 11;//หน้าสัมผัสของผู้รับ int RELAY_PIN = 3;//หน้าสัมผัสรีเลย์ IRrecv irrecv(RECEIVE_PIN);//กำหนดผลลัพธ์ของพินผู้รับ decode_results;//ข้อมูลที่ได้รับ

การตั้งค่าเป็นโมฆะ () (
อนุกรมเริ่มต้น(9600);
irrecv.enableIRIn(); // เปิดเครื่องรับ
pinMode(RELAY_PIN, เอาท์พุต); // กำหนดค่ารีเลย์สำหรับเอาต์พุต
digitalWrite (RELAY_PIN, สูง); //ตั้งค่าให้สูง
}

เป็นโมฆะวน() (
if (irrecv.decode(&results)) (//หากได้รับข้อมูล
Serial.print("0x");
Serial.println(results.value, HEX);//ส่งออกข้อความที่ได้รับไปยังเทอร์มินัล
if ((results.value == 0x8FF40BF) ||(results.value == 0xD72040BF)) digitalWrite(RELAY_PIN, !digitalRead(RELAY_PIN));//หากรหัสปุ่มคือ 0x8FF40BF หรือ 0xD72040BF ให้เปลี่ยนสถานะรีเลย์เป็นตรงกันข้าม
ล่าช้า (200); // ล่าช้าจากการเรียกสองครั้ง
irrecv.resume();// รับค่าถัดไป
}
}

ให้ฉันอธิบายเล็กน้อยด้วยภาพร่าง:



ถ้า ((results.value == 0x8FF40BF) ||(results.value == 0xD72040BF))

ค่าผลลัพธ์จะถูกเปรียบเทียบกับ "0x8FF40BF" และ "0xD72040BF" ซึ่งเป็นรหัสปุ่มในรูปแบบเลขฐานสิบหก สองความหมายเท่านั้นเพราะฉันใช้รีโมตคอนโทรลสองตัวพร้อมรหัสที่ไม่ซ้ำกัน



digitalWrite(RELAY_PIN, !digitalRead(RELAY_PIN));

ขั้นตอนมาตรฐานสำหรับการเขียนพินแบบดิจิทัล ยกเว้น "!digitalRead(RELAY_PIN)" เข้าสู่ระบบ "!" หมายถึงการผกผันในกรณีของเราคือการผกผันของสถานะของเอาต์พุตดิจิทัล "RELAY_PIN"



Serial.print("0x");
Serial.println(results.value, HEX);//ส่งออกข้อความที่ได้รับไปยังเทอร์มินัล

บรรทัดเหล่านี้จะแสดงรหัสที่ได้รับทั้งหมดไปยังเทอร์มินัล ในโปรแกรมการทำงานนั้นไม่จำเป็น แต่จำเป็นต้องค้นหารหัสที่จำเป็นสำหรับปุ่มใดปุ่มหนึ่ง นั่นคือก่อนอื่นเราอัปโหลดภาพร่างไปยัง Arduino ไปที่เทอร์มินัลแล้วคลิกที่ปุ่มเราจะได้รับรหัสที่ต้องการ


นอกจากนี้ยังมีตัวอย่างต่างๆ มากมายในไลบรารี IRremote ที่อาจเป็นประโยชน์


ในเอกสารแนบของบทความ:


  • ร่างสำหรับ Arduino

  • PCB สำหรับ 4 เซ็นเซอร์

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

วิธีนี้ทำงานอย่างไร

กำลังเชื่อมต่อ ตัวรับสัญญาณอินฟราเรดเรากำกับ การควบคุมระยะไกลไปยังเครื่องรับ บันทึกสัญญาณแล้วส่งออกไปที่ อนุกรม- (เนื่องจากนี่เป็นส่วนแรกของบทความเราจึงไม่ถือว่าส่งสัญญาณ เราจะพูดถึงการส่งในส่วนที่สอง)

เราต้องการอะไร

  • อาร์ดูโน่(หรือแอนะล็อกฉันใช้ ทอสดูอิโน- ถูกกว่า 2 เท่า เข้ากันได้กับ Arduino ทั่วไปอย่างสมบูรณ์)
  • นำ ( นำ)
  • ตัวต้านทาน 220 โอห์ม
  • ตัวรับสัญญาณ IR จากซีรีย์

การเชื่อมต่อ

ตัวรับสัญญาณอินฟราเรด

นำ

อาร์ดูโน่ เขียงหั่นขนม อาร์ดูโน่
พินหมายเลข 11 ตัวต้านทาน 220 kOhm GND (ภาคพื้นดิน)

เทคโนโลยีไออาร์

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

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

กล้องวิดีโอหรือกล้องดิจิทัล "มองเห็น" แสงอินฟราเรด ดังที่คุณเห็นในวิดีโอด้านล่าง แม้แต่โทรศัพท์มือถือที่ถูกที่สุดก็มีกล้องในตัว เพียงชี้รีโมทคอนโทรลไปที่กล้องดังกล่าวแล้วกดปุ่มใดก็ได้แล้วคุณจะเห็นไฟ LED กะพริบ

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

ส่วนหนึ่ง ความถี่ของผู้ให้บริการ
30 กิโลเฮิรตซ์
33 กิโลเฮิรตซ์
36 กิโลเฮิรตซ์
36.7 กิโลเฮิรตซ์
38 กิโลเฮิรตซ์
40 กิโลเฮิรตซ์
56 กิโลเฮิรตซ์

IRremote.h

ดาวน์โหลดห้องสมุด IRระยะไกลคุณสามารถทำได้จากพื้นที่เก็บข้อมูลของฉันบน Github.com

หากต้องการติดตั้งไลบรารีนี้ ให้คัดลอกเนื้อหาของไฟล์เก็บถาวรไปที่: arduino-1.x/libraries/IRremote โดยที่ arduino-1.x เป็นโฟลเดอร์ที่ติดตั้ง Arduino IDE จากนั้นไฟล์ arduino-1.x/libraries/IRremote /IRremote.cpp ควรพร้อมใช้งานและ IRremote.h

ตัวอย่างที่ 1 - เราได้รับรหัสสำหรับปุ่มควบคุมระยะไกล

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

#รวม อินท์ RECEIVE_PIN = 2; IRrecv irrecv(RECEIVE_PIN); ผลลัพธ์ decode_results; การตั้งค่าเป็นโมฆะ() ( Serial.begin(9600); irrecv.enableIRIn(); // เริ่มตัวรับ ) void loop() ( if (irrecv.decode(&results)) ( Serial.print("0x"); Serial. println(results.value, HEX); ล่าช้า (50); irrecv.resume();// รับค่าถัดไป ) )

ฉันจะใช้โค้ดปุ่มเหล่านี้ในตัวอย่างต่อไปนี้ทั้งหมด:

ตัวอย่างที่ 2 - การกำหนดชื่อให้กับปุ่มควบคุมระยะไกล

มาส่งชื่อของปุ่มต่างๆ ไปที่พอร์ตอนุกรมกัน (ก่อนอื่นเราต้องจับรหัสของปุ่มเหล่านี้แล้วตั้งชื่อให้ ดูที่รหัส ฉันคิดว่าทุกอย่างจะชัดเจนที่นั่น)

#รวม อินท์ RECEIVE_PIN = 2; IRrecv irrecv(RECEIVE_PIN); ผลลัพธ์ decode_results; การตั้งค่าเป็นโมฆะ() ( Serial.begin(9600); irrecv.enableIRIn(); ) void loop() ( if (irrecv.decode(&results)) ( switch (results.value) ( ​​​​case 0x77E1A0CB: Serial.println( "ศูนย์"); กรณี 0x77E160CB: Serial.println("ขึ้น"); 0x77E130CB: Serial.println("ลง"); ขาด;

ตัวอย่างที่ 3 - เปิด LED โดยใช้ปุ่มควบคุมระยะไกล

ตอนนี้เรามาสอนของเรา อาร์ดูโน่เปิดไฟ LED บน PIN 11 ผ่านปุ่มบนรีโมทคอนโทรล

#รวม ไฟ LED ภายใน = 11; สถานะ int = 0; // 0 = LED ดับลงในขณะที่ 1 = LED เปิด int RECEIVE_PIN = 2; IRrecv irrecv(RECEIVE_PIN); ผลลัพธ์ decode_results; การตั้งค่าเป็นโมฆะ () ( Serial.begin (9600); irrecv.enableIRIn (); pinMode (LED, OUTPUT); ) void loop () ( ถ้า ((irrecv.decode (&ผลลัพธ์)) && (results.value==0x77E1A0CB) ) ( ถ้า (สถานะ == 0) ( state = 1; digitalWrite(LED, HIGH); Serial.println("Center - HIGH"); ) else ( state = 0; digitalWrite(LED, LOW); Serial.println( "ศูนย์ - ต่ำ"); ล่าช้า (50);

ตัวอย่างที่ 4 - PWM พร้อมรีโมทคอนโทรล

ทีนี้มาควบคุมความสว่างของ LED ของเรากันดีกว่า (เนื่องจากมันเชื่อมต่อกับพอร์ต 11 ซึ่งมี PWM ไม่น่าจะมีปัญหา) ปุ่มขึ้นและลงบนรีโมทคอนโทรลจะใช้ควบคุมความสว่าง

#รวม อินท์ RECEIVE_PIN = 2; ความสว่าง int = 0; ไฟ LED ภายใน = 11; IRrecv irrecv(RECEIVE_PIN); ผลลัพธ์ decode_results; การตั้งค่าเป็นโมฆะ() ( Serial.begin(9600); irrecv.enableIRIn(); ) void loop() ( if (irrecv.decode(&results)) ( switch (results.value) ( ​​​​case 0x77E150CB: if(brightness)< 255) { brightness+=15; Serial.println(brightness); } break; case 0x77E130CB: if(brightness >0) ( ความสว่าง-=15; Serial.println(ความสว่าง); ) แตก;

) analogWrite(LED, ความสว่าง);

irrecv.เรซูเม่();

-

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

หลักการทำงานของตัวรับสัญญาณ IR กำลังประมวลผลสัญญาณจากรีโมทคอนโทรล

ตัวรับสัญญาณ IR บน Arduino สามารถรับและประมวลผลสัญญาณอินฟราเรดในรูปแบบของพัลส์ตามระยะเวลาและความถี่ที่กำหนด ใช้ในการผลิตเซ็นเซอร์สิ่งกีดขวางและเรนจ์ไฟนเนอร์สำหรับ Arduino โดยทั่วไป ตัวรับสัญญาณ IR มีสามขาและประกอบด้วยองค์ประกอบต่อไปนี้: โฟโตไดโอด PIN, แอมพลิฟายเออร์, ตัวกรองแบนด์พาส, ตัวตรวจจับแอมพลิจูด, ตัวกรองแบบรวม และทรานซิสเตอร์เอาต์พุต

ภายใต้อิทธิพลของรังสีอินฟราเรดในโฟโตไดโอดซึ่งมีระหว่าง พีและ nภูมิภาคสร้างขอบเขตเพิ่มเติมของเซมิคอนดักเตอร์ ( ฉัน-ภูมิภาค) กระแสเริ่มไหล สัญญาณจะถูกส่งไปยังเครื่องขยายเสียงและจากนั้นไปที่ตัวกรองแบนด์พาสซึ่งปรับเป็นความถี่คงที่: 30; 33; 36; 38; 40 และ 56 กิโลเฮิรตซ์ และปกป้องเครื่องรับจากการรบกวน การรบกวนอาจเกิดจากเครื่องใช้ในครัวเรือนใดๆ

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

วิธีเชื่อมต่อตัวรับสัญญาณ IR เข้ากับ Arduino

ตัวเรือนของเครื่องรับอินฟราเรดมีตัวกรองแสงเพื่อปกป้องอุปกรณ์จากสนามแม่เหล็กไฟฟ้าภายนอก ซึ่งมีรูปร่างพิเศษเพื่อเน้นการแผ่รังสีที่ได้รับไปที่โฟโตไดโอด ในการเชื่อมต่อตัวรับสัญญาณ IR กับ Arduino UNO จะใช้สามขาซึ่งเชื่อมต่อกับ - GND, 5V และ A0 เราขอแนะนำให้ใช้ไฟ 3.3 โวลต์ในการเริ่มต้น เพื่อไม่ให้เซนเซอร์ IR ไหม้ในระหว่างการตั้งค่า

สำหรับบทเรียนนี้ เราจะต้องมีรายละเอียดดังต่อไปนี้:

  • บอร์ด Arduino Uno / Arduino Nano / Arduino Mega;
  • เขียงหั่นขนม;
  • ตัวรับสัญญาณอินฟราเรด;
  • การควบคุมระยะไกล;
  • ตัวต้านทาน LED 1 ตัวและ 220 โอห์ม;
  • สายชาย-ชายและชาย-หญิง


แผนภาพการเชื่อมต่อของตัวรับสัญญาณ IR กับพอร์ตอะนาล็อก Arduino

เชื่อมต่อตัวรับสัญญาณ IR ตามแผนภาพที่แสดงด้านบนและเชื่อมต่อ LED เข้ากับพิน 12 และ 13 ก่อนที่จะดาวน์โหลดโปรแกรม คุณจะต้องติดตั้งไลบรารี IRremote.h หากยังไม่ได้ติดตั้ง ไลบรารีนี้ไม่ได้อยู่ในไลบรารีมาตรฐานของสภาพแวดล้อมการเขียนโปรแกรม Arduino IDE คุณสามารถดาวน์โหลดไลบรารี IRremote.h และภาพร่างที่เสร็จแล้วในไฟล์เก็บถาวรเดียวจาก Google Drive โดยใช้ลิงก์

ร่างสำหรับตัวรับสัญญาณ Arduino IR:

#รวม // เชื่อมต่อไลบรารีสำหรับตัวรับสัญญาณ IR IRrecv irrecv(A0); // ระบุพินที่เชื่อมต่อตัวรับสัญญาณ IRผลลัพธ์ decode_results; การตั้งค่าเป็นโมฆะ () // การตั้งค่าขั้นตอน ( irrecv.enableIRIn (); // เริ่มรับสัญญาณอินฟราเรด pinMode(13, เอาท์พุต); // pin 13 จะเป็นเอาต์พุตพินโหมด(12, เอาท์พุต); // pin 12 จะเป็นเอาต์พุต pinMode(A0, อินพุต); // pin A0 จะเป็นอินพุต (อังกฤษ “intput”)อนุกรมเริ่มต้น(9600); // เชื่อมต่อมอนิเตอร์พอร์ต) ถือเป็นโมฆะ () // วนขั้นตอน ( ถ้า (irrecv.decode (&ผลลัพธ์)) // หากข้อมูลมาถึงแล้ว ให้ดำเนินการคำสั่ง( Serial.println(results.value); //ส่งข้อมูลที่ได้รับไปที่พอร์ต // เปิดและปิดไฟ LED ขึ้นอยู่กับสัญญาณที่ได้รับ if (results.value == 16754775) ( digitalWrite (13, HIGH); ) if (results.value == 16769055) ( digitalWrite (13, LOW); ) if (results.value == 16718055) ( digitalWrite (12, สูง ) ถ้า (results.value == 16724175) ( digitalWrite (12, LOW ); ) irrecv.resume (); // รับสัญญาณถัดไปบนตัวรับสัญญาณ IR } }

คำอธิบายสำหรับรหัส:

  1. ไลบรารี IRremote.h มีชุดคำสั่งและช่วยให้คุณทำให้ร่างภาพง่ายขึ้น
  2. คำสั่ง decode_results กำหนดผลลัพธ์ชื่อตัวแปรให้กับสัญญาณที่ได้รับจากรีโมทคอนโทรล

เซ็นเซอร์ IR สามารถใช้ได้กับอุปกรณ์หลายชนิดบนไมโครคอนโทรลเลอร์ Arduino รวมถึงการควบคุมระยะไกลของเซอร์โวไดรฟ์บน Arduino จากตัวรับสัญญาณ IR เมื่อตั้งค่าคุณควรเปิดมอนิเตอร์พอร์ต Arduino IDE และค้นหาสัญญาณที่ส่งโดยปุ่มนี้หรือปุ่มนั้นบนรีโมทคอนโทรล รหัสผลลัพธ์ควรใช้ในร่างหลังจากเครื่องหมายเท่ากับสองเท่าในเงื่อนไข if()

โพสต์ในหัวข้อนี้:


โมดูลตัวรับสัญญาณ IR ร่วมกับรีโมทคอนโทรล IR จะทำให้คุณสามารถใช้รีโมทคอนโทรลของบอร์ด Arduino ได้อย่างง่ายดาย

ไม่มีอะไรมากไปกว่าตัวรับสัญญาณ IR VS1838B ที่ติดตั้งสายรัดที่ผู้ผลิตแนะนำไว้บนบอร์ด

หากต้องการทำงานกับโมดูลนี้นอกกรอบ คุณต้องมีรีโมทคอนโทรลที่มีความถี่ 38 kHz

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

ลักษณะทางเทคนิคหลัก:

แรงดันไฟฟ้า: 2.7 - 5.5V

ความถี่การมอดูเลต: 38kHz

ช่วงอุณหภูมิ: - 20 ... + 80°C

อินเทอร์เฟซ: ดิจิตอล

การเชื่อมต่อกับ Arduino

โมดูลนี้มาพร้อมกับขั้วต่อ 2.54 มม. สามพิน

: เชื่อมต่อกับขา GND

: เชื่อมต่อกับเอาต์พุต +5V

: เชื่อมต่อกับขาดิจิตอล (ตัวอย่าง D2)

ตัวอย่างการทำงานในสภาพแวดล้อม Arduino

ในการทำงานกับโมดูลนี้ คุณต้องติดตั้งไลบรารี IRRemote

ดาวน์โหลด แกะและวางลงในโฟลเดอร์ไลบรารีในโฟลเดอร์ Arduino หาก Arduino IDE เปิดอยู่ในขณะที่เพิ่มไลบรารี ให้รีบูตสภาพแวดล้อม

การอ่านปุ่มควบคุมระยะไกล

หากต้องการอ่านค่าที่อ่านได้จากรีโมทคอนโทรล ให้กรอกแบบร่างด้านล่าง มันจะส่งออกการเข้ารหัสของปุ่มกดไปยังพอร์ต

ดังตัวอย่างเราจะใช้รีโมตคอนโทรลดังภาพเพราะ... รีโมทคอนโทรลชนิดนี้รวมอยู่ในชุดด้วย

คุณสามารถอ่านเกี่ยวกับความแตกต่างในตรรกะการทำงานของรีโมทคอนโทรลต่างๆ ได้ในบทความต้นฉบับจากสมาชิกของชุมชนของเราภายใต้ชื่อเล่น

รหัสตัวอย่าง:

#รวม int RECV_PIN = 2; IRrecv irrecv(RECV_PIN); //สร้างวัตถุเพื่อรับสัญญาณจากพอร์ตเฉพาะผลลัพธ์ decode_results; //ตัวแปรเก็บผลลัพธ์เป็นโมฆะ การตั้งค่า () { อนุกรม //เริ่มรับ) เป็นโมฆะ วนซ้ำ() ( ถ้า (irrecv.decode(&ผลลัพธ์)) //เมื่อได้รับสัญญาณ... { อนุกรม.println(results.value); //...ส่งออกค่าของมันไปยังพอร์ตอนุกรม irrecv.เรซูเม่();

-

คุณควรเห็นสิ่งต่อไปนี้ในมอนิเตอร์พอร์ต:

กดปุ่มแต่ละปุ่มค้างไว้เกือบวินาทีก็จะได้รหัสประมาณ 10 รหัส อันแรกคือรหัสปุ่ม และหลังจากนั้นรหัสมาตรฐานก็เริ่มปรากฏขึ้นซึ่งรายงานว่าปุ่มค้าง

การควบคุมบอร์ด Arduino ด้วยรีโมทคอนโทรล

รหัสตัวอย่าง:

มาทำให้ไฟ LED บนบอร์ด Arduino (D13) สว่างขึ้นเมื่อปุ่มแรกถูกเข้ารหัส และปิดเมื่อปุ่มที่สองถูกเข้ารหัส// ทดสอบบน Arduino IDE 1.0.3 #รวม การตั้งค่า () { อนุกรม int RECV_PIN = 2; ไฟ LED ภายใน = 13; IRrecv irrecv(RECV_PIN); ผลลัพธ์ decode_results; เป็นโมฆะ .เริ่มต้น(9600); irrecv.enableIRIn(); วนซ้ำ// เริ่มต้นเครื่องรับ อนุกรม pinMode(LED, เอาท์พุต); ) เป็นโมฆะ () ( ถ้า (irrecv.decode(&ผลลัพธ์)) (.println(results.value); ถ้า (results.value == 16769565)// เมื่อได้รับการเข้ารหัส 1 ( digitalWrite (LED, สูง);// เปิดไฟ LED ) ถ้า (results.value == 16761405)// เมื่อได้รับการเข้ารหัส 2 ( digitalWrite (LED, ต่ำ); } }
มุมมอง