Projetos IoT

Construa um contador de pessoas por $ 30 usando ESP8266 e NodeMCU

Maria Hernández
· 7 min de leitura
Enviar por e-mail

Um contador de pessoas é um dispositivo usado para medir o número de corpos que atravessam uma entrada, corredor, esquina, etc. Se você precisa saber quantas pessoas existem em um espaço – esta é a sua solução simples. Normalmente usado em lojas de varejo, grandes eventos e edifícios de escritórios inteligentes. Essa tecnologia de contagem forneceu informações sobre o número de corpos em um ambiente e como eles se comportam. Imagine que você é o dono da loja; este contador pode alertá-lo sobre visitantes diários, os caminhos percorridos, os pontos de parada mais frequentes e quanto tempo uma pessoa permanece em um local. Você não gostaria de saber quais materiais/produtos chamam mais atenção? Com esse insight, um profissional de marketing pode reposicionar produtos geograficamente para aumentar o reconhecimento. Isso, beneficiando as necessidades do seu cliente e seus resultados financeiros.

Neste guia, você aprenderá como construir seu próprio contador de pessoas caseiro. Também estão incluídas instruções para que seus dados recém-coletados sejam utilizados por meio Ubidots , uma plataforma de habilitação de aplicativos.

Materiais necessários

  • ESP8266 Node MCU

2.png

  • Sensor de movimento PIR

3.png

  • Fêmea – Fios Fêmeas

4.png

  • Estojo de proteção de plástico

5.png

  • Cabo MicroUSB

6.png

Fiação e Invólucro

Como você pode ver, o sensor de movimento possui três pinos: V+, Terra e um terceiro para sinal de saída (“1” = movimento e “0” ambiente estático). Primeiramente, conecte os cabos direto nos pinos do seu NodeMCU, siga a tabela e diagrama abaixo:

NodeMCU Sensor PIR NodeMCU LIDERADO
GND GND GND GND
D6 FORA D4 CCV
3,3V CCV

Como o sensor de movimento PIR é muito sensível ao movimento, usei um jumper atrás dele para definir a sensibilidade mais baixa. Também pintei os cantos das lentes para focar em um espaço específico em vez de omnidirecional. (Não se limite, você pode explorar e inovar) Os resultados desses poucos minutos extras de trabalho resultam no dispositivo amigável e contido mostrado abaixo.

7.png

Com o gabinete e o dispositivo montados, agora precisamos nos conectar ao Arduino IDE.

Para começar, conecte seu NodeMCU à porta do seu computador usando o micro USB

NOTA : Se você ainda não possui o Arduino IDE , clique aqui para fazer o download

1.- Abra o Arduino IDE, selecione Arquivo -> Preferências. Em seguida, insira o seguinte URL na URLs adicionais do gerente do conselho . Você pode adicionar vários URLs separando-os com vírgulas, se necessário.

http://arduino.esp8266.com/stable/package_esp8266com_index.json

NOTA : Se você é um usuário Mac , observe que o Arduino contém diferentes funções suspensas em comparação com o sistema operacional Windows. Além disso, você precisará instalar o seguinte driver para poder fazer upload do seu NodeMCU.

8.png

2.- Abra o Boards Manager em Ferramentas -> menu Board e instale a plataforma ESP8266. Para simplesmente encontrar o dispositivo correto, pesquise ESP8266 na barra de pesquisa.

9.png

3.- Selecione seu NodeMCU 1.0 (Módulo ESP-12) no Ferramentas > Placa .

10.png

Além disso, precisamos conseguir nos comunicar com o NodeMCU; selecione a porta COM correta para o seu dispositivo.

Vá para Ferramentas > Porta > Selecione a PORTA apropriada para a conexão do seu computador/dispositivo.

11.png

Além disso, para manter tudo funcionando de forma rápida e tranquila – vamos garantir que a velocidade de upload esteja otimizada para 115200.

Vá em Ferramentas > Velocidade de upload > 115200:

12.png

4.- Em seguida precisamos baixar a Ubidots MQTT ESP do Github. Para fazer isso, abra a biblioteca MQTT ESP aqui , baixe a biblioteca clicando no botão verde chamado “ Clone ou download ” e selecione “ Baixar ZIP ”.

13.png

5.- Agora volte para o seu Arduino IDE, clique em Sketch -> Incluir Biblioteca -> Adicionar Biblioteca .ZIP

6.- Selecione o arquivo .ZIP do ubidots MQTTESP e depois “ Aceitar ” ou “ Escolher

Se tiver sucesso, você receberá esta mensagem abaixo no IDE do Arduino confirmando sua biblioteca:

14.png

7.- Em seguida, vá em Sketch/Program -> Incluir Biblioteca -> Gerenciador de Biblioteca e instale a PubSubClient . Para simplesmente encontrar a biblioteca correta, pesquise PubSubClient na barra de pesquisa.

15.png

8.- Feche o Arduino IDE e abra-o novamente. Esta reinicialização é necessária. Por favor, não perca esta etapa!!

Agora é hora de começar a codificar 🙂

Copie o código abaixo e cole-o no IDE do Arduino.

Depois de copiar o código, você precisará atribuir os parâmetros: nome e senha do Wi-Fi, além de seu Ubidots TOKEN individual e exclusivo. Se você não sabe como localizar seu Ubidots TOKEN, consulte este artigo abaixo.

// Feito por: Maria Carlina Hernandez /**************************************** * Incluir Bibliotecas ****************************************/ #include " Ubidots ESPMQTT.h " /**************************************** * Definir constantes ***** ***********************************/ #define TOKEN "..." // Seu Ubidots TOKEN # definir WIFINAME "..." //Seu SSID #define WIFIPASS "..." // Seu Wifi Pass #define DEVICE "pir-sensor" // Atribua o rótulo do dispositivo #define VARIABLE "motion" // Atribua o rótulo da variável #define LED 2 #define SENSOR D6 uint8_t contador=0; estado longo sem sinal = 0; Cliente Ubidots (TOKEN); /************************************** *Funções Auxiliares****** **********************************/ void callback(char* topic, byte* payload, unsigned int length) { Serial.print("A mensagem chegou ["); Serial.print(tópico); Serial.print("] "); para (int i=0;i <length;i++) { Serial.print((char)payload[i]); } Serial.println(); } /**************************************** * Main Functions ****************************************/ void setup() { // put your setup code here, to run once: Serial.begin(115200); pinMode(SENSOR, INPUT); pinMode(LED, OUTPUT); client.wifiConnection(WIFINAME, WIFIPASS); client.begin(callback); } void loop() { // put your main code here, to run repeatedly: if (!client.connected()) { digitalWrite(LED, LOW); client.reconnect(); digitalWrite(LED, HIGH); } else { digitalWrite(LED, HIGH); } uint8_t sensorValue = digitalRead(SENSOR); bool flag = false; if(sensorValue> 0){ for(uint8_t wait=0; wait<=4; wait++){ sensorValue = digitalRead(SENSOR); Serial.println(sensorValue); if(sensorValue==1){ contador++; } if(contador>3){ sinalizador = verdadeiro; } atraso(500); } } Serial.println("enviando dados"); valor uint8_t; if(sinalizador){ valor = 1; cliente.add(VARIÁVEL, valor); cliente. Publicação ubidots (DEVICE); }else{ valor = 0; if(estado == 10000){cliente.add(VARIÁVEL, valor); cliente. Publicação ubidots (DEVICE); estado = 0; } } estado++; cliente.loop(); contador = 0; }

Depois de colar o código e atualizar os parâmetros WiFi, você deve verificar isso no IDE do Arduino. Para fazer isso, no canto superior esquerdo do nosso Arduino IDE você verá os ícones abaixo. Escolha o ícone Check Mark para verificar qualquer código.

16.png

Assim que o código for verificado, você receberá uma mensagem “ Compilação concluída ” no IDE do Arduino.

17.png

Em seguida, você deve fazer upload do código em seu NodeMCU. Para fazer isso, escolha o ícone de seta para a direita ao lado do ícone da marca de seleção.

18.png

Assim que o código for carregado, você receberá uma mensagem “ Done uploading ” no Arduino IDE.

19.png
Agora seu sensor está enviando dados para a Nuvem Ubidots !

LED de status

Assim que o seu código for carregado, o LED integrado irá alertá-lo sobre a conectividade do dispositivo.

  • LED aceso -> Ok, dispositivo conectado e enviando dados.
  • LED piscando (1 segundo) -> Tentando reconectar. Perdeu a conexão. Sem acesso à internet.
  • LED apagado -> Dispositivo não conectado

Gestão dos dados em Ubidots

Se o seu dispositivo estiver conectado corretamente, você verá um novo dispositivo criado na seção do seu dispositivo no Ubidots . O nome do dispositivo será “ sensor-pir “, também dentro do dispositivo você verá a variável criada chamada “ movimento.

Se você deseja alterar o nome do seu dispositivo e das variáveis ​​para um nome mais amigável, consulte este artigo

20.png

A seguir, para contar o número de pessoas que seu dispositivo está detectando, precisamos criar uma nova variável derivada para poder gerenciar os dados e contar o número de pessoas detectadas.

Clique em “ Adicionar variável ” e selecione “ Sintético “:

sintético

Selecione o dispositivo chamado “ pir-sensor ” e a variável “ movimento ” e calcule a soma de cada tempo definido conforme desejar (1 minuto; 1 hora; 1 dia) para obter o número de pessoas detectadas. Pressione Salvar e atribua um nome para a variável. Sua fórmula será parecida com a seguinte:

soma(movimento, "1H")

variável

Assim que sua variável for criada, você receberá a quantidade de pessoas detectadas nessa nova variável sintética. Abaixo está uma ilustração do resultado final:

23.png

Resultado

Este projeto educa administradores e tomadores de decisão sobre o número de pessoas que passam por um determinado espaço e como elas operam. Observe que nem todas as pessoas serão detectadas devido às limitações do sensor de movimento. A linha de visão é importante para nós, humanos, e as máquinas também lutam com isso. Mas estamos trabalhando nisso!

Agora é hora de criar um dashboard para controlar e gerenciar as variáveis ​​do seu próprio Contador de Pessoas. Para saber mais sobre Ubidots , confira estes tutoriais em vídeo e inscreva-se gratuitamente hoje mesmo!