Mundarija:
- 1 -qadam: PIR harakat sensori
- 2 -qadam: PIR harakat sensori o'rnatilishi
- 3 -qadam: Raspberry Pi kamera moduli va sozlash
- 4 -qadam: PIR harakat sensori va kamera modulini birlashtirish
- 5 -qadam: idishni sozlash
- 6 -qadam: Natija
Video: Raspberry Pi inson detektori + kamera + kolba: 6 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:27
Ushbu qo'llanmada men Raspberry Pi IoT loyihasi - PIR Motion Sensor, Raspberry Camera moduli yordamida oddiy xavfsizlik IoT qurilmasini yaratish va Flask yordamida aniqlash jurnaliga kirishni o'rganaman.
1 -qadam: PIR harakat sensori
PIR "Passiv infraqizil" degan ma'noni anglatadi va bu harakat sensori infraqizil ko'rinishni kuzatish va infraqizil o'zgarishlarni qabul qilish orqali harakatlarni qabul qiladi. Shunday qilib, barg va odam sensordan o'tib ketganda, u faqat odamni aniqlaydi, chunki biz odamlar issiqlik ishlab chiqaramiz va infraqizil nurlarini chiqaramiz. Shunday qilib, harakat sensori inson harakatlarini aniqlash uchun yaxshi tanlovdir.
2 -qadam: PIR harakat sensori o'rnatilishi
PIR harakat sensori uchun uchta pin bor: Quvvat, chiqish va er. Pim ostida siz yorliqlarni ko'rishingiz mumkin, VCC quvvat uchun, chiqish uchun chiqish va er uchun GND. Sensor harakatlarni aniqlaganda, chiqish pinasi sensori ulangan Raspberry Pi piniga yuqori signal beradi. Power pin uchun, u Raspberry Pi -dagi 5V pinli quvvatga ulanganligiga ishonch hosil qilishni xohlaysiz. Loyiham uchun men chiqish pinini Pi -da Pin11 bilan ulashni tanladim.
Hamma narsani ulab bo'lgach, siz quyidagi kabi skriptlarni ishga tushirish orqali sensoringizga matn yuborishingiz mumkin:
RPi. GPIO -ni GPIOimport qilish vaqti sifatida GPIO.cleanup () GPIO.setwarnings (False) GPIO.setmode (GPIO. BOARD) GPIO.setup (11, GPIO. IN) #Pin 11 -dagi PIR harakat sensori chiqishini o'qish: True: i = GPIO.input (11) if i == 0: #Harakat sensori chiqishi past bosilganda "Aniqlanmaydi", i time.sleep (0.1) elif i == 1: #Harakat sensori chiqishi yuqori bosilganda " Harakat aniqlandi ", i time.sleep (0.1)
Ssenariyni Pi -da ishga tushiring va qo'lingizni yoki do'stingizni sensor oldiga qo'yib, sensor harakatni qabul qiladimi -yo'qligini tekshiring.
3 -qadam: Raspberry Pi kamera moduli va sozlash
Issiqlik tufayli inson infraqizil nurlarini chiqaradi va haroratli ob'ektlar ham. Shunday qilib, hayvonlar yoki issiq narsalar ham harakat sensori tetiklashi mumkin. Aniqlashning to'g'riligini tekshirish uchun bizga usul kerak. Amalga oshirishning ko'p usullari bor, lekin men o'z loyihamda Raspberry Pi kamera moduli yordamida harakat sensori harakatni qabul qilganda suratga olishni tanladim.
Kamera modulini ishlatish uchun, avval, pinlar Pi -dagi kamera uyasiga ulanganligiga ishonch hosil qilishingiz kerak. Turi
sudo raspi-config
Pi -da konfiguratsiya interfeysini oching va kamerani "interfeys variantlarida" yoqing. Qayta ishga tushirilgandan so'ng, siz yozish orqali Pi aslida kameraga ulanganligini tekshirishingiz mumkin
vcgencmd get_camera
va bu sizga vaziyatni ko'rsatadi. Oxirgi qadam - yozish orqali pikamera modulini o'rnatish
pikamera o'rnatish
Barcha sozlashlardan so'ng, siz quyidagi kabi skriptlarni ishga tushirish orqali kamerangizni sinab ko'rishingiz mumkin:
pikameradan PiCamera import qilinadi
vaqtdan boshlab uyqu kamerasi = PiCamera () camera.start_preview () uxlash (2) camera.capture ('image.jpg') camera.stop_preview ()
Rasm katalogda 'image.jpg' sifatida saqlanadi, xuddi sizning kamera skriptingizdagidek. E'tibor bering, siz "uxlash (2)" borligiga ishonch hosil qilmoqchisiz va bu raqam 2 dan katta, shuning uchun kamerada yorug'lik holatini sozlash uchun etarli vaqt bor.
4 -qadam: PIR harakat sensori va kamera modulini birlashtirish
Mening loyihamning g'oyasi shundaki, harakat sensori va kamera bir tomonga qaraydi. Qachonki harakat sensori harakatni tanlasa, kamera suratga tushadi, shundan so'ng biz nima sababdan harakatlarni keltirib chiqarganini tekshirishimiz mumkin.
Ssenariy:
RPi. GPIO -ni GPIO sifatida import qilish, datetime -dan datetime -ni import qilish vaqtini pikameradan import qilish PiCamera -dan.
GPIO.cleanup ()
GPIO.setwarnings (False) GPIO.setmode (GPIO. BOARD) GPIO.setup (11, GPIO. IN) #PIR harakat sensori xabaridan o'qish o'qish = 'start' taymer = 0 log_f = ochiq ('statik/log.txt'), 'w') log_f.close ()
kamera = PiCamera ()
pic_name = 0
kamera.start_preview ()
uyqu (2)
rost bo'lsa:
i = GPIO.input (11), agar i == 0: #Hisoblagich> 0: end = str (datetime.now ()) log_f = ochiq ('statik/log.txt', a ') xabar = xabar +'; tugashi ' + oxiri +' / n 'bosib chiqarish (xabar) log_f.write (xabar) log_f.close () final =' statik/' + str (rasm nomi) + ".jpg" pic_name = pic_ nomi + 1 kamera.capture (final) hisoblagich = 0 bosma "Bezovta qiluvchilar yo'q", i time.sleep (0.1) elif i == 1: #Harakat sensori chiqishi yuqori bo'lsa, taymer == 0 bo'lsa: joriy = str (datetime.now ()) xabar = 'Odam aniqlandi:' + 'boshlanishi' + joriy hisoblagich = hisoblagich + 1 bosma "Kiruvchi aniqlandi", i time.sleep (0.1) camera.stop_preview ()
"Log.txt" kataloglari va rasmlar "statik" bo'lib, ular Flaskning ishlashi uchun zarur.
5 -qadam: idishni sozlash
Flask - bu Python -da yozilgan va Werkzeug asboblar to'plami va Jinja2 shablon dvigateliga asoslangan mikro veb -ramka. Amalga oshirish va saqlash oson. Flask uchun yaxshiroq darslik uchun men ushbu havolani tavsiya qilaman: Flask Mega Tutorial
Loyihamning asosiy yo'nalishlari "route.py":
appFoldkdan kolba importidan render_template, import OS ni qayta yo'naltirish
APP_ROOT = os.path.dirname (os.path.abspath (_ fayl_)) # # application_top ga tegishli
APP_STATIC = os.path.join (APP_ROOT, "statik")
@appFlask.route ('/', usullar = ['OLISH', 'POST'])
def view (): log_f = open (os.path.join (APP_STATIC, 'log.txt'), 'r') logs = log_f.readlines () final_logs = logga kirish uchun: final_logs.append (log. strip ()) nomi = str (len (final_logs) -1)+'. jpg' render_template ('view.html', logs = final_logs, fayl nomi = nomi)
HTML fayli 'view.html' yuqori satrda (chunki men HTML kodlarini bu erga ko'chirganimda, aslida HTML FORMATiga aylanadi …)
Va loyihaning tuzilishi quyidagi kabi bo'lishi kerak (lekin, albatta, bundan ham ko'p fayllar bor):
iotproject / appfolder / route.py shablonlari / view.html statik / log.txt 0-j.webp
6 -qadam: Natija
Buni amalga oshirish uchun, hamma narsa to'g'ri sozlanganidan so'ng, siz Raspberry Pi -ga uning IP -manzilini brauzerga yozib kirishingiz kerak va natija bu bosqichning yuqori qismidagi rasmga o'xshash bo'lishi kerak.