Как стать автором
Обновить

DIY управление телевидением Дом.ru с планшета при помощи ардуино

Разработка под Android *Реверс-инжиниринг *
Пусть описание принципа работы уникального смарт-девайса для упрощения взаимодействия в системе «человек машина» выглядит как реклама таблеток для похудения, но в данном случае это лучший способ объяснить для чего, почему и как собирался данный девайс.

Тему телевидения затрагивать в статье не буду, расскажу только про «гаджетостроение» и разработку интерфейса.
Эта статья частично является продолжением моей статьи Bluetooth пульт для телевизора, поэтому буду ссылаться на некоторые технические моменты, описанные в ней.
Сначала покажу как работает мой девайс (на видео он в левом нижнем углу, рядом с ресивером Дом.ru):

Снаружи девайс выглядит так:

Это в разобранном виде:

В качестве корпуса я использовал муляж камеры наблюдения. Такие муляжи продаются по 4-5 долларов в китайских интернет-магазинах. Конструкцию девайса можно посмотреть в предыдущей статье, а скетч с кодами кнопок для управления ресивером Дом.ru
здесь
#include <IRremote.h>
IRsend irsend;
int ledPin = 13;
unsigned long a;
void setup() {
Serial.begin(9600);
Serial.setTimeout(4);
pinMode(ledPin, OUTPUT);
}
void S1() {irsend.sendNEC(0x8C03F, 32);delay(100);}
void S2() {irsend.sendNEC(0x820DF, 32);delay(100);}
void S3() {irsend.sendNEC(0x8A05F, 32);delay(100);}
void S4() {irsend.sendNEC(0x8609F, 32);delay(100);}
void S5() {irsend.sendNEC(0x8E01F, 32);delay(100);}

void S6() {irsend.sendNEC(0x810EF, 32);delay(100);}
void S7() {irsend.sendNEC(0x8906F, 32);delay(100);}
void S8() {irsend.sendNEC(0x850AF, 32);delay(100);}
void S9() {irsend.sendNEC(0x8D02F, 32);delay(100);}
void S0() {irsend.sendNEC(0x830CF, 32);delay(100);}

void Son() {irsend.sendNEC(0x800FF, 32);delay(100);}
void Smute() {irsend.sendNEC(0x818E7, 32);delay(100);}
void Splus() {irsend.sendNEC(0x8F807, 32);delay(100);}
void Sminus() {irsend.sendNEC(0x802FD, 32);delay(100);}

void loop()
{
if (Serial.available())
{ a = Serial.parseInt();
if (a==1) {S1();}
if (a==2) {S2();}
if (a==3) {S3();}
if (a==4) {S4();}
if (a==5) {S5();}
if (a==6) {S6();}
if (a==7) {S7();}
if (a==8) {S8();}
if (a==9) {S9();}
if (a==0) {S0();}

if (a==161) {Son();}
if (a==162) {Smute();}
if (a==163) {Splus();}
if (a==164) {Sminus();}

}
}

Если кто-то захочет сделать подобный девайс для управления ресивером Триколор ТВ, то скетч с кодами кнопок здесь:
здесь
#include <IRremote.h>
IRsend irsend;
int ledPin = 13;
unsigned long a;
void setup() {
Serial.begin(9600);
Serial.setTimeout(4);
pinMode(ledPin, OUTPUT);
}
void S1() {irsend.sendNEC(0x8C03F, 32);delay(200);}
void S2() {irsend.sendNEC(0x820DF, 32);delay(200);}
void S3() {irsend.sendNEC(0x8A05F, 32);delay(200);}
void S4() {irsend.sendNEC(0x8609F, 32);delay(200);}
void S5() {irsend.sendNEC(0x8E01F, 32);delay(200);}

void S6() {irsend.sendNEC(0x810EF, 32);delay(200);}
void S7() {irsend.sendNEC(0x8906F, 32);delay(200);}
void S8() {irsend.sendNEC(0x850AF, 32);delay(200);}
void S9() {irsend.sendNEC(0x8D02F, 32);delay(200);}
void S0() {irsend.sendNEC(0x830CF, 32);delay(200);}

void Son() {irsend.sendNEC(0x800FF, 32);delay(100);}
void Smute() {irsend.sendNEC(0x818E7, 32);delay(100);}
void Splus() {irsend.sendNEC(0x828D7, 32);delay(100);}
void Sminus() {irsend.sendNEC(0x848B7, 32);delay(100);}

void loop()
{
if (Serial.available())
{ a = Serial.parseInt();
if (a==1) {S1();}
if (a==2) {S2();}
if (a==3) {S3();}
if (a==4) {S4();}
if (a==5) {S5();}
if (a==6) {S6();}
if (a==7) {S7();}
if (a==8) {S8();}
if (a==9) {S9();}
if (a==0) {S0();}

if (a==161) {Son();}
if (a==162) {Smute();}
if (a==163) {Splus();}
if (a==164) {Sminus();}

}
}

Видео с демонстрацией работы девайса с телевидением Триколор ТВ здесь.
Как считывать коды кнопок других ресиверов тоже описано в предыдущей статье
Теперь немного об интерфейсе.
Сначала был сделан такой интерфейс:

Но существенного удобства по сравнению с штатным пультом ДУ он не давал.
Потом я подписал некоторые кнопки, чтобы сделать чуть удобнее поиск нужного канала:

Но такой вариант тоже оказался не очень удобным.
На сегодняшний день интерфейс выглядит так:

Использовать такой интерфейс оказалось достаточно удобно.
В заключении скажу, что все андроид-приложения я делал, используя среду визуальной разработки android-приложений App Inventor 2.
Кому интересно как можно сделать такое приложение «с нуля» может посмотреть мое видео на эту тему (для просмотра необходимо перейти на youtube).

P.S. Сборник из более 100 обучающих материалов по ардуино для начинающих и профи тут
P.P.S. Онлайн курс по ардуино на гиктаймс здесь.
Теги:
Хабы:
Всего голосов 14: ↑10 и ↓4 +6
Просмотры 37K
Комментарии Комментарии 24