Sisällysluettelo:

Raspberry Pi Human Detector + kamera + pullo: 6 vaihetta
Raspberry Pi Human Detector + kamera + pullo: 6 vaihetta

Video: Raspberry Pi Human Detector + kamera + pullo: 6 vaihetta

Video: Raspberry Pi Human Detector + kamera + pullo: 6 vaihetta
Video: Система распознавания OpenCV на Raspberry Pi 3 2024, Heinäkuu
Anonim
Raspberry Pi -ihmisen tunnistin + kamera + pullo
Raspberry Pi -ihmisen tunnistin + kamera + pullo

Tässä opetusohjelmassa käyn läpi Raspberry Pi IoT -projektini vaiheet - PIR -liiketunnistimen, Raspberry Camera -moduulin käyttäminen yksinkertaisen IoT -suojauslaitteen rakentamiseen ja tunnistuslokin käyttö pulssilla.

Vaihe 1: PIR -liiketunnistin

PIR -liiketunnistin
PIR -liiketunnistin

PIR tarkoittaa "passiivista infrapunaa", ja tämä liiketunnistin poimii liikkeet katsomalla infrapunanäkymää ja poimimalla infrapunamuutokset. Siksi, kun lehti ja ihminen kulkevat anturin ohi, se havaitsee vain ihmisen, koska me ihmisinä tuotamme lämpöä ja emittoimme siten infrapunasäteitä. Siksi liikeanturi on hyvä valinta ihmisten liikkeiden havaitsemiseen.

Vaihe 2: PIR -liiketunnistimen asennus

PIR -liiketunnistimen asennus
PIR -liiketunnistimen asennus

PIR -liiketunnistimelle on kolme nastaa, teho, lähtö ja maadoitus. Nastat alla näet tarrat, VCC virtalähteelle, Out for Output ja GND maahan. Kun anturi havaitsee liikkeitä, lähtötappi lähettää HIGH -signaalin Raspberry Pi -tappiin, johon anturi liitetään. Power -nastan osalta haluat varmistaa, että se muodostaa yhteyden Raspberry Pi: n 5V -nastaan virran saamiseksi. Projektissani päätän liittää Output -nastan Pin11: een Pi: ssä.

Kun olet yhdistänyt kaiken, voit lähettää anturille tekstiviestejä suorittamalla alla olevan kaltaisia skriptejä:

tuoda RPi. GPIO GPIO: ksi tuoda GPIO.cleanup () GPIO.setwarnings (False) GPIO.setmode (GPIO. BOARD) GPIO.setup (11, GPIO. IN) #Lue lähtö PIR -liiketunnistimesta nastassa 11, kun True: i = GPIO.input (11), jos i == 0: #Kun liikeanturin lähtö on LOW print "Ei tunnistusta", i time.sleep (0,1) elif i == 1: #Kun liiketunnistimen lähtö on HIGH print " Liike havaittu ", i time.sleep (0,1)

Suorita käsikirjoitus Pi -laitteellasi ja aseta kätesi tai ystäväsi anturin eteen tarkistaaksesi, havaitseeko anturi liikkeen.

Vaihe 3: Raspberry Pi -kameramoduuli ja asennus

Raspberry Pi -kameramoduuli ja -asetus
Raspberry Pi -kameramoduuli ja -asetus

Ihminen säteilee infrapunasäteitä lämmön vaikutuksesta, samoin kuin lämpötilassa olevat kohteet. Siksi eläimet tai kuumat esineet voivat laukaista myös liiketunnistimen. Tarvitsemme tavan tarkistaa, onko havainto kelvollinen. Toteutustapoja on monia, mutta projektissani päätän käyttää Raspberry Pi -kameramoduulia kuvien ottamiseen, kun liiketunnistin havaitsee liikkeitä.

Jos haluat käyttää kameramoduulia, sinun on ensin varmistettava, että nastat on kytketty Pi -kameran aukkoon. Tyyppi

sudo raspi-config

avaa konfigurointiliitäntä ja ota kamera käyttöön liitäntävaihtoehdoissa. Uudelleenkäynnistyksen jälkeen voit testata, onko Pi todella kytketty kameraan kirjoittamalla

vcgencmd get_camera

ja se näyttää tilan. Viimeinen vaihe on asentaa picamera -moduuli kirjoittamalla

pip asenna picamera

Kaikkien asetusten jälkeen voit testata kameraasi suorittamalla alla olevan kaltaisia skriptejä:

picamera tuonti PiCamera

from time import sleep camera = PiCamera () camera.start_preview () sleep (2) camera.capture ('image.jpg') camera.stop_preview ()

Kuva tallennetaan hakemistoon nimellä 'image.jpg' samalla tavalla kuin kamerasi käsikirjoitus. Huomaa, että haluat varmistaa, että lepotila (2) on olemassa ja luku on suurempi kuin 2, joten kameralla on riittävästi aikaa säätää valaistusta.

Vaihe 4: Yhdistä PIR -liiketunnistin ja kameramoduuli

Projektini ajatus on, että liiketunnistin ja kamera kohtaavat samaan suuntaan. Aina kun liiketunnistin havaitsee liikkeitä, kamera ottaa kuvan, jotta voimme tarkistaa liikkeiden syyt jälkeenpäin.

Käsikirjoitus:

tuoda RPi. GPIO GPIO: ksi päivämäärästä tuoda päivämäärän tuontiaika picameran tuonnista PiCamera

GPIO.cleanup ()

GPIO.setwarnings (False) GPIO.setmode (GPIO. BOARD) GPIO.setup (11, GPIO. IN) #Lukuulostulo PIR -liiketunnistimen viestistä = 'start' counter = 0 log_f = open ('static/log.txt', 'w') log_f.close ()

kamera = PiCamera ()

pic_name = 0

camera.start_preview ()

time.sleep (2)

vaikka totta:

i = GPIO.input (11), jos i == 0: #Kun liikeanturin lähtö on LOW jos laskuri> 0: end = str (datetime.now ()) log_f = open ('static/log.txt', ' a ') viesti = viesti +'; end at ' + end +' / n 'print (message) log_f.write (message) log_f.close () final =' static/' + str (pic_name) + ".jpg" pic_name = pic_name + 1 camera.capture (lopullinen) laskuri = 0 tulosta "Ei tunkeilijoita", i time.sleep (0,1) elif i == 1: #Kun liiketunnistimen lähtö on HIGH jos laskuri == 0: current = str (datetime.now ()) viesti = 'Ihminen havaittu:' + 'aloita' + virtalaskuri = laskuri + 1 tuloste "Tunkeutuja havaittu", i time.sleep (0,1) camera.stop_preview ()

Log.txt -tiedoston ja kuvien hakemistot ovat staattisia, mikä on välttämätöntä Flaskin toimimiseksi.

Vaihe 5: Asennus pulloon

Asetukset pulloa varten
Asetukset pulloa varten

Flask on Pythonilla kirjoitettu mikroverkkokehys, joka perustuu Werkzeug -työkalupakkiin ja Jinja2 -mallipohjaan. Se on helppo toteuttaa ja ylläpitää. Jos haluat paremman Flaskin opetusohjelman, suosittelen tätä linkkiä: Flask Mega Tutorial

Projektini pääskripti "route.py":

appfolderista tuonti appFlaskfrom pullo tuonti render_template, redirect import os

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

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

@appFlask.route ('/', method = ['GET', 'POST'])

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

HTML -tiedosto view.html on yläpalkissa (koska kun kopioin HTML -koodit tänne, se todella muuttuu HTML FORMAT -muotoon …)

Ja projektin rakenteen pitäisi näyttää jotain alla (mutta tietysti on enemmän tiedostoja kuin nämä):

iotproject / appfolder / route.py templates / view.html staattinen / log.txt 0-j.webp

Vaihe 6: Tulos

Tulos
Tulos

Tätä toteutusta varten, kun kaikki on määritetty oikein, sinun pitäisi pystyä käyttämään Raspberry Pi -laitettasi kirjoittamalla sen IP -osoite selaimeen, ja tuloksen pitäisi näyttää kuvan yläpalkissa tässä vaiheessa.