Cuprins:

Cum se face un sistem de alarmă inteligent de detectare a inundațiilor folosind Raspberry Pi și Argonul particulelor: 6 pași
Cum se face un sistem de alarmă inteligent de detectare a inundațiilor folosind Raspberry Pi și Argonul particulelor: 6 pași

Video: Cum se face un sistem de alarmă inteligent de detectare a inundațiilor folosind Raspberry Pi și Argonul particulelor: 6 pași

Video: Cum se face un sistem de alarmă inteligent de detectare a inundațiilor folosind Raspberry Pi și Argonul particulelor: 6 pași
Video: Tutorial Viziune Computerizata. Sistem de supraveghere si geolocalizare rutiera. python, OCR yolov5 2024, Noiembrie
Anonim
Image
Image
Cum se face un sistem inteligent de detectare a inundațiilor folosind Raspberry Pi și Argonul particulelor
Cum se face un sistem inteligent de detectare a inundațiilor folosind Raspberry Pi și Argonul particulelor

Dispunerea de senzori standard de inundații este excelentă pentru a preveni deteriorarea masivă a locuinței sau a locului de muncă.

Dar este dificil dacă nu sunteți acasă să participați la alarmă.

Bineînțeles că le-ai putea cumpăra pe astea inteligente

Acest sistem de alarmă împotriva inundațiilor detectează orice lichid și declanșează alarma și actualizează pagina web despre inundații care poate fi accesată oriunde în lume, indiferent dacă aveți o vacanță relaxantă sau doar la locul de muncă și doriți să aflați despre starea casei dvs.

Provizii

Raspberry pi (folosesc modelul 3 B +) care rulează raspbian

Argonul particulelor

Senzor de apă Grove

Camera Raspi

Buzzer

Sârme de jumper

Pasul 1: Conectați senzorul de apă la particule

Conectați senzorul de apă la particule
Conectați senzorul de apă la particule
Conectați senzorul de apă la particule
Conectați senzorul de apă la particule

senzorul de apă are 4 pini, care sunt GND, VCC, NC și SIG și vom folosi doar trei dintre ei

Conectez pinul SIG la D2 pe Argon.

Acum, puteți lansa Particle Web IDE pentru a scrie codul și a bloca pe Argon

Deci, am înregistrat funcția Particle lichid și am definit o variabilă isFloodPresent, care poate fi apelată de la Particle Console și obține valoarea booleană a isFloodPresent și, de asemenea, apelează funcția lichidă pentru testarea simulată care ia valoarea 1 ca intrare, ceea ce înseamnă adevărat pentru inundație (apă) prezentă.

asigurați-vă că puteți vedea acea funcție și variabilă din Particle Console a dispozitivului Particle.

Pasul 2: Conectați sursa de alarmă la Raspberry

Conectați sursa de alarmă la zmeură
Conectați sursa de alarmă la zmeură

Pe panou puteți conecta Buzzer la pinul GPIO al Raspberry

Am conectat capătul mai mic al buzzerului la GND (PIN 6) și capătul mai lung la pinul 7 pe zmeură.

Acum rulați codul pentru a vedea. Vom avea nevoie ca acest fișier python să ruleze tot timpul, astfel încât să poată primi declanșatoarele de pe serverul web și să răspundă în consecință.

Alternativ, puteți rula acest fișier la pornire pe zmeură, pe care îl puteți face editând / etc / systemd

și acest fișier va fi plasat în folderul cgi al serverului dvs. apache, Am creat un nou director flood-cgi în / var / www / html / și am plasat acest fișier.py care va comunica cu scriptul meu cgi

Pasul 3: Configurați serverul Apache

Configurați serverul Apache
Configurați serverul Apache

puteți instala serverul apache tastând sudo apt-get install apache2

când este instalat, puteți verifica tastând numele gazdei -I

și veți obține adresa IP locală și vă puteți îndrepta către browserul dvs. și ar trebui să vedeți serverul care rulează

Pasul 4: Activați CGI pe Apache

Activați CGI pe Apache
Activați CGI pe Apache

puteți activa cgi tastând sudo a2enmod cgi

În mod implicit, cgi_bin de apache este situat în / usr / lib / cgi-bin

aici puteți pune scripturile CGI după ce activați CGI

pentru a avea efectul, trebuie să reporniți serverul apache

Am vrut un director personalizat pentru scripturile mele CGI, așa că am creat directorul în / var / www / html / numit flood-cgi

pentru a activa acest director a trebuit să fac fișierul conf tastând

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

și adăugarea de comenzi așa cum se arată în captura de ecran

apoi activați acest director tastând

var / www / html $ sudo a2enconf flood-cgi

acum vă puteți reporni din nou serverul apache și toate cgi-urile din acest folder vor fi citite de apache după permisiune.

Pasul 5: configurați pagina web

Configurați pagina web
Configurați pagina web

Pentru acest serviciu web simplu, folosesc HTML, Javascript, CSS, jquery și ajax.

Am cinci etichete de control care pot fi făcute clic, În cazul în care se face clic pe fotografia de pe pagina web, aceasta va declanșa funcția de clic pe butonul foto și această funcție arată astfel

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

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

$.ajax ({

url: 'flood-cgi / flood_cgi.py', metoda: „post”, date: {name_for_image: floodImageName}, succes: funcție (date) {

alertă (date, stare)

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

}

})

});

acest lucru va apela scriptul flood_cgi.py pentru a face fotografie și pentru a salva imagini cu nume personalizat generate de data și ora curente și încărcările ajax până la pagină.

în caz de alarmă, putem folosi această funcție

funcție callAlarm (alarmType) {

$.ajax ({

url: „flood-cgi / alarm.cgi”, metoda: „post”, date: {alarm_type: alarmType}, succes: funcție (date) {alertă (date)

}, eroare: funcție (XMLHttpRequest, textStatus, throwError) {alert (throwError)}});

}

funcția callAlarm va fi apelată când se face clic pe eticheta buzzer, $ ("# buzzer"). click (function () {callAlarm ("test");

})

codul de mai jos este atunci când doriți să faceți clic pe mock flood, adică să apelați Particle API și să apelați funcția și să modificați valoarea lichidului 1 și să verificați sistemul dacă întregul funcționează așa cum era de așteptat prin efectuarea unui eveniment de inundație simulată

$ ("# mockFlood"). click (function () {console.log ("mock flood a solicitat");

var floodVal = 1;

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

var varName = "isFloodPresent";

var deviceID = "ID-ul DISPOZITIVULUI TĂU";

var accessToken = "JOCUL TAU DE ACCES";

if (floodVal) {

$.post ("https://api.particle.io/v1/devices/" + deviceID + "/ liquid? access_token =" + accessToken, {lichid: floodVal}, funcție (date, stare) {

if (status == "succes") {

alert („Mock Flood a condus !!!”);

} altceva {

alert („Ne pare rău, a apărut o problemă”);

}

});

}

});

Acestea sunt principalele funcții de care aveți nevoie pentru a face conexiunea cu Particle Api și zmeura dvs., astfel încât dispozitivul dvs. de zmeură pi și Argon să poată comunica.

notă: am vrut să încărc tot codul, dar nu îmi permite să încărc fișierul.html

Pasul 6: Creați un script pentru camera Raspi

creăm.py simplu pentru a captura imagini și care va avea adnotarea datei și orei curente pe ea.

apoi vom crea scriptul cgi flood_cgi.py, deci va fi apelat de pe web și acesta va comanda fișierul.py pentru a face fotografia.

asigurați-vă că porniți scriptul cgi cu #! / usr / bin / env python

și, de asemenea, acordați permisiunea apache pentru a rula aceste fișiere.

serverul apache rulează pe datele www ale utilizatorului, astfel încât odată ce creăm fișierul.py sau.cgi, apache trebuie să fie proprietarul fișierului

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

și dați permisiunea de a executa

sudo chmod a + x flood-cgi.py

va trebui să faceți acest lucru pentru toate fișierele care trebuie să ruleze de pe serverul apache.

NOTĂ: expunerea zmeurii dvs. la internet și acordarea tuturor acestor permisiuni face ca zmeura să fie foarte vulnerabilă din motive de securitate, astfel încât utilizatorii și permisiunile stricte ar trebui respectate și să instalați firewall-ul ca un firewall necomplicat (ufw)

Recomandat: