Sisällysluettelo:
- Vaihe 1: PIR -liiketunnistin
- Vaihe 2: PIR -liiketunnistimen asennus
- Vaihe 3: Raspberry Pi -kameramoduuli ja asennus
- Vaihe 4: Yhdistä PIR -liiketunnistin ja kameramoduuli
- Vaihe 5: Asennus pulloon
- Vaihe 6: Tulos
Video: Raspberry Pi Human Detector + kamera + pullo: 6 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:03
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 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 -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
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
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
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.