Tabla de contenido:

Detector de obstrucciones de drenaje: 11 pasos (con imágenes)
Detector de obstrucciones de drenaje: 11 pasos (con imágenes)

Video: Detector de obstrucciones de drenaje: 11 pasos (con imágenes)

Video: Detector de obstrucciones de drenaje: 11 pasos (con imágenes)
Video: tips para destapar tubos para el drenaje de las Casas 2024, Mes de julio
Anonim
Image
Image

¡No dejes que un desagüe obstruido te frene! Al regresar de nuestras vacaciones, mi esposa y yo nos sorprendió el agua que cubría el piso de nuestro apartamento, y descubrimos que ni siquiera es agua limpia, hay desagües por todas partes. Después de limpiar el desagüe y limpiar el piso, tuve esta pregunta: ¿por qué no tenemos un sistema de alarma para posibles obstrucciones en el desagüe? Los desagües obstruidos no solo pueden detener su hogar, sino que también consumirán costos adicionales de sus bolsillos, $ 206 en promedio es el costo de limpiar un desagüe obstruido según HomeAdvisor, además de los costos ocultos de alfombras dañadas, muebles de madera, … etc. Nuestra idea es permitir que tanto los propietarios de viviendas como las empresas como los departamentos de mantenimiento de la ciudad / complejos y los proveedores de servicios especializados tengan un sistema eficiente e inteligente que alerta a los responsables lo antes posible para que tomen medidas, lo que contribuye a enriquecer las ciudades inteligentes con un importante característica.

La idea Aunque la detección de obstrucciones se puede hacer a través de una serie de técnicas, como el uso de sensores de gas o mecanismos internos, nuestro equipo se centró en utilizar el sonido como entrada, ya que sabemos que golpear un tubo donde está abierto es un sonido diferente al que sucedió. cuando está cerrado. De acuerdo con este concepto simple, si podemos entrenar a un modelo los patrones de sonido que ocurren en la superficie del tubo durante las obstrucciones, así como esos patrones ocurren en las tuberías abiertas, entonces podemos aplicar el modelo para detectar de manera proactiva cuando una obstrucción comienza a componerse, y luego suenan algunas facturas.

Créditos para

  • Mohamed Hassan
  • Ahmed Emam

Proyecto en detalle En este proyecto se implementan 3 fases: Recopilación de datos, Aprendizaje y predicción.

Antes de aplicar este sistema en la vida real, necesitábamos crear un entorno de simulación forzado, donde tenemos la tubería, el agua que fluye y de alguna manera simular la obstrucción. Entonces, obtuvimos un tubo, una manguera de agua con una fuente de agua que hizo esto en la bañera y usamos la superficie de la bañera para cerrar el tubo que representa la obstrucción. En este video, explicamos cómo construimos el entorno y cómo recopilamos datos para el entrenamiento del modelo.

Y en este siguiente video, mostrando cómo hicimos las pruebas para el sistema y el modelo, en modo abierto, luego en modo atascado y de regreso al modo abierto, sin embargo

Entonces, exploremos nuestra implementación paso a paso:

Paso 1: el experimento

El experimento
El experimento
El experimento
El experimento
El experimento
El experimento
El experimento
El experimento

En este escenario utilizamos una pequeña tubería de agua conectada a nuestro hardware y sensor de sonido. El hardware lee el valor del sensor y lo envía de vuelta a la nube. Esto se ha hecho durante 10 minutos para el tubo bloqueado y luego otros 10 minutos para el tubo que no está bloqueado.

Paso 2: hardware

Hardware
Hardware
Hardware
Hardware
Hardware
Hardware

Yo- Arduino

Para detectar el sonido del agua dentro de la tubería necesitamos un sensor de sonido. Sin embargo, Raspberry Pi 3 no tiene GPIO analógico. Para manejar este problema usamos Arduino ya que Arduino tiene GPIO analógico. Entonces conectamos el sensor Grove Sound al escudo Grove Arduino y conectamos Shield al Arduino UNO 3. Luego conectamos Arduino y Raspberry usando un cable USB. Para obtener más información sobre el sensor Grove Sound, puede consultar su ficha técnica. Puede encontrar en la hoja de datos un código de muestra sobre cómo leer los valores del sensor. El código de muestra casi se usa con pequeños cambios. En el siguiente código, conectamos el sensor a A0 en el escudo. Para escribir en serie, usamos la función Serial.begin (). Para comunicarse con Raspberry, la velocidad en baudios establecida en 115200 se enviará a Raspberry si es mayor que cierto umbral para cortar el ruido. Se han realizado muchas pruebas para elegir los valores de umbral y retardo deseados. Se encontró que el umbral es 400 y el valor de retardo es 10 milisegundos. Se ha elegido Threshold para filtrar el ruido normal y garantizar que solo se envíen datos significativos a la nube. Se ha elegido el retardo para garantizar que el sensor detecte inmediatamente cualquier cambio en el sonido del flujo dentro del tubo.

II- Raspberry Pi 3 Para descargar cosas de Android en Raspberry, puede descargar la última versión desde la consola de Android Things. En este proyecto usamos la versión: OIR1.170720.017. siga los pasos en el sitio de Raspberry para instalar el sistema operativo en Raspberry, para Windows puede usar estos pasos Después de la instalación, puede conectar el Raspberry a su computadora usando USB. Luego, en la consola de su computadora, use el siguiente comando para obtener la IP de Raspberry

nmap -sn 192.168.1. *

Después de obtener la IP, conéctese a su Raspberry usando el siguiente comando

adb connect

Para conectar su Raspberry a Wifi (agregue su SSID y contraseña)

adb am startservice

-n com.google.wifisetup /. WifiSetupService

-a WifiSetupService. Connect

-e ssid *****

-e contraseña ****

Paso 3: Google Cloud - Registro

Google Cloud: registro
Google Cloud: registro
Google Cloud: registro
Google Cloud: registro
Google Cloud: registro
Google Cloud: registro
Google Cloud: registro
Google Cloud: registro

Google ofrece un nivel gratuito para todos los usuarios durante un año con un límite máximo de 300 $, gracias a Google:). Siga las pantallas para crear un nuevo proyecto en Google Cloud

Paso 4: Google Cloud - Pub / Sub

Google Cloud: Pub / Sub
Google Cloud: Pub / Sub
Google Cloud: Pub / Sub
Google Cloud: Pub / Sub
Google Cloud: Pub / Sub
Google Cloud: Pub / Sub
Google Cloud: Pub / Sub
Google Cloud: Pub / Sub

Google Cloud Pub / Sub es un servicio de mensajería en tiempo real totalmente administrado que te permite enviar y recibir mensajes entre aplicaciones independientes.

Paso 5: Google Cloud - IOT Core

Google Cloud - IOT Core
Google Cloud - IOT Core
Google Cloud - IOT Core
Google Cloud - IOT Core
Google Cloud - IOT Core
Google Cloud - IOT Core

II- IOT Core Un servicio completamente administrado para conectar, administrar e ingerir datos de manera fácil y segura desde dispositivos dispersos por todo el mundo. IOT Core sigue siendo Beta, para tener acceso a él, debe realizar una solicitud con Justificación a Google. Hicimos la solicitud, nuestra justificación fue este concurso. Google aprobado, gracias de nuevo a Google:). Raspberry enviará los datos del sensor a IOT Core, que enviará las lecturas al tema de PubSub creado en el paso anterior.

Paso 6: Google Cloud - Funciones de la nube

Google Cloud: funciones en la nube
Google Cloud: funciones en la nube
Google Cloud: funciones en la nube
Google Cloud: funciones en la nube

Cloud Functions es un entorno sin servidor para crear y conectar servicios en la nube. El desencadenante de esta función es el tema PubSup que se creó en el paso 1.;; Esta función se activará cuando se escriba un nuevo valor en PubSup y se escriba en Cloud DataStore con el tipo "SoundValue"

Paso 7: Google Cloud - Cloud DataStore

Google Cloud Datastore es una base de datos de documentos NoSQL creada para el escalado automático, alto rendimiento y facilidad de desarrollo de aplicaciones. Si bien la interfaz de Cloud Datastore tiene muchas de las mismas características que las bases de datos tradicionales, como base de datos NoSQL se diferencia de ellas en la forma en que describe las relaciones entre los objetos de datos. No es necesario realizar ninguna configuración, ya que una vez que Cloud Functions escribe los valores del sensor en DataStore, los datos se agregarán a DataStore

Paso 8: Google Cloud - BigQuery

Google Cloud: BigQuery
Google Cloud: BigQuery
Google Cloud: BigQuery
Google Cloud: BigQuery
Google Cloud: BigQuery
Google Cloud: BigQuery
Google Cloud: BigQuery
Google Cloud: BigQuery

Recopilamos una muestra de 10 minutos de tubería normal y 10 minutos de tubería bloqueada con una diferencia de exactamente 1 hora entre las 2 iteraciones. Después de descargar los datos de DataStore y realizar alguna manipulación para agregar clasificación para cada fila. Ahora tenemos 2 archivos csv, uno para cada categoría. Como práctica recomendada, suba primero los archivos CSV de datos a Cloud Storage. En la siguiente pantalla, creamos un nuevo depósito y cargamos los 2 archivos CSV, ya que este depósito se utilizará solo para análisis, no es necesario elegir un depósito multirregional. Luego, cree un nuevo conjunto de datos y una nueva tabla en BigQuery y suba el archivo de 2 CSV del depósito a la nueva mesa

Paso 9: Google Cloud - Data Studio

Google Cloud: Data Studio
Google Cloud: Data Studio
Google Cloud: Data Studio
Google Cloud: Data Studio
Google Cloud: Data Studio
Google Cloud: Data Studio

Luego usamos Data Studio para extraer algunas ideas. Data Studio leerá datos de la tabla de BigQuery. En los gráficos podemos ver la diferencia entre 2 categorías en número de telemetrías y suma de valores por minuto. Con base en estos conocimientos, podemos diseñar un modelo simple, la tubería se considera bloqueada si en 3 minutos sucesivos, el recuento de valores de telemetrías que son superiores al umbral de ruido (400) supera las 350 telemetrías. y en 3 minutos sucesivos, el valor de recuento de telemetrías superior al umbral de chispa (720) es superior a 10 telemetrías.

Paso 10: Fase de predicción

Fase de predicción
Fase de predicción

Nos referimos a una lectura, cuando supera un cierto valor (THRESHOLD_VALUE) que se estableció en 350 que filtra el ruido y menores caudales de agua en el tubo, de ser considerado como lectura

El análisis de datos mostró que en el modo abierto el número de lecturas es inferior a 100, pero en el modo de obstrucción, los valores son mucho más altos (llegaron a 900 por minuto), pero en casos raros también fueron menos de 100. Sin embargo, estos casos no se repiten en consecuencia, y durante tres minutos consecutivos, el número total de lecturas siempre excedió las 350. Tener el modo abierto en los mismos tres minutos sumará menos de 300, podríamos poner con confianza esta regla: Regla # 1 Para tres minutos en bruto, si las lecturas totales > 350, se detecta una obstrucción. Encontramos que el valor máximo alcanzado en modo abierto no excede un cierto valor (SPARK_VALUE) que se encuentra en 770, por lo que agregamos esta regla: Regla # 2 Si el valor de lectura> 350, entonces la mayoría de las veces se detecta una obstrucción.

La combinación de ambas reglas nos brindó una manera fácil de implementar la lógica de detección, como se muestra. Tenga en cuenta que el siguiente código se implementó en Arduino, que luego evalúa las telemetrías recibidas en función de nuestro modelo y se envía a raspberry si la tubería está obstruida o abierta.

Paso 11: Código

Todo el código para Arduino, Raspberry y Cloud Function se puede encontrar en Github.

Para más información puede consultar este enlace.

Recomendado: