Kazalo:
- Korak: PIR senzor gibanja
- 2. korak: Nastavitev senzorja gibanja PIR
- 3. korak: Modul in nastavitev kamere Raspberry Pi
- 4. korak: Združite senzor gibanja PIR in modul kamere
- 5. korak: Nastavitev za Flask
- 6. korak: Rezultat
Video: Človeški detektor Raspberry Pi + kamera + steklenica: 6 korakov
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:07
V tej vadnici bom predstavil korake za svoj projekt Raspberry Pi IoT - uporaba senzorja gibanja PIR, modula Raspberry Camera za izdelavo preproste varnostne naprave IoT in dostop do dnevnika odkrivanja s tipko Flask.
Korak: PIR senzor gibanja
PIR pomeni "pasivno infrardeče" in ta senzor gibanja zaznava premike z opazovanjem infrardečega pogleda in zaznavanjem infrardečih sprememb. Zato z listom in človekom, ki gre mimo senzorja, zazna le človeka, saj kot ljudje ustvarjamo toploto in tako oddajamo infrardeči žarek. Zato je senzor gibanja dobra izbira za zaznavanje človeških gibov.
2. korak: Nastavitev senzorja gibanja PIR
Obstajajo trije zatiči za PIR senzor gibanja, moč, izhod in ozemljitev. Pod zatiči lahko vidite oznake, VCC za napajanje, Out za izhod in GND za maso. Ko senzor zazna premike, bo izhodni zatič predvajal signal VISOK na pin Raspberry Pi, s katerim povežete senzor. Za napajalni zatič se prepričajte, da se za napajanje poveže s 5 -volnim zatičem na Raspberry Pi. Za svoj projekt se odločim povezati izhodni pin s Pin11 na Pi.
Ko vse povežete, lahko svojemu senzorju pošljete SMS, tako da zaženete skripte, kot je spodaj:
uvoz RPi. GPIO kot GPIO čas uvoza GPIO.cleanup () GPIO.setwarnings (False) GPIO.setmode (GPIO. BOARD) GPIO.setup (11, GPIO. IN) #Preberite izhod iz senzorja gibanja PIR na Pin 11, medtem ko je True: i = GPIO.input (11) if i == 0: #Ko je izhod iz senzorja gibanja NIZAK, natisni "No detection", i time.sleep (0.1) elif i == 1: #When output from sensor of motion is HIGH print " Zaznano gibanje ", i time.sleep (0,1)
Zaženite skript na svojem Pi in roke ali prijatelja postavite pred senzor, da preverite, ali senzor zazna gibanje.
3. korak: Modul in nastavitev kamere Raspberry Pi
Človek zaradi toplote oddaja infrardeči žarek, prav tako pa tudi predmeti s temperaturo. Zato lahko živali ali vroči predmeti sprožijo tudi senzor gibanja. Potrebujemo način, da preverimo, ali je odkritje veljavno. Obstaja veliko načinov za izvedbo, toda v svojem projektu se odločim za uporabo modula kamere Raspberry Pi za fotografiranje, ko senzor gibanja zazna premike.
Če želite uporabiti modul kamere, se najprej prepričajte, da so nožice priključene v režo za fotoaparat na Pi. Vrsta
sudo raspi-config
na vašem Pi, da odprete konfiguracijski vmesnik in omogočite kamero v možnostih vmesnika. Po ponovnem zagonu lahko z vnosom preverite, ali je Pi dejansko povezan s kamero
vcgencmd get_camera
in prikazal vam bo stanje. Zadnji korak je namestitev modula picamera z vnosom
pip namestite pikamero
Po vseh nastavitvah lahko kamero preizkusite tako, da zaženete skripte, kot je spodnja:
iz picamere uvoz PiCamera
from time import sleep camera = PiCamera () camera.start_preview () sleep (2) camera.capture ('image.jpg') camera.stop_preview ()
Slika bo shranjena kot 'image.jpg' v imeniku, enaka tisti v skriptu vaše kamere. Upoštevajte, da se želite prepričati, da obstaja "spanje (2)" in je število večje od 2, da ima fotoaparat dovolj časa za prilagoditev svetlobnega stanja.
4. korak: Združite senzor gibanja PIR in modul kamere
Ideja mojega projekta je, da bosta senzor gibanja in kamera obrnjena v isto smer. Kadarkoli senzor gibanja zazna premike, bo fotoaparat posnel sliko, da bomo lahko preverili, kaj povzroča gibanje.
Scenarij:
uvoz RPi. GPIO kot GPIOiz datuma uvoza uvoz datuma in časa iz pikamere uvoz PiCamera
GPIO.cleanup ()
GPIO.setwarnings (False) GPIO.setmode (GPIO. BOARD) GPIO.setup (11, GPIO. IN) #Preberite izhod iz sporočila senzorja gibanja PIR = 'start' counter = 0 log_f = open ('static/log.txt', 'w') log_f.close ()
kamera = PiCamera ()
pic_name = 0
camera.start_preview ()
time.sleep (2)
medtem ko je res:
i = GPIO.input (11) if i == 0: #Ko je izhod iz senzorja gibanja LOW, če je števec> 0: end = str (datetime.now ()) log_f = open ('static/log.txt', ' a ') sporočilo = sporočilo +'; konec na ' + end +' / n 'natisni (sporočilo) log_f.write (sporočilo) log_f.close () final =' static/' + str (pic_name) + ".jpg" pic_name = pic_name + 1 camera.capture (končno) števec = 0 natisni "Brez vsiljivcev", i time.sleep (0.1) elif i == 1: #Ko je izhod iz senzorja gibanja VELIK, če je števec == 0: tok = str (datetime.now ()) sporočilo = 'Človek zaznan:' + 'začetek pri' + trenutni števec = števec + 1 izpis "Zaznan vsiljivec", i time.sleep (0.1) camera.stop_preview ()
Imeniki za 'log.txt' in slike so 'statični', kar je potrebno za delovanje Flaska.
5. korak: Nastavitev za Flask
Flask je mikro spletni okvir, napisan v Pythonu in temelji na kompletu orodij Werkzeug in mehanizmu za predloge Jinja2. Je enostaven za izvajanje in vzdrževanje. Za boljšo vadbo za Flask priporočam to povezavo: Flask Mega Tutorial
Glavni skript, 'routes.py', mojega projekta:
iz mape aplikacij uvoz appFlask iz bučke uvoz render_template, preusmeri uvoz os
APP_ROOT = os.path.dirname (os.path.abspath (_ file_)) # se nanaša na application_top
APP_STATIC = os.path.join (APP_ROOT, 'static')
@appFlask.route ('/', methods = ['GET', 'POST'])
def view (): log_f = open (os.path.join (APP_STATIC, 'log.txt'), 'r') logs = log_f.readlines () final_logs = za dnevnike prijave: final_logs.append (log strip ()) name = str (len (final_logs) -1)+'. jpg' return render_template ('view.html', logs = final_logs, filename = name)
Datoteka HTML "view.html" je v zgornji vrstici (ker kopiram kode HTML tukaj, se dejansko obrne na HTML FORMAT …)
Struktura projekta bi morala izgledati takole spodaj (seveda je datotek več kot teh):
iotproject / appfolder / routes.py templates / view.html static / log.txt 0-j.webp
6. korak: Rezultat
Za to izvedbo bi morali imeti po pravilni nastavitvi dostop do vašega Raspberry Pi tako, da v brskalnik vnesete njegov naslov IP, rezultat pa mora biti v tem koraku videti kot slika v zgornji vrstici.