Innholdsfortegnelse:

Hvordan lage et alarmsystem for flomdeteksjon ved hjelp av Raspberry Pi og Particle Argon: 6 trinn
Hvordan lage et alarmsystem for flomdeteksjon ved hjelp av Raspberry Pi og Particle Argon: 6 trinn

Video: Hvordan lage et alarmsystem for flomdeteksjon ved hjelp av Raspberry Pi og Particle Argon: 6 trinn

Video: Hvordan lage et alarmsystem for flomdeteksjon ved hjelp av Raspberry Pi og Particle Argon: 6 trinn
Video: Nytt Lager | Hvordan sikre ditt nye lager? 2024, November
Anonim
Image
Image
Hvordan lage et alarmsystem for flomdeteksjon ved hjelp av Raspberry Pi og Particle Argon
Hvordan lage et alarmsystem for flomdeteksjon ved hjelp av Raspberry Pi og Particle Argon

Å ha standard flomsensorer er flott for å forhindre massiv skade på hjemmet ditt eller arbeidsplassen.

Men det gjør det vanskelig hvis du ikke er hjemme for å delta på alarmen.

Selvfølgelig kan du kjøpe de smarte

Dette flomalarmsystemet oppdager væske og utløser alarm og oppdaterer nettsiden om flom som kan nås hvor som helst i verden, enten du har en avslappende ferie eller bare er på jobb, og du vil vite om statusen til huset ditt.

Rekvisita

Bringebær pi (jeg bruker modell 3 B+) som kjører raspbian

Partikkel Argon

Grove vannsensor

Raspi kamera

Summer

Jumper ledninger

Trinn 1: Koble vannsensoren til partikkelen

Koble vannsensoren til partikkelen
Koble vannsensoren til partikkelen
Koble vannsensoren til partikkelen
Koble vannsensoren til partikkelen

vannsensor har 4 pinner, som er GND, VCC, NC og SIG, og vi kommer til å bruke bare tre av dem

Jeg kobler SIG -pinnen til D2 på Argon.

Nå kan du starte Particle Web IDE for å skrive koden og blinke til Argon

Så vi har registrert Particle function liquid og definert en variabel isFloodPresent, som kan ringes fra Particle Console og få den boolske verdien av isFloodPresent og også kalle funksjonsvæske for mock testing som tar verdi 1 som input som betyr sant for flom (vann) til stede.

Sørg for at du kan se den funksjonen og variabelen fra Particle Console på din Particle Device.

Trinn 2: Koble alarmkilden til bringebær

Koble alarmkilden til bringebær
Koble alarmkilden til bringebær

På breadboard kan du koble Buzzer til Raspberry's GPIO -pin

Jeg har koblet mindre ende av summer til GND (PIN 6) og lengre ende til pin 7 på bringebær.

Kjør nå koden for å se. Vi trenger at denne python -filen kjører hele tiden, slik at den kan motta utløsere fra webserveren og svare deretter.

Alternativt kan du kjøre denne filen ved oppstart på bringebæret som du kan gjøre ved å redigere /etc /systemd

og denne filen vil bli plassert i cgi -mappen på apache -serveren din, Jeg har laget en ny katalog flood-cgi inne/var/www/html/og plassert denne.py-filen som vil kommunisere med mitt cgi-skript

Trinn 3: Konfigurer Apache Server

Konfigurer Apache Server
Konfigurer Apache Server

du kan installere apache-serveren ved å skrive sudo apt-get install apache2

når det er installert, kan du bekrefte ved å skrive vertsnavn -I

og du får din lokale IP -adresse, og du kan gå til nettleseren din og ser serveren kjøre

Trinn 4: Aktiver CGI på Apache

Aktiver CGI på Apache
Aktiver CGI på Apache

du kan aktivere cgi ved å skrive sudo a2enmod cgi

Som standard ligger cgi_bin for apache i/usr/lib/cgi-bin

det er her du kan sette cgi -skriptene dine etter at du har aktivert cgi

For å få effekt må du starte apache -serveren på nytt

Jeg ønsket egendefinert katalog for mine cgi-skript, så jeg opprettet katalog i/var/www/html/kalt flood-cgi

For å aktivere denne katalogen måtte jeg lage conf -fil ved å skrive

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

og legge til kommandoer som vist på skjermbilde

aktiver deretter denne katalogen ved å skrive

var/www/html $ sudo a2enconf flood-cgi

nå kan du starte apache -serveren på nytt, og all cgi fra denne mappen kan leses av apache etter tillatelsen.

Trinn 5: Konfigurer websiden

Sett opp websiden
Sett opp websiden

For denne enkle webtjenesten bruker jeg HTML, Javascript, CSS, jquery og ajax.

Jeg har fem kontrolletiketter som er klikkbare, Hvis det klikkes på ta bilde fra websiden, vil det utløse funksjonen for fotoknappklikk, og denne funksjonen ser slik ut

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

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

$.ajax ({

url: 'flood-cgi/flood_cgi.py', metode: 'post', data: {name_for_image: floodImageName}, suksess: funksjon (data) {

varsel (data, status)

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

}

})

});

dette vil kalle scriptet flood_cgi.py for å ta bilde og lagrer bilde med egendefinert navn generert av gjeldende dato og klokkeslett og ajax laster opp til siden.

i tilfelle alarm, kan vi bruke denne funksjonen

function callAlarm (alarmType) {

$.ajax ({

url: 'flood-cgi/alarm.cgi', metode: 'post', data: {alarm_type: alarmType}, suksess: funksjon (data) {varsel (data)

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

}

funksjonen callAlarm vil bli ringt opp når du klikker på summeretiketten, $ ("#summer"). klikk (function () {callAlarm ("test");

})

Koden nedenfor er når du vil klikke på mock flood, dvs. ringe Particle API og ringe funksjonen og endre væskeverdien 1 og sjekke systemet om hele fungerer som forventet ved å utføre en mock flomhendelse

$ ("#mockFlood"). klikk (function () {console.log ("mock flom har bedt om");

var floodVal = 1;

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

var varName = "isFloodPresent";

var deviceID = "DIN ENHETS -ID";

var accessToken = "DITT TILGANGSTOKET";

if (floodVal) {

$.post ("https://api.particle.io/v1/devices/" + deviceID + "/liquid? access_token =" + accessToken, {liquid: floodVal}, funksjon (data, status) {

if (status == "suksess") {

alert ("Mock Flood has gjennomført !!!");

} annet {

alert ("Beklager, det var et problem");

}

});

}

});

Dette er hovedfunksjonene du trenger for å få forbindelse med Particle Api og bringebæret ditt, slik at bringebær -pi og partikkelenhet Argon kan kommunisere.

Merk: Jeg ønsket å laste opp all kode, men det tillater meg ikke å laste opp.html -fil

Trinn 6: Lag skript for Raspi -kamera

vi lager enkle.py for å ta bilde, og det vil ha merknad om gjeldende dato og klokkeslett.

så vil vi lage cgi script flood_cgi.py så det vil bli kalt fra nettet, og dette vil kommandere.py -fil for å ta bilde.

sørg for å starte cgi -skriptet med #! /usr/bin/env python

og gi også apache tillatelse til å kjøre disse filene.

apache-server kjører på brukerens www-data, så når vi har opprettet.py- eller.cgi-filen, må apache være eier av filen

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

og gi tillatelse til å utføre

sudo chmod a+x flood-cgi.py

du må gjøre dette for alle filer som må kjøres fra apache -serveren.

MERK: å utsette bringebæret for internett og gi alle disse tillatelsene gjør bringebæret ditt svært sårbart av sikkerhetsmessige årsaker, så strenge bruker- og tillatelser bør følges og installere brannmur som ukomplisert brannmur (ufw)

Anbefalt: