Пульт ду с одной кнопкой.

Тема в разделе "Закажу проект", создана пользователем sergej1501, 30 сен 2015.

  1. sergej1501

    sergej1501 Нерд

    Привет всем,
    Проект для больничной палаты.
    В палате имеется телевизор самсунг, пульт постоянно исчезает. Нужно управлять телевизором с системы вызова медсестры.
    Имеется одна свободная кнопка.
    Алгоритм: при первом нажатии кнопки включается телевизор, при последующем переключает канал Р+, при длительном нажатии выключается.

    Телевизор включается при нажатии Р+

    Нужно при коротком нажатии подать ик сигнал Р+, при длинном Выкл.
     
  2. Green

    Green Гик

    Палата №6?)) Не проще ли будет (и дешевле) купить несколько дистанционок и привязать их на веревочки, не?
     
  3. vvr

    vvr Инженерище

    на 100 процентов поддерживаю
    пульт бу копейки, а увязать телевизор с системой вызова медсестры ещё тот геморррррррр:)
     
  4. sergej1501

    sergej1501 Нерд

    Дешовые Пульты нельзя использовать в целях гигиены. Пульт должен легко дезинфецироваться, а такой пульт стоит около 20 евро. Потом постоянные проблемы с установкой кода, батарейки и тд.
    На счёт увязки с системой вызова нет никаких проблем. Старый деревянный ящик был уже связан. Старый ящик выбросили, повесили самсунг, и каждому пациенту дали пульт.
    Речь идёт о 50ти Телевизорах и 150ти пультах (3 пациента в палате), и это ещё не вся больница.
    Ссылка на пульт.
    http://www.ruwido-consumer.com/hospitality/healthcare/
     
    Последнее редактирование: 30 сен 2015
  5. DrProg

    DrProg Вечный нерд

    Кнопка должна имитировать пульт? В том смысле что где то выводится ИК излучатель и управляется от кнопки, я правильно понимаю? Или управление проводное к самому телевизору?
     
  6. sergej1501

    sergej1501 Нерд

    Раньше было проводное. За телевизором имеется розетка для подключения звука и управления.
    Планируется за телевизором повесить ардуино с излучателем. Телевизор вскрывать не хочется из за гарантии. Звук подключен через наушники. Система вызова имеет свой усилитель с гальванической развязкой.
     
  7. DrProg

    DrProg Вечный нерд

    На телевизоре излучатель не нужен, разве что впритык к приемнику, чтобы наверняка. Звук вообще никак не участвует в процессе. Остальное дело квалификации и нескольких дней работы.
     
  8. sergej1501

    sergej1501 Нерд

    Именно впритык. Звук для общей картины.
    Нужно подобное устройство http://arduino-project.net/universalnyj-pult-arduino/ переточить под мои нужды. Убрать блютуз и отправлять команды с кнопки.
    Я думаю что коды я смогу сам считать. Вот реализовать короткое и длинное нажатие для меня пока сложно.
    Я жду железо, когда придёт тогда отпишусь чего сам смог.
     
  9. DrProg

    DrProg Вечный нерд

    Мне вот понадобилось сделать нечто подобное, ИК пульт для BBK на пленочной клавиатуре.
     
    ИгорьК нравится это.
  10. sergej1501

    sergej1501 Нерд

    Всем привет,
    Железо пришло. Коды считал.
    IRrecvDump

    Power
    E0E040BF
    E0E040BF (32 bits)
    Raw (76): 1016 4500 -4350 600 -1650 550 -1650 600 -1600 600 -550 550 -550 550 -550 550 -600 550 -550 550 -1600 600 -1650 550 -1650 550 -600 550 -550 550 -550 550 -550 600 -550 550 -550 500 -1650 600 -550 550 -550 600 -550 550 -550 550 -550 550 -550 550 -1650 550 -600 550 -1600 600 -1600 600 -1650 550 -1650 600 -1600 600 -1650 550 -600 550 -550 550 -550 550 -550 550

    P+
    E0E048B7
    E0E048B7 (32 bits)

    Raw (76): 2606 4500 -4400 550 -1650 600 -1600 600 -1650 550 -600 500 -600 550 -550 550 -550 550 -550 550 -1650 550 -1650 600 -1600 600 -550 550 -600 500 -600 550 -550 550 -550 550 -550 550 -1650 550 -600 550 -550 550 -1600 600 -550 550 -600 500 -600 500 -1650 600 -550 550 -1650 550 -1650 600 -550 550 -1650 550 -1650 550 -1650 600 -550 550 -550 550 -550 550 -600 500

    IRrecvDumpV2
    Power
    Encoding : SAMSUNG
    Code : E0E040BF (32 bits)
    Timing[76]:
    -31324

    +4500, -4400 + 550, -1650 + 600, -1600 + 600, -1650

    + 600, - 500 + 550, - 600 + 550, - 550 + 550, - 550

    + 550, - 550 + 550, -1650 + 600, -1600 + 600, -1600

    + 600, - 550 + 600, - 500 + 600, - 500 + 600, - 550

    + 550, - 550 + 550, - 550 + 550, -1600 + 600, - 550

    + 600, - 550 + 550, - 550 + 550, - 550 + 550, - 550

    + 600, - 500 + 600, -1600 + 600, - 550 + 550, -1600

    + 600, -1650 + 600, -1600 + 600, -1600 + 600, -1650

    + 550, -1650 + 600, - 550 + 550, - 550 + 550, - 550

    + 600, - 500 + 600,

    unsigned int rawData[77] = {54366, 90,88, 11,33, 12,32, 12,33, 12,10, 11,12, 11,11, 11,11, 11,11, 11,33, 12,32, 12,32, 12,11, 12,10, 12,10, 12,11, 11,11, 11,11, 11,32, 12,11, 12,11, 11,11, 11,11, 11,11, 12,10, 12,32, 12,11, 11,32, 12,33, 12,32, 12,32, 12,33, 11,33, 12,11, 11,11, 11,11, 12,10, 12,0}; // SAMSUNG E0E040BF

    unsigned int data = 0xE0E040BF;





    P+
    Encoding : SAMSUNG
    Code : E0E048B7 (32 bits)
    Timing[76]:
    -388

    +4500, -4400 + 550, -1650 + 600, -1600 + 600, -1650

    + 550, - 550 + 600, - 550 + 550, - 550 + 550, - 550

    + 550, - 550 + 550, -1650 + 600, -1600 + 600, -1600

    + 600, - 550 + 550, - 600 + 500, - 600 + 550, - 550

    + 550, - 550 + 550, - 550 + 550, -1650 + 550, - 600

    + 550, - 550 + 550, -1650 + 550, - 550 + 550, - 600

    + 500, - 600 + 550, -1600 + 600, - 550 + 550, -1650

    + 550, -1650 + 600, - 550 + 550, -1600 + 600, -1650

    + 550, -1650 + 600, - 550 + 550, - 550 + 550, - 550

    + 550, - 600 + 500,

    unsigned int rawData[77] = {22290, 90,88, 11,33, 12,32, 12,33, 11,11, 12,11, 11,11, 11,11, 11,11, 11,33, 12,32, 12,32, 12,11, 11,12, 10,12, 11,11, 11,11, 11,11, 11,33, 11,12, 11,11, 11,33, 11,11, 11,12, 10,12, 11,32, 12,11, 11,33, 11,33, 12,11, 11,32, 12,33, 11,33, 12,11, 11,11, 11,11, 11,12, 10,0}; // SAMSUNG E0E048B7

    unsigned int data = 0xE0E048B7;

    Подскажите как мне их отправить?
    Как отправлять NEC коды мне понятно, опробовал, получилось.
     
  11. sergej1501

    sergej1501 Нерд

    Привет всем,
    Разобрался сам
    Код (Text):

    #include <IRremote.h>
    IRsend irsend;
    unsigned long a;
    long previousMillis = 0;
    int val=0;
    int flag=0;
    void setup() {
    Serial.begin(9600);
    Serial.setTimeout(4);
    digitalWrite(2,HIGH);
    }

    unsigned int A_pow[68]={4600,4350,700,1550,650,1550,650,1600,650,450,650,450,650,450,650,450,700,400,700,1550,650,1550,650,1600,650,450,650,450,650,450,700,450,650,450,650,450,650,1550,700,450,650,450,650,450,650,450,650,450,700,400,650,1600,650,450,650,1550,650,1600,650,1550,650,1550,700,1550,650,1550,650};
    unsigned int A_vdown[68]={4600,4350,700,1550,650,1550,700,1500,700,450,650,450,700,400,700,400,700,400,700,1550,700,1500,700,1550,700,400,700,400,700,400,700,450,650,450,650,1550,700,1500,700,450,650,1550,700,400,700,400,700,450,700,400,700,400,700,400,700,1550,700,400,700,1500,700,1500,700,1550,700,1500,700};
    unsigned int A_vup[68]={4600,4350,650,1550,700,1500,700,1550,700,400,700,400,700,450,650,450,700,400,700,1500,700,1550,650,1550,700,400,700,400,700,450,650,450,700,400,700,1500,700,1550,650,1550,700,400,700,450,700,400,700,400,700,400,700,450,650,450,650,450,650,1550,700,1500,700,1550,700,1500,700,1550,650};
    unsigned int A_pdown[68]={4650,4300,700,1550,700,1500,700,1550,700,400,700,400,700,400,700,450,650,450,650,1550,700,1500,700,1550,700,400,700,400,700,400,700,450,700,400,700,400,700,400,700,450,650,450,650,1550,700,400,700,450,650,400,700,1550,700,1500,700,1550,700,1500,700,400,700,1550,650,1550,700,1500,700};
    unsigned int A_pup[68]={4600,4350,700,1500,700,1500,700,1550,700,450,650,400,700,450,650,450,700,400,700,1500,700,1550,650,1550,700,450,650,450,700,400,700,400,700,400,700,400,700,1550,700,400,700,400,700,1550,650,450,700,400,700,400,700,1550,650,450,650,1600,650,1550,650,450,700,1500,700,1500,700,1550,650};




    void loop() {
      if (Serial.available() > 0) {
        int x = Serial.read();
         
          if (x == 97) {
            irsend.sendRaw(A_pow,68,38);
            delay(40);
          }
          if (x == 98) {
            irsend.sendNEC(0x807FA857, 32);
            delay(40);
          }
          if (x == 99) {
            irsend.sendRaw(A_vup,68,38);
            delay(40);
          }
          if (x == 100) {
            irsend.sendRaw(A_vdown,68,38);
            delay(40);
          }
          if (x == 101) {
            irsend.sendRaw(A_pup,68,38);
            delay(40);
          }
          if (x == 102) {
            irsend.sendRaw(A_pdown,68,38);
            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 (digitalRead(2)==LOW)
    {

    if (digitalRead(2)==LOW&&flag==0)
    {
      irsend.sendRaw(A_pup,68,38);
      delay(200);
      flag=1;

    }
    if(millis() -previousMillis>1000)
    {previousMillis=millis();
    val++;
    }
    if (val>=5)
    {
      irsend.sendRaw(A_pow,68,38);
    delay(1000);
    }
    }
    if (digitalRead(2)==HIGH)
    {
      val=0;flag=0;
    }

    }
       
       
       
     
    я добавил к универсальному пульту с блютус, управление кнопкой.
    Можно управлять кнопкой (система вызова) или для продвинутых пациентов с андроид смартфона.

    Нужно ещё в блютус прописать номер палаты, чтобы управлять своим телевизором, а не в соседней Палате.

    Всем спасибо.