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 pessoas que transitam por uma entrada, corredor, esquina, etc. Se você precisa saber quantas pessoas estão em um espaço, esta é a solução ideal. Normalmente usado em lojas de varejo, grandes eventos e edifícios de escritórios inteligentes, essa tecnologia de contagem fornece informações sobre o número de pessoas em um ambiente e como elas se comportam. Imagine que você é o dono da loja; esse contador pode alertá-lo sobre os visitantes diários, os caminhos percorridos, os pontos de parada mais frequentes e quanto tempo uma pessoa permanece em um local. Não seria interessante saber quais materiais/produtos atraem mais atenção? Com ​​essa informação, um profissional de marketing pode reposicionar produtos geograficamente para aumentar o reconhecimento da marca. Isso beneficia as necessidades dos seus clientes 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 do Ubidots, uma plataforma de habilitação de aplicativos.

Materiais necessários

  • ESP8266 NodeMCU

2.png

  • Sensor de movimento PIR

3.png

  • Fêmea – Fios Fêmea

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+, GND (terra) e um terceiro para o sinal de saída (“1” = movimento e “0” = ambiente estático). Primeiro, conecte os cabos diretamente aos pinos do seu NodeMCU, seguindo a tabela e o 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 a movimentos, usei um jumper atrás dele para definir a sensibilidade mínima. Também pintei os cantos da lente para focar em um espaço específico em vez de omnidirecional. (Não se limite, você pode explorar e inovar!) O resultado desses poucos minutos extras de trabalho é o dispositivo compacto e prático mostrado abaixo.

7.png

Com a caixa e o dispositivo já montados, agora precisamos conectar com a IDE do Arduino.

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

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

1. Abra a IDE do Arduino, selecione Arquivo -> Preferências. Em seguida, insira o seguinte URL na "URLs adicionais do Gerenciador de Placas" . 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ê usa Mac , observe que o Arduino possui funções de menu suspenso diferentes em comparação com o sistema operacional Windows. Além disso, você precisará instalar o seguinte driver para poder fazer o upload do seu NodeMCU.

8.png

2. Abra o Gerenciador de Placas em Ferramentas -> Menu Placa e instale a plataforma ESP8266. Para encontrar o dispositivo correto com facilidade, pesquise por 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.

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

11.png

Além disso, para que tudo funcione de forma rápida e eficiente, vamos garantir que a velocidade de upload esteja otimizada para 115200.

Acesse Ferramentas > Velocidade de Upload > 115200:

12.png

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

13.png

5. Agora, volte para a sua IDE do Arduino, clique em Sketch -> Incluir Biblioteca -> Adicionar Biblioteca .ZIP

6. Selecione o arquivo .ZIP do ubidots MQTTESP e clique em “ Aceitar ” ou “ Escolher ”.

Se a instalação for bem-sucedida, você receberá a seguinte mensagem na IDE do Arduino, confirmando a instalação da biblioteca:

14.png

7. Em seguida, acesse Sketch/Program -> Incluir Biblioteca -> Gerenciador de Bibliotecas e instale a PubSubClient . Para encontrar a biblioteca correta, basta pesquisar por PubSubClient na barra de pesquisa.

15.png

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

Agora é hora de começar a codificar 🙂

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

Após copiar o código, você precisará atribuir os parâmetros: nome e senha da rede Wi-Fi, além do seu token Ubidots exclusivo. Caso não saiba como encontrar seu token Ubidots , consulte o artigo abaixo.

// Feito por: Maria Carlina Hernandez /**************************************** * Incluir Bibliotecas ****************************************/ #include "UbidotsESPMQTT.h" /**************************************** * Definir Constantes ****************************************/ #define TOKEN "..." // Seu TOKEN Ubidots #define WIFINAME "..." // Seu SSID #define WIFIPASS "..." // Sua Senha do Wi-Fi #define DEVICE "pir-sensor" // Atribui o rótulo do dispositivo #define VARIABLE "motion" // Atribui o rótulo da variável #define LED 2 #define SENSOR D6 uint8_t counter=0; unsigned long state = 0; Ubidots client(TOKEN); /**************************************** * Funções Auxiliares ****************************************/ void callback(char* topic, byte* payload, unsigned int length) { Serial.print("Mensagem recebida ["); Serial.print(topic); Serial.print("] "); for (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){ counter++; } if(counter>3){ flag = true; } delay(500); } } Serial.println("enviando dados"); uint8_t value; if(flag){ value = 1; client.add(VARIABLE, value); client.ubidotsPublish(DEVICE); }else{ value = 0; if(state == 10000){ client.add(VARIABLE, value); client.ubidotsPublish(DEVICE); state = 0; } } state++; client.loop(); counter = 0; }

Depois de colar o código e atualizar os parâmetros de Wi-Fi, você precisa verificar as alterações no ambiente de desenvolvimento Arduino (IDE). Para isso, no canto superior esquerdo da IDE, você verá os ícones abaixo. Selecione o ícone de marca de seleção (✓) para verificar o código.

16.png

Após a verificação do código, você receberá a mensagem " Compilação concluída " na IDE do Arduino.

17.png

Em seguida, você precisa carregar o código no seu NodeMCU. Para fazer isso, selecione o ícone de seta para a direita ao lado do ícone de marca de seleção.

18.png

Após o upload do código, você receberá a mensagem " Upload concluído " na IDE do Arduino.

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

LED indicador de status

Assim que o código for carregado, o LED integrado indicará a conectividade do dispositivo.

  • LED aceso -> Ok, dispositivo conectado e enviando dados.
  • LED piscando (1 segundo) -> Tentando reconectar. Conexão perdida. 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 de dispositivos do seu Ubidots . O nome do dispositivo será “ sensor-pir ” e, dentro dele, você verá a variável criada chamada “ motion

Se desejar alterar os nomes do seu dispositivo e das variáveis ​​para algo mais amigável, consulte este artigo

20.png

Em seguida, para contabilizar 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 “ sensor pir ” e a variável “ movimento ”. Em seguida, calcule a soma a cada intervalo de tempo definido (1 minuto, 1 hora, 1 dia) para obter o número de pessoas detectadas. Clique em Salvar e atribua um nome à variável. Sua fórmula ficará semelhante à seguinte:

soma(movimento, "1H")

variável

Após a criação da sua variável, você receberá o número de pessoas detectadas nessa nova variável sintética. Abaixo, segue uma ilustração do resultado final:

23.png

Resultado

Este projeto visa educar administradores e tomadores de decisão sobre o número de pessoas que transitam 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 enfrentam dificuldades nesse aspecto. Mas estamos trabalhando para melhorar!

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!