IoT: Sensor de movimento com o NodeMCU e BLYNK

3 03-03:00 dezembro 03-03:00 2016 — 15 Comentários

 

Step 1: Principais componentes

  • Resistor (1K, 2.2K and 330ohm)
  • LED
  • Breadboard
  • Cables

Step 2: O HC-SR501 “Passive Infrared (PIR) Motion Sensor”

Este módulo de sensor de movimento utiliza-se do sensor passivo de sinal infravermelho  LHI778 e o do circuito integrado BISS0001 para controlar como o “movimento deve ser detectado”.

O módulo possui sensibilidade ajustável que permite uma faixa de detecção de movimento de 3 a 7 metros.

O módulo também inclui ajustes de atraso de tempo e seleção de gatilho que permitem ajustes finos dentro de sua aplicação.

fkscpzbivo85exc-large

f19wasdivo85ey1-large

 

O link abaixo nos fornece mais detalhes do funcionamanto do sensor:

Arduino HC-SR501 Motion Sensor Tutorial

Step 3: O HW

O HW é muito simples. O sensor tem 3 pinos (+Power, GND e Saída).

É importante lembrar que a saída do HC-SR501 gera um sinal lógico de + 3.3V (ALTO) ou 0V (LOW), o qual É COMPATÍVEL com os níveis de entrada do NodeMCU, que também funciona com o nível 3.3V. Eu mantive a circuito com um conversor de nível para garantir caso seja utilizado algum outro sensor  com saída 5V. 

Assim, você precisará de um divisor de tensão para converter os níveis de sinal (veja o diagrama elétrico acima).

  • Saída do HC-SR501 ==> para a entrada do divisor de tensão
  • NodeMCU Pin D1 (GPIO 5) ==> para o ponto médio do Divisor de Tensão

Também incluíremos um LED no pino D7 (GPIO13), para uma visualização local.

Step 4: Testando o sensor

Primeiramente faremos um programinha simples para testar e calibrar o sensor.

Carregue o código abaixo no Arduino IDE:

/* HC-SR501 Motion Detector */
#define ledPin D7 // Red LED
#define pirPin D1 // Input for HC-SR501

int pirValue; // variable to store read PIR Value

void setup() 
{
  pinMode(ledPin, OUTPUT);
  pinMode(pirPin, INPUT);
  digitalWrite(ledPin, LOW);
}

void loop() 
{
  pirValue = digitalRead(pirPin);
  digitalWrite(ledPin, pirValue);
}

Ao fazer um movimento na frente do sensor, você verá o LED vermelho acender. Você poderá usar o código acima para ajustes no sensor, se necessário.

Se você não sabe como preparar o IDE do arduino para trabalhar com o NodeMCU, por favor de uma olhadinha em meu tutorial:

Do “blink” ao BLYNK, uma viagem pela “Internet das coisas” nas asas do NodeMCU ESP-12E

Step 5: Incluindo o BLYNK

Siga os Passos abaixo::

  • Crie um  New Project.
  • Defina um nome para o projeto (em meu caso: “Motion Detector“)

  • Selecione NodeMCU como HW Model
  • Copie o  AUTH TOKEN para ser adicionado ao seu código do IDE (o melhor é enviar-lo para seu email).
  • Inclua o “Widget”:  Push Notification.

  • Pressione “Play” (o triangulo no canto superior direito)

fyieb1nivo85k5p-large

Naturalmante o appicativo Blynk nesse ponto irá informar que o NodeMCU está off-line. antes de rodar o aplicativo Blynk, o codigo deve ser carregado e iniciado no módulo NodeMCU. Abaixo o código a ser ingressado no Arduino IDE:

/**************************************************************
 * IoT Motion Detector with Blynk
 * Blynk library is licensed under MIT license
 * This example code is in public domain.
 * 
 * Developed by Marcelo Rovai - 30 November 2016
 **************************************************************/
#include <ESP8266WiFi.h>

#define BLYNK_PRINT Serial    // Comment this out to disable prints and save space
#include <BlynkSimpleEsp8266.h>
char auth[] = "YOUR AUTH CODE HERE";

/* WiFi credentials */
char ssid[] = "YOUR SSID";
char pass[] = "YOUR PASSWORD";

/* HC-SR501 Motion Detector */
#define ledPin D7 
#define pirPin D1 // Input for HC-S501
int pirValue; // Place to store read PIR Value

void setup()
{
  Serial.begin(115200);
  delay(10);
  Blynk.begin(auth, ssid, pass);
  pinMode(ledPin, OUTPUT);
  pinMode(pirPin, INPUT);
  digitalWrite(ledPin, LOW);
}

void loop()
{
  getPirValue();
  Blynk.run();
}

/***************************************************
 * Get PIR data
 **************************************************/
void getPirValue(void)
{
  pirValue = digitalRead(pirPin);
  if (pirValue) 
  { 
    Serial.println("==> Motion detected");
    Blynk.notify("T==> Motion detected");  
  }
  digitalWrite(ledPin, pirValue);
}

Assim que o código é carregado e executado, verifique a aplicação BLYNK, a qual também deverá estar funcionando.

Faça um movimento na frente do sensor, você deverá receber uma mensagem em seu celular como a mostrada abaixo:

Abaixo o código completo para ser executado no Arduino IDE (não se esqueça de entrar com seus dados):

Observação sobre o código:

Vale a pena comentar que os testes para este projeto foram executados somente em laboratório. Para projetos envolvendo sistemas caseiros de alarmes o código funcionaria sem problemas, mas se o sensor perceber muitas variações de movimento ao mesmo tempo, poderíamos chegar a ter problemas. Neste caso, uma solução envolvendo “SimpleTimer” seria o aconselhável.

O ideal quando se desenvolve projetos com o Blink é manter-se na função void loop() somente a função Blynk.run(), movendo-se a getPirValue() para dentro de uma função de timer, por exemplo: timer.setInterval(1000L, getPirValue);

 

Step 6: Conclusão

Como sempre, espero que este projeto ajude outras pessoas a encontrar seu caminho no apaixonante mundo da eletrônica e do IoT!

Não deixe de visitar e seguir minha página: MJRoBot.org no Facebook

“Saludos desde el sur del mundo!” 😉

Um abraço e até o próximo post!

Obrigado

Marcelo

15 Respostas para IoT: Sensor de movimento com o NodeMCU e BLYNK

  1. 

    Olá, gostei muito do artigo sobre o sensor de presença, você teria como me ajudar no projeto de portão automatico na qual o motor é acionado por um RFId e o sensor bloquearia o motor ao detectar movimentação liberando-a assim que não detectar mais o movimento… desde já agradeço

    Curtir

  2. 

    Olá, gostei muito do projeto e gostaria de saber se a programação pode ser usada em Arduino Uno com módulo ESP8266

    Curtir

    • 

      Oi Gustavo. Legal que você gostou. Caso você queira mesmo usar os dois, Arduino + ESP, este último deveria funcionar como uma espécie de Shield e a programa deveria ser outro, onde o Arduino faria a lógica de controle e mandaria comandos AT para o ESP fazer a comunicação. Outra opção seria usar somente o ESP, sem o Arduino. Aí não teria problema, pois o programa seria exatamente esse. Você só teria que usar o Arduino de maneira especial para programar o ESP, ou programar direto via a IDE do Arduino Usando um conversor USB/Serial.

      Curtir

    • 

      Gostaria também de colocar duas notificações, uma para falar quando um LED acendeu e outra quando ele apaga

      Curtir

  3. 

    Vale a pena comentar que os testes para este projeto foram executados somente em laboratório. Para projetos envolvendo sistemas caseiros de alarmes o código funcionaria sem problemas, mas se o sensor perceber muitas variações de movimento ao mesmo tempo, poderíamos chegar a ter problemas. Neste caso, uma solução envolvendo “SimpleTimer” seria o aconselhável.

    O ideal quando se desenvolve projetos com o Blink é manter-se na função void loop() somente a função Blynk.run(), movendo-se a getPirValue() para dentro de uma função de timer, por exemplo: timer.setInterval(1000L, getPirValue);

    Curtir

  4. 

    Amigo tenho uma duvid ! Posso garegar mais de um codigo no nodemcu? Lo exemplo ja tenho carregado no meu o codigo do blynk onde cosigo acionar reles e acesso a uma porta analogica! Posso adicionar esse codigo nela para fazer o monitoramento pela porta virtual?

    Curtir

    • 

      Oi Edilson, não vejo porque não. Veja meu outro Post “Do blink ao Blynk”. eu faço o NodeMCU trabalhar com sensores digitais e analógico ao mesmo tempo que aciona um LED (podia ser um relé). As limitações são o número de portas apenas.

      Curtir

      • 

        Intao basta eu colocar esse codigo que vc posto abaixo do que ja vem na propria IDE do arduino como exemplo para o blynk e mandar copilar ! ??? Tem outra formo de entrar em contanto com vc? Zap por exemplo!

        Curtir

  5. 

    Republicou isso em sei lá… entende?e comentado:
    Exemplo muito bacana de internet das coisas!

    Curtido por 1 pessoa

  6. 

    Na minha universidade UFSJ estudo Engenharia Mecatrônica e numa disciplina de IoT, estamos trabalhando o conceito utilizando justamente o NODEMCU, equipamento muito bacana e versátil realmente! Para programarmos nele deixamos de lado o compilador do Arduino e passamos a utilizar o eclipse adaptado para o Arduino, achamos bem mais rápido!

    Curtido por 1 pessoa

    • 

      Legal Freud. Eu nunca programei com o eclipse. Só usei o IDE do Arduino mesmo. Qualquer hora eu tento. O NodeMCU é realmente 10! Pretendo refazer alguns de meus projetos baseados no Arduino UNO/Nano + ESP8266-01, utlizando-se sómente do NodeMCU. Sua interação com o Blink também simplifica muito os projetos na area de IoT. Abração e boa sorte na engenharia! Ah! Também li seus posts! muito legais! Precisa contar de suas experiências em Cuba! estive por lá a uns 25 anos atrás. pretendo voltar este ano.

      Curtir

Trackbacks e Pingbacks:

  1. Brincando com eletrônica: Como utilizar a biblioteca “GPIO Zero” no Raspberry Pi – MJRoBot.org - dezembro 23, 2016

    […] exploramos em meu último tutorial, IoT: Sensor de movimento com o NodeMCU e BLYNK, o sensor PIR gerará um pulso de nível ALTO a qualquer movimento que aconteça em seu raio de […]

    Curtir

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s