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

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

    Тему телевидения затрагивать в статье не буду, расскажу только про «гаджетостроение» и разработку интерфейса.
    Эта статья частично является продолжением моей статьи 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. Онлайн курс по ардуино на гиктаймс здесь.
    Поделиться публикацией
    Комментарии 24
      –2
      на самом деле куда интереснее выглядит управление новой приставкой от дом ру, а не предыдущего поколения. К слову там уже через телефон можно переключать, а в добавок дают дом ру тв(приложение в гугл плэй и эпстор). И я внезапно заметил что смотрю телевизор на телефоне и планшете. Когда хочу, что хочу (запись эфира до 3х дней)
        +17
        «До» лучше было имх, на финальной стадии весьма перегруженный интерфейс, + если планшет дешевый, экран может неадекватно реагировать на нажатия, и тд и тп.
          +11
          Хватит. Смотреть. Телевизор.
            0
            А если провайдер изменит список каналов — переделывать приложение? :)
              0
              переделывать не придется. просто вместо отключенного канала включается следующий после него.
                0
                А если порядок каналов изменится или добавятся новые каналы?
                  0
                  такое не каждый день случается. если что исходник лекго редактируется методом Drug&Drop из браузера.
                    +1
                    Оценил название метода :)
              0
              Очень медленно переключается, 5 секунд между нажатием на экран и переключением картинки. Не исследовали, где возникает такой лаг?
                0
                о модели ресивера зависит. возможно еще во время съемки видео не добавил в код кнопку ENTER. От этого тоже сильно зависит скорость переключения. А вообще скорость переключения с этим девайсом лучше, чем если переключать пальцем с пульта ДУ.
                +6
                Хо, какой шикарный пульт на первой фотке — на передней панели цветной дисплей, на задней — по технологии электронной бумаги.
                И это всё за долго до Yota-phone! Вот молодцы какие!
                  0
                  Я а не совсем понял. Во всех IR протоколах частота канала где-то 36 или 38 кГц.
                  А в примере
                  void setup() {
                  Serial.begin(9600);
                  Serial.setTimeout(4);
                  pinMode(ledPin, OUTPUT);
                  }


                  Скорость порта 9600. 9,6 кГц

                  Как Это вообще может работать? Я не понимаю.
                    0
                    планшет отсылает номер канала на ардуино. ардуино генерирует Ик-сигнал. Скорость порта может быть любой. тут она дефолтная 9600, как в китае на заводе ставят.
                      0
                      А, скорость порта только для связи с блютусом. Понял.
                    0
                    Следующий уровень переключаться не по каналам а по передачам которые там идут.
                    • НЛО прилетело и опубликовало эту надпись здесь
                        0
                        ну как 138 канал включить в одно касание?
                          0
                          Думаю и там его тоже не в одно касание включить можно.
                            0
                            Либо одно, либо скрул и одно касание. 150 каналов в 2,5 экрана влезают.
                          • НЛО прилетело и опубликовало эту надпись здесь
                              0
                              А зачем канал, который вы часто смотрите, ставить на 138? Вы СТОЛЬКО каналов смотрите регулярно? :)
                                0
                                Номера каналов выставляет оператор. от 1 до 999. Реально таи и 280 и 680 каналы есть. всего 159 каналов. Раз в несколько месяцев оператор может поменять номера каналов. Смотреть только 2-3 канала, номера которых я помню, просто невозможно, мозги высыхают. Такая ситуация
                                  0
                                  Ясно. Как хорошо, что у нас в доме обычное кабельное телевидение и я каналы могу настроить так, как мне удобно.
                              +1
                              Теликовые пульты ужасны и отвратительны — глубокие кнопки, очень медленная реакция, лично я на своем пульте не могу нормально нажать с первого раза вслепую многие кнопки, хотя пользуюсь им уже 3 года. Поэтому пользуюсь пультом с телефона через домашнюю сеть

                            Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                            Самое читаемое