Turinys:

„Raspberry Pi“žmogaus detektorius + kamera + kolba: 6 žingsniai
„Raspberry Pi“žmogaus detektorius + kamera + kolba: 6 žingsniai

Video: „Raspberry Pi“žmogaus detektorius + kamera + kolba: 6 žingsniai

Video: „Raspberry Pi“žmogaus detektorius + kamera + kolba: 6 žingsniai
Video: Создание приложений для мобильных устройств, игр, Интернета вещей и многого другого с помощью AWS DynamoDB, Рик Хулихан 2024, Lapkritis
Anonim
„Raspberry Pi“žmogaus detektorius + kamera + kolba
„Raspberry Pi“žmogaus detektorius + kamera + kolba

Šioje pamokoje aprašysiu „Raspberry Pi IoT“projekto veiksmus - naudojant PIR judesio jutiklį, „Raspberry Camera“modulį paprastam saugumo daiktų interneto įrenginiui sukurti ir prieigą prie aptikimo žurnalo naudojant kolbą.

1 žingsnis: PIR judesio jutiklis

PIR judesio jutiklis
PIR judesio jutiklis

PIR reiškia „pasyvusis infraraudonųjų spindulių ryšys“, o šis judesio jutiklis paima judesius stebėdamas infraraudonųjų spindulių vaizdą ir fiksuodamas infraraudonųjų spindulių pokyčius. Todėl, kai lapas ir žmogus praeina pro jutiklį, jis aptinka tik žmogų, nes mes kaip žmonės skleidžiame šilumą ir taip skleidžiame infraraudonuosius spindulius. Taigi judesio jutiklis yra geras pasirinkimas žmonių judesiams aptikti.

2 žingsnis: PIR judesio jutiklio sąranka

PIR judesio jutiklio sąranka
PIR judesio jutiklio sąranka

Yra trys PIR judesio jutiklio kaiščiai, galia, išėjimas ir įžeminimas. Po smeigtukais galite pamatyti etiketes: VCC, skirtas galiai, išvestis, išvestis ir GND, skirtas žemei. Kai jutiklis aptinka judesius, išvesties kaištis perduos AUKŠTĄ signalą į „Raspberry Pi“kaištį, su kuriuo prijungiate jutiklį. Jei norite naudoti „Power pin“, norite įsitikinti, kad jis prijungtas prie „Raspberry Pi“5V kaiščio. Savo projektui aš pasirenku prijungti išvesties kaištį su Pin11 ant Pi.

Viską prijungę, galite nusiųsti savo jutikliui tekstą, vykdydami tokius scenarijus:

importuoti RPi. GPIO kaip GPIO importuoti laiką GPIO.cleanup () GPIO.setwarnings (False) GPIO.setmode (GPIO. BOARD) GPIO.setup (11, GPIO. IN) #Skaityti išvestį iš PIR judesio jutiklio 11 kaiščiu, o tiesa: i = GPIO.input (11), jei i == 0: #Kai judesio jutiklio išvestis yra LOW print "Nėra aptikimo", i time.sleep (0,1) elif i == 1: #Kai iš judesio jutiklio išvestis yra HIGH print " Aptiktas judesys ", i time.sleep (0,1)

Paleiskite „Pi“scenarijų ir padėkite rankas ar draugą priešais jutiklį, kad patikrintumėte, ar jutiklis ima judėti.

3 žingsnis: „Raspberry Pi“fotoaparato modulis ir sąranka

„Raspberry Pi“fotoaparato modulis ir sąranka
„Raspberry Pi“fotoaparato modulis ir sąranka

Žmogus dėl karščio skleidžia infraraudonąjį spindulį, taip pat ir objektai su temperatūra. Todėl gyvūnai ar karšti daiktai taip pat gali suaktyvinti judesio jutiklį. Mums reikia būdo patikrinti, ar aptikimas galioja. Yra daug būdų, kaip tai įgyvendinti, tačiau savo projekte aš pasirenku naudoti „Raspberry Pi“fotoaparato modulį fotografuoti, kai judesio jutiklis fiksuoja judesius.

Norėdami naudoti fotoaparato modulį, pirmiausia turite įsitikinti, kad kaiščiai yra prijungti prie „Pi“fotoaparato angos. Tipas

sudo raspi-config

„Pi“, kad atidarytumėte konfigūracijos sąsają, ir įjunkite fotoaparatą „sąsajos parinktyse“. Po perkrovimo galite patikrinti, ar „Pi“iš tikrųjų prijungtas prie fotoaparato, įvesdami

vcgencmd get_camera

ir jis parodys būseną. Paskutinis žingsnis yra įdiegti „picamera“modulį įvedus tekstą

pip įdiegti picamera

Atlikę visus nustatymus, galite išbandyti fotoaparatą vykdydami tokius scenarijus, kaip nurodyta toliau:

iš „Picamera“importo „PiCamera“

iš laiko importavimo miego kamera = PiCamera () camera.start_preview () miego (2) camera.capture ('image.jpg') camera.stop_preview ()

Paveikslėlis kataloge bus išsaugotas kaip „image.jpg“, kaip ir jūsų fotoaparato scenarijus. Atkreipkite dėmesį, kad norite įsitikinti, kad yra „miego režimas (2)“ir kad skaičius yra didesnis nei 2, kad fotoaparatas turėtų pakankamai laiko apšvietimui sureguliuoti.

4 žingsnis: sujunkite PIR judesio jutiklį ir fotoaparato modulį

Mano projekto idėja yra ta, kad judesio jutiklis ir kamera bus nukreipti ta pačia kryptimi. Kai judesio jutiklis fiksuoja judesius, fotoaparatas nufotografuos, kad vėliau galėtume patikrinti, kas sukelia judesius.

Scenarijus:

importuoti RPi. GPIO kaip GPIOnuo datos laiko importuoti datos laiko importavimo laiką iš „picamera“importo „PiCamera“

GPIO.cleanup ()

GPIO.setwarnings (klaidinga) GPIO.setmode (GPIO. BOARD) GPIO.setup (11, GPIO. IN) #Skaitymo išvestis iš PIR judesio jutiklio pranešimo = 'start' counter = 0 log_f = open ('static/log.txt', „w“) log_f.close ()

kamera = „PiCamera“()

pic_name = 0

camera.start_preview ()

laikas. miegas (2)

nors tiesa:

i = GPIO.input (11), jei i == 0: #Kai judesio jutiklio išvestis yra LOW, jei skaitiklis> 0: end = str (datetime.now ()) log_f = open ('static/log.txt', ' a ') pranešimas = pranešimas +'; pabaiga ' + pabaiga +' / n 'spausdinti (pranešimas) log_f.write (pranešimas) log_f.close () final =' static/' + str (pic_name) + ".jpg" pic_name = pic_name + 1 camera.capture (galutinis) skaitiklis = 0 spausdinti „Nėra įsibrovėlių“, i time.sleep (0.1) elif i == 1: #Kai judesio jutiklio išvestis yra HIGH, jei skaitiklis == 0: current = str (datetime.now ()) pranešimas = 'Aptiktas žmogus:' + 'pradėti nuo' + dabartinis skaitiklis = skaitiklis + 1 spausdinimas "Aptiktas įsibrovėlis", i time.sleep (0,1) camera.stop_preview ()

„Log.txt“ir vaizdų katalogai yra „statiški“, o tai būtina, kad „Flask“veiktų.

5 žingsnis: kolbos nustatymas

Kolbos sąranka
Kolbos sąranka

Kolba yra mikro žiniatinklio sistema, parašyta „Python“ir pagrįsta „Werkzeug“įrankių rinkiniu ir „Jinja2“šablono varikliu. Tai lengva įdiegti ir prižiūrėti. Norėdami gauti geresnę kolbos pamoką, rekomenduoju šią nuorodą: „Flask Mega Tutorial“

Pagrindinis mano projekto scenarijus „route.py“:

iš appfolder importuoti appFlaskfrom iš kolbos importuoti render_template, peradresuoti importo os

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

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

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

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

HTML failas „view.html“yra viršutinėje juostoje (nes kai čia nukopijuoju HTML kodus, jis iš tikrųjų virsta HTML formatu …)

Ir projekto struktūra turėtų atrodyti kaip kažkas žemiau (bet, žinoma, yra daugiau failų nei šie):

iotproject / appfolder / route.py šablonai / view.html static / log.txt 0-j.webp

6 žingsnis: rezultatas

Rezultatas
Rezultatas

Norėdami tai padaryti, po to, kai viskas bus teisingai nustatyta, turėtumėte turėti prieigą prie „Raspberry Pi“, naršyklėje įvesdami jo IP adresą, o rezultatas turėtų atrodyti kaip paveikslėlis viršutinėje juostoje.