Índice:

Como fazer um sistema de alarme de detecção de inundação inteligente usando Raspberry Pi e Particle Argon: 6 etapas
Como fazer um sistema de alarme de detecção de inundação inteligente usando Raspberry Pi e Particle Argon: 6 etapas

Vídeo: Como fazer um sistema de alarme de detecção de inundação inteligente usando Raspberry Pi e Particle Argon: 6 etapas

Vídeo: Como fazer um sistema de alarme de detecção de inundação inteligente usando Raspberry Pi e Particle Argon: 6 etapas
Vídeo: Sensor INTELIGENTE de nível de água para caixa d'água - APP SMARTLIFE 2024, Novembro
Anonim
Image
Image
Como fazer um sistema de alarme de detecção de inundação inteligente usando Raspberry Pi e Particle Argon
Como fazer um sistema de alarme de detecção de inundação inteligente usando Raspberry Pi e Particle Argon

Ter sensores de inundação padrão é ótimo para evitar danos massivos à sua casa ou local de trabalho.

Mas fica difícil se você não está em casa para atender o alarme.

Claro que você pode comprar aqueles inteligentes

Este sistema de alarme de inundação detecta qualquer líquido e dispara alarme e atualiza a página da web sobre inundação que pode ser acessada em qualquer lugar do mundo, esteja você em férias relaxantes ou apenas no trabalho e deseja saber sobre o estado da sua casa.

Suprimentos

Raspberry pi (estou usando o modelo 3 B +) executando raspbian

Particle Argon

Grove Water Sensor

Câmera Raspi

Campainha

Fios de ligação

Etapa 1: Conecte o sensor de água à partícula

Conecte o sensor de água à partícula
Conecte o sensor de água à partícula
Conecte o sensor de água à partícula
Conecte o sensor de água à partícula

o sensor de água tem 4 pinos, que são GND, VCC, NC e SIG e vamos usar apenas três deles

Estou conectando o pino SIG ao D2 no argônio.

Agora, você pode iniciar o Particle Web IDE para escrever o código e fazer flash no Argon

Portanto, registramos a função Particle liquid e definimos uma variável isFloodPresent, que pode ser chamada do Particle Console e obter o valor booleano de isFloodPresent e também chamar a função liquid para testes simulados que leva o valor 1 como entrada, o que significa verdadeiro para inundação (água) presente.

certifique-se de que é capaz de ver essa função e variável no Console de Partículas do seu Dispositivo de Partículas.

Etapa 2: conectar a fonte de alarme ao Raspberry

Conecte a fonte de alarme ao Raspberry
Conecte a fonte de alarme ao Raspberry

No breadboard, você pode conectar o Buzzer ao pino GPIO do Raspberry

Conectei a extremidade menor da campainha ao GND (PIN 6) e a extremidade mais longa ao pino 7 do Framboesa.

Agora execute o código para ver. Precisamos que esse arquivo python esteja em execução o tempo todo para que possa receber os gatilhos do servidor da web e responder de acordo.

Alternativamente, você pode executar este arquivo na inicialização do seu raspberry, o que pode ser feito editando / etc / systemd

e este arquivo será colocado na pasta cgi do seu servidor apache, Eu criei um novo diretório flood-cgi dentro de / var / www / html / e coloquei este arquivo.py que irá se comunicar com meu script cgi

Etapa 3: configurar o servidor Apache

Configurar o servidor Apache
Configurar o servidor Apache

você pode instalar o servidor apache digitando sudo apt-get install apache2

quando estiver instalado, você pode verificar digitando hostname -I

e você obterá seu endereço IP local e poderá acessar seu navegador e deverá ver o servidor em execução

Etapa 4: Habilitar CGI no Apache

Habilitar CGI no Apache
Habilitar CGI no Apache

você pode habilitar o cgi digitando sudo a2enmod cgi

Por padrão cgi_bin do apache está localizado em / usr / lib / cgi-bin

aqui é onde você pode colocar seus scripts cgi depois de habilitar cgi

para fazer efeito, você precisa reiniciar o servidor apache

Eu queria um diretório personalizado para meus scripts cgi, então criei um diretório em / var / www / html / chamado flood-cgi

para habilitar este diretório eu tive que fazer o arquivo conf digitando

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

e adicionando comandos como mostrado na imagem

em seguida, habilite este diretório digitando

var / www / html $ sudo a2enconf flood-cgi

agora você pode reiniciar seu servidor apache novamente e todos os cgi desta pasta serão lidos pelo apache após a permissão.

Etapa 5: configurar a página da web

Configurar a página da web
Configurar a página da web

Para este serviço web simples, estou usando HTML, Javascript, CSS, jquery e ajax.

Eu tenho cinco rótulos de controle que são clicáveis, No caso de clicar para tirar uma foto da página da web, ele irá acionar a função de clique do botão de foto e esta função se parece com esta

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

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

$.ajax ({

url: 'flood-cgi / flood_cgi.py', método: 'post', dados: {name_for_image: floodImageName}, sucesso: função (dados) {

alerta (dados, status)

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

}

})

});

isso chamará o script flood_cgi.py para tirar a foto e salvar a imagem com o nome personalizado gerado pela data e hora atuais e o ajax carrega até a página.

em caso de alarme, podemos usar esta função

function callAlarm (alarmType) {

$.ajax ({

url: 'flood-cgi / alarm.cgi', método: 'post', dados: {alarm_type: alarmType}, sucesso: função (dados) {alerta (dados)

}, erro: função (XMLHttpRequest, textStatus, throwError) {alert (throwError)}});

}

a função callAlarm será chamada quando o rótulo da campainha for clicado, $ ("# buzzer"). click (function () {callAlarm ("test");

})

o código abaixo é quando você deseja clicar em inundação simulada, ou seja, chamar a API de partículas e chamar a função, alterar o valor líquido 1 e verificar se o sistema está funcionando conforme o esperado, conduzindo um evento de inundação simulada

$ ("# mockFlood"). click (function () {console.log ("simulação de inundação solicitada");

var floodVal = 1;

$ ("# signal2"). css ("font-size", "small");

var varName = "isFloodPresent";

var deviceID = "ID DO SEU DISPOSITIVO";

var accessToken = "SEU TOKEN DE ACESSO";

if (floodVal) {

$.post ("https://api.particle.io/v1/devices/" + deviceID + "/ liquid? access_token =" + accessToken, {liquid: floodVal}, função (dados, status) {

if (status == "sucesso") {

alerta ("Mock Flood conduziu !!!");

} outro {

alert ("Desculpe, ocorreu um problema");

}

});

}

});

Estas são as funções principais de que você precisa para fazer a conexão com o Particle Api e o seu raspberry para que o seu pi do raspberry e o dispositivo de partículas Argon possam se comunicar.

observação: eu queria fazer upload de todo o código, mas não me permite fazer upload do arquivo.html

Etapa 6: Criar script para câmera Raspi

estamos criando.py simples para capturar imagem e que terá anotação de data e hora atuais nele.

em seguida, criaremos o script cgi flood_cgi.py para que ele seja chamado da web e comande o arquivo.py para tirar a foto.

certifique-se de iniciar o script cgi com #! / usr / bin / env python

e também dê permissão ao apache para executar esses arquivos.

O servidor apache é executado em dados www do usuário, portanto, uma vez que criamos o arquivo.py ou.cgi, o apache precisa ser o proprietário do arquivo

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

e dar permissão para executar

sudo chmod a + x flood-cgi.py

você terá que fazer isso para todos os arquivos que precisam ser executados no servidor apache.

NOTA: expor seu raspberry à internet e dar todas essas permissões torna seu raspberry muito vulnerável por razões de segurança, portanto, usuários e permissões estritas devem ser seguidos e instalar um firewall como um firewall simples (ufw)

Recomendado: