Construya un contador de personas por $ 30 usando ESP8266 y NodeMCU

Un contador de personas es un dispositivo que se utiliza para medir el número de cuerpos que atraviesan una entrada, un pasillo, una esquina, etc. Si necesita saber cuántas personas existen en un espacio, esta es su solución sencilla. Normalmente se utiliza en tiendas minoristas, grandes eventos y edificios de oficinas inteligentes. Esta tecnología de conteo ha proporcionado información sobre la cantidad de cuerpos en un entorno y cómo se comportan. Imagina que eres el dueño de la tienda; Este contador puede alertarle sobre los visitantes diarios, los senderos que se toman, los puntos de parada más frecuentes y cuánto tiempo permanece una persona en un lugar. ¿No le gustaría saber qué materiales/productos reciben más atención? Con esta información, un especialista en marketing puede reposicionar los productos geográficamente para aumentar el conocimiento. Esto, beneficiando las necesidades de sus clientes y sus resultados.

En esta guía, aprenderá cómo construir su propio contador de personas hecho en casa. También se incluyen instrucciones para que los datos recién recopilados se utilicen a través de Ubidots , una plataforma de habilitación de aplicaciones.

Materiales necesarios

  • ESP8266 NodoMCU

  • Sensor de movimiento PIR

  • Cables hembra – hembra

  • Funda protectora de plástico

  • Cable MicroUSB

Cableado y carcasa

Como puedes ver, el sensor de movimiento tiene tres pines: V+, Tierra y un tercero para la señal de salida (“1” = movimiento y “0” entorno estático). Primero, conecta los cables directamente a los pines de tu NodeMCU, sigue la tabla y el diagrama a continuación:

NodoMCU Sensor PIR NodoMCU CONDUJO
Tierra Tierra Tierra Tierra
D6 AFUERA D4 VCC
3,3 V VCC

Debido a que el sensor de movimiento PIR es muy sensible al movimiento, utilicé un interruptor de puente detrás para establecer la sensibilidad más baja. También pinté sobre las esquinas de la lente para enfocarme en un espacio específico en lugar de omnidireccional. (No se limite, puede explorar e innovar) Los resultados de estos pocos minutos adicionales de trabajo dan como resultado el dispositivo amigable y contenido que se muestra a continuación.

Una vez ensamblados el estuche y el dispositivo, ahora necesitamos conectarnos con Arduino IDE.

Para comenzar, conecta tu NodeMCU al puerto de tu computadora usando el micro USB

NOTA : Si aún no tienes el IDE de Arduino , haz clic aquí para descargarlo.

1.- Abre el IDE de Arduino, selecciona Archivo -> Preferencias. A continuación, ingrese la siguiente URL en el URL adicionales del administrador de tableros . Puede agregar varias URL separándolas con comas, si es necesario.

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

NOTA : Si es usuario de Mac , tenga en cuenta que Arduino contiene funciones desplegables diferentes en comparación con el sistema operativo Windows. Además, deberá instalar el siguiente controlador para poder cargar su NodeMCU.

2.- Abra Boards Manager desde Herramientas -> menú Tablero e instale la plataforma ESP8266. Para encontrar simplemente el dispositivo correcto, busque ESP8266 en la barra de búsqueda.

3.- Selecciona tu NodeMCU 1.0 (Módulo ESP-12) en Herramientas > Placa .

Además, debemos poder comunicarnos con NodeMCU; seleccione el puerto com correcto para su dispositivo.

Vaya a Herramientas > Puerto > Seleccione el PUERTO apropiado para la conexión de su computadora/dispositivo.

Además, para que todo funcione rápido y sin problemas, asegurémonos de que la velocidad de carga esté optimizada a 115200.

Vaya a Herramientas > Velocidad de carga > 115200:

4.- A continuación necesitamos descargar la Ubidots MQTT ESP desde Github. Para hacer esto, abra la biblioteca MQTT ESP aquí , descargue la biblioteca haciendo clic en el botón verde llamado “ Clonar o descargar ” y seleccione “ Descargar ZIP ”.

5.- Ahora regresa a tu IDE de Arduino, haz clic en Sketch -> Incluir biblioteca -> Agregar biblioteca .ZIP

6.- Selecciona el archivo .ZIP de ubidots MQTTESP y luego “ Aceptar ” o “ Elegir

Si tiene éxito, recibirá este mensaje a continuación en el IDE de Arduino confirmando su biblioteca:

7.- A continuación, vaya a Sketch/Program -> Incluir Biblioteca -> Administrador de Biblioteca e instale la biblioteca PubSubClient Para encontrar simplemente la biblioteca correcta, busque PubSubClient en la barra de búsqueda.

8.- Cierra el IDE de Arduino y ábrelo nuevamente. Este reinicio es necesario. ¡¡No te pierdas este paso!!

Ahora es el momento de empezar a codificar 🙂

Copie el código a continuación y péguelo en el IDE de Arduino.

Una vez que haya copiado el código, deberá asignar los parámetros: nombre y contraseña de Wi-Fi, además de su TOKEN Ubidots único e individual. Si no sabe cómo localizar su TOKEN Ubidots , consulte este artículo a continuación.

// Realizado por: María Carlina Hernández /**************************************** * Incluir bibliotecas ****************************************/ #include " Ubidots ESPMQTT.h " /**************************************** * Definir constantes ***** ***********************************/ #define TOKEN "..." // Tu TOKEN Ubidots # define WIFINAME "..." //Tu SSID #define WIFIPASS "..." // Tu Wifi Pass #define DEVICE "pir-sensor" // Asigna la etiqueta del dispositivo #define VARIABLE "motion" // Asigna la etiqueta de variable #definir LED 2 #definir SENSOR D6 uint8_t contador=0; estado largo sin firmar = 0; Cliente Ubidots (TOKEN); /**************************************** * Funciones auxiliares ****** ********************************/ devolución de llamada nula (tema char*, carga útil byte*, longitud int sin signo) { Serial.print("El mensaje llegó ["); Serial.print(tema); Serie.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 esperar=0; esperar<=4; esperar++){ sensorValue = digitalRead(SENSOR); Serial.println(sensorValue); if(sensorValue==1){ contador++; } if(contador>3){ bandera = verdadero; } retraso(500); } } Serial.println("enviando datos"); valor uint8_t; if(bandera){ valor = 1; cliente.add(VARIABLE, valor); cliente. Publicación ubidots (DISPOSITIVO); }de lo contrario{ valor = 0; if(estado == 10000){ client.add(VARIABLE, valor); cliente. Publicación ubidots (DISPOSITIVO); estado = 0; } } estado++; cliente.loop(); contador = 0; }

Una vez que pegó el código y actualizó los parámetros de WiFi, debe verificar esto dentro del IDE de Arduino. Para hacer esto, en la esquina superior izquierda de nuestro IDE de Arduino verá los siguientes íconos. Elija el ícono de marca de verificación para verificar cualquier código.

Una vez que se verifique el código, recibirá un mensaje " Compilación terminada " en el IDE de Arduino.

A continuación, debes cargar el código en tu NodeMCU. Para hacer esto, elija el ícono de flecha hacia la derecha al lado del ícono de marca de verificación.

Una vez cargado el código, recibirá un mensaje " Listo para cargar " en el IDE de Arduino.


¡Ahora su sensor está enviando datos a la nube Ubidots !

LED de estado

Una vez cargado su código, el LED integrado le alertará sobre la conectividad del dispositivo.

  • LED encendido -> Ok, dispositivo conectado y enviando datos.
  • El LED parpadea (1 segundo) -> Intentando volver a conectarse. Perdió la conexión. Sin acceso a internet.
  • LED apagado -> Dispositivo no conectado

Gestión de los datos en Ubidots

Si su dispositivo está conectado correctamente, verá un nuevo dispositivo creado dentro de la sección de su dispositivo en su Ubidots . El nombre del dispositivo será “ sensor-pir ”, además dentro del dispositivo verás la variable creada llamada “ movimiento”.

Si desea cambiar su dispositivo y los nombres de las variables por uno más amigable, consulte este artículo.

A continuación, para contar la cantidad de personas que detecta su dispositivo, necesitamos crear una nueva variable derivada para poder administrar los datos y contar la cantidad de personas detectadas.

Haga clic en “ Agregar variable ” y seleccione “ Sintético ”:

Seleccione el dispositivo llamado " pir-sensor " y la variable " movimiento " luego, calcule la suma cada vez que desee (1 minuto; 1 hora; 1 día) para obtener la cantidad de personas detectadas. Presione Guardar y asigne un nombre a la variable. Su fórmula se parecerá a la siguiente:

suma(movimiento, "1H")

Una vez creada tu variable, recibirás la cantidad de personas detectadas en esa nueva variable sintética. A continuación se muestra una ilustración del resultado final:

Resultado

Este proyecto educa a los administradores y tomadores de decisiones sobre la cantidad de personas que pasan por un espacio en particular y cómo operan. Tenga en cuenta que no se detectará a todas las personas debido a las limitaciones del sensor de movimiento. La línea de visión es importante para nosotros, los humanos, y las máquinas también luchan con esto. ¡Pero estamos trabajando en ello!

Ahora es el momento de crear un dashboard para controlar y gestionar las variables de tu propio Contador de Personas. Para obtener más información sobre Ubidots , consulte estos tutoriales en vídeo y regístrese gratis hoy.