Mundarija:

Raspberry Pi inson detektori + kamera + kolba: 6 qadam
Raspberry Pi inson detektori + kamera + kolba: 6 qadam

Video: Raspberry Pi inson detektori + kamera + kolba: 6 qadam

Video: Raspberry Pi inson detektori + kamera + kolba: 6 qadam
Video: Oltin topuvchi qurilma oson topish yo‘li 2024, Noyabr
Anonim
Raspberry Pi inson detektori + kamera + kolba
Raspberry Pi inson detektori + kamera + kolba

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 harakat sensori
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 o'rnatish
PIR harakat sensori o'rnatish

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

Raspberry Pi kamera moduli va sozlash
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 uchun sozlash
Flask uchun 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

Natija
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.