Tabla de contenido:

Cómo construir un sistema de detección de movimiento con Arduino: 7 pasos
Cómo construir un sistema de detección de movimiento con Arduino: 7 pasos

Video: Cómo construir un sistema de detección de movimiento con Arduino: 7 pasos

Video: Cómo construir un sistema de detección de movimiento con Arduino: 7 pasos
Video: Sensor PIR con Arduino (simulación en Tinkercad) 2024, Mes de julio
Anonim
Cómo construir un sistema de detección de movimiento con Arduino
Cómo construir un sistema de detección de movimiento con Arduino

Cree un contador de producción de presencia y movimiento utilizando un Feather HUZZAH programado con Arduino y con tecnología de Ubidots.

La detección efectiva de presencia y movimiento físico en hogares inteligentes y fabricación inteligente puede ser muy útil en aplicaciones que van desde soluciones de vida asistida por el ambiente (AAL) para personas mayores o un sistema de conteo de producción que alimenta un MES más grande. Otras aplicaciones para la detección de presencia y movimiento incluyen, entre otras, las siguientes:

  1. Automatización de puertas y portones
  2. Sensores de estacionamiento para designar lugares libres
  3. Monitoreo remoto del nivel del tanque
  4. Hogares e instalaciones inteligentes para iluminación y seguridad
  5. Detección y recuento de unidades en líneas transportadoras
  6. Detección de marcas en materiales impresos
  7. Detección de líquidos dentro de inclinaciones de cartón, plástico y papel
  8. Detección de distancia
  9. Contadores de personas

Si bien existen muchas aplicaciones para presencia y movimiento, existen igualmente tantos sensores para recopilar datos, como sensores capacitivos, inductivos, fotoeléctricos y ultrasónicos. Dependiendo de los costos, las condiciones ambientales y los requisitos de precisión, se debe seleccionar el hardware que mejor se adapte a los requisitos del entorno y la aplicación.

Para este tutorial, nos enfocaremos 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 panel de IoT.

Paso 1: requisitos

  1. Pluma HUZZAH con ESP8266MB7389-100
  2. Sensor ultrasónico
  3. Arduino IDE 1.8.2 o superior
  4. Cuenta Ubidots -o-Licencia STEM

Paso 2: configuración

  • I Configuración de hardware
  • II. Configuración de firmware
  • III. Desarrollo de aplicaciones Ubidots (eventos, variables y cuadros de mando)

Paso 3: configuración del hardware

configuración de hardware
configuración de hardware
configuración de hardware
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 IPv67.

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

NOTA: La lectura del sensor se puede tomar como lecturas analógicas o PWM; A continuación, explicaremos la configuración para la lectura de PWM; para obtener información adicional, consulte los ejemplos que se muestran arriba.

[Opcionalmente] coloque el microcontrolador y los sensores dentro de la carcasa IP67 para protegerlos del polvo, el agua y otros factores ambientales amenazantes. El estuche estándar es similar al que se muestra en las fotos de arriba.

Paso 4: configuración del firmware

Configuración de firmware
Configuración de firmware
Configuración de firmware
Configuración de firmware

Primero, debe instalar Feather Huzzah en el IDE de Arduino y compilar el código. Recuerde verificar esta configuración haciendo 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.

Para enviar datos del sensor a la plataforma de desarrollo Ubidots IoT, copie y pegue el código a continuación en el IDE de Arduino. Recuerde asignar el nombre de la red Wi-Fi, la contraseña y el token de su cuenta Ubidots donde se indica en el código.

/ ******************************** Bibliotecas incluidas *************** **************** / # incluir / ***************************** ** Constantes y objetos ****************************** // * Ubidots * / const char * SSID_NAME = "xxxxxxxx"; // Ponga aquí su nombre SSIDconst char * SSID_PASS = "xxxxxxxx"; // Pon aquí tu contraseñaconst char * TOKEN = "Assig_your_ubidots_token"; // Pon aquí tu TOKENconst char * DEVICE_LABEL = "motion-control"; // Su dispositivo labelconst char * VARIABLE_LABEL = "distancia"; // Su variable labelconst char * USER_AGENT = "ESP8266"; const char * VERSION = "1.0"; const char * HTTPSERVER = "industrial.api.ubidots.com"; // Usuarios comerciales de Ubidots // const char * HTTPSERVER = " things.ubidots.com "; // Ubidots Educational usersint HTTPPORT = 80; / * Sensor ultrasónico * / const int pwPin1 = 5; // El pin PWM donde está conectado el sensorWiFiClient clientUbi; / ****************************** Funciones auxiliares *** **************************** // ** Obtiene la longitud del cuerpo de la variable @arg el cuerpo del tipo char @return dataLen the longitud de la variable * / int dataLen (char * variable) {uint8_t dataLen = 0; for (int i = 0; i distancia / 25.4 * / float distance = pulseIn (pwPin1, HIGH); sendToUbidots (DEVICE_LABEL, VARIABLE_LABEL, distancia); delay (1000);} void sendToUbidots (const char * device_label, const char * variable_label, float sensor_value) {char * body = (char *) malloc (sizeof (char) * 150); char * data = (char *) malloc (sizeof (char) * 300); / * Espacio para almacenar valores para enviar * / char str_val [10]; / * ---- Transforma los valores de los sensores al tipo char ----- * / / * 4 es el ancho mínimo, 2 es precisión; el valor flotante se copia en str_val * / dtostrf (sensor_value, 4, 2, str_val); / * Construye el cuerpo que se enviará a la solicitud * / sprintf (body, "{"% s / ":% s}", variable_label, str_val); / * Construye el HTTP solicitud para ser POST * / sprintf (datos, "POST /api/v1.6/devices/%s", device_label); sprintf (datos, "% s HTTP / 1.1 / r / n", datos); sprintf (datos, "% sHost: things.ubidots.com / r / n", datos); sprintf (datos, "% sUser-Agent:% s /% s / r / n", datos, USER_AGENT, VERSION); sprintf (datos, "% sX-Auth-Token:% s / r / n", datos, TOKEN); sprint f (datos, "% sConnection: close / r / n", datos); sprintf (datos, "% sContent-Type: application / json / r / n", datos); sprintf (datos, "% sContent-Length:% d / r / n / r / n", datos, dataLen (cuerpo)); sprintf (datos, "% s% s / r / n / r / n", datos, cuerpo); / * Conexión inicial * / clientUbi.connect (HTTPSERVER, HTTPPORT); / * Verifique la conexión del cliente * / if (clientUbi.connect (HTTPSERVER, HTTPPORT)) {Serial.println (F ("Publicando sus variables:")); Serial.println (datos); / * Enviar la solicitud HTTP * / clientUbi.print (datos); } / * Mientras el cliente está disponible lee la respuesta del servidor * / while (clientUbi.available ()) {char c = clientUbi.read (); Serial.write (c); } / * Memoria libre * / libre (datos); cuerpo libre); / * Detener el cliente * / clientUbi.stop ();}

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

Puede verificar que se haya creado un dispositivo en su backend de Ubidots viéndolo en su cuenta Administración de dispositivos -> Dispositivos.

Al hacer clic en su dispositivo, encontrará una variable llamada "distancia" 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 mostrando 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 una configuración de aplicación sin código cuidadosamente diseñada por Ubidots.

Paso 5: Desarrollo de la aplicación Ubidots

Desarrollo de aplicaciones Ubidots
Desarrollo de aplicaciones Ubidots
Desarrollo de aplicaciones Ubidots
Desarrollo de aplicaciones Ubidots
Desarrollo de aplicaciones Ubidots
Desarrollo de aplicaciones Ubidots

Configuración de eventos de Ubidots

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

  1. Dentro del dispositivo actual "control de movimiento" crea una nueva variable predeterminada llamada "cajas", que recibirá un 1 cada vez que se cuente una nueva unidad.
  2. Vaya a Administración de dispositivos -> Eventos y haga clic en el ícono azul más en la esquina superior derecha de la página para agregar un nuevo evento.
  3. Configure su evento comenzando con "Activadores Si":
  • Seleccione una variable: "distancia"
  • 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 500 mm
  • Por 0 minutos
  • Ahorrar

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

5. Seleccione "Establecer variable" como acción.

6. A continuación, elija las "cajas" de variables predeterminadas creadas anteriormente y el valor "1".

7. Guarde los 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 ningún objeto cerca, y debería contar una nueva unidad que acaba de pasar..

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

Especialmente útil para cintas transportadoras industriales y recuento de unidades, este prototipo se puede personalizar para adaptarse a diferentes entornos o hardware simplemente en su codificación o desarrollo de aplicaciones.

8. Visualice el número de unidades detectadas (o las veces que se detectó un objeto) Ahora, usando la variable "cajas", vamos a crear una nueva variable de ventana móvil para sumar la cantidad total de lecturas recibidas de las variables "cajas" en un spam definido (minutos, horas, días, semanas, etc.). Para ejecutar este desarrollo, siga estos sencillos pasos:

Asigne las siguientes credenciales a su nueva variable de ventana móvil

Seleccione un dispositivo: control de movimiento (o el nombre del dispositivo al que está enviando sus datos)

Seleccione una variable: cajas

Calcule la: suma

Cada: "1" hora (o según las solicitudes de su aplicación)

Ahora asigne un nombre a la nueva variable que indique el número de cajas (o movimientos) contados en una hora, como "cajas / hora" o "unidades / horas".

Paso 6: Configuraciones del tablero

Configuraciones del tablero
Configuraciones del tablero

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

Vaya a Administración de dispositivos -> Paneles 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 recuento.

¿Cómo le gustaría ver sus datos ?: Gráfico

Seleccione un tipo de widget: gráfico de líneas

Agregar un dispositivo: control de movimiento

Agregar una variable: cajas / hora

Terminar. Y con este desarrollo final del tablero, su aplicación está completa y ahora tiene un sistema de detección de presencia y movimiento eficiente y efectivo. He aquí un vistazo final a nuestros resultados.

Recomendado: