Tabla de contenido:
- Paso 1: requisitos
- Paso 2: configuración
- Paso 3: configuración del hardware
- Paso 4: configuración del firmware
- Paso 5: Desarrollo de la aplicación Ubidots
- Paso 6: Configuraciones del tablero
Video: Cómo construir un sistema de detección de movimiento con Arduino: 7 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:41
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:
- Automatización de puertas y portones
- Sensores de estacionamiento para designar lugares libres
- Monitoreo remoto del nivel del tanque
- Hogares e instalaciones inteligentes para iluminación y seguridad
- Detección y recuento de unidades en líneas transportadoras
- Detección de marcas en materiales impresos
- Detección de líquidos dentro de inclinaciones de cartón, plástico y papel
- Detección de distancia
- 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
- Pluma HUZZAH con ESP8266MB7389-100
- Sensor ultrasónico
- Arduino IDE 1.8.2 o superior
- 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
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
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
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:
- 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.
- 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.
- 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
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:
Iluminación debajo de la cama con detección de movimiento: 16 pasos (con imágenes)
Iluminación debajo de la cama con detección de movimiento: ¿Alguna vez trató de levantarse de la cama en silencio por la noche solo para tropezar con algo y despertar a toda la casa? Las luces nocturnas con detección de movimiento instaladas discretamente debajo de su cama brindan una luz de bajo nivel lo suficientemente brillante como para guiarlo alrededor de esos ladrillos LEGO perdidos
Sistema de alarma SMS de detección de movimiento de bricolaje: 5 pasos (con imágenes)
Sistema de alarma SMS de detección de movimiento de bricolaje: En este proyecto, combinaré un sensor de movimiento PIR barato con un módulo GSM TC35 para construir un sistema de alarma que le envíe una " ALERTA DE INTRUSO " Envía SMS cada vez que alguien intenta robar tus cosas. Empecemos
Luz nocturna LED para cama con detección de movimiento automática para bricolaje: 6 pasos (con imágenes)
Luz nocturna LED para cama con detección automática de movimiento de bricolaje: Hola, chicos bienvenidos a otro instructivo que siempre lo ayudará en su vida cotidiana y agregará una conveniencia para hacer su vida más fácil. Esto podría ser a veces un salvavidas en el caso de las personas mayores que tienen que luchar para levantarse de la cama
Sistema de alarma de detección de movimiento: 11 pasos (con imágenes)
Sistema de alarma de detección de movimiento: ¡Nota! Reactive Blocks ya no está disponible para descargar. Se puede usar una cámara USB básica para detectar movimiento en una habitación. En los siguientes pasos, le mostraremos cómo puede usar Reactive Blocks para programar una aplicación Java lista para ejecutar que envíe SMS
Salida controlada por movimiento: desde una luz de detección de movimiento: 6 pasos
Salida controlada por movimiento: desde una luz de detección de movimiento: Imagina que eres un truco o trato que va a la casa más aterradora de la cuadra. Después de pasar todos los demonios, fantasmas y cementerios, finalmente llegas al último camino. ¡Puedes ver los dulces en un tazón delante de ti! Pero luego, de repente, un gho