Presence Sensor With NodeMCU ESP8266

by Fernando Koyanagi in Circuits > Microcontrollers

4097 Views, 7 Favorites, 0 Comments

Presence Sensor With NodeMCU ESP8266

Sensor de presença com NodeMCU ESP8266
Sem título.png

Our goal today is to create a motion detection system in an environment using a PIR HC-SR501 presence sensor and a continuous buzzer to trigger as an alarm. Our assembly today looks like a little robot, but that's just because I used a soldering iron to fix the sensor and make it easier to view on the video. The microcontroller we use in this project is the WiFi ESP8266 NodeMcu ESP12E.

In the video, you can see that the circuit we set up is very simple. The NodeMCU is powered by USB, and this microcontroller is connected directly to the 5v buzzer. When a 3v3 output occurs on top of this buzzer, it works perfectly. As for the PIR sensor, it has positive / negative power, and it has the signal pin that only sends 0 or 1. It is pretty simple to move because it is binary. Next to it, we have two control trimpots, one for time and one for sensitivity.

WiFi ESP8266 NodeMcu ESP-12E

WiFi ESP8266 NodeMcu ESP-12E.png

Here, I will show you the photo of the NodeMCU, and all of its pinning.

PIR HC-SR501 - Features

PIR HC-SR501.png

In the sensor image on the left, I point to where the two Trimpots are, which are the adjustment knobs. In the device that controls the time, you will adjust the delay, which is the time it will take for the assembly to reactivate after the alarm is triggered. With the sensitivity button, you will point out the trigger distance of the sensor. The right side shows the top view of the sensor.

The model PIR HC-SR501 also has three pins: VCC, GND, and OUT.

Power supply: from 5V to 20V.

Output Voltage: 3.3V.

The potentiometer is for time and sensitivity adjustment.

And, finally, the opening angle: approximately 120 degrees.

Continuous Buzzer

Buzzer Contínuo.png

Here, we have the buzzer that, for those who do not know, works as a kind of speaker. There are two types. We have a micro-controlled model, which is the one we use today, which receives power and beeps, in addition to the model that doesn’t have the microcontroller inside it, that is, it doesn’t have the oscillator inside it. Instead, you have to send the oscillation. The most common, however, is the first model I mentioned.

Assembly

Montagem.png

In this image, we have today’s design scheme. Let's connect the sensor to the NodeMCU via input D4. The output of the microcontroller to the buzzer is D1.

Code

We begin by defining the constants we will use during our code.

//definição do pino de saída do sensor PIR
#define PIN_SENSOR D4 //definição do pino de entrada do Buzzer #define PIN_BUZZER D1

Setup

In the setup () function, we will configure the pins used for communicating with the sensor and the buzzer, by means of the "pinMode" command.

void setup() {
//abaixo vamos confirar cada um dos pinos como entrada ou saída de dados pinMode(PIN_SENSOR, INPUT); pinMode(PIN_BUZZER, OUTPUT); }

Loop

In the loop () function, we will read the sensor to see if it has detected any movement. If it is detected, we will trigger the buzzer to sound like an alarm.

void loop() {
//faz a leitura do sensor de presença (retorna HIGH ou LOW) int sinal = digitalRead(PIN_SENSOR); //HIGH : movimento detectado if(sinal == HIGH){ //aciona o Buzzer digitalWrite(PIN_BUZZER, HIGH); } //LOW : nenhum movimento detectado else{ //desativa o buzzer digitalWrite(PIN_BUZZER, LOW); } }