Construa um contador de pessoas por $ 30 usando ESP8266 e NodeMCU
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
- Sensor de movimento PIR
- Fêmea – Fios Fêmeas
- Estojo de proteção de plástico
- Cabo MicroUSB
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.
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.
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.
3.- Selecione seu NodeMCU 1.0 (Módulo ESP-12) no Ferramentas > Placa .
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.
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:
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 ”.
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:
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.
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.
Assim que o código for verificado, você receberá uma mensagem “ Compilação concluída ” no IDE do Arduino.
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.
Assim que o código for carregado, você receberá uma mensagem “ Done uploading ” no Arduino IDE.
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
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 “:
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")
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:
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!