4.8. Подключение датчика присутствия HC-SR501
Рассмотрим еще один датчик, связанный с обеспечением безопасности для умного дома. Это модуль датчика присутствия HC-SR501 на основе пироэлектрического эффекта (рис. 4.39).
SR501
Рис. 4.39. Датчик присутствия HC-SR501.

Состоит из самого PIR-датчика (Pyroelectric (Passive) InfraRed sensor) и схемы управления. Такие датчики часто используются в охранных системах и в быту для обнаружения движения в помещении.
Модуль имеетс два переменных резистора и перемычку для настройки режима (рис. 4.40). Потенциометр Sx регулирует чувствительность прибора. Чувствительность влияет на размер детектируемого объекта и дистанцию обнаружения объекта.


 
Потенциометр Tx регулирует время срабатывания T. Если датчик обнаружил движение, он генерирует на выходе положительный импульс длиной T.
Перемычка переключает режим датчика.  В режиме L на выходе при каждом срабатывании датчика появляется отдельный импульс. В режиме H при срабатывании датчика на выходе будет сигнал HIGH в течении некоторого периода времени T. По окончании периода, сигнал на выходе вернется в исходное состояние, и датчик будет ждать следующего срабатывания.
Рассмотрим подключение модуля датчика присутствия HC-SR501 к плате Arduino Mega и модулю NodeMcu ESP8266.

4.8.1. Подключение модуля датчика присутствия HC-SR501 к плате Arduino Mega

Для подсчета срабатываний модуля датчика HC-SR501 будем использовать внешние прерывания на вход 18 платы Arduino Mega. Это прерывание int5. Схема подключения модуля датчика присутствия HC-SR501 к плате Arduino Mega показана на рис. 4.41.


 Рис. 4.41. Схема подключений датчика присутствия HC-SR501 к плате Arduino Mega

Загрузим на плату Arduino Mega скетч вывода счетчика срабатываний  датчика HC-SR501 и вывода в последовательный порт Arduino. Счетчик инкрементируется при переходе уровня на входе 18 с LOW на HIGH – это процедура обработки внешнего прерывания  incCounterHCSR501(). Каждые 2000 мсек (INTERVAL_GET_DATA=2000), мы выводим значение счетчика в последовательный порт.
Содержимое скетча представлено в листинге 4.16.
Листинг 4.16

#define INTERVAL_GET_DATA 2000  // интервала измерений, мс 
// пин, к которому подключен датчик
#define HCSR501PIN         18
// счетчик срабатыаний
int counterHCSR501=0;


// переменная для интервала измерений
unsigned long millis_int1=0;
 
void setup() {
  Serial.begin(9600);
  attachInterrupt(5,incCounterHCSR501,RISING);
}

void loop() {
   if(millis()-millis_int1 >= INTERVAL_GET_DATA) {
      // получение данных счетчика срабатываний HC-SR501
      int counter= get_data_counterHCSR501();
      // выводим значения газа в ppm
      Serial.print("counter=");
      Serial.println(counter);
      // старт интервала отсчета
      millis_int1=millis();
   }
}

// получение данных счетчика срабатываний HC-SR501
int get_data_counterHCSR501()  {
  // вернуть значение счетчика срабатываний HC-SR501
  return counterHCSR501;
}

void incCounterHCSR501() {
   // инкремент счетчика
   counterHCSR501=counterHCSR501+1;
}


Загрузим скетч на плату Arduino Mega, откроем монитор последовательного порта и увидите вывод значений счетчика (рис. 4.42).
 


Рис. 4.42. Вывод счетчика срабатываний датчика присутствия HC-SR501 в монитор последовательного порта.

Скачать данный скетч можно на сайте www.arduino-kit.ru по ссылке .

4.8.2. Подключение модуля датчика присутствия HC-SR501 к модулю NodeMcu ESP8266

Теперь рассмотрим подключение модуля датчика присутствия HC-SR501 к модулю NodeMcu ESP8266. Для подсчета срабатываний модуля датчика HC-SR501 будем использовать внешние прерывания на вход 18 модулю NodeMcu ESP8266. Это прерывание int5. Схема подключения модуля датчика присутствия HC-SR501 к модулю NodeMcu показана на рис. 4.43.

Рис. 4.43. Схема подключений датчика присутствия HC-SR501 к NodeMcu ESP8266

Загрузим на модуль NodeMcu скетч вывода счетчика срабатываний  датчика HC-SR501 и вывода в последовательный порт Arduino. Счетчик инкрементируется при переходе уровня на входе D6 с LOW на HIGH – это процедура обработки внешнего прерывания  incCounterHCSR501(). Каждые 2000 мсек (INTERVAL_GET_DATA=2000), мы выводим значение счетчика в последовательный порт.
Содержимое скетча представлено в листинге 4.16.

Листинг 4.17

#define INTERVAL_GET_DATA 2000  // интервала измерений, мс 
// пин, к которому подключен датчик
#define HCSR501PIN         D6
// счетчик срабатыаний
int counterHCSR501=0;


// переменная для интервала измерений
unsigned long millis_int1=0;
 
void setup() {
  Serial.begin(9600);
  attachInterrupt(HCSR501PIN,incCounterHCSR501,RISING);
}

void loop() {
   if(millis()-millis_int1 >= INTERVAL_GET_DATA) {
      // получение данных счетчика срабатываний HC-SR501
      int counter= get_data_counterHCSR501();
      // выводим значения газа в ppm
      Serial.print("counter=");
      Serial.println(counter);
      // старт интервала отсчета
      millis_int1=millis();
   }
}

// получение данных счетчика срабатываний HC-SR501
int get_data_counterHCSR501()  {
  // вернуть значение счетчика срабатываний HC-SR501
  return counterHCSR501;
}

void incCounterHCSR501() {
   // инкремент счетчика
   counterHCSR501=counterHCSR501+1;
}


Загрузим скетч на модуль NodeMcu, откроем монитор последовательного порта и увидите вывод значений счетчика (рис. 4.44).

 

Рис. 4.44. Вывод счетчика срабатываний датчика присутствия HC-SR501 в монитор последовательного порта

Скачать данный скетч можно на сайте www.arduino-kit.ru по ссылке .



1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31  32  33 

 

Вверх