Материалы к набору датчиков для организации умного дома (средний)

Поздравляем с покупкой набора, чтобы тебе проще было в нём разобраться мы подготовили подробное описание, входящих в набор элементов и ссылки на все необходимые примеры кода и ПО.

Содержание

Датчик движения HC-SR501

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

Работает на расстоянии до 7 метров, угол обнаружения – до 120°. Для эффективной работы датчик должен располагаться вдали от прямых источников света и ветра.

Схема подключения датчика движения HC-SR501

Ниже на изображении представлена схема подключения датчика движения.

Для того, чтобы соотнести пины на датчике и на плате, аккуратно снимите пластиковый колпачок с платы сенсора, поддев его плоской отверткой.

Подключение датчика движения
Подключение датчика движения

Код для подключения датчика движения HC-SR501

В примере ниже показано, как подключить вывод датчика движения HC-SR501 к монитору последовательного порта платы (вывод можно посмотреть в мониторе порта Arduino IDE).


#define PIR 3 // датчик на пин 3

void setup() {
pinMode(PIR, INPUT); // определяем пин как вход
Serial.begin(9600); // подключение монитора порта
}

void loop() {
int pirValue = digitalRead(PIR); // считываение цифровых данных
Serial.println(pirValue); // данные в мониторе порта
delay(100); // задержка 0.1 секунда
}

Скачать файл с кодом, формат .INO: Датчик движения HC-SR501

Датчик освещённости пороговый (без аналогового выхода)

Модуль датчика света на основе фоторезистора. Датчик имеет два управляющих выхода — аналоговый, значение пропорционально температуре, и цифровой, выдающий 0 или 1. Величина освещения, при которой происходит срабатывание датчика, регулируется подстроечным резистором.
Легко подключается к Arduino и позволяет создавать устройства, управляемые светом.

Схема подключения датчика освещённости порогового (без аналогового выхода)

Ниже представлено изображение со схемой подключения датчика освещенности.

Подключение датчика освещённости
Подключение датчика освещённости

Код для подключения датчика освещенности порогового (без аналогового выхода)

В примере ниже показано, как подключить вывод датчика освещенности порогового (без аналогового выхода) к монитору последовательного порта платы (вывод можно посмотреть в мониторе порта Arduino IDE).

void setup() {
  pinMode(13, OUTPUT);
  pinMode(A1, INPUT);
}

void loop() {
   // считываем данные с датчика и выводим на монитор порта
   if (digitalRead(A1) == HIGH) {
      digitalWrite (13, LOW);
  }
   if (digitalRead(A1) == LOW) {
      digitalWrite (13, HIGH);
  }
}

Скачать файл с кодом, формат .INO: Датчик освещенности пороговый

Датчик пламени пороговый

Инфракрасный датчик огня (пламени) используется в проектах пожарной сигнализации. Датчик представляет собой плату с компаратором и инфракрасным диодом, который реагирует на длину волны в диапазоне 760-1100 нм.

Основные характеристики:

  1. расстояние срабатывания: до 1 м;
  2. угол обнаружения: до 60°;
  3. напряжение питания: 3.3 – 5 В.

Схема подключения датчика пламени порогового

Ниже на изображении представлена схема подключения датчика пламени.

Подключение датчика пламени
Подключение датчика пламени

Код для подключения датчика пламени порогового

В примере ниже показано, как подключить вывод датчика пламени порогового к монитору последовательного порта платы (вывод можно посмотреть в мониторе порта Arduino IDE).

#define DIGITAL_FIRE_SENSOR 2 // цифровой пин 2  
#define ANALOG_FIRE_SENSOR A0 // аналоговый пин на А0  
  
void setup() {  
 pinMode(DIGITAL_FIRE_SENSOR, INPUT); // определяем пины как входы 
 pinMode(ANALOG_FIRE_SENSOR, INPUT);  
 Serial.begin(9600); // подключение монитора порта 
}  
  
void loop() {  
  int digitalValue = digitalRead(DIGITAL_FIRE_SENSOR); // получение данных 
  Serial.println(digitalValue); // данные в монитор порта 
  delay(100); // задержка 0.1 секунда   
  
  int analogValue = analogRead(ANALOG_FIRE_SENSOR);  
  Serial.println(analogValue);  
  delay(100);  
}  

Скачать файл с кодом, формат .INO: Датчик огня

Датчик температуры/влажности DHT11

Цифровой датчик температуры и влажности является составным датчиком, который содержит калиброванный цифровой выходной сигнал с показаниями температуры и влажности.

Модуль цифрового датчика DHT-11 — хороший и недорогой вариант для различных робототехнических проектов, где необходимо измерять температуру и/или влажность.

Датчик имеет высокую надежность и превосходную долговременную стабильность работы.

Сенсор включает в себя резистивный компонент измерения влажности и компонент измерения температуры с отрицательным температурным коэффициентом (NTC), которые подключены к высокопроизводительному 8-битному микроконтроллеру.

Подключается посредством трех стандартных проводов. Данные о температуре и влажности передаются по одному сигнальному проводу.

Схема подключения датчика температуры/влажности DHT11

На изображении ниже представлена схема подключения датчика температуры и влажности.

Подключение датчика DHT11
Подключение датчика DHT11

Код для подключения датчика температуры/влажности DHT11

В примере ниже показано, как подключить вывод датчика температуры/влажности DHT11 к монитору последовательного порта платы (вывод можно посмотреть в мониторе порта Arduino IDE).

#include <DHT.h>;      // подключаем библиотеку для датчика
DHT dht(2, DHT11);  // сообщаем на каком порту будет датчик

void setup() {
   dht.begin();                // запускаем датчик DHT11
   Serial.begin(9600);   // подключаем монитор порта
}

void loop() {
   // считываем температуру (t) и влажность (h)
   float h = dht.readHumidity();
   float t = dht.readTemperature();

   // выводим температуру (t) и влажность (h) на монитор порта
   Serial.print("Humidity: ");
   Serial.println(h);
   Serial.print("Temperature: ");
   Serial.println(t);
}

Скачать файл с кодом, формат .INO: Датчик температуры/влажности DHT11

Датчик угарного газа MQ-7

Датчик MQ7  — это датчик угарного газа CO. Основным источником выделения СО является сгорание углеродного топлива при недостаточном количестве кислорода. Углерод «не догорает» и вместо углекислого газа CO2, в атмосферу выбрасывается угарный газ CO.  Он чрезвычайно ядовит, но при этом не обладает ни цветом, ни запахом. Попав в помещение с угарным газом, вы только по косвенным симптомам поймете, что подвергаетесь воздействию яда.

Основным рабочим элементом датчика является нагревательный элемент, за счет которого происходит химическая реакция, в результате которой получается информация о концентрации газа. Поэтому во время работы сенсор будет горячим. Для получения стабильных показаний новый сенсор необходимо один раз прогреть (оставить включённым) в течение 48 часов. После этого стабилизация после включения будет занимать около минуты. Выдаваемый датчиком аналоговый сигнал пропорционален концентрации угарного газа. Показания датчика подвержены влиянию температуры и влажности окружающего воздуха. Поэтому в случае использования датчика MQ7 в изменяющейся среде, при необходимости получения точных показаний, понадобится реализовать компенсацию этих параметров.

Схема подключения датчика угарного газа MQ-7

На изображении ниже представлена схема подключения датчик угарного газа.

Подключение модуля MQ-7
Подключение модуля MQ-7

Код для подключения датчика угарного газа MQ-7

В примере ниже показано, как подключить вывод датчика угарного газа MQ-7 к монитору последовательного порта платы (вывод можно посмотреть в мониторе порта Arduino IDE).



int analogMQ7 = A5; // Пин к которому подключен A0
int val = 0; // Создаем переменную

void setup()
{
  Serial.begin(9600); // Задаем скорость передачи данных
  Serial.println("Warming-UP"); // Печать текста "Разогрев"
  delay(6000); // Пауза 6 с
  Serial.println("Measurement"); // Печать текста "Измерение"
}

void loop()
{
  val = analogRead(analogMQ7); // Считываем значение с порта A5
  Serial.print("CO = " ); // Печать текста
  Serial.println(val); // Вывод значение переменной val
  delay(5000); // Пауза
} 

Скачать файл с кодом, формат .INO: Датчик угарного газа MQ-7

Датчик уровня воды

Датчик уровня воды может быть использован в проектах, где важно следить за колебанием уровня воды около конкретной отметки. Сигнал датчика обрабатывается через аналоговый вывод S. Датчик работает по принципу изменения сопротивления в зависимости от того, насколько глубоко он опущен в воду. Напряжение питания датчика 3.3 – 5 В.

С помощью представленного ниже кода можно вывести в монитор порта показания датчика. Данные снимаются в реальном времени, диапазон от 0 до 1023, где 0 – сухой датчик. Чем выше значение показания датчика, тем выше уровень воды.

Датчик устанавливается вертикально к поверхности воды, контакты должны быть хорошо защищены от воздействия влаги для корректной и долгой работы устройства.

Схема подключения датчика уровня воды

На изображении ниже представлена схема подключения датчика уровня воды.

Подключение датчика уровня воды
Подключение датчика уровня воды

Код для подключения датчика уровня воды

В примере ниже показано, как подключить вывод датчика уровня воды к монитору последовательного порта платы (вывод можно посмотреть в мониторе порта Arduino IDE)

 #define ANALOG_WATERSENSOR A0 // датчик на аналоговом пине А0

void setup() {
Serial.begin(9600); // подключение монитора порта
}

void loop() {
int sensorValue = analogRead(ANALOG_WATERSENSOR); // данные считываются с аналогового порта А0
Serial.print("Analog value: "); // фраза, выводимая перед показаниями датчика
Serial.println(sensorValue); // данные в мониторе порта
delay(1000); // задержка 1 секунда
} 

Скачать файл с кодом, формат .INO: Датчик уровня воды

Плата реле одноканальная

Модуль на основе электромеханического реле SRD-05VDC-SL-C. Управляющее напряжение 5В. Подключаемая нагрузка до 10А, 30В DC, 250В AC. Может использоваться в различных проектах, в том числе, и на Arduino, где требуется коммутировать напряжение, например включать освещение или переменное напряжение в сети 220 вольт. По своей сути это рубильник с электронным управлением.

Схема подключения платы реле одноканальной

На изображении ниже представлена схема подключения платы реле одноканальной.

Подключение реле 1 канал
Подключение реле 1 канал

Код для подключения платы реле одноканальной

В примере ниже показано, как подключить реле к контроллеру. При срабатывании электромеханическое реле будет издавать щелчки в соответствии с установленным интервалом включения и выключения.


#define PIN_RELAY 4 // Определяем пин, используемый для подключения реле

// В этой функции определяем первоначальные установки
void setup()
{
  pinMode(PIN_RELAY, OUTPUT); // Объявляем пин реле как выход
  digitalWrite(PIN_RELAY, HIGH); // Выключаем реле - посылаем высокий сигнал
}
void loop()
{
  digitalWrite(PIN_RELAY, LOW); // Включаем реле - посылаем низкий уровень сигнала
  delay(5000);
  digitalWrite(PIN_RELAY, HIGH); // Отключаем реле - посылаем высокий уровень сигнала
  delay(5000);
}

Скачать файл с кодом, формат .INO: Реле

Датчик барометр/термометр GY-68 BMP180

Данный датчик очень высокоточен и экономичен в расходе энергии.  Степень точности измерения можно выставлять программно, однако следует понимать, что чем выше точность измерений датчика GY-68, тем выше будет и его энергопотребление.

Помимо всего прочего, модуль обладает встроенным альтиметром и может определить высоту над уровнем моря с погрешностью до 17 см.

Барометр/термометр GY-68 BMP180 имеет собственную температурную компенсацию проводимых измерений.

Схема подключения датчика барометра/термометра GY-68 BMP180

На изображении ниже представлена схема подключения датчика.

Подключение GY-68 BMP-180
Подключение GY-68 BMP-180

Код для подключения датчика барометра/термометра GY-68 BMP180

В примере ниже показано, как подключить вывод датчика барометра/термометра GY-68 BMP180 к монитору последовательного порта платы (вывод можно посмотреть в мониторе порта Arduino IDE). Для корректной работы кода нужно подключить библиотеки SFE_BMP180.h и Wire.h.


#include <SFE_BMP180.h>
#include <Wire.h>

SFE_BMP180 pressure; // Объявляем переменную для доступа к SFE_BMP180

void setup()
{
  Serial.begin(9600); // Задаем скорость передачи данных
  Serial.println("REBOOT"); // Печать текста "Перезагрузка"

  if (pressure.begin()) // Инициализация датчика
    Serial.println("BMP180 init success"); // Печать текста "BMP180 подключен"
  else { // В противном случаи, датчик не подключен
    Serial.println("BMP180 init fail\n\n"); // Печать текста "BMP180 не подключен"
    while (1); // Пауза.
  }
}

void loop()
{
  char status;
  double T, P, p0, a;

  /* Так как давление зависит от температуры, надо сначала узнать температуру
    Считывание температуры занимает какое-то время.
    Если все хорошо, функция pressure.startTemperature вернет status с количеством миллисекунд
    которые нужно подождать. Если какая-то то проблема, то функция вернет 0.
  */

  status = pressure.startTemperature(); // Считывание показания
  if (status != 0) { // Если значение status не 0, выполняем следующую команду.
    delay(status); // Ждем
    status = pressure.getTemperature(T); // Полученные показания, сохраняем в переменную T
    if (status != 0) { // Если все хорошо, функция вернет 1, иначе вернет 0
      Serial.print("Temperature: "); // Печать текста "Температура"
      Serial.print(T, 2); // Печать показания переменной "Т"
      Serial.println(" C, "); // Печать текста "С"

      /* Определяем показания атмосферного давления
        Параметр указывает расширение, от 0 до 3 (чем больше расширение, тем больше точность, тем дольше ждать)
        Если все хорошо, функция pressure.startTemperature вернет status с количеством миллисекунд
        которые нужно подождать. Если какая-то то проблема, то функция вернет 0.
      */

      status = pressure.startPressure(3); // Считывание показания
      if (status != 0) { // Если значение status не 0, выполняем следующую команду.
        delay(status); // Ждем
        status = pressure.getPressure(P, T); // Полученные показания, сохраняем в переменную P
        if (status != 0) { // Если все хорошо, функция вернет 1, иначе вернет 0
          Serial.print("Absolute pressure: "); // Печать текста "Атмосферное давление"
          Serial.print(P, 2); // Печать показания переменной mBar
          Serial.print(" mbar, "); // Печать текста "mBar"
          Serial.print(P * 0.7500637554192, 2); // Печать показания в mmHg
          Serial.println(" mmHg");
        } // Печать текста "mmHg"

        else Serial.println("error retrieving pressure measurement\n");
      } // Ошибка получения давления
      else Serial.println("error starting pressure measurement\n");
    } // Ошибка запуска получения давления
    else Serial.println("error retrieving temperature measurement\n");
  } // Ошибка получения температуры
  else Serial.println("error starting temperature measurement\n"); // Ошибка запуска получения температуры
  delay(5000); // Пауза в 5с
}

Скачать файл с кодом, формат .INO: Датчик BMP180

Датчик углеводородных газов и дыма MQ-2

Датчик газа MQ2 предназначен для обнаружения присутствия углеводородов и дыма в воздухе, а так же водорода.  Может работать как в бинарном режиме (пороговое значение задаётся потенциометром), так и в аналоговом для прямого подключения к микроконтроллеру.

Может работать как в бинарном режиме (пороговое значение задаётся потенциометром), так и в аналоговом для прямого подключения к микроконтроллеру.

Диапазон измерений датчик газа MQ-2:

  • Пропан: 0,2 – 5 промилле
  • Бутан: 0,3 – 5 промилле
  • Метан: 5 – 20 промилле
  • Водород: 0,3 – 5 промилле
  • Пары спиртов: 0,1 – 2 промилле

Схема подключения датчика углеводородных газов и дыма MQ-2

Ниже на изображении представлена схема подключения датчика газов MQ-2.

Подключение модуля MQ-2
Подключение модуля MQ-2

Код для подключения датчика углеводородных газов и дыма MQ-2

В примере ниже показано, как подключить вывод датчика углеводородных газов и дыма MQ-2 к монитору последовательного порта платы (вывод можно посмотреть в мониторе порта Arduino IDE).

 
#define smokePin A0    // определяем аналоговый выход к которому подключен датчик
int sensorThres = 400; // пороговое значение АЦП, при котором считаем что газ есть

void setup() {
  Serial.begin(9600);   // Устанавливаем скорость порта 9600 бод
}

void loop() {
  int analogSensor = analogRead(smokePin);    // считываем значения АЦП с аналогового входа
  // к которому подключен датчик
  Serial.print (analogSensor);                // выводим в порт значение АЦП сигнала с датчика

  // Проверяем, достигнуто ли пороговое значение
  if (analogSensor > sensorThres) {  // если значение больше допустимого...
    Serial.println(" Gaz!");         // выводим в порт надпись, что газ есть
  }
  else {                             // иначе...
    Serial.println(" normal");        // выводим в порт надпись, что газа нет
  }
  delay(500);  // задержка в 500 миллисекунд.
}

 

Скачать файл с кодом, формат .INO: Датчик углеводородных газов и дыма MQ-2

Коробка пластиковая цветная, 7 ячеек

Бокс для хранения модулей и компонентов — это полезная и удобная составляющая нашего набора.

Небольшие модули и радиодетали могут быть удобно размещены в маленькой коробочке. Бокс плотно закрывается, поэтому детали будет сложно потерять. Коробка состоит из прозрачной крышки, позволяющей видеть содержимое, с замком и основания, которое разделено несъемными перегородками на семь ячеек для хранения принадлежностей.

Коробочка сделана из прочного пластика, поэтому не боится падений с небольшой высоты. Клипса, закрывающая крышку, не позволит компонентам выпасть из бокса.

Яркий цвет коробочки привлекает внимание, а в комплекте с компонентами весь набор станет отличным подарком.

Габариты бокса (ДШВ): 125х175х50 мм