Автоматический счетчик посетителей и контроль света в комнате на Arduino

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

Автоматический счетчик посетителей на Arduino: внешний вид

Необходимые компоненты

Плата Arduino Uno
ЖК дисплей 16х2
Реле (на 5 В)
Резисторы
Инфракрасный датчик
Макетная плата
Соединительные провода
Светодиод
Транзистор BC547

Основные принципы работы устройства

Рассматриваемый нами проект цифрового счетчика посетителей основан на использовании таких компонентов как датчики, двигатели, плата Arduino Uno и т.д. Этот счетчик будет способен подсчитывать количество посетителей в двух (обоих) направлениях. То есть он будет увеличивать счетчик посетителей когда человек проходит в центр/офис/стадион через входные ворота и уменьшать счетчик посетителей когда человек выходит из центра/офиса/стадиона через выходные ворота. Кроме указанных применений подобный счетчик можно также использовать на автопарковках и других общественных местах.

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

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

Принцип обнаружения посетителя с помощью инфракрасного датчика

Работа схемы

Структурно рассматриваемое нами устройство состоит из 4-х модулей: модуль датчиков, модуль управления, модуль отображения и модуль реле.

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

Схема модуля инфракрасных датчиковМодуль управления построен на основе платы Arduino UNO, которая используется для управления всем устройством. Выходы компараторов подсоединены к цифровым контактам 14 и 19 Arduino. Плата Arduino считывает сигналы с этих цифровых контактов и на их основе выдает соответствующие управляющие сигналы на реле, которое управляет включением и выключением цепи электрической лампочки (bulb).

Модуль отображения состоит из ЖК дисплея 16×2, на котором будет отображаться число людей, находящихся в комнате и статус света (включен/выключен) когда никого нет в комнате.

Модуль реле состоит из транзистора BC547 и реле на 5 В, управляющим включением/выключением электрической лампочки. Транзистор необходим для управления реле поскольку плата Arduino не обеспечивает необходимые значения токов и напряжений для этого. Плата Arduino будет подавать управляющие команды на транзистор, а он с помощью реле будет включать и выключать электрическую лампочку.

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

Схема автоматического счетчика посетителей в комнате на ArduinoВыходы инфракрасных датчиков непосредственно подключены к цифровым контактам Arduino 14(A0) и 19(A5). База транзистора через резистор подключена к контакту 2 Arduino. ЖК дисплей подсоединен к Arduino в 4-битном режиме. Контакты RS и EN ЖК дисплея подключены к контактам 13 и 12 Arduino. Контакты данных ЖК дисплея D4-D7 подключены к контактам 11-8 Arduino.

Исходный код программы

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

#include<LiquidCrystal.h>
LiquidCrystal lcd(13,12,11,10,9,8);
#define in 14
#define out 19
#define relay 2

Затем необходимо указать направление работы для инициализированных контактов (на ввод или на вывод) и инициализировать ЖК дисплей для работы.

Код программы для инициализации ЖК дисплея и задания режима работы контактов

Далее в цикле программы мы считываем выходы датчиков и инкрементируем и декрементируем значение счетчика посетителей. Также мы проверяем на равенство нулю значение этого счетчика. Если он равен нулю, то это значит что в комнате никого нет – в этом случае мы выключаем свет в комнате (выключаем электрическую лампочку при помощи транзистора и реле).

Код программы для анализа числа посетителей в комнате

Если же счетчик посетителей не равен нулю, то включаем свет. Также определим две функции: на вход и на выход посетителя.

Исходный код функций для инкрементирования и декрементирования числа посетителей в комнате

Далее представлен полный текст программы.

Видео, демонстрирующее работу схемы

(1 голосов, оценка: 5,00 из 5)
Загрузка...
1 513 просмотров

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

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