Isi kandungan:

Pengesan Manusia Raspberry Pi + Kamera + Kelalang: 6 Langkah
Pengesan Manusia Raspberry Pi + Kamera + Kelalang: 6 Langkah

Video: Pengesan Manusia Raspberry Pi + Kamera + Kelalang: 6 Langkah

Video: Pengesan Manusia Raspberry Pi + Kamera + Kelalang: 6 Langkah
Video: Aplikasi OpenCV di Raspberry Pi | Klinik Digital Making 2024, Julai
Anonim
Pengesan Manusia Raspberry Pi + Kamera + Kelalang
Pengesan Manusia Raspberry Pi + Kamera + Kelalang

Dalam tutorial ini, saya akan mengikuti langkah-langkah untuk Projek Raspberry Pi IoT saya - Menggunakan PIR Motion Sensor, modul Raspberry Camera untuk membina peranti IoT keselamatan yang mudah, dan Mengakses log pengesanan dengan Flask.

Langkah 1: PIR Motion Sensor

Sensor Gerakan PIR
Sensor Gerakan PIR

PIR adalah singkatan dari "Passive Infrared" dan sensor gerakan ini mengambil gerakan dengan melihat pandangan inframerah dan mengambil perubahan inframerah. Oleh itu, dengan daun dan manusia melewati sensor, ia hanya dapat mengesan manusia kerana kita sebagai manusia menghasilkan haba dan dengan demikian memancarkan sinar inframerah. Oleh itu, sensor gerakan adalah pilihan yang baik untuk mengesan pergerakan manusia.

Langkah 2: Persediaan Sensor Gerak PIR

Persediaan Sensor Gerak PIR
Persediaan Sensor Gerak PIR

Terdapat tiga pin untuk sensor gerakan PIR, Power, Output dan Ground. Di bawah pin anda dapat melihat label, VCC for Power, Out for Output dan GND untuk ground. Apabila sensor mengesan pergerakan, pin Output akan mengeluarkan isyarat TINGGI ke pin Raspberry Pi yang anda gunakan untuk menghubungkan sensor. Untuk pin Power, anda ingin memastikan bahawa pin itu tersambung ke pin 5V pada Raspberry Pi untuk mendapatkan kuasa. Untuk projek saya, saya memilih untuk menghubungkan pin Output dengan Pin11 pada Pi.

Setelah menyambungkan semuanya, anda boleh menghantar teks kepada sensor anda dengan menjalankan skrip seperti yang ada di bawah:

import RPi. GPIO sebagai GPIOimport waktu GPIO.cleanup () GPIO.setwarnings (False) GPIO.setmode (GPIO. BOARD) GPIO.setup (11, GPIO. IN) #Baca output dari sensor gerakan PIR pada Pin 11 sambil Betul: i = GPIO.input (11) if i == 0: #Apabila output dari sensor gerakan dicetak RENDAH "Tanpa pengesanan", i time.sleep (0.1) elif i == 1: #Apabila output dari sensor gerakan dicetak TINGGI " Pergerakan dikesan ", i time.sleep (0.1)

Jalankan skrip pada Pi anda, dan letakkan tangan atau rakan anda di hadapan sensor untuk memeriksa apakah sensor mengambil pergerakan.

Langkah 3: Modul dan Persediaan Kamera Raspberry Pi

Modul dan Persediaan Kamera Raspberry Pi
Modul dan Persediaan Kamera Raspberry Pi

Manusia memancarkan sinar inframerah kerana panas, dan begitu juga objek dengan suhu. Oleh itu, haiwan atau benda panas juga boleh mencetuskan sensor gerakan. Kami memerlukan kaedah untuk memeriksa sama ada pengesanan itu sah. Terdapat banyak cara untuk dilaksanakan, tetapi dalam projek saya, saya memilih untuk menggunakan modul kamera Raspberry Pi untuk mengambil gambar ketika sensor gerakan mengambil pergerakan.

Untuk menggunakan modul kamera, pertama-tama anda ingin memastikan pin dipasang ke slot kamera pada Pi. Jenis

sudo raspi-config

pada Pi anda untuk membuka antara muka konfigurasi, dan aktifkan kamera dalam 'pilihan antara muka'. Selepas reboot, anda boleh menguji apakah Pi sebenarnya disambungkan ke kamera dengan menaip

vcgencmd get_camera

dan ia akan menunjukkan status anda. Langkah terakhir adalah memasang modul picamera dengan menaip

pip memasang picamera

Selepas semua persediaan, anda boleh menguji kamera anda dengan menjalankan skrip seperti yang berikut:

dari picamera import PiCamera

dari masa import kamera tidur = PiCamera () camera.start_preview () sleep (2) camera.capture ('image.jpg') camera.stop_preview ()

Gambar akan disimpan sebagai 'image.jpg' di direktori yang sama dengan skrip kamera anda. Perhatikan, anda ingin memastikan 'tidur (2)' ada dan jumlahnya lebih besar daripada 2 sehingga kamera mempunyai cukup waktu untuk menyesuaikan keadaan cahaya.

Langkah 4: Gabungkan PIR Motion Sensor dan Camera Module

Idea projek saya adalah bahawa sensor gerakan dan kamera akan menghadap ke arah yang sama. Setiap kali sensor gerakan mengambil pergerakan, kamera akan mengambil gambar sehingga kami dapat memeriksa apa yang menyebabkan pergerakannya selepas itu.

Skrip:

import RPi. GPIO sebagai GPIOdari datetime import datetime import time dari picamera import PiCamera

GPIO.cleanup ()

GPIO.setwarnings (False) GPIO.setmode (GPIO. BOARD) GPIO.setup (11, GPIO. IN) #Membaca output dari mesej sensor gerakan PIR = 'start' counter = 0 log_f = open ('static / log.txt', 'w') log_f.tutup ()

kamera = PiCamera ()

pic_name = 0

camera.start_preview ()

masa. tidur (2)

Walaupun Betul:

i = GPIO.input (11) if i == 0: #Apabila output dari sensor gerakan RENDAH jika pembilang> 0: end = str (datetime.now ()) log_f = open ('static / log.txt', ' a ') message = mesej +'; berakhir pada '+ end +' / n 'print (message) log_f.write (message) log_f.close () final =' static / '+ str (pic_name) + ".jpg" pic_name = pic_name + 1 camera.capture (akhir) pembilang = 0 cetak "Tanpa penyusup", i time.sleep (0.1) elif i == 1: #Apabila output dari sensor gerakan adalah TINGGI jika pembilang == 0: semasa = str (datetime.now ()) mesej = 'Manusia dikesan:' + 'bermula pada' + kaunter semasa = kaunter + 1 cetakan "Penceroboh dikesan", i time.sleep (0.1) camera.stop_preview ()

Direktori untuk 'log.txt' dan gambar 'statik', yang diperlukan agar Flask berfungsi.

Langkah 5: Persediaan untuk Kelalang

Persediaan untuk Kelalang
Persediaan untuk Kelalang

Flask adalah kerangka web mikro yang ditulis dalam Python dan berdasarkan pada toolkit Werkzeug dan mesin templat Jinja2. Ia mudah dilaksanakan dan dipelihara. Untuk tutorial yang lebih baik untuk Flask, saya cadangkan pautan ini: Flask Mega Tutorial

Skrip utama, 'route.py', projek saya:

dari app import appfolderFlaskfrom termos import render_template, ubah hala os import

APP_ROOT = os.path.dirname (os.path.abspath (_ file_)) # merujuk kepada application_top

APP_STATIC = os.path.join (APP_ROOT, 'statik')

@ appFlask.route ('/', kaedah = ['DAPATKAN', 'POST'])

pandangan def (): log_f = open (os.path.join (APP_STATIC, 'log.txt'), 'r') logs = log_f.readlines () final_logs = untuk log masuk log: final_logs.append (log. strip ()) name = str (len (final_logs) -1) + '. jpg' return render_template ('view.html', logs = final_logs, nama fail = nama)

Fail HTML 'view.html' berada di bar atas (kerana ketika saya menyalin kod HTML di sini, ia sebenarnya berubah menjadi HTML FORMAT …)

Dan struktur projek itu kelihatan seperti di bawah (tetapi tentu saja terdapat lebih banyak fail daripada ini):

iotproject / appfolder / profiles.py templates / view.html static / log.txt 0-j.webp

Langkah 6: Hasilnya

Keputusan
Keputusan

Untuk pelaksanaan ini, setelah semuanya disiapkan dengan betul, anda seharusnya dapat mengakses Raspberry Pi anda dengan menaip alamat IPnya pada penyemak imbas, dan hasilnya akan kelihatan seperti gambar di bar atas pada langkah ini.