Construye un contador de personas por $30 usando un ESP8266 y NodeMCU
Un contador de personas es un dispositivo que se utiliza para medir la cantidad de personas que pasan por una entrada, un pasillo, una esquina, etc. Si necesita saber cuántas personas hay en un espacio, esta es la solución ideal. Se utiliza habitualmente en tiendas minoristas, grandes eventos y edificios de oficinas inteligentes. Esta tecnología de conteo ha proporcionado información sobre la cantidad de personas en un entorno y su comportamiento. Imagine que es el dueño de una tienda; este contador puede alertarle sobre los visitantes diarios, los recorridos peatonales, las paradas más frecuentes y el tiempo que una persona permanece en un lugar. ¿Le gustaría saber qué materiales o productos atraen más la atención? Con esta información, un profesional del marketing puede reposicionar los productos geográficamente para aumentar su visibilidad. Esto beneficia las necesidades de sus clientes y sus resultados.
En esta guía, aprenderá a crear su propio contador de personas. También incluye instrucciones para utilizar los datos recién recopilados a través de Ubidots, una plataforma de habilitación de aplicaciones.
Materiales necesarios
- NodeMCU ESP8266
- Sensor de movimiento PIR
- Cables hembra-hembra
- Estuche protector de plástico
- Cable microUSB
Cableado y carcasa
Como puede 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, conecte los cables directamente a los pines de su NodeMCU. Siga 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 |
Dado que el sensor de movimiento PIR es muy sensible al movimiento, usé un interruptor puente detrás para ajustar la sensibilidad al mínimo. También pinté sobre las esquinas de la lente para enfocar un espacio específico en lugar de omnidireccional. (No te limites, puedes explorar e innovar). El resultado de estos minutos extra de trabajo es el dispositivo compacto y fácil de usar que se muestra a continuación.
Con la carcasa y el dispositivo ensamblados, 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.- Abra el IDE de Arduino y seleccione Archivo -> Preferencias. A continuación, introduzca la siguiente URL en el URL adicionales del Administrador de placas . Puede agregar varias URL separándolas con comas si es necesario.
http://arduino.esp8266.com/stable/package_esp8266com_index.json
NOTA : Si usas Mac , ten en cuenta que Arduino ofrece funciones desplegables diferentes a las del sistema operativo Windows. Además, necesitarás instalar el siguiente controlador para poder cargar tu NodeMCU.
2.- Abra el Administrador de Placas desde Herramientas -> Menú Placa e instale la plataforma ESP8266. Para encontrar el dispositivo correcto, busque ESP8266 en la barra de búsqueda.
3.- Seleccione su NodeMCU 1.0 (Módulo ESP-12) desde Herramientas > Placa .
Además, necesitamos poder comunicarnos con el 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 de forma rápida y fluida, 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 biblioteca Ubidots desde Github. Para ello, abra la biblioteca MQTT ESP aquí , descárguela haciendo clic en el botón verde " 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.- Seleccione 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 -> Biblioteca de inclusión -> Administrador de bibliotecas e instale la PubSubClient . Para encontrar la biblioteca correcta, busque "PubSubClient" en la barra de búsqueda.
8.- Cierre el IDE de Arduino y vuelva a abrirlo. Es necesario reiniciarlo. ¡No omita 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 hayas copiado el código, deberás asignar los parámetros: nombre y contraseña de la red Wi-Fi, además de tu token Ubidots único. Si no sabes cómo encontrar tu token Ubidots , consulta este artículo a continuación.
// Hecho por: Maria Carlina Hernandez /**************************************** * Incluir Librerías ****************************************/ #include "UbidotsESPMQTT.h" /*************************************** * Definir Constantes ****************************************/ #define TOKEN "..." // Tu TOKEN Ubidots #define WIFINAME "..." //Tu SSID #define WIFIPASS "..." // Tu Contraseña Wifi #define DEVICE "pir-sensor" // Asigna la etiqueta del dispositivo #define VARIABLE "motion" // Asigna la etiqueta de la variable #define LED 2 #define SENSOR D6 uint8_t counter=0; unsigned long state = 0; Ubidots client(TOKEN); /**************************************** * Funciones auxiliares ****************************************/ void callback(char* topic, byte* payload, unsigned int length) { Serial.print("Mensaje llegado ["); 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 datos"); uint8_t value; if(flag){ value = 1; client.add(VARIABLE, value);ubidotsPublish(DEVICE); }else{ value = 0; if(state == 10000){ client.add(VARIABLE, value);ubidotsPublish(DEVICE); state = 0; } } state++; client.loop(); counter = 0; }
Una vez que hayas pegado el código y actualizado los parámetros de WiFi, debes verificarlo en el IDE de Arduino. Para ello, en la esquina superior izquierda del IDE de Arduino verás los siguientes iconos. Selecciona la marca de verificación para verificar cualquier código.
Una vez verificado el código, recibirás un mensaje de “ Compilación terminada ” en el IDE de Arduino.
A continuación, debe cargar el código en su NodeMCU. Para ello, seleccione el icono de flecha derecha junto a la marca de verificación.
Una vez cargado el código, recibirás un mensaje de “ Carga finalizada ” en el IDE de Arduino.
¡Ahora tu sensor está enviando datos a la nube Ubidots !
LED de estado
Una vez cargado su código, el LED integrado le avisará sobre la conectividad de los dispositivos.
- LED encendido -> Ok, dispositivo conectado y enviando datos.
- Parpadeo del LED (1 segundo) -> Intentando reconectar. Se perdió la conexión. Sin acceso a internet.
- LED apagado -> Dispositivo no conectado
Gestión de los datos en Ubidots
Si tu dispositivo está conectado correctamente, verás un nuevo dispositivo creado en la sección de dispositivos de la Ubidots . El nombre del dispositivo será " sensor-pir ". Dentro del dispositivo también verás la variable creada llamada " movimiento "
Si desea cambiar los nombres de sus dispositivos y variables a unos más amigables, 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 " sensor PIR " y la variable " movimiento ". Luego, calcule la suma cada vez que lo desee (1 minuto, 1 hora, 1 día) para obtener el número de personas detectadas. Presione Guardar y asigne un nombre a la variable. Su fórmula se verá similar a la siguiente:
suma(movimiento, "1H")
Una vez creada la variable, recibirá el número de personas detectadas en esa nueva variable sintética. A continuación, se muestra una ilustración del resultado final:
Resultado
Este proyecto capacita a administradores y responsables de la toma de decisiones sobre la cantidad de personas que pasan por un espacio determinado y su funcionamiento. Tenga en cuenta que no todas las personas serán detectadas 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 tienen dificultades 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 saber más sobre Ubidots , consulta estos videotutoriales y regístrate gratis hoy mismo.