ዝርዝር ሁኔታ:

Raspberry Pi Human Detector + Camera + Flask: 6 Steps
Raspberry Pi Human Detector + Camera + Flask: 6 Steps

ቪዲዮ: Raspberry Pi Human Detector + Camera + Flask: 6 Steps

ቪዲዮ: Raspberry Pi Human Detector + Camera + Flask: 6 Steps
ቪዲዮ: Face Recognition With Raspberry Pi + OpenCV + Python 2024, ሀምሌ
Anonim
Raspberry Pi Human Detector + Camera + Flask
Raspberry Pi Human Detector + Camera + Flask

በዚህ መማሪያ ውስጥ ለራሴ Raspberry Pi IoT ፕሮጀክት በደረጃዎች ውስጥ እጓዛለሁ - የ PIR Motion Sensor ን ፣ Raspberry ካሜራ ሞዱልን በመጠቀም ቀለል ያለ የደህንነት IoT መሣሪያን ለመገንባት እና የፍለጋውን ምዝግብ ማስታወሻ በ Flask መድረስ።

ደረጃ 1 የፒአር እንቅስቃሴ ዳሳሽ

የፒአር እንቅስቃሴ ዳሳሽ
የፒአር እንቅስቃሴ ዳሳሽ

PIR “Passive Infrared” ን ያመለክታል እና ይህ የእንቅስቃሴ ዳሳሽ የኢንፍራሬድ እይታን በመመልከት እና የኢንፍራሬድ ለውጦችን በማንሳት እንቅስቃሴዎችን ይወስዳል። ስለዚህ ፣ ቅጠል እና ሰው ዳሳሹን ሲያልፍ ፣ እኛ ሰው እንደመሆኑ መጠን ሙቀትን ስለሚያመነጭ እና ስለዚህ የኢንፍራሬድ ጨረር ስለሚያመነጭ ሰውን ብቻ ነው የሚለየው። ስለዚህ የእንቅስቃሴ ዳሳሽ የሰውን እንቅስቃሴ ለመለየት ጥሩ ምርጫ ነው።

ደረጃ 2 የ PIR እንቅስቃሴ ዳሳሽ ቅንብር

የፒአር እንቅስቃሴ ዳሳሽ ማዋቀር
የፒአር እንቅስቃሴ ዳሳሽ ማዋቀር

ለ PIR እንቅስቃሴ ዳሳሽ ፣ ኃይል ፣ ውፅዓት እና መሬት ሶስት ፒኖች አሉ። በፒንሶቹ ስር መሰየሚያዎቹን ፣ ቪሲሲን ለኃይል ፣ ለውጤት እና GND ለመሬት ማየት ይችላሉ። አነፍናፊው እንቅስቃሴዎችን ሲያገኝ የውጤት ፒን ዳሳሹን ከሚያገናኙበት የሬፕቤሪ ፒ ፒን ከፍተኛ ምልክት ያወጣል። ለኃይል ፒን ፣ ለኃይል በ Raspberry Pi ላይ ካለው 5V ፒን ጋር መገናኘቱን ማረጋገጥ ይፈልጋሉ። ለኔ ፕሮጀክት ፣ የውጤት ፒኑን በፒን ላይ ከፒን 11 ጋር ለማገናኘት እመርጣለሁ።

ሁሉንም ነገር ካገናኙ በኋላ ፣ ከዚህ በታች እንዳለው ስክሪፕቶችን በማሄድ ዳሳሽዎን በጽሑፍ መላክ ይችላሉ-

RPi. = GPIO.input (11) ከሆነ i == 0: #ከእንቅስቃሴ ዳሳሽ ውፅዓት LOW የህትመት ጊዜ «ማወቂያ የለም» ፣ i time.sleep (0.1) elif i == 1: #ከእንቅስቃሴ ዳሳሽ ውፅዓት ከፍተኛ ህትመት ሲሆን » እንቅስቃሴ ተገኝቷል ፣ i time. እንቅልፍ (0.1)

ስክሪፕቱን በእርስዎ ፒ ላይ ያሂዱ እና አነፍናፊው እንቅስቃሴውን ያነሳ እንደሆነ ለማየት እጆችዎን ወይም ጓደኛዎን በአነፍናፊው ፊት ያስቀምጡ።

ደረጃ 3: Raspberry Pi ካሜራ ሞዱል እና ማዋቀር

Raspberry Pi ካሜራ ሞዱል እና ማዋቀር
Raspberry Pi ካሜራ ሞዱል እና ማዋቀር

ሰው በሙቀቱ ምክንያት የኢንፍራሬድ ጨረር ያመነጫል ፣ እንዲሁም የሙቀት መጠን ያላቸው ነገሮች እንዲሁ። ስለዚህ እንስሳት ወይም ትኩስ ነገሮች የእንቅስቃሴ ዳሳሹን እንዲሁ ሊያስነሱ ይችላሉ። ማወቁ ትክክል መሆኑን የምንፈትሽበት መንገድ እንፈልጋለን። ለመተግበር ብዙ መንገዶች አሉ ፣ ግን በእኔ ፕሮጀክት ውስጥ የእንቅስቃሴ ዳሳሽ እንቅስቃሴዎችን በሚወስድበት ጊዜ ፎቶግራፎችን ለማንሳት የ Raspberry Pi ካሜራ ሞዱሉን ለመጠቀም እመርጣለሁ።

የካሜራውን ሞጁል ለመጠቀም በመጀመሪያ ፒኖቹ በፒአይ ላይ ባለው የካሜራ ማስገቢያ ውስጥ መሰካቱን ማረጋገጥ ይፈልጋሉ። ዓይነት

sudo raspi-config

በእርስዎ ፒ ላይ የውቅረት በይነገጽን ለመክፈት እና ካሜራውን በ ‹በይነገጽ አማራጮች› ውስጥ ለማንቃት። ዳግም ከተነሳ በኋላ ፒ በትክክል በመተየብ ከካሜራ ጋር የተገናኘ መሆኑን መሞከር ይችላሉ

vcgencmd get_camera

እና ሁኔታውን ያሳየዎታል። የመጨረሻው እርምጃ በመተየብ የፒክሜራ ሞዱሉን መጫን ነው

ፒፓ ጫን picamera

ከሁሉም ቅንጅቶች በኋላ ፣ ከዚህ በታች እንደሚታየው እስክሪፕቶችን በማሄድ ካሜራዎን መሞከር ይችላሉ።

ከፒክሜራ ማስመጣት PiCamera

ከጊዜ ወደ ጊዜ የእንቅልፍ ካሜራ = PiCamera () camera.start_preview () እንቅልፍ (2) camera.capture ('image.jpg') camera.stop_preview ()

ከካሜራዎ ስክሪፕት አንድ ጋር ተመሳሳይ በሆነ መልኩ ስዕሉ እንደ 'image.jpg' በማውጫው ላይ ይቀመጣል። ልብ ይበሉ ፣ ‹መተኛት (2)› እንዳለ እና ቁጥሩ ከ 2 የበለጠ መሆኑን ማረጋገጥ ይፈልጋሉ ፣ ስለዚህ ካሜራው የብርሃን ሁኔታን ለማስተካከል በቂ ጊዜ አለው።

ደረጃ 4 የ PIR እንቅስቃሴ ዳሳሽ እና የካሜራ ሞዱሉን ያጣምሩ

የእኔ ፕሮጀክት ሀሳብ የእንቅስቃሴ ዳሳሽ እና ካሜራ በተመሳሳይ አቅጣጫ ይጋፈጣሉ። የእንቅስቃሴ ዳሳሹ እንቅስቃሴዎችን ባነሳ ቁጥር ካሜራው ሥዕልን ይወስዳል ስለዚህ እኛ መንቀሳቀሻዎቹን ምን እንደ ሆነ ለማወቅ እንሞክራለን።

ጽሁፉ:

ከፒክሜራ ማስመጣት PiCamera ከውሂብ ጊዜ ከውጭ የማስመጣት ጊዜ

GPIO. Cananup ()

GPIO.setwarnings (የሐሰት) ፣ 'ወ') log_f. ዝጋ ()

ካሜራ = PiCamera ()

pic_name = 0

camera.start_preview ()

ጊዜ። እንቅልፍ (2)

እውነት እያለ ፦

i = GPIO.input (11) ከሆነ i == 0: #ከእንቅስቃሴ ዳሳሽ ውፅዓት ዝቅተኛ ከሆነ ቆጣሪ> 0: end = str (datetime.now ()) log_f = open ('static/log.txt', ' ሀ ') መልእክት = መልእክት +'; በ ' + end +' / n 'ህትመት (መልዕክት) log_f. ጻፍ (መልዕክት) log_f.close () final =' static/' + str (pic_name) + ".jpg" pic_name = pic_name + 1 camera.capture (የመጨረሻ) ቆጣሪ = 0 ህትመት "አጥቂዎች የሉም" ፣ i time.sleep (0.1) elif i == 1: #ከእንቅስቃሴ ዳሳሽ ውፅዓት ከፍተኛ ከሆነ ቆጣሪ == 0 የአሁኑ = str (datetime.now ()) መልዕክት = 'ሰው ተገኝቷል' ' +' ጀምር ' + የአሁኑ ቆጣሪ = ቆጣሪ + 1 ህትመት "ወራሪ ተገኝቷል" ፣ i time. እንቅልፍ (0.1) camera.stop_preview ()

የ ‹log.txt› እና ምስሎች ማውጫዎች ‹እስታቲስቲክ› ናቸው ፣ ይህም ፍላሽ እንዲሠራ አስፈላጊ ነው።

ደረጃ 5 ለ Flask ማዋቀር

ለ Flask ማዋቀር
ለ Flask ማዋቀር

ፍላስክ በ Python የተፃፈ እና በቨርኬዙግ የመሳሪያ ኪት እና በጂንጃ 2 አብነት ሞተር ላይ የተመሠረተ የማይክሮ ድር ማዕቀፍ ነው። ለመተግበር እና ለመጠገን ቀላል ነው። ለ Flask የተሻለ መማሪያ ፣ ይህንን አገናኝ እመክራለሁ - Flask Mega Tutorial

የእኔ ፕሮጄክት ዋናው ስክሪፕት ‹routes.py› ፦

ከመተግበሪያ አቃፊ ማስመጣት መተግበሪያ Flaskfrom flask አስመጪ render_template ፣ የማስመጣት os ን ያዛውሩ

APP_ROOT = os.path.dirname (os.path.abspath (_ ፋይል_)) # የሚያመለክተው መተግበሪያ_top

APP_STATIC = os.path.join (APP_ROOT ፣ 'የማይንቀሳቀስ')

@appFlask.route ('/' ፣ ዘዴዎች = ['GET' ፣ 'POST'])

def view (): log_f = open (os.path.join (APP_STATIC ፣ 'log.txt') ፣ 'r') መዝገቦች = log_f.readlines () final_logs = ምዝግብ ማስታወሻዎች ለመግባት ፦ final_logs.append (log. ስትሪፕ ()) ስም = str (ሌን (የመጨረሻ_ሎጎች) -1)+'. jpg' መመለስ render_template ('view.html' ፣ መዝገቦች = የመጨረሻ_ሎጎች ፣ የፋይል ስም = ስም)

የኤችቲኤምኤል ፋይል 'view.html' ከላይኛው አሞሌ ላይ ነው (ምክንያቱም የኤችቲኤምኤል ኮዶችን እዚህ ስገለበጥ በእውነቱ ወደ ኤችቲኤምኤል ቅርጸት…)

እና የፕሮጀክቱ አወቃቀር ከዚህ በታች የሆነ ነገር መምሰል አለበት (ግን በእርግጥ ከእነዚህ የበለጠ ፋይሎች አሉ)

iotproject / appfolder / routes.py አብነቶች / view.html static / log.txt 0-j.webp

ደረጃ 6: ውጤት

ውጤት
ውጤት

ለዚህ ትግበራ ፣ ሁሉም ነገር በትክክል ከተዋቀረ በኋላ የአይፒ አድራሻውን በአሳሹ ላይ በመተየብ የእርስዎን Raspberry Pi መድረስ መቻል አለብዎት ፣ እና ውጤቱም በዚህ ደረጃ ላይኛው አሞሌ ላይ ስዕል ይመስላል።