Використання Raspberry Pi для контролю мого змінного струму за допомогою інфрачервоного зв'язку


19

Коли я повертаюся звідкись додому, я хочу, щоб я міг переключити змінного струму за кілька хвилин до того, як я приїду до своєї квартири, ймовірно, використовуючи свій телефон, щоб підключитися до мого Raspberry Pi на моєму столі, який буде, в Поворот, керуйте змінного струму. Змінного струму керується за допомогою інфрачервоного пульта дистанційного керування. Я хочу, щоб Raspberry Pi видав необхідний сигнал.

Що я повинен купити для Raspberry Pi, щоб він міг надіслати необхідний сигнал? Також мені знадобиться щось, що дозволить мені відібрати сигнал, що надсилається оригінальним пультом дистанційного керування, щоб я міг сказати Raspberry Pi, який сигнал надсилати. Як це зробити?

Зверніть увагу, що єдиною мовою програмування, яку я знаю, як користуватися, є Python. Якщо щось вимагає програмування на C або щось таке, для мене це не дуже вдале рішення.

Відповіді:


12

Як згадувалося вище, LIRC - це чудовий програмний пакет для отримання Вашого RaspberryPi надсилання та отримання ІЧ-сигналів. Станом на грудень 2012 року, остання програма Raspbian тепер включає драйвер LIRC ar0n.

Я написав керівництво, щоб встановити та налаштувати LIRC на вашому RaspberryPi (від апаратного забезпечення), оскільки мені довелося вирішити цю саму проблему самостійно. Після того, як ви встановите LIRC і працюєте над RaspberryPi, ви можете використовувати деякі додатки, що входять до нього, для надсилання та отримання ІЧ-команд з Python / Ruby / на вашу обрану мову.

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


2
Сьогодні я написав нову публікацію в блозі, де описував схематичні (та куплені нами частини) для створення ІЧ-приймача RaspberryPi. alexba.in/blog/2013/03/09/raspberrypi-ir-schematic-for-lirc
Алекс Бейн

5

Хтось уже написав драйвер ядра LIRC для Raspberry Pi, його можна знайти тут: драйвер LIRC Raspberry Pi . Також потрібна апаратна схема та схеми підключення можна знайти на цій сторінці.

Я сам не експериментував з LIRC, але є багато додатків, які використовують LIRC, я думаю, зараз вони працюють на Raspberry Pi.

Якщо ви хочете / потребуєте, я можу заглибитись у цю тему трохи глибше і зібрати додаткову інформацію.

Для частини Python є модуль Python для взаємодії з LIRC, який називається pyLirc, і більш новою підтримуваною версією, що називається pyLirc2


Дякую за відповідь, але ця сторінка втратила мене під час "Перекомпіляції ядра" :) Чи не є щось, що більше плагін-n-play?
Рам Рачум

1
На даний момент, поки цей драйвер не потрапляє в дистрибутив, я боюся, що це єдиний варіант для роботи LIRC. Але є модуль GPIO для python, будучи програмістом Python, ви можете створити власний код Python, щоб робити саме те, що вам потрібно, використовуючи лише обладнання, показане на пов'язаній сторінці. Вам потрібно прочитати, яку інфрачервону послідовність передає змінник, і повторити це. Це має бути можливо за допомогою цього модуля Python GPIO.
іку

1
мій коментар "... Я боюся, що це єдиний варіант для роботи LIRC ..." діє лише в контексті GPIO. Пристрої послідовного / USB тощо повинні працювати без проблем.
ikku

3

Я знайшов LIRC порівняно простим способом надсилання ІК-повідомлень, але дуже хотів мати можливість контролювати LIRC з Java. Мені подобається програмування на Java, і я не знайшов прямого підручника для python, щоб переконати мене працювати з ним замість Java. Після декількох годин спроб надіслати ІЧ-коди з pi за допомогою Java, я знайшов наступне рішення порівняно простим: Створіть скрипт bash, який містить 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, це означає, що сценарій bash не знайшов java.

Ще кілька приміток:

  • Я спробував jlirc та lircj - java обгортки для LIRC, але не зміг їх налаштувати неправильно -> не працює.
  • Єдиним недоліком цього рішення є те, що ви не можете слухати ІЧ-повідомлення. Якщо у когось є ідеї щодо використання подібного методу для прослуховування ІЧ-повідомлень, я хотів би знати.

Корисні ресурси:

  • Дотримуйтесь інструкцій Алекса Бейна щодо налаштування LIRC для пі. Вони справді хороші! Більше інформації можна знайти irsend тут . Це робить перелік ваших пульт набагато зрозумілішим.
  • Тут ви можете знайти більше інформації для запуску bash-скриптів від Java.

Сподіваюся, це допоможе, Томе


2

Я завжди вважав LIRC більш неприємним проектом для вирішення, ніж здається необхідним, подібно до lm-датчиків.

Тож я би поглянув на це, можливо, дещо більш крутим способом: якщо ви зможете отримати мікроконтролер (або навіть фактичний пульт) для надсилання правильного пульсу поїзда при спрацьовуванні, можливо, ви можете використати штифт gpio (або повідомлення про Uart) на RPI, щоб "натиснути кнопку", більш-менш, і запустити передачу.

Це відносно підключення та відтворення, якщо ви знайдете правильне рішення передавача.

Нехай RPi турбується про те, що сервер, а апаратний (прошивковий) модуль турбуються про ІЧ-дію. Можливо, ви можете використовувати подібний трюк і для контролю стану процесу.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.