Tabla de contenido:

Cómo hacer un sistema de alarma de detección de inundaciones inteligente usando Raspberry Pi y partículas de argón: 6 pasos
Cómo hacer un sistema de alarma de detección de inundaciones inteligente usando Raspberry Pi y partículas de argón: 6 pasos

Video: Cómo hacer un sistema de alarma de detección de inundaciones inteligente usando Raspberry Pi y partículas de argón: 6 pasos

Video: Cómo hacer un sistema de alarma de detección de inundaciones inteligente usando Raspberry Pi y partículas de argón: 6 pasos
Video: ✅ Cómo HACER una ALARMA INALAMBRICA para NIVEL de TANQUE de AGUA / LARGO ALCANCE 1.8 KM / HC-12 2024, Noviembre
Anonim
Image
Image
Cómo hacer un sistema inteligente de alarma de detección de inundaciones usando Raspberry Pi y partículas de argón
Cómo hacer un sistema inteligente de alarma de detección de inundaciones usando Raspberry Pi y partículas de argón

Tener sensores de inundación estándar es excelente para evitar daños masivos en su hogar o lugar de trabajo.

Pero resulta difícil si no está en casa para atender la alarma.

Por supuesto que podrías comprar esos inteligentes

Este sistema de alarma de inundación detecta cualquier líquido y activa la alarma y actualiza la página web sobre inundaciones a la que se puede acceder desde cualquier parte del mundo, ya sea que esté de vacaciones relajantes o simplemente en el trabajo y desee conocer el estado de su casa.

Suministros

Raspberry pi (estoy usando el modelo 3 B +) ejecutando raspbian

Partícula de argón

Sensor de agua Grove

Cámara Raspi

Zumbador

Cables de puente

Paso 1: conecte el sensor de agua a la partícula

Conecte el sensor de agua a la partícula
Conecte el sensor de agua a la partícula
Conecte el sensor de agua a la partícula
Conecte el sensor de agua a la partícula

El sensor de agua tiene 4 pines, que son GND, VCC, NC y SIG y vamos a usar solo tres de ellos

Estoy conectando el pin SIG a D2 en Argon.

Ahora, puede iniciar Particle Web IDE para escribir el código y actualizar a Argon

Así que registramos la función Particle liquid y definimos una variable isFloodPresent, que se puede llamar desde Particle Console y obtener el valor booleano de isFloodPresent y también llamar a la función liquid para una prueba simulada que toma el valor 1 como entrada, lo que significa verdadero para la inundación (agua) presente.

asegúrese de poder ver esa función y variable desde la Consola de partículas de su Dispositivo de partículas.

Paso 2: conecte la fuente de alarma a la frambuesa

Conecte la fuente de alarma a la frambuesa
Conecte la fuente de alarma a la frambuesa

En la placa de pruebas puede conectar Buzzer al pin GPIO de Raspberry

He conectado el extremo más pequeño del zumbador a GND (PIN 6) y el extremo más largo al pin 7 en frambuesa.

Ahora ejecute el código para ver. Necesitaremos que este archivo Python se esté ejecutando todo el tiempo para que pueda recibir los desencadenantes del servidor web y responder en consecuencia.

Alternativamente, puede ejecutar este archivo al inicio en su frambuesa, lo que puede hacer editando / etc / systemd

y este archivo se colocará en la carpeta cgi de su servidor apache, Hice un nuevo directorio flood-cgi dentro de / var / www / html / y coloqué este archivo.py que se comunicará con mi script cgi

Paso 3: configurar el servidor Apache

Configurar el servidor Apache
Configurar el servidor Apache

puede instalar el servidor apache escribiendo sudo apt-get install apache2

cuando está instalado, puede verificar escribiendo hostname -I

y obtendrá su dirección IP local y puede dirigirse a su navegador y debería ver el servidor en ejecución

Paso 4: habilite CGI en Apache

Habilitar CGI en Apache
Habilitar CGI en Apache

puede habilitar cgi escribiendo sudo a2enmod cgi

Por defecto, cgi_bin de apache se encuentra en / usr / lib / cgi-bin

aquí es donde puede poner sus scripts cgi después de habilitar cgi

para que surta efecto, debe reiniciar el servidor apache

Quería un directorio personalizado para mis scripts cgi, así que creé un directorio en / var / www / html / llamado flood-cgi

para habilitar este directorio tuve que hacer un archivo conf escribiendo

sudo nano /etc/apache2/conf-available/flood-cgi.conf

y agregando comandos como se muestra en la captura de pantalla

luego habilite este directorio escribiendo

var / www / html $ sudo a2enconf flood-cgi

ahora puede reiniciar su servidor apache nuevamente y todos los cgi de esta carpeta serán legibles por apache después del permiso.

Paso 5: configurar la página web

Configurar la página web
Configurar la página web

Para este simple servicio web, estoy usando HTML, Javascript, CSS, jquery y ajax.

Tengo cinco etiquetas de control en las que se puede hacer clic

En el caso de que se haga clic en tomar una foto desde la página web, se activará la función de clic en el botón de la foto y esta función se verá así

$ ("# photobutton"). click (function () {var floodDate = new Date ();

var floodImageName = "Flood_IMG_" + floodDate.toLocaleTimeString ();

$.ajax ({

url: 'flood-cgi / flood_cgi.py', método: 'publicar', datos: {name_for_image: floodImageName}, éxito: función (datos) {

alerta (datos, estado)

$ ("# recientepic"). attr ("src", "flood-cgi /" + floodImageName + ".jpg");

}

})

});

esto llamará a la secuencia de comandos flood_cgi.py para tomar una foto y guardar la imagen con un nombre personalizado generado por la fecha y hora actuales y ajax se carga en la página.

en caso de alarma, podemos utilizar esta función

function callAlarm (alarmType) {

$.ajax ({

url: 'flood-cgi / alarm.cgi', método: 'publicar', datos: {alarm_type: alarmType}, éxito: función (datos) {alerta (datos)

}, error: function (XMLHttpRequest, textStatus, throwError) {alert (throwError)}});

}

la función callAlarm se llamará cuando se haga clic en la etiqueta del zumbador, $ ("# buzzer"). click (function () {callAlarm ("prueba");

})

el código siguiente es cuando desea hacer clic en inundación simulada, es decir, llamar a la API de partículas y llamar a la función y cambiar el valor líquido 1 y verificar el sistema si todo funciona como se espera mediante la realización de un evento de inundación simulada

$ ("# mockFlood"). click (function () {console.log ("simulacro de inundación ha solicitado");

var floodVal = 1;

$ ("# señal2"). css ("tamaño de fuente", "pequeño");

var varName = "isFloodPresent";

var deviceID = "SU ID DE DISPOSITIVO";

var accessToken = "SU TOKEN DE ACCESO";

if (floodVal) {

$.post ("https://api.particle.io/v1/devices/" + ID de dispositivo + "/ liquid? access_token =" + accessToken, {liquid: floodVal}, función (datos, estado) {

si (estado == "éxito") {

alert ("¡¡¡Se ha producido una inundación simulada !!!");

} demás {

alert ("Lo siento, hubo un problema");

}

});

}

});

Estas son las funciones principales que necesita para conectarse con Particle Api y su raspberry para que su raspberry pi y el dispositivo de partículas Argon puedan comunicarse.

nota: quería cargar todo el código, pero no me permite cargar el archivo.html

Paso 6: Cree un script para la cámara Raspi

estamos creando.py simple para capturar la imagen y que tendrá una anotación de la fecha y hora actuales.

luego crearemos el script cgi flood_cgi.py para que sea llamado desde la web y este ordenará el archivo.py para tomar una foto.

asegúrese de iniciar el script cgi con #! / usr / bin / env python

y también otorgue permiso a Apache para ejecutar estos archivos.

El servidor apache se ejecuta en los datos www del usuario, por lo que una vez que creamos el archivo.py o.cgi, apache debe ser el propietario del archivo.

sudo chown pi: www-data flood-cgi.py

y dar permiso para ejecutar

sudo chmod a + x flood-cgi.py

tendrá que hacer esto para todos los archivos que deben ejecutarse desde el servidor apache.

NOTA: exponer su frambuesa a Internet y otorgar todos estos permisos hace que su frambuesa sea muy vulnerable por razones de seguridad, por lo que debe seguir un usuario y permisos estrictos e instalar un firewall como un firewall sin complicaciones (ufw)

Recomendado: