Isi kandungan:
- Langkah 1: PIR Motion Sensor
- Langkah 2: Persediaan Sensor Gerak PIR
- Langkah 3: Modul dan Persediaan Kamera Raspberry Pi
- Langkah 4: Gabungkan PIR Motion Sensor dan Camera Module
- Langkah 5: Persediaan untuk Kelalang
- Langkah 6: Hasilnya
Video: Pengesan Manusia Raspberry Pi + Kamera + Kelalang: 6 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:11
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
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
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
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
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
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.