Raspberry pi управление кондиционером

Обновлено: 26.04.2024

Как посредством ШИМ-контроллера регулировать обороты кулера на Rapsberry Pi и ему подобных SoC

Зачастую центральные процессоры мини-пк семейства Rapsberry охлаждаются маленьким, а потому и шумным пятивольтовым вентилятором. Многие решают эту проблему, подключая его к 3.3 вольтовому выводу, однако данное решение имеет недостаток, связанный с тем что типовые пятивольтовые вентиляторы потребляют 200 мА, вследствие чего вызывают нагрузку на не рассчитанный на такую мощность регулятор 3.3В

В этой статье мы разберем как снизить уровень шума при помощи корректировки оборотов кулера регулировкой значений допустимых температур процессора.
Отличием данной работы будет в том, что мы научимся не только включать и отключать кулер, но и регулировать его обороты при помощи шим-контроллера, как и на стандартном компьютере.

1. Шим - что это и для чего нужен?
2. Регулировка оборотов при помощи биполярного NPN-транзистора
2.1. Схема подключения кулера
3. Регулировка оборотов при помощи МОП транзистора
3.1. Схема подключения кулера
3.2. N-канальные мосфеты с логическим управлением
4. Как снять показания температуры процессора
5. Активация кулера при указанной температуре
5.1. Компиляция со сборкой и запуском программы
6. ШИМ контроль - вариант I
6.1. Компиляция со сборкой и запуском программы
7. ШИМ контроль - вариант II
7.1. Компиляция со сборкой и запуском программы
8. Помещение программы в автозагрузку системы
9. Проверка
10. Удаление программы из автозагрузки системы

1. Шим - что это и для чего нужен?

Аббревиатура расшифровывается как широтно-импульсная модуляция (или PWM с английского - pulse-width modulation) - это процесс регулировки мощности способом пульсации включения и отключения прибора. ШИМ встречается в двоичном, троичном, а также аналоговом и цифровом видах. Главное предназначение ШИМ - увеличение КПД при построении источников питания электроники, в том числе и регулировка яркости подсветок различных экранов.

2. Регулировка оборотов при помощи биполярного NPN-транзистора

Первым делом ищем и устанавливаем подходящий биполярный NPN-транзистор. Кулер потребляет 200мА, поэтому нам нужен транзистор с коллекторным током больше 200мА с запасом в несколько крат. В зарубежных даташитах этот параметр обозначается как Ic, в отечественных Iк. Совместимы транзисторы: 2N2222A, 2N5550, 2N5551 и так далее. Сперва выясняем назначение выводов транзистора . Необходимо определить дислокацию его эмиттера, коллектора и базы. Самым простым способом будет проверка этого всего по справочнику или даташиту.

2.1. Схема подключения кулера

Транзистор подключаем по следующей схеме:


R1 - Peзистop занимающий ключевую роль, его назначение в ограничении тока чeрeз пepexoд бaзa-эмиттep. В случае его отсутствия ток не будет ограничен и испортит упpaвляющyю микpocxeму, поскольку она соединяет транзистop с линией питaния).

Помимо этого, нельзя забывать, что нагрузка индуктивна и необходим зaщитный диoд (D1). Проблема в том, что энepгия, накопленная мaгнитным пoлем, не позволит моментально снизить ток до нyля при размыкании ключа. Из этого следует, что на кoнтaктax нaгpyзки появится напряжеeие обpaтной пoлярности, которое с легкостью может помешать работе контрoллера или даже испортить его.


3. Регулировка оборотов при помощи мосфета

Помимо биполярного, также есть возможность использовать и полевой транзистор, или как его иначе называют - МОСФЕТ, транзистор с изoлированным затвoром (также МОП или МДП). Их удобство заключается в том, что управление реализовано лишь напряжением - в случае, когда напряжение на затворе выше порогового значения, транзистор открывается. Пока транзистор открыт или закрыт, управляющий ток через него. У биполярных же транзисторов ток течёт всё время, пока открыт транзистор и в этом существенный недостаток перед полевыми транзисторами.

Далее мы используем лишь n-канальные мосфеты в связи с тем, что они дешевле, выше по характеристикам и для регуляции N-канального мосфета нужно подать положительное напряжение на затвор относительно истока.

3.1. Схема подключения кулера



3.2. N-канальные мосфеты с логическим управлением

Недостаток мосфетов — пороговые напряжения затворов, превышающие 3.3 вольта. Однако, имеются вариации мосфетов и с логическим уровнем управления, такие как: IRL520NPBF, IRL2505, NTZD3155C FDN337N, 2N7000, ZVN4306A, и другие.

4. Как снять показания температуры процессора

Есть несколько вариантов получить мгновенную температуру процессора.
В случае, если вы пользуетесь Armbian, используйте команду:

данная команда выдает частоту, длительность сеанса работы системы и температуру процессора с периодичностью в 6 секунд.
Также существует вторая команда, возвращающая температуру процессора:

Два термодатчика, находящиеся в процессоре (SoC) предоставляют значения, благодаря которым можно найти среднюю температуру.
Чтобы узнать температуру процессора Raspberry Pi, воспользуйтесь консолью для ввода следующей команды:

Обратите внимание, что у Raspberry Pi температура представлена в миллиградусах и, чтобы получить целые градусы, необходимо разделить полученное значение на тысячу.

5. Активация кулера при указанной температуре

Ниже приведены способы, использующие WiringPi и требующие установки библиотек, которые можно установить по инструкциям, приведенным по ссылкам здесь: WiringPi, WiringOP, BPI-WiringPi.

Самым доступным способом управления кулером будет его включение и отключение по достижении пороговых значений температур, которые вы можете задать. Этот способ подойдет для тех, кому не помешает гул вентилятора

using namespace std;

static int getTemperature() static fstream myfile;
int temperature = 0;
myfile.open("/sys/devices/virtual/thermal/thermal_zone0/temp", ios_base::in);
myfile >> temperature;
myfile.close();
return temperature;
>

int main() int temperature;
int pinState = 0;
try if (wiringPiSetup() == 0) pinMode(PIN, OUTPUT);

while (1) temperature = getTemperature();

if (temperature >= TEMPERATURE_MIN && pinState == 0) digitalWrite(PIN, HIGH);
pinState = 1;
> else if (temperature

Данный скрипт заработает так — при достижении порога температуры в 54 градуса активируется кулер, и остановится только когда температура упадет более чем на 10 градусов от верхней границы (44 градуса)

Данные о температуре получены при помощи функции static int getTemperature(). Не забываем, что у Raspberry Pi температура исчисляется в миллиградусах, и для получения целых значений необходимо разделить искомое число на тысячу, а значит нужно внести пару изменений в код,
вместо:

static int getTemperature() <
static fstream myfile;
int temperature = 0;
myfile.open("/sys/devices/virtual/thermal/thermal_zone0/temp", ios_base::in);
myfile >> temperature;
myfile.close();
return temperature;
>

static int getTemperature() <
static fstream myfile;
int temperature = 0;
myfile.open("/sys/devices/virtual/thermal/thermal_zone0/temp", ios_base::in);
myfile >> temperature;
myfile.close();
return temperature / 1000;
>

5.1. Компиляция со сборкой и запуском программы

Создаём файл FanPiOnOff.cpp и вставляем в него написанный выше код:

Компилируем и собираем программу:

на случай, если необходимо запускать программу в фоне:

6. ШИМ контроль - вариант I

Логика программы заключается во включении вентилятора (с определенным коэффициентом заполнения) при достижении заданных температур и отключении при падении ниже их.

45 °C -> 35 %
50 °C -> 50 %
60 °C -> 75 %
75 °C -> 100 %

using namespace std;

static int getTemperature() static fstream myfile;
int temperature = 0;
myfile.open("/sys/devices/virtual/thermal/thermal_zone0/temp", ios_base::in);
myfile >> temperature;
myfile.close();
return temperature;
>

int main() int temperature;
bool pwmStopped = true;

try if (wiringPiSetup() == 0) while (1) temperature = getTemperature();

if (temperature > TEMPERATURE_4) if (pwmStopped) softPwmCreate(PIN, ((PWM_VALUE4 * RANGE) / 100), RANGE);
pwmStopped = false;
> else softPwmWrite(PIN, ((PWM_VALUE4 * RANGE) / 100));
>
> else if (temperature > TEMPERATURE_3) if (pwmStopped) softPwmCreate(PIN, ((PWM_VALUE3 * RANGE) / 100), RANGE);
pwmStopped = false;
> else softPwmWrite(PIN, ((PWM_VALUE3 * RANGE) / 100));
>
> else if (temperature > TEMPERATURE_2) if (pwmStopped) softPwmCreate(PIN, ((PWM_VALUE2 * RANGE) / 100), RANGE);
pwmStopped = false;
> else softPwmWrite(PIN, ((PWM_VALUE2 * RANGE) / 100));
>
> else if (temperature > TEMPERATURE_1) if (pwmStopped) softPwmCreate(PIN, ((PWM_VALUE1 * RANGE) / 100), RANGE);
pwmStopped = false;
> else softPwmWrite(PIN, ((PWM_VALUE1 * RANGE) / 100));
>
> else softPwmStop(PIN);
pwmStopped = true;
>

usleep(1000 * 1000);
>
>
> catch (exception& e) cerr

6.1. Компиляция со сборкой и запуском программы

Создаём файл FanPiPWM.cpp и вставляем в него написанный выше код:

Компилируем и собираем программу:

на случай, если необходимо запускать программу в фоне:

7. ШИМ управление: Пример 2

К тому же, есть возможность изменять коэффициент заполнения плавно. В этом случае для срабатывания вентилятора и коэффициента заполнения привязываем минимальные параметры, (допустим, 45 градусов и 35% соответственно), а к максимальной температуре (допустим, 70 градусов) привяжем коэффициент заполнения в 100%. Рассчитать коэффициент заполнения помогут функции static int map(int x, int inMin, int inMax, int outMin, int outMax);.

using namespace std;

static int getTemperature() static fstream myfile;
int temperature = 0;
myfile.open("/sys/devices/virtual/thermal/thermal_zone0/temp", ios_base::in);
myfile >> temperature;
myfile.close();
return temperature;
>

static int map(int x, int inMin, int inMax, int outMin, int outMax) if (x inMax) return outMax;
>
return (x - inMin) * (outMax - outMin) / (inMax - inMin) + outMin;
>

int main() int temperature;
int pwmValue;
bool pwmStopped = true;

try if (wiringPiSetup() == 0) while (1) temperature = getTemperature();
pwmValue = map(temperature, TEMPERATURE_MIN, TEMPERATURE_MAX, RANGE_MIN, RANGE_MAX);

usleep(1000 * 1000);
>
>
> catch (exception& e) cerr

7.1. Компиляция со сборкой и запуском программы

Создаём файл FanPiPwmLinear.cpp и вставляем в него написанный выше код:

Компилируем и собираем программу:

на случай, если необходимо запускать программу в фоне:

8. Помещение программы в автозагрузку системы

Осталось лишь автоматизировать запуск созданной нами программы, отвечающей за регулировку оборотов кулера, при старте системы.
Для этого нужно в конец файла /etc/rc.local:

Поместить команду старта скрипта перед строкой exit 0:

Теперь после перезагрузки системы программа запускается автоматически каждый раз и вентилятор заработает лишь при выполнении указанных условий.
Чтобы узнать, запущена ли программа после перезагрузки системы, нужно проверить присутствует ли процесс в терминале:

9. Проверка

Для того, чтобы проверить функциональность программы, необходимо нагрузить процессор, чтобы его температура поднялась до нужной отметки и убедиться в реакции кулера на это событие. Разогреть процессор помогут приложения вроде sysbench или stress. Их можно установить с aptitude:

Запуск приложения с использованием четырех ядер:

При работе данных утилит температура процессора начнет расти.
Принудительное завершение работ, как утилиты sysbench, так и stress можно при помощи сочетания клавиш Ctrl+C.

Во многих случаях мини-компьютеры, такие как: Raspberry Pi, Orange Pi, Banana Pi и т.п., поставляется с небольшим вентилятором на 5 В, чтобы можно было охлаждать процессор (вернее — СнК/SoC) компьютера. Тем не менее, эти вентиляторы обычно довольно шумные, и многие подключают его к выводу на 3.3 В, чтобы уменьшить шум. Вентиляторы обычно рассчитаны на 200 мА, что довольно много для регулятора на 3.3 В на Raspberry Pi.

Этот проект научит вас, как регулировать скорость вращения вентилятора в зависимости от температуры процессора. В отличие от большинства руководств, охватывающих эту тему, мы не только включим или выключим вентилятор, но и будем контролировать его скорость с помощью ШИМ, как это делается на обычном ПК.

Что такое ШИМ?

Широтно-импульсная модуляция (ШИМ, англ. pulse-width modulation (PWM)) — процесс управления мощности методом пульсирующёго включения и выключения прибора. Различают аналоговую ШИМ и цифровую ШИМ, двоичную (двухуровневую) ШИМ и троичную (трёхуровневую) ШИМ. Основной причиной применения ШИМ является стремление к повышению КПД при построении вторичных источников питания электронной аппаратуры и в других узлах, например, ШИМ используется для регулировки яркости подсветки LCD-мониторов и дисплеев в телефонах, КПК и т.п..

Управление вентилятором с помощью биполярного NPN-транзистора

Первое что приходит на ум — поставить биполярный NPN-транзистор. Вентилятору требуется 200мА, поэтому ищем транзистор с коллекторным током более 200мА, лучше раза в 2-3. В импортных даташитах этот параметр называется Ic, в наших Iк. Подойдут транзисторы: 2N5550, 2N5551, 2N2222A и т.д.. У транзистора, в первую очередь, надо определить назначение выводов. Где у него коллектор, где база, а где эмиттер. Сделать это лучше всего по даташиту или справочнику.

Схема подключения вентилятора

Берем транзистор и подключаем его по такой схеме:

Резистор R1 играет важную роль — он ограничивает ток через переход база-эмиттер. Если бы его не было, ток не был бы ничем ограничен и просто испортил бы управляющую микросхему (ведь именно она связывает линию питания с транзистором).

Кроме того, нужно помнить, что нагрузка индуктивная и нужен защитный диод D1. Дело в том, что энергия, запасённая магнитным полем, не даёт мгновенно уменьшить ток до нуля при отключении ключа. А значит, на контактах нагрузки возникнет напряжение обратной полярности, которое легко может нарушить работу контроллера или даже повредить его.

Управление вентилятором с помощью МОП транзистора

Вместо биполярного можно использовать полевой транзистор — MOSFET, то есть полевые транзисторы с изолированным затвором (они же МОП, они же МДП). Они удобны тем, что управляются исключительно напряжением: если напряжение на затворе больше порогового, то транзистор открывается. При этом управляющий ток через транзистор пока он открыт или закрыт не течёт. Это значительное преимущество перед биполярными транзисторами, у которых ток течёт всё время, пока открыт транзистор.

В дальнейшем мы будем использовать только n-канальные MOSFET. Это связано с тем, что n-канальные транзисторы дешевле, имеют лучшие характеристики и для управления N-канальным полевиком необходимо приложить положительное напряжение на затвор относительно истока.

Схема подключения вентилятора

Кроме того, нужно помнить, что нагрузка индуктивная и нужен защитный диод D1.

N-канальные MOSFET с логическим уровнем управления

Один из минусов МОП транзисторов — это высокое пороговое напряжение затвора, больше 3.3 В. Тем не менее, существуют N-канальные транзисторы с логическим уровнем управления, например: IRL2505, FDN337N, ZVN4306A, 2N7000, PMV16XNR, NTZD3155C, IRLZ24NPBF, IRL520NPBF и т.п.

Как получить температуру процессора

Существует несколько способов получить текущую температуру процессора.

Если вы используйте Armbian, вы можете использовать команду:

эта команда будет давать вам время работы, частоту и текущую температуру процессора каждые 6 секунд.

Есть еще одна команда, которая просто возвращает температуру процессора:

Внутри SoC Allwinner есть два датчика, вы можете взять оба значения, чтобы получить среднюю температуру. На Raspberry Pi температура измеряется в миллиградусах, для перевода в градусы Цельсия нужно разделить полученное число на 1000:

В Raspberry Pi можно узнать температуру процессора при помощи ввода консольной команды:

Включение вентилятора при заданной температуре

Ниже приведённые примеры используют WiringPi и, если библиотека у вас не установлена, установите её, инструкции тут: WiringPi, WiringOP или BPI-WiringPi.

Самый простой пример управления вентилятором — это его включение, при достижении критичной температуры, и выключение, если температура ниже. Если шум вентилятора не мешает, тогда можно использовать такой вариант.

Программа работает следующим образом — при достижении заданной температуры (более 55°С) вентилятор включается, и отключается только когда температура снизится более чем на 10°С от максимального порога (менее 45°С).

Температуру получаем с помощью функции static int getTemperature() . На Raspberry Pi температура измеряется в миллиградусах, для перевода в градусы Цельсия нужно разделить полученное число на 1000 и необходимо будет внести несколько изменений,

Компиляция, сборка и запуск программы

Сознаём файл FanPiOnOff.cpp и вставляем вышеприведённый код:

Компилируем и собираем программу:

если хотим запустить программу в фоновом режиме:

ШИМ управление: Пример 1

Логика программы такова — при достижении заданных температур вентилятор включается с определённым коэффициентом заполнения, а отключается только тогда, когда температура ниже минимального порога:

  • 45 °C -> 35 %
  • 50 °C -> 50 %
  • 60 °C -> 75 %
  • 75 °C -> 100 %

Компиляция, сборка и запуск программы

Сознаём файл FanPiPWM.cpp и вставляем вышеприведённый код:

Компилируем и собираем программу:

если хотим запустить программу в фоновом режиме:

ШИМ управление: Пример 2

Также можно менять коэффициент заполнения линейно. В таком случае программе нужно задать минимальную температуру срабатывания и минимальный коэффициент заполнения, к примеру 45°C и 35% соответственно, а на максимальную температуру (к примеру 70°C) — коэффициент в 100%. Рассчитывается коэффициент заполнения с помощью функции static int map(int x, int inMin, int inMax, int outMin, int outMax); .

Компиляция, сборка и запуск программы

Сознаём файл FanPiPwmLinear.cpp и вставляем вышеприведённый код:

Компилируем и собираем программу:

если хотим запустить программу в фоновом режиме:

Как поместить скрипт в автозагрузку

Остается сделать так, чтобы скрипт, контролирующий работу вентилятора охлаждения, автоматически запускался каждый раз при загрузке системы.

Для этого, в конец файла /etc/rc.local :

Нужно поместить команду запуска скрипта перед строкой exit 0 :

После перезагрузки скрипт будет автоматически запущен и вентилятор будет включаться при наступлении заданных условий.

Чтобы проверить факт запуска, после перезагрузки, нужно переключиться в терминал и проверить наличие процесса:

Как проверить?

Запуск утилиты с задействованием 4 ядер:

Температура процессора сразу начнет повышаться.

Принудительно завершить, как выполнение теста утилитой sysbench , так и stress можно сочетанием клавиш Ctrl+C .


Друзья, после установки Алексы на мой Raspberry Pi 3b (далее RPi) возникла идея управлять громкостью, так как зачастую я спрашиваю у Алексы включить музыку. Хорошего микрофона у меня пока еще нет и Алекса просто не слышит мою команду на остановку при громкой музыке. Но если бы микрофон и был, то это бы не решило проблему с уменьшением и увеличением громкости, так как AlexaPi не поддерживает такой функционал. Также, когда мне кто-нибудь звонит на телефон, убавить громкость я не могу и приходится физически отключать питание на RPi. Данная инструкция подойдет всем тем, кто хотел бы управлять громкостью на RPi или выполнять любую другую терминальную команду с помощью ИК-пульта. Дома у меня оказалось 3-и ненужных ИК-пульта, которые простаивали без дела и самый маленький из них я решил задействовать под RPi. Данную установку я проводил на системе Raspbian Buster Lite, версия ядра 4.19. И так, поехали.

Что вам понадобится:

    – 1шт. – 3шт.
  • Паяльник
  • Припой
  • Термоусадка
  • Паяльный фен

Шаг 1 : Соединяем ИК-приемник с интерфейсом GPIO на RPi

Для начала настроим наш ИК-приемник без монтажа в корпус RPi. Данный ИК-приемник TSOP31238 поддерживает напряжение от 2.5 до 5.5 вольт, поэтому его можно запитать от разъема с напряжением 3.3 или 5 вольт. Соединительные провода можно взять “мама-мама”, но контакты ИК-приемника будут неплотно примыкать внутри данных коннекторов, и поэтому я решил взять провода “папа-мама” и концы с коннекторами “папа” спаять с контактами ИК-приемника для надежности соединения. Также важно знать частоту вашего пульта перед покупкой ИК-приемника, но обычно это 36 или 38кГц. Честно скажу, частоту своего ИК-пульта я не знал и купил на всякий случай второй ИК-приемник с частотой 36кГц, но в итоге он не потребовался.


Распиновка ИК-приемника TSOP31238

Обесточиваем RPi. Далее контакт №1 на ИК-приемнике подключаем к Ground на RPi (физический контакт №9). Контакт №2 на приемнике подключаем к 3V3 (физический контакт №1), а контакт №3 подключаем к GPIO 17 (физический контакт №11).


Диаграмма ввода/вывода общего назначения на RPi

Затем подаем питание, загружаем систему и входим на RPi через SSH c другой машины.

Шаг 2 : Установка LIRC и считывание кодов кнопок ИК-пульта

LIRC это открытый программный пакет, позволяющий принимать и передавать инфракрасные сигналы с помощью Linux.

Скорее всего установка приведет к ошибке — Failed to start Flexible IR remote input/output application support (Не удалось запустить поддержку приложения удаленного ввода / вывода Flexible IR), поскольку к некоторым конфигурационным файлам LIRCa добавлен суффикс .dist и его нужно удалить путем перемещения файлов с новым именем:

Снова устанавливаем LIRC:

Далее редактирем файл lirc_options.conf:

Меняем значения driver и device на следующие:

Открываем файл config.txt в папке boot:

добавляем следующие значения:

Далее останавливаем LIRC, снова запускаем и проверяем, что нет ошибок:

После перезагрузки системы нам нужно протестировать ИК-пульт.

и вводим следующую команду:

Направляем наш ИК-пульт на ИК-приемник и нажимаем любые кнопки на пульте. Вы должны увидеть что-то похожее:

Если вы наблюдаете похожую картину, это значит, что система видит ваш пульт.

Выйдите из данного режима нажав CTRL+Z.

Все ваши конфигурационные файлы ИК-пультов с расширением .conf должны помещаться в папку /etc/lirc/lircd.conf.d/. В данной папке уже находится файл devinput.lircd.conf, но в данной настройке он нам не потребуется и мы его скроем от LIRC простым перемещением с новым расширением:

Далее нам нужно считать коды клавиш нашего ИК-пульта. В данной настройке я задействовал 4-е кнопки: VOL+, VOL-, зеленая кнопка для выключения/включения звука и красная кнопка для перезагрузки RPi.


Считывать коды нужно через программу irrecord. Сразу скажу, программа очень глючная и узнать коды моих кнопок пришлось в два этапа.

Заходим в папку home:

Вводим следующую команду и жмем Enter

Когда программа выведет:

Cнова жмем Enter.

вводим имя пульта. В моем случае alexapi, у вас будет свое имя. Жмем Enter.

После нажатия Enter нужно в любом порядке нажимать клавиши на пульте, чтобы появилась хотя бы одна точка в терминале. Я каждую клавишу нажимал до появления 2-х точек.

После ввода имени кнопки нажмите Enter программа попросит вас нажать соответствующую кнопку на пульте:

Далее программа попросит ввести имя следующей кнопки:

Если вы уже ввели все кнопки, то просто нажмите Enter

Программа сохранит данные в файл и скажет:

Открываем данный файл:

и видим его структуру

В данном случае у нас считались коды кнопок в “сыром” виде. Их можно оставить как есть, но я предпочел их конвертировать в 32-х битное значение. Сразу сделать их 32-х битными не получилось, т.к. irrecord очень некорректно работает на Raspbian Buster Lite и после многочисленных попыток мне постоянно создавались файлы конфигурации с пустыми значениями кодов кнопок — 0x0. Именно поэтому я “граббил” коды кнопок в два этапа, т.к. эта схема в итоге сработала.

Закрываем файл и вводим команду:

В терминале вы должны увидеть новую структуру файла:

Копируем новое содержимое из терминала и открываем файл alexapi.lircd.conf:

Удаляем все строки из файла – CTRL+K и вставляем новые данные.

Сохраняем файл и перемещаем его в папку /etc/lirc/lircd.conf.d/:

и тестируем наши кнопки введя команду:

Теперь попробуйте нажать кнопку увеличения громкости и вы должны увидеть что-то подобное:

Проделайте тоже самое для всех кнопок, с которых вы “сграббили” коды.

Если вы видите вывод значений после нажатия кнопок на ИК-пульте, это значит, что коды нажатых кнопок корректно принимаются ИК-приемником и распознаются LIRCом.

Шаг 3 : Назначение команд кнопкам ИК-пульта

Далее нам нужно создать два bash файла, первый будет отвечать за увеличение громкости, а другой за уменьшение.

Заходим в /usr/bin/

Создаем файл volup:

И вставляем в него следующее:

В данном случае громкость будет увеличиваться на 5% при каждом нажатии соответствующей кнопки. Вы можете установить свои значения в процентах.

Сохраняем файл и делаем его исполняемым:

Далее создаем файл voldown:

и вставляем в него следующее:

Делаем его исполняемым:

Далее переименовываем файл /etc/lirc/irexec.lircrc.dist в /etc/lirc/irexec.lircrc простым перемещением:

Открываем файл irexec.lircrc:

Стираем все строки, CTRL+K и вставлем в него следующее

Сохраняем файл и далее запускаем команду:

Пробуем нажать красную кнопку POWER на ИК-пульте, система должна перезагрузиться. Это значит что все работает и после перезагрузки системы нужно сделать irexec системным процессом, чтобы он автоматически запускался при старте системы:

Снова перегрузите систему и ваш ИК-пульт будет готов к работе. По аналогии так можно запрограммировать любые кнопки на пульте с которых вы “сграббили” коды и назначить им терминальные команды в файле irexec.lircrc

Шаг 4 : Установка ИК-приемника в корпус RPi

В данном случае это выбор каждого отдельного пользователя, где он захочет установить свой ИК-приемник, но я его смонтировал на верхней крышке корпуса RPi.


Вам нужно будет отпаять провода от контактов ИК-приемника, затем наметить три отверстия согласно расположению контактов и просверлить их сверлом 1мм. ИК-порт можно приклеить к корпусу клеем ABRO Epoxy Steel. Время его схватывания 10 минут. Я также проклеил контакты с обратной стороны для более надежного сцепления с корпусом. Далее, нарезаем кусочки термоусадки, надеваем их на провода, припаиваем их к клеммам ИК-приемника согласно схеме, надеваем на место пайки термоусадки и паяльным феном усаживаем их.


Далее собираем корпус RPi, устанавливаем на нужно место и подаем питание.

Теперь звуком из вашего RPi можно управлять дистанционно!

Надеюсь Вам понравилась данная инструкция и вы сможете применить данные знания в своих собственные проектах с RPi.

Понравилась инструкция? Тогда поделитесь ей со своими друзьями или попробуйте написать свою собственную!

Простой, но удивительный пульт дистанционного управления IR Raspberry Pi за 5 долларов

В этой статье я представлю очень простое дистанционное управление Raspberry Pi с технологией USB plug-and-play . Недавно я перечислил 7 аксессуаров Raspberry Pi для создания медиацентра XBMC, в котором был указан ИК-пульт USB. Если вы хотите купить пульт дистанционного управления Raspberry Pi , попробуйте эту страницу . Возможно, вы также наткнулись на USB-ключ FLIRC . К сожалению, на этих страницах четко не сказано, что если вы ищете простой недорогой пульт дистанционного управления Raspberry Pi для своего медиацентра, то вам не нужно тратить $ 20 или больше, чтобы получить приличный рабочий USB-пульт. Взгляните на пульт дистанционного управления Raspberry Pi за $ 5, представленный ниже.

Raspberry Pi Пульт дистанционного управления

Есть несколько приложений для Android, которые могут управлять XBMC на вашем Raspberry Pi. Тем не менее, если вы похожи на меня и предпочитаете использовать инфракрасный пульт дистанционного управления, есть несколько вариантов, и перечисленные ниже – самые дешевые пульты Raspberry Pi, которые вы можете найти сегодня. Независимо от того, используете ли вы Xbian, OpenELEC или Raspbmc в качестве операционной системы, эти удаленные устройства не требуют установки или настройки.

Вы можете найти эти пульты .

Они доступны в 2 разных версиях с практически одинаковыми кнопками. Один пульт дистанционного управления больше с обычным USB-приемником, а другой – с выдвижным шнуром. Таким образом, вы можете приобрести все, что соответствует вашим потребностям.

Как они работают?

Простой, но удивительный пульт дистанционного управления IR Raspberry Pi за 5 долларов

Raspberry Pi Настройки пульта дистанционного управления

Почти все базовые функции, которые управляют XBMC, такие как воспроизведение, пауза, остановка, ускоренная перемотка вперед, перемотка назад, пропуск вперед, пропуск предыдущего, регуляторы громкости, клавиши со стрелками, выбор / ввод и отключение питания, работают из-за коробка.

Обратите внимание, что если вы работаете с такими операционными системами, как Raspbian или Pidora, эти пульты могут оказаться не очень полезными.

Больше преимуществ

Простой, но удивительный пульт дистанционного управления IR Raspberry Pi за 5 долларов

Во-первых, эти пульты распознаются операционной системой как клавиатура и мышь. Если ситуация требует, вы можете использовать кнопку со стрелкой мыши или кнопки, чтобы перемещаться и делать определенные вещи. Это почти как мини-клавиатура / мышь в руке.

Итак, поехали. Если вы сделали это исследование. Raspberry Pi, чтобы наслаждаться своим медиацентром.

Читайте также: