Turinys:

Kaip sukurti išmaniąją potvynių aptikimo signalizacijos sistemą naudojant Raspberry Pi ir argono daleles: 6 žingsniai
Kaip sukurti išmaniąją potvynių aptikimo signalizacijos sistemą naudojant Raspberry Pi ir argono daleles: 6 žingsniai

Video: Kaip sukurti išmaniąją potvynių aptikimo signalizacijos sistemą naudojant Raspberry Pi ir argono daleles: 6 žingsniai

Video: Kaip sukurti išmaniąją potvynių aptikimo signalizacijos sistemą naudojant Raspberry Pi ir argono daleles: 6 žingsniai
Video: Kaip sukurti išmaniąją nuolaidą 2024, Lapkritis
Anonim
Image
Image
Kaip sukurti išmaniąją potvynių aptikimo signalizacijos sistemą naudojant Raspberry Pi ir Argon daleles
Kaip sukurti išmaniąją potvynių aptikimo signalizacijos sistemą naudojant Raspberry Pi ir Argon daleles

Standartiniai potvynių jutikliai yra puikūs, kad būtų išvengta didelės žalos jūsų namams ar darbo vietai.

Tačiau sunku, jei nesate namuose, apsilankyti žadintuve.

Žinoma, jūs galite nusipirkti protingus

Ši potvynių aliarmo sistema aptinka bet kokį skystį ir suaktyvina aliarmą ir atnaujina tinklalapį apie potvynį, kurį galima pasiekti bet kurioje pasaulio vietoje, nesvarbu, ar atostogaujate atostogų metu, ar tiesiog dirbate, ir norite sužinoti apie savo būsto būklę.

Prekės

Raspberry pi (naudoju 3 B+modelį), kuriame veikia raspbian

Argono dalelės

Grove vandens jutiklis

„Raspi“kamera

Garsinis signalas

Jumperio laidai

1 žingsnis: prijunkite vandens jutiklį prie dalelių

Prijunkite vandens jutiklį prie dalelių
Prijunkite vandens jutiklį prie dalelių
Prijunkite vandens jutiklį prie dalelių
Prijunkite vandens jutiklį prie dalelių

vandens jutiklis turi 4 kaiščius, kurie yra GND, VCC, NC ir SIG, ir mes ketiname naudoti tik tris iš jų

Aš jungiu SIG kaištį prie Argon D2.

Dabar galite paleisti „Particle Web IDE“, kad parašytumėte kodą ir paleistumėte „Argon“

Taigi mes užregistravome dalelių funkcinį skystį ir apibrėžėme kintamąjį isFloodPresent, kurį galima iškviesti iš dalelių konsolės ir gauti loginę isFloodPresent vertę, taip pat iškviesti funkcinį skystį bandomajam bandymui, kurio vertė 1 kaip įvestis, o tai reiškia, kad esama potvynio (vandens).

įsitikinkite, kad galite matyti šią funkciją ir kintamąjį savo dalelių įrenginio dalelių konsolėje.

2 veiksmas: prijunkite aliarmo šaltinį prie aviečių

Prijunkite aliarmo šaltinį prie aviečių
Prijunkite aliarmo šaltinį prie aviečių

Duonos lentoje galite prijungti „Buzzer“prie „Raspberry“GPIO kaiščio

Mažesnį garsinio signalo galą prijungiau prie GND (PIN 6), o ilgesnį - prie avinėlio 7 kaiščio.

Dabar paleiskite kodą, kad pamatytumėte. Mums reikės, kad šis „python“failas veiktų visą laiką, kad jis galėtų gauti aktyviklius iš žiniatinklio serverio ir atitinkamai reaguoti.

Arba galite paleisti šį failą paleisdami savo avietę, kurią galite padaryti redaguodami /etc /systemd

ir šis failas bus patalpintas jūsų apache serverio cgi aplanke, Sukūriau naują katalogą „flood-cgi“/var/www/html/ir įdėjau šį.py failą, kuris bendrauja su mano cgi scenarijumi

3 veiksmas: sukonfigūruokite „Apache“serverį

Konfigūruokite „Apache Server“
Konfigūruokite „Apache Server“

apache serverį galite įdiegti įvesdami sudo apt-get install apache2

kai ji įdiegta, galite patikrinti įvesdami kompiuterio pavadinimą -I

ir jūs gausite savo vietinį IP adresą ir galėsite eiti į savo naršyklę ir pamatyti, kaip veikia serveris

4 veiksmas: įjunkite CGI „Apache“

Įgalinti CGI „Apache“
Įgalinti CGI „Apache“

galite įjungti cgi įvesdami sudo a2enmod cgi

Pagal numatytuosius nustatymus apache cgi_bin yra/usr/lib/cgi-bin

čia galite įdėti savo cgi scenarijus įjungę cgi

norėdami pasiekti efektą, turite iš naujo paleisti „apache“serverį

Norėjau pritaikyti savo cgi scenarijų katalogą, todėl sukūriau katalogą/var/www/html/pavadinimu „flood-cgi“

norėdamas įjungti šį katalogą, turėjau padaryti conf failą įvesdamas

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

ir pridėti komandas, kaip parodyta ekrano kopijoje

tada įjunkite šį katalogą įvesdami

var/www/html $ sudo a2enconf flood-cgi

dabar galite iš naujo paleisti apache serverį ir visi cgi iš šio aplanko bus skaitomi apache po leidimo.

5 veiksmas: nustatykite tinklalapį

Nustatykite tinklalapį
Nustatykite tinklalapį

Šiai paprasta žiniatinklio paslaugai naudoju HTML, Javascript, CSS, jquery ir ajax.

Turiu penkias valdomas etiketes, kurias galima spustelėti, Jei iš tinklalapio spustelėjama fotografuoti, ji suaktyvina nuotraukos mygtuko paspaudimo funkciją ir ši funkcija atrodo taip

$ ("#photobutton"). spustelėkite (funkcija () {var floodDate = new Date ();

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

$.ajax ({

url: 'flood-cgi/flood_cgi.py', metodas: „post“, duomenys: {name_for_image: floodImageName}, sėkmė: funkcija (duomenys) {

įspėjimas (duomenys, būsena)

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

}

})

});

tai iškvies scenarijų „flood_cgi.py“, kad nufotografuotų ir išsaugotų vaizdą pagal pasirinktą pavadinimą, sukurtą pagal dabartinę datą ir laiką, o „ajax“įkeliamas į puslapį.

aliarmo atveju galime naudoti šią funkciją

funkcija callAlarm (alarmType) {

$.ajax ({

URL: „flood-cgi/alarm.cgi“, metodas: „post“, duomenys: {alarm_type: alarmType}, sėkmė: funkcija (duomenys) {įspėjimas (duomenys)

}, klaida: funkcija (XMLHttpRequest, textStatus, throError) {alert (throError)}});

}

funkcija callAlarm bus iškviesta, kai bus spustelėta garsinio signalo etiketė, $ ("#buzzer"). spustelėkite (funkcija () {callAlarm ("test");

})

žemiau esantis kodas yra tada, kai norite spustelėti netikrą potvynį, t. y. paskambinus „Particle API“, iškviesti funkciją ir pakeisti skysčio vertę 1 ir patikrinti, ar visa sistema veikia taip, kaip tikėtasi, atlikdami bandomąjį potvynio įvykį

$ ("#mockFlood"). click (function () {console.log ("juokingas potvynis paprašė");

var potvynisVal = 1;

$ ("#signal2"). css ("šrifto dydis", "mažas");

var varName = "isFloodPresent";

var deviceID = "JŪSŲ ĮRENGINIO ID";

var accessToken = "JŪSŲ PRIEIGA PATIKRINTA";

if (floodVal) {

$.post ("https://api.particle.io/v1/devices/" + deviceID + "/liquid? access_token =" + accessToken, {skystis: floodVal}, funkcija (duomenys, būsena) {

if (status == "sėkmė") {

įspėjimas ("įvykdytas netikras potvynis !!!");

} Kitas {

įspėjimas („Atsiprašome, kilo problema“);

}

});

}

});

Tai yra pagrindinės funkcijos, kurių reikia norint užmegzti ryšį su dalelėmis Api ir jūsų avietėmis, kad jūsų aviečių pi ir dalelių įrenginys Argon galėtų bendrauti.

pastaba: norėjau įkelti visą kodą, bet jis neleidžia įkelti.html failo

6 veiksmas: sukurkite „Raspi Camera“scenarijų

mes kuriame paprastą.py vaizdą ir jame bus dabartinės datos ir laiko komentarai.

tada mes sukursime cgi scenarijų flood_cgi.py, todėl jis bus iškviestas iš žiniatinklio ir tai lieps fotografuoti.py failą.

būtinai paleiskite cgi scenarijų su #! /usr/bin/env python

taip pat duokite apache leidimą paleisti šiuos failus.

„apache“serveris veikia naudotojo „www“duomenimis, todėl kai sukuriame.py arba.cgi failą, apache turi būti failo savininkas

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

ir duoti leidimą vykdyti

sudo chmod a+x flood-cgi.py

turėsite tai padaryti visiems failams, kuriuos reikia paleisti iš apache serverio.

PASTABA: veikiant avietėms internete ir suteikiant visus šiuos leidimus, avietės dėl saugumo priežasčių tampa labai pažeidžiamos, todėl reikia laikytis griežtų naudotojų ir leidimų ir įdiegti ugniasienę kaip nesudėtingą užkardą (ufw)

Rekomenduojamas: