1

Тема: Как мой дом начал "умнеть". Управление светом с пульта от ТВ

Что было куплено:
Arduino Leonardo
Модуль реле
Цифровой IR-приемник
Диоды 5630 на радиаторе - 1м
Мосфет STP16NF06

Что было сделано:
Подключаем ИК-приемник к дуньке по такой схеме
http://arduino-ua.com/products_pictures/large_IRmodule2.jpg

Загружаем скетч для чтения кнопок пульта

#include <IRremote.h>
 
int RECV_PIN = 3; //пин подключения IR приёмника
 
IRrecv irrecv(RECV_PIN);
decode_results results;
 
void setup()
{
  Serial.begin(9600);
  pinMode(7,OUTPUT);
  irrecv.enableIRIn(); // Start the receiver
}
 
void loop()
{
  if (irrecv.decode(&results)) 
  {
    Serial.println(results.value);
    irrecv.resume(); // Receive the next value
  }
}

Для себя отыскал четыре кнопки, которые телевизор не использует.
Далее подключил через модуль реле питание к люстре, через мосфет подключил диодную планку (освещение рабочего стола)
Назначил кнопки в коде

#include <IRremote.h>

#define LEDPIN 5
#define FADESPEED 20     // чем выше число, тем медленнее будет fade-эффект 

int RECV_PIN = 3; //пин подключения IR приёмника
int RELAY_PIN = 7; //пин подключения реле
 
IRrecv irrecv(RECV_PIN);
decode_results results;
bool LampState = false;
bool LedState = false;
int fadeled = 153;

void setup()
{
  pinMode(RELAY_PIN,OUTPUT);
  digitalWrite(RELAY_PIN,HIGH);
  pinMode(LEDPIN, OUTPUT);
  irrecv.enableIRIn(); // Включаем ресивер
}
 
void loop()
{
  int r;
  
  if (irrecv.decode(&results)) 
  {
      if (results.value == 551505585) //Код кнопки
      {
          LampState = !LampState;
          if (LampState)
          {
              digitalWrite(RELAY_PIN,HIGH);
          }
          else
          {
              digitalWrite(RELAY_PIN,LOW);
          }
      }
          if (results.value == 551521905) //Код кнопки
      {
          LedState = !LedState;
          if (LedState)
          {
                for (r = 0; r < 256; r++) { 
                            analogWrite(LEDPIN, r);
                            delay(FADESPEED);
                           
                            }
                            fadeled = 255;
          }
          else
          {
                for (r = 255; r > -1; r--) { 
                            analogWrite(LEDPIN, r);
                            delay(FADESPEED);
                      }
          }
      }
                if (results.value == 551519355 && fadeled <=204) //Поднимаем яркость
                {
                 
                  
                  
                            for (r = fadeled; r < fadeled+51; r++) { 
                            analogWrite(LEDPIN, r);
                            delay(FADESPEED);
                }
                fadeled = fadeled+51;
                }
                if (results.value == 551528790 && fadeled >=102) //Уменьшаем яркость
                {
                  
                  
                            for (r = fadeled; r > fadeled-51; r--) { 
                            analogWrite(LEDPIN, r);
                            delay(FADESPEED);
                }
                fadeled = fadeled-51;
                }
                
    irrecv.resume(); // Получаем следующее значение
  }
}

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

2

Re: Как мой дом начал "умнеть". Управление светом с пульта от ТВ

Здорово придумано! Ну, так ты теперь своеобразный мануал по этом вопросу можешь написать, а мы его на сайте разместим, в виде отдельной статьи. Будет куча вопросов от читателей! wink

Будьте доброжелательны и Вам уделят максимум внимания smile

3

Re: Как мой дом начал "умнеть". Управление светом с пульта от ТВ

Как вариант. Нужно только скетч поправить, доделать. Не совсем правильно и не совсем так написал ))

4 (2015-01-04 21:49:15 отредактировано Benvolyo)

Re: Как мой дом начал "умнеть". Управление светом с пульта от ТВ

Итак. Что было сделано:
1. Поправлен код. Уменьшено время эффекта затухания, поправлен статус включенной ленты

#include <IRremote.h>

#define LEDPIN 5
#define FADESPEED 10     // чем выше число, тем медленнее будет fade-эффект 

int RECV_PIN = 3; //пин подключения IR приёмника
int RELAY_PIN = 7; //пин подключения реле
 
IRrecv irrecv(RECV_PIN);
decode_results results;
bool LampState = false;
int LedState = 0; //Задается начальный статус диодной подсветки (выключено)
int fadeled = 155; //При включении диодов кнопками изменения яркости задается среднее значение яркости

void setup()
{
  pinMode(RELAY_PIN,OUTPUT);
  digitalWrite(RELAY_PIN,HIGH);
  pinMode(LEDPIN, OUTPUT);
  irrecv.enableIRIn(); // Включаем ресивер
}
 
void loop()
{
  int r;
  
  if (irrecv.decode(&results)) 
  {
      if (results.value == 551505585) //Код кнопки
      {
          LampState = !LampState;
          if (LampState)
          {
              digitalWrite(RELAY_PIN,HIGH);
          }
          else
          {
              digitalWrite(RELAY_PIN,LOW);
          }
      }
          if (results.value == 551521905) //Код кнопки
      {
          
          if (LedState==0)
          {
                for (r = 0; r < 256; r++) { 
                            analogWrite(LEDPIN, r);
                            delay(FADESPEED);
                           
                            }
                            fadeled = 255;
                            LedState = 1;
          }
          else
          {
                for (r = 255; r > -1; r--) { 
                            analogWrite(LEDPIN, r);
                            delay(FADESPEED);
                      }
                            LedState = 0;
          }
      }
                if (results.value == 551519355 && fadeled <=235) //Поднимаем яркость
                {
                 
                  
                  
                            for (r = fadeled; r < fadeled+20; r++) { 
                            analogWrite(LEDPIN, r);
                            delay(FADESPEED);
                }
                fadeled = fadeled+20;
                LedState = 1;
                }
                if (results.value == 551528790 && fadeled >=75) //Уменьшаем якркость
                {
                  
                  
                            for (r = fadeled; r > fadeled-20; r--) { 
                            analogWrite(LEDPIN, r);
                            delay(FADESPEED);
                }
                fadeled = fadeled-20;
                LedState = 1;
                }
                
    irrecv.resume(); // Получаем следующее значение
  }
}

2. Собрано все на плату. Теперь макетник свободен )
http://s7.hostingkartinok.com/uploads/images/2015/01/5961522ea496426a76c6af6f8b7dc223.jpg
http://s7.hostingkartinok.com/uploads/images/2015/01/ce2178b34d40826cc989ccd29a840bfc.jpg

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

5

Re: Как мой дом начал "умнеть". Управление светом с пульта от ТВ

В подключении реле и IR-приемника сложного ничего нет. При подключении светодиодной ленты пришлось сочинить вот такую схему, так как Дунька не сможет от себя запитать ленту.
http://s7.hostingkartinok.com/uploads/images/2015/01/f7a5620a0cbcf6b36e0e5883fdc89eaa.jpg

Мосфет не греется, хотя для него и был куплен радиатор, но он не ставился.

Естественно вместо светодиода подключена лента. Питание на нее подается от отдельного БП 12В
Дунька у меня питается от 5В БП. По этой причине земли от обоих блоков питания соединились.

6

Re: Как мой дом начал "умнеть". Управление светом с пульта от ТВ

Хм, у меня одного проблемы с отображение фотографий устройства?

Будьте доброжелательны и Вам уделят максимум внимания smile

7

Re: Как мой дом начал "умнеть". Управление светом с пульта от ТВ

Так лучше?

8

Re: Как мой дом начал "умнеть". Управление светом с пульта от ТВ

Да, теперь все нормально! А про полноценную статью - подумай wink

Будьте доброжелательны и Вам уделят максимум внимания smile