Содержание

Инфракрасный датчик контроля KB874

Описание

Создаете беспроводную сигнализацию или просто хотите знать сколько человек за день проходит через определенную дверь? Воспользуйтесь инфракрасным датчиком контроля.

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

Комплект состоит из передатчика и приёмника. Передатчик постоянно излучает инфракрасный сигнал с длиной волны 850 нм, а приемник, устанавливаемый напротив передатчика принимает его и выдает на выходе логическую 1. В обычном состоянии сигнал от передатчика к приемнику поступает непрерывно. Как только происходит прерывание сигнала (кто-то или что-то пересекли невидимый луч) - контроллер выдает логический 0. Подсчет количества прерываний за определенный промежуток времени позволит сделать выводы о том, сколько человек прошло в помещение.

Передатчик и приемник снабжены удобными отверстиями для крепления диаметром 3,2 мм.

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

Приемник подключается к контроллеру с помощью трех проводов:

Технические характеристики

Физические размеры

Примеры подключения и использования

Вывод значений на экран

Задача: Подсчёт количества пересечений датчика (например, посетителей магазина) и вывод значения в монитор Serial-порта.

Схема подключения:

Скетч для загрузки:

const int OP = 11;            //вывод подключения белого провода приёмника

int quant = 0;                //счётчик для подсчёта количества посетителей
boolean lastState = LOW;      //последнее состояние оптопары

void setup() {
  pinMode(OP, INPUT);         //установка режима вывода
  Serial.begin(9600);         //инициализация монитора порта
}

void loop() {
  boolean curState = digitalRead(OP); //текущее состояние оптопары
  
  if (curState == HIGH && lastState == LOW) { //если датчик сработал
    quant++; //увеличить количество посетителей
    Serial.print("Customers: "); //вывести надпись на дисплей
    Serial.println(quant); //вывести значение на дисплей
  }  
  
  delay(50); //добавление небольшой задержки
  lastState = curState; //запомнить последнее состояние оптопары
}

Вывод значений на дисплей

Задача: Подсчёт количества пересечений датчика (например, посетителей магазина) и вывод значения на четырёхзначный индикатор. При каждом срабатывании датчика будет воспроизводиться звуковой сигнал.

Схема подключения:

Скетч для загрузки:

#include "SevenSegmentTM1637.h" //подключение библиотеки для работы с дисплеем

const byte PIN_CLK = 4;       //вывод контакта CLK дисплея
const byte PIN_DIO = 5;       //вывод контакта DIO дисплея
const int OP = 11;            //вывод подключения белого провода приёмника
const int BUZ = 3;            //вывод подключения модуля зуммера 

SevenSegmentTM1637    display(PIN_CLK, PIN_DIO); //создание объекта дисплея
int quant = 0;                //счётчик для подсчёта количества посетителей
boolean lastState = LOW;      //последнее состояние оптопары

void setup() {
  pinMode(OP, INPUT);         //установка режима вывода
  pinMode(BUZ, OUTPUT);       //установка режима вывода

  display.begin();            //инициализация дисплея
  display.setBacklight(100);  //установка яркости в 100%
  display.print("INIT");      //отображение надписи INIT (инициализация) на дисплее
  delay(1000);                //задержка в 1 секунду
  display.clear();            //очистка дисплея
}

void loop() {
  boolean curState = digitalRead(OP); //текущее состояние оптопары
  if (curState == HIGH && lastState == LOW) { //если датчик сработал
    quant++; //увеличить количество посетителей
    display.print(quant); //вывести значение на дисплей
    tone(BUZ, 294, 300); //подать звук
  }  
  delay(50); //добавление небольшой задержки
  lastState = curState; //запомнить последнее состояние оптопары
}