Подсчет входящих/выходящих людей в помещении на 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) {} } }
Пояснения к коду:
- переменная
byte w;используется для входа/выхода из циклов while в скетче; - программа может работать без LCD дисплея, вся нужная информация дублируется на мониторе порта Arduino IDE.
Заключение. Оптический счетчик посетителей можно поставить у двери или турникета помещения (организации), для подсчета количества посетителей за день, неделю или месяц. Также можно сделать умное освещение для автоматического включения света при наличии людей в комнате. Устройство не обладает точностью и его можно легко обмануть, для этого нужно пройти сразу нескольким людям вплотную друг к другу.










А можно в качестве фоторезистора использовать LM393? Можно ли собрать эту схему на макетной плате? Если да то как?
Насколько я понял, вы имеете ввиду цифровой датчик освещенности Ардуино — он тоже изготовлен на основе фоторезистора, так что можно. Сборка на макетной плате зависит, только от того, откуда руки растут 🙂 В теории можно любую схему на макетной плате собрать
Можно ли передавать данные по Wi-fi, и собирать их для стат анализа, на пример с помощью Node MCU?
Да, возможно все! Главное верить в себя.
здравствуйте. Вы готовите проекты для школьников?
Да
Добрый день! собрал схему записал скетч о плата работает непонятно, двойное промаргивание RX примерно каждые 3 секунды, при последовательном замыкании датчика монитор порта отображает посетителей не всегда, светодиод включается примерно на 3-4 секунды потом сброс. такое чувство гдето зацикливание, монитор не ставил. нужно только включаь выключать свет
А можно вместо лазерных дальномеров поставить УЗ-дальномеры?
Конечно можно. Вот примеры проектов с УЗ датчиками:
— подсветка лестницы
— парктроник
Добрый день. скажите, я новичок в познавании Ардуино, интересует куда подсоединить дисплей?
Все просто — https://xn--18-6kcdusowgbt1a4b.xn--p1ai/lcd-1602-arduino/
Надо использовать поиск, он создан для людей