Ir al contenido principal
Todas las coleccionesTutoriales de proyectos IoT
Cómo construir un sistema de detección de movimiento con Arduino
Cómo construir un sistema de detección de movimiento con Arduino

Construye un contador de producción de movimiento y presencia utilizando un Feather HUZZAH programado con Arduino y alimentado por Ubidots.

Sergio M avatar
Escrito por Sergio M
Actualizado hace más de 3 meses

La detección efectiva de movimiento y presencia en hogares inteligentes y manufactura inteligente puede ser muy útil en aplicaciones que van desde soluciones de Vida Asistida en el Hogar (AAL) para ancianos hasta un Sistema de Conteo de Producción que alimenta un MES más grande. Otras aplicaciones para la Detección de Movimiento y Presencia incluyen, pero no se limitan a:

Si bien hay muchas aplicaciones para la presencia y el movimiento, también hay muchos sensores para recopilar datos, como capacitivos, inductivos, fotoeléctricos y sensores ultrasónicos. Dependiendo de los costos, las condiciones ambientales y los requisitos de precisión, se debe seleccionar el hardware más adecuado para un entorno y los requisitos de la aplicación,

Para este tutorial, nos centraremos en construir un contador de producción en tiempo real; la aplicación contará cada unidad que pase por una cinta transportadora. Usaremos el IDE de Arduino para programar un Feather HUZZAH ESP8266, un sensor ultrasónico y Ubidots para desarrollar nuestra aplicación y mostrar nuestro tablero IoT.

Requisitos

I. Configuración de Hardware

El Sensor Ultrasónico MB7389-100 es una opción de bajo costo para aplicaciones industriales con requisitos de amplio rango y bajo consumo de energía en condiciones climáticas desafiantes gracias a su clasificación IP67.

Para comenzar, refleje el diagrama a continuación para conectar el sensor ultrasónico al Feather HUZZAH ESP8266:

NOTA: La lectura del sensor puede tomarse como lecturas analógicas o PWM; a continuación, vamos a explicar la configuración para la lectura PWM, para información adicional consulte estos ejemplos.

[Opcionalmente] coloque el microcontrolador y los sensores dentro de la caja IP67 para protegerlos del polvo, agua y otros factores ambientales amenazantes. La caja estándar se parece a la que se muestra a continuación:

II. Configuración de Firmware

Primero, debe instalar el Feather Huzzah en el IDE de Arduino y compilar el código. Recuerde verificar esta configuración realizando una simple prueba de parpadeo. Para obtener más información sobre cómo conectar su dispositivo Feather, consulte esta útil guía de configuración de hardware.

1. Descargue e instale la biblioteca de Ubidots. Para una explicación detallada sobre cómo instalar bibliotecas usando el IDE de Arduino, consulte esta guía.

2. Para enviar datos del sensor a la Plataforma de Desarrollo IoT de Ubidots, copie y pegue el código a continuación en el IDE de Arduino. Una vez que haya pegado el código, asegúrese de asignar los siguientes parámetros:

  • SSID (Nombre de WiFi) y Contraseña de la conexión de red disponible.

/********************************   Bibliotecas incluidas *******************************/#include "Ubidots.h"/********************************   Constantes y objetos *******************************//* Ubidots */const char* UBIDOTS_TOKEN = "...";  // Ponga aquí su TOKEN de Ubidotsconst char* WIFI_SSID = "...";      // Ponga aquí su SSID de Wi-Ficonst char* WIFI_PASS = "...";      // Ponga aquí su contraseña de Wi-Fi/* Sensor Ultrasónico */const int pwPin1 = 5; // El pin PWM donde está conectado el sensorUbidots ubidots(UBIDOTS_TOKEN, UBI_HTTP);/********************************   Funciones Auxiliares *******************************//********************************   Funciones Principales *******************************/void setup() {  Serial.begin(115200);  /* Conecta a AP */  ubidots.wifiConnect(WIFI_SSID, WIFI_PASS);  // ubidots.setDebug(true);  // Descomente esta línea para imprimir mensajes de depuración}void loop() {  /* La lectura del sensor se devuelve en milímetros, si desea convertir   * a pulgadas, simplemente cree una variable apuntando a -> distancia / 25.4 */  float distance = pulseIn(pwPin1, HIGH);  ubidots.add("distance", distance);  // Cambie por el nombre de su variable  bool bufferSent = false;  bufferSent = ubidots.send("motion-control");  // Enviará datos a una etiqueta de dispositivo que coincida con el Id del dispositivo  if (bufferSent) {    // Hacer algo si los valores se enviaron correctamente    Serial.println("Valores enviados por el dispositivo");  }  delay(1000);}

ProTip: puede verificar si su dispositivo está correctamente conectado abriendo el monitor serial en el IDE de Arduino.

Puede verificar que un dispositivo se ha creado en su backend de Ubidots viéndolo en su cuenta Dispositivos > Dispositivos.

Al hacer clic en su dispositivo, encontrará una variable llamada "distance" donde se almacenan las lecturas del sensor. Este nombre fue asignado en el código que acaba de pegar en el IDE de Arduino. Si desea ajustar sus variables automáticas, hágalo editando la tarjeta del dispositivo o flasheando un código actualizado con la nomenclatura de variable correcta para su aplicación.

Con el Feather HUZZAH ESP8266 conectado y reportando datos a Ubidots, ahora es el momento de construir la aplicación utilizando la configuración de aplicación sin código cuidadosamente diseñada por Ubidots.

III. Desarrollo de la Aplicación Ubidots

Configuración de Eventos de Ubidots

Las lecturas actuales que estamos enviando a Ubidots son entradas de distancia. Para traducir estas lecturas en una salida deseada que queremos —unidades contadas— debemos crear un evento siguiendo estos pasos:

  1. Dentro del dispositivo actual "motion-control" cree una nueva variable predeterminada llamada "boxes", que recibirá un 1 cada vez que se cuente una nueva unidad. Las tarjetas de su dispositivo, cuando estén correctas, se verán como sigue:

2. Vaya a Gestión de Dispositivos -> Eventos, y haga clic en el ícono azul de más en la esquina superior derecha de la página para agregar un nuevo evento.

3. Configure su evento comenzando con "Si se activan":
Configuración del Evento

  • Seleccione una variable: "distance"

  • Valor: valor (predeterminado)

  • Es menor o igual a

  • [la distancia máxima esperada} entre el sensor y las cajas que pasan
    *nuestra aplicación requiere 500mm

  • Durante 0 minutos

  • Guardar

4. Una vez que los disparadores se hayan configurado según las especificaciones de su aplicación, haga clic en el ícono naranja de "más" en la esquina superior derecha para agregar una acción condicional:

5. Seleccione “Establecer Variable” como la acción.

6. A continuación, elija la variable predeterminada creada anteriormente "boxes" y el valor "1", como se muestra a continuación:

7. Guardar cambios. Si el evento está configurado correctamente, enviará un "1" cada vez que la distancia entre el sensor y la unidad sea mayor que un umbral indicado, lo que sugiere que no hay objeto cerca — y debe contar una nueva unidad que acaba de pasar.

En la tarjeta de Dispositivo específica de Feather, encontrará que la variable "boxes" donde se envía un "1" cada vez que se detecta la presencia de una unidad.

Particularmente útil para cintas transportadoras industriales y conteo de unidades, este prototipo puede personalizarse para adaptarse a diferentes entornos o hardware simplemente en su codificación o en el desarrollo de sus aplicaciones.

8. Visualizar el número de unidades detectadas (o veces que se detectó un objeto)

Ahora, utilizando la variable "boxes", vamos a crear una nueva variable de ventana rodante para sumar la cantidad total de lecturas recibidas de la variable "boxes" en un intervalo definido (minutos, horas, días, semanas, etc.). Para ejecutar este desarrollo, siga estos simples pasos:

  1. Vaya a Gestión de Dispositivos > Dispositivos > motion-control (dispositivo), y cree una nueva variable de ventana rodante:

Asigne las siguientes credenciales a su nueva variable de ventana rodante
Seleccione un dispositivo: motion-control (o el nombre del dispositivo al que está enviando sus datos)
Seleccione una variable: boxes
Calcule la: suma
Cada: "1" hora (o según lo requiera su aplicación)

Ahora asigne un nombre a la nueva variable que indique la cantidad de cajas (o movimientos) contados en una hora, como "boxes/hour" o "units/hours.

Configuraciones del Tablero

Finalmente, cree un tablero para mostrar el número de unidades detectadas.

Vaya a Gestión de Dispositivos –> Tableros y agregue un nuevo widget. Este widget mostrará la cantidad de cajas contadas hoy desglosadas por hora.

Asigne las siguientes credenciales a su nuevo widget para visualizar su conteo.
¿Cómo le gustaría ver sus datos?: Gráfico
Seleccione un tipo de widget: gráfico de líneas
Agregue un dispositivo: motion-control
Agregue una variable: boxes/hour
Finalizar.

Y con este desarrollo final del tablero - su aplicación está completa y ahora tiene un sistema de detección de movimiento y presencia eficiente y efectivo.

Aquí hay una última mirada a nuestros resultados:

Comience con Ubidots hoy y construya su próxima aplicación IoT con facilidad.

¿Ha quedado contestada tu pregunta?