Счетчик входящих людей на Ардуино

Счетчик посетителей в магазине своими руками

Подсчет посетителей магазина или комнаты на Arduino ► простой и интересный проект для начинающих, который не претендует на большую точность подсчета.

Подсчет входящих/выходящих людей в помещении на Arduino — простой и интересный проект для начинающих, который не претендует на большую точность подсчета. Представленный вариант позволит определять сколько человек находится в комнате, а также сколько людей заходило в магазин в течении всего периода измерений с выводом всей информации на монитор порта Arduino IDE 1.8.9 и на LCD дисплей.

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

Как сделать датчик проходов Ардуино

Для этого проекта нам потребуется:

  • плата Arduino Uno / Arduino Nano / Arduino Mega;
  • 2 лазерных модуля KY-008;
  • 2 модуля с фоторезистором;
  • светодиод и резистор;
  • LCD дисплей 1602 Ардуино;
  • провода папа-мама.

Все необходимое для изучения Ардуино можно недорого купить здесь

Схема устройства для подсчета
Схема устройства для подсчета входящих людей

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

Скетч для счетчика прохода на Ардуино

int x = 0; // количество людей в помещении сейчас
int y = 0; // количество входивших людей за день
byte w = 0;

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C LCD(0x27, 20, 2);

void setup() {
  LCD.init();
  LCD.backlight();
  Serial.begin(9600);
  pinMode(A1, INPUT);
  pinMode(A2, INPUT);
  pinMode(10, OUTPUT);
}

void loop() {
  // выводим данные на LCD дисплей
  LCD.setCursor(0, 0);
  LCD.print("People Now - ");
  LCD.print(x);
  LCD.setCursor(0, 1);
  LCD.print("People Total - ");
  LCD.print(y);

  // выводим данные на монитор порта
  Serial.print("People Now - ");
  Serial.println(x);
  Serial.print("People Total - ");
  Serial.println(y);
  delay(100);

  // если в помещении есть человек, включаем свет
  if (x >= 1) { digitalWrite(10, HIGH); }
  if (x < 1)  { digitalWrite(10, LOW); }

  // считываем данные с датчиков
  int TSOP1 = analogRead(A1);
  Serial.print("T1 - ");
  Serial.println(TSOP1);
  int TSOP2 = analogRead(A2);
  Serial.print("T2 - ");
  Serial.println(TSOP2);

  if (TSOP1 < 500) { Serial.println("1 Sensor"); w = 1; }
  if (TSOP2 < 500) { Serial.println("2 Sensor"); w = 2; }

  if (TSOP1 > 500) {}
  if (TSOP2 > 500) {}

  // цикл запускается при срабатывании первого датчика
  // ждем, пока не сработает прерывание на втором датчике
  // когда лазер прерывается, прибавляем людей и выходим из цикла
  while (w == 1) {
    int TSOP2 = analogRead(A2);
    Serial.print("T2 - ");
    Serial.println(TSOP2);

    if (TSOP2 < 500) {
      Serial.println("2 Sensor, While 1");
      x = x + 1;
      y = y + 1;
      delay(2000); w = 0;
    }
    if (TSOP2 > 500) {}
  }

  // цикл запускается при срабатывании второго датчика
  // ждем, пока не сработает прерывание на первом датчике
  // когда лазер прерывается, вычитаем людей и выходим из цикла
  while (w == 2) {
    int TSOP1 = analogRead(A1);
    Serial.print("T1 - ");
    Serial.println(TSOP1);

    if (TSOP1 < 500) {
      Serial.println("1 Sensor, While 2");
      x = x - 1;
      if (x < 0) { x = 0; }
      delay(2000); w = 0;
    }
    if (TSOP1 > 500) {}
  }
}

Пояснения к коду:

  1. переменная byte w; используется для входа/выхода из циклов while в скетче;
  2. программа может работать без LCD дисплея, вся нужная информация дублируется на мониторе порта Arduino IDE.

Оптический счетчик посетителей можно поставить у двери или турникета помещения (организации), для подсчета количества посетителей за день, неделю или месяц. Также можно сделать умное освещение для автоматического включения света при наличии людей в комнате. Устройство не обладает точностью и его можно легко обмануть, для этого нужно пройти сразу нескольким людям вплотную друг к другу.

1 Star2 Stars3 Stars4 Stars5 Stars (2 votes, average: 5,00 out of 5)
Загрузка...

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *