ใช้ Raspberry Pi เพื่อควบคุม AC ของฉันผ่านทางอินฟราเรด


19

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

ฉันต้องซื้ออะไรบ้างเพื่อ Raspberry Pi เพื่อให้สามารถส่งสัญญาณที่ต้องการได้? นอกจากนี้ฉันต้องการบางสิ่งที่จะทำให้ฉันสามารถรับสัญญาณที่ส่งมาจากรีโมทควบคุมแบบดั้งเดิมดังนั้นฉันจึงสามารถบอก Raspberry Pi ว่าจะส่งสัญญาณใด ฉันจะทำอย่างไร

โปรดทราบว่าภาษาการเขียนโปรแกรมเดียวที่ฉันรู้วิธีใช้คือ Python หากบางสิ่งจำเป็นต้องมีการเขียนโปรแกรมใน C หรือบางสิ่งบางอย่างมันไม่ได้เป็นทางออกที่ดีสำหรับฉัน

คำตอบ:


12

ดังที่ได้กล่าวมาแล้ว LIRC เป็นชุดซอฟต์แวร์ที่ยอดเยี่ยมในการรับและส่งสัญญาณ IR ของ RaspberryPi เมื่อเดือนธันวาคม 2012 Raspbian OS ล่าสุดได้รวมไดรเวอร์ LIRC ของ ar0n แล้ว

ฉันเขียนคำแนะนำเพื่อติดตั้ง LIRC และกำหนดค่าใน RaspberryPi ของคุณ (จากฮาร์ดแวร์ขึ้นไป) เนื่องจากฉันต้องแก้ไขปัญหาเดียวกันนี้ด้วยตัวเอง เมื่อคุณติดตั้ง LIRC และทำงานกับ RaspberryPi แล้วคุณสามารถใช้แอพพลิเคชั่นบางตัวเพื่อส่งและรับคำสั่ง IR จาก Python / Ruby / ภาษาที่คุณเลือก

http://alexba.in/blog/2013/01/06/setting-up-lirc-on-the-raspberrypi/


2
วันนี้ฉันเขียนโพสต์บล็อกใหม่ที่อธิบายแผนผัง (และชิ้นส่วนที่ฉันซื้อ) เพื่อสร้างตัวรับส่งสัญญาณ IR ของ RaspberryPi alexba.in/blog/2013/03/09/raspberrypi-ir-schematic-for-lirc
Alex Bain

5

มีใครบางคนที่มีอยู่แล้วได้เขียนเคอร์เนลไดรเวอร์ LIRC สำหรับราสเบอร์รี่ Pi คือมันสามารถพบได้ที่นี่: ไดรเวอร์ LIRC ราสเบอร์รี่ Pi นอกจากนี้ยังสามารถพบฮาร์ดแวร์และแผนการเชื่อมต่อที่ต้องการได้ในหน้านี้

ฉันไม่ได้ทดลองกับ LIRC ด้วยตัวเอง แต่มีแอปพลิเคชั่นมากมายที่ใช้ LIRC ฉันเดาว่าตอนนี้พวกเขาทำงานกับ Raspberry Pi แล้ว

หากคุณต้องการ / ต้องการฉันสามารถดำน้ำในเรื่องนี้ได้ลึกขึ้นอีกนิดและหาข้อมูลเพิ่มเติม

สำหรับส่วนของ Python นั้นจะมีโมดูล Python สำหรับโต้ตอบกับ LIRC เรียกว่าpyLircและรุ่นที่ได้รับการดูแลรักษาใหม่ที่เรียกว่าpyLirc2


ขอบคุณสำหรับคำตอบ แต่หน้านั้นทำให้ฉันที่ "Recompile the kernel" :) มีบางอย่างที่ไม่ได้เพิ่มเข้าไปใน plug-n-play ใช่ไหม?
Ram Rachum

1
ในขณะนี้จนกระทั่งคนขับรถคันนี้พบทางเข้าสู่ดิสทริบิวชันฉันกลัวว่ามันเป็นตัวเลือกเดียวสำหรับ LIRC ที่จะทำงาน แต่มีโมดูล GPIO สำหรับ python ซึ่งเป็นโปรแกรมเมอร์ Python คุณสามารถสร้างรหัส Python ของคุณเองเพื่อทำสิ่งที่คุณต้องการโดยใช้เฉพาะฮาร์ดแวร์ที่แสดงในหน้าเชื่อมโยง คุณต้องอ่านลำดับ IR ที่ AC remote ส่งและเล่นซ้ำ ที่ควรจะเป็นไปได้โดยใช้โมดูล PIO GPIO นี้
ikku

1
ความคิดเห็นของฉัน '... ฉันกลัวว่าตัวเลือกเดียวสำหรับ LIRC ในการทำงาน ... ' จะใช้ได้ภายในบริบท GPIO เท่านั้น อุปกรณ์ซีเรียล / USB ฯลฯ ควรทำงานได้โดยไม่มีปัญหา
ikku

3

ฉันพบว่า LIRC เป็นวิธีที่ค่อนข้างง่ายในการส่งข้อความ IR แต่ต้องการที่จะควบคุม LIRC จากจาวาจริงๆ ฉันชอบการเขียนโปรแกรมใน java และไม่พบการสอนที่ตรงไปตรงมาสำหรับ python ที่จะโน้มน้าวให้ฉันทำงานกับมันแทน java หลังจากพยายามส่งรหัส IR หลายชั่วโมงจาก pi โดยใช้ java ฉันพบวิธีแก้ไขปัญหาถัดไปนั้นค่อนข้างง่าย: สร้าง bash script ที่มีirsendข้อความและบอกให้ java เรียกใช้

ตัวอย่าง:

toggleLight.sh

#!/bin/bash
irsend SEND_ONCE HyundaiFan lightOnOff

RunBash.java

public class RunBash {
    public static final void main (String args[]) {
        String cmd = "../toggleLight.sh";
        try {
            Runtime runtime = Runtime.getRuntime();
            Process process = runtime.exec(new String[] {"/bin/bash", "-c", cmd});
            int exitValue = process.waitFor();
            System.out.println("exit value: " + exitValue);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

exit value: 0คุณคิดว่าจะได้รับ หากค่าการออกของคุณคือ 127 นั่นหมายความว่าไม่พบจาวาสคริปต์ทุบตี

หมายเหตุเพิ่มเติมบางส่วน:

  • ฉันได้ลอง jlirc และ lircj - wrappers java สำหรับ LIRC แต่ไม่สามารถกำหนดค่าให้ถูกต้อง -> ไม่ทำงาน
  • ข้อเสียเพียงข้อเดียวของโซลูชันนี้คือคุณไม่สามารถฟังข้อความ IR ได้ หากใครบางคนมีความคิดเกี่ยวกับการใช้วิธีการที่คล้ายกันในการฟังข้อความ IR ที่ฉันอยากรู้

ทรัพยากรที่มีประโยชน์:

  • ทำตามคำแนะนำของ Alex Bain สำหรับการตั้งค่า LIRC สำหรับ pi พวกเขาดีจริงๆ! หนึ่งสามารถหาข้อมูลเพิ่มเติมเกี่ยวกับที่นี่irsend มันทำให้รายการรีโมทของคุณชัดเจนขึ้น
  • ที่นี่คุณสามารถค้นหาข้อมูลเพิ่มเติมสำหรับการเรียกใช้สคริปต์ทุบตีจาก java

หวังว่าจะช่วยได้ทอม


2

ฉันพบ LIRC โครงการที่ไม่พึงประสงค์มากกว่าที่จะจัดการกับเกินความจำเป็นเหมือน lm-sensors

ดังนั้นฉันจะดูที่นี่อาจเป็นทางอ้อมเล็กน้อย: ถ้าคุณสามารถรับไมโครคอนโทรลเลอร์ (หรือแม้แต่รีโมทจริง) เพื่อส่งพัลส์รถไฟที่ถูกต้องเมื่อถูกกระตุ้นคุณอาจใช้ gpio pin (หรือข้อความ uart) บน RPi เพื่อ "กดปุ่ม" มากหรือน้อยและเรียกการส่ง

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

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.