Пульт управления на Arduino в мобильнике

Благодаря Arduino можно собрать универсальный пульт дистанционного управления (ПДУ). Очень удобно, когда с одного устройства можно управлять телевизором и медиаплеером. Самое замечательное, что все функции управления будут доступны на своем телефоне Android.

Комплектующие для сборки пульта на Arduino:

  1. Плата Arduino Pro mini с процессором ATmega328.
  2. Bluetooth модуль HC-05;
  3. Инфракрасный приемник TSOP1138, TSOP2238, TSOP4838 (последние две цифры определяют несущую частоту в кГц).
  4. Инфракрасный диод — передатчик от ненужного ПДУ.

Считывание IR кодов с ПДУ

Для считывания кодов команд с какого-нибудь пульта управления, работающего на самой распространенной частоте 36 кГц, нам потребуется подключить инфракрасный приемник TSOP всего лишь тремя проводами к плате Arduino.

Диапазон работы инфракрасных ПДУ находится в пределах 30–60 кГц. В нашем случае приемник TSOP выбран на частоту 38 кГц, так как отклонение в 10% допускается. Всего лишь понадобиться поднести ближе пульт к датчику в случае плохого приема сигнала.

Электрическая схема подключения TSOP1138, TSOP2238, TSOP4838 к Arduino Pro mini

Электрическая схема подключения TSOP1138, TSOP2238, TSOP4838 к Arduino Pro mini

Монтажная схема подключения TSOP1138, TSOP2238, TSOP4838 к Arduino Pro mini

Монтажная схема подключения TSOP1138, TSOP2238, TSOP4838 к Arduino Pro mini

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

Устанавливаем и открываем в ней пример скетча IRrecvDump.

пример скетча IRrecvDump

В примере скетча меняем номер пина получателя в строке int RECV_PIN = 11 на int RECV_PIN = 4.

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

В приведенном примере, оба пульта от телевизора и медиаплеера передают данные в кодировке NEC

В приведенном примере, оба пульта от телевизора и медиаплеера передают данные в кодировке NEC.

Все считанные данные от пультов надо занести в таблицу.

Во втором столбце данные для телевизионного пульта TV, в третьем для пульта медиаплеера Player.

Во втором столбце данные для телевизионного пульта TV, в третьем для пульта медиаплеера Player.

После успешного считывания IR кодов, разбираем собранную схему подключения TSOP к Arduino.

Сборка пульта управления на Arduino

 

Подсоединяем к плате Arduino инфракрасный диод и Bluetooth модуль HC-05.

Монтажная схема универсального пульта на Arduino

Монтажная схема универсального пульта на Arduino

Собранный универсальный пульт управления на Arduino

Собранный универсальный пульт управления на Arduino

Скачиваем образец скетча Universal_IR_pult

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
#include
IRsend irsend;
int y = 1;
void setup()
{
Serial.begin(9600);
}
void loop() {
if (Serial.available() > 0) {
int x = Serial.read();
if (x == 49) {
y = 1;
}
if (x == 50) {
y = 2;
}
if (y == 1) { // коды кнопок для пульта от телевизора
if (x == 97) {
irsend.sendNEC(0x807F08F7, 32);
delay(40);
}
if (x == 98) {
irsend.sendNEC(0x807FA857, 32);
delay(40);
}
if (x == 99) {
irsend.sendNEC(0x807F708F, 32);
delay(40);
}
if (x == 100) {
irsend.sendNEC(0x807FF00F, 32);
delay(40);
}
if (x == 101) {
irsend.sendNEC(0x807F30CF, 32);
delay(40);
}
if (x == 102) {
irsend.sendNEC(0x807FB04F, 32);
delay(40);
}
if (x == 103) {
irsend.sendNEC(0x807F9867, 32);
delay(40);
}
if (x == 104) {
irsend.sendNEC(0x807F58A7, 32);
delay(40);
}
if (x == 105) {
irsend.sendNEC(0x807FD827, 32);
delay(40);
}
if (x == 106) {
irsend.sendNEC(0x807F38C7, 32);
delay(40);
}
if (x == 107) {
irsend.sendNEC(0x807F48B7, 32);
delay(40);
}
if (x == 108) {
irsend.sendNEC(0x807FB847, 32);
delay(40);
}
if (x == 109) {
irsend.sendNEC(0x807F6897, 32);
delay(40);
}
}
if (y == 2) {  //коды кнопок пульта от медиаплеера
if (x == 97) {
irsend.sendNEC(0xFDC23D, 32);
delay(40);
}
if (x == 98) {
irsend.sendNEC(0xFDE01F, 32);
delay(40);
}
if (x == 99) {
irsend.sendNEC(0xFD18E7, 32);
delay(40);
}
if (x == 100) {
irsend.sendNEC(0xFDE817, 32);
delay(40);
}
if (x == 101) {
irsend.sendNEC(0xFDA857, 32);
delay(40);
}
if (x == 102) {
irsend.sendNEC(0xFD6897, 32);
delay(40);
}
if (x == 103) {
irsend.sendNEC(0xFDA857, 32);
delay(40);
}
if (x == 104) {
irsend.sendNEC(0xFD6897, 32);
delay(40);
}
if (x == 105) {
irsend.sendNEC(0xFDE817, 32);
delay(40);
}
if (x == 106) {
irsend.sendNEC(0xFD18E7, 32);
delay(40);
}
if (x == 107) {
irsend.sendNEC(0xFD9867, 32);
delay(40);
}
if (x == 108) {
irsend.sendNEC(0xFD28D7, 32);
delay(40);
}
if (x == 109) {
irsend.sendNEC(0xFD20DF, 32);
delay(40);
}
}
Serial.println(x);
Serial.println(y);
}
}

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

1
2
3
if (x == 97) {
irsend.sendNEC(0x807F08F7, 32);
delay(40);

а затем для медиаплеера:

1
2
3
4
if (x == 97) {
irsend.sendNEC(0xFDC23D, 32);
delay(40).
 

Если ваш пульт передает данные в кодировке SONY, RC5, RC6, PANASONIC, тогда меняем в скетче запись NEC на соответствующую.

Готовую программу загружаем в плату Arduino.

Для проверки передачи данных, открываем в программе Arduino IDE Монитор порта, отправляем в него «1» (задействовано управление телевизором). Отправляем «а» — должно вывестись значение 97.

Потом прописываем «2» (задействовано управление медиаплеером) и снова вводим «а» — ждем вывода 97.

Имитация передачи данных с телефона на Arduin

Имитация передачи данных с телефона на Arduino

 

Установка приложения Pult на телефон Android

Скачиваем приложение Pult.apk и устанавливаем на любое устройство Android, телефон или планшет.

Главный экран приложения Pult.apk

Главный экран приложения Pult.apk

После нажатия на красный значок Bluetooth, выводится окно со списком доступных Bluetooth устройств

После нажатия на красный значок Bluetooth, выводится окно со списком доступных Bluetooth устройств

После удачного соединения с Bluetooth модулем HC-05, значок Bluetooth должен поменять свой цвет на синий.

Главный экран приложения Pult для режима телевизора TV

Главный экран приложения Pult для режима телевизора TV

Главный экран приложения Pult для режима мультиплеера Player

Главный экран приложения Pult для режима мультиплеера Player

Автор: Виталий Петрович. Украина, Лисичанск.

 


 

Загрузка...

Похожее ...

1 Комментарий

  1. Выбираем этот шаблон в окне настойки лирка и нажимаем кнопку «create conffig». Должно появиться консольное окно, где следуя инструкции вы сможете записать каждую клавишу своего пульта в новый конфиг.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

3 + четырнадцать =