Turinys:

„Raspberry Pi 3“judesio aptikimo kamera su tiesioginiu srautu: 6 žingsniai
„Raspberry Pi 3“judesio aptikimo kamera su tiesioginiu srautu: 6 žingsniai

Video: „Raspberry Pi 3“judesio aptikimo kamera su tiesioginiu srautu: 6 žingsniai

Video: „Raspberry Pi 3“judesio aptikimo kamera su tiesioginiu srautu: 6 žingsniai
Video: Leap Motion SDK 2024, Lapkritis
Anonim
„Raspberry Pi 3“judesio aptikimo kamera su tiesioginiu pašaru
„Raspberry Pi 3“judesio aptikimo kamera su tiesioginiu pašaru

Įvadas

Šiame projekte jūs išmoksite sukurti judesio aptikimo kamerą, kurią galėsite naudoti kaip fotoaparato spąstus, naminių gyvūnėlių/kūdikių monitorių, apsaugos kamerą ir daug daugiau.

Šis projektas yra suskirstytas į kelis etapus:

  • Įvadas
  • „Pi“nustatymas
  • SSHing į jūsų Pi
  • Pašto adresu paleidžiant jūsų IP adresą
  • „Motion“diegimas ir nustatymas
  • Vaizdo įrašų siuntimas el. Paštu iš judesio aptikimo metu
  • Trikčių šalinimas ir šaltiniai

Ko jums reikės:

  • „Raspberry Pi 3“modelis kainuoja ~ 35 USD
  • 8 GB „Micro SD“kortelė ~ 10 USD
  • USB internetinė kamera ~ ~ 20 USD (šiame projekte buvo naudojama „Logitech HD Webcam c270“)
  • mikro usb kabelis ~ ~ 5 USD
  • arba:
  • įkraunama 5 voltų baterija (telefono atsarginė baterija), todėl jūsų projektas tampa belaidis ~ ~ 20 USD
  • arba
  • USB sieninis adapteris ~ ~ 5 USD
  • „WiFi“ryšys

Prie sąrankos jums reikės prieigos:

  • Monitorius
  • Pelė ir klaviatūra
  • Kompiuteris su SD kortelės lizdu
  • „Micro SD“į SD kortelės keitiklis (turėtų būti su „micro SD“kortele)

1 žingsnis: nustatykite „Pi“

„Pi“nustatymas
„Pi“nustatymas

Dabar nustatykime „Pi“

Norėdami pradėti, įsitikinkite, kad turite visus būtinus elementus iš paskutinio veiksmo. Tada atlikite „Raspberry Pi“svetainės veiksmus, kaip įdiegti „Raspbian Jessie“į „Microsd“kortelę, kurią rasite čia.

Įdiegę „Raspbian“savo „Pi“, atėjo laikas nustatyti kai kurias pagrindines funkcijas.

Bevielis internetas

Pirmasis žingsnis norint gauti maksimalią naudą iš „Pi“yra prijungti jį prie interneto. Galbūt jūs jau atlikote šį veiksmą, suradę „WiFi“simbolį viršutiniame dešiniajame „Pi“pagrindinio ekrano kampe ir prisijungę ten, arba atlikę tą patį prieš diegdami „Raspbian“paskutiniame veiksme. Jei negalite prisijungti prie „WiFi“tinklo naudodami „Pi“darbalaukio sąsają, vadovaukitės čia pateiktomis instrukcijomis ir nustatykite „WiFi“naudodami komandų eilutę.

SSH

Vienas labai patogus įrankis, prieinamas jums naudojant „Pi“, yra galimybė duoti komandas savo „Pi“, vadinamoje sąrankoje be galvos. Naudodami „Secure SHell“arba SSH, galite valdyti „Pi“nuotoliniu būdu iš kompiuterio. Taikant šį metodą, norint redaguoti „Pi“, jums tereikia maitinimo šaltinio, nebereikia monitoriaus ir klaviatūros!

2 žingsnis: SSHing į savo PI

SSHing į jūsų PI
SSHing į jūsų PI
SSHing į jūsų PI
SSHing į jūsų PI

SSHing į „Raspberry Pi“yra lengva ir labai naudinga, nes šis procesas leidžia jums duoti komandas „Pi“iš bet kurio kompiuterio, turinčio tik „WiFi“ryšį.

Norėdami įjungti SSH į „Pi“, turite atlikti šiuos 3 paprastus veiksmus.

Pirmiausia turite įjungti SSH savo „Pi“. Norėdami tai padaryti, atidarykite „Pi“komandų langą ir įveskite:

sudo raspi-config

Ši komanda leidžia patekti į konfigūracijos meniu. iš ten norėsite naudoti rodyklę, skirtuką ir įvesti klavišus, kad pirmiausia pereitumėte prie sąsajos parinkčių, tada įjungtumėte SSH, taip pat fotoaparatą, tada išeikite ir iš naujo paleiskite pi.

Tada turėsite rasti savo „Pi“IP adresą. Komandų terminale įveskite:

sudo ifconfig

Ir jūsų IP adresas turėtų būti pasirodžiusiame skyriuje „wlan0“, esančiame tiesiai po nuorodos encap: ethernet. Aukščiau esančiame demonstraciniame paveikslėlyje IP adresas yra 192.168.1.10.

Galiausiai turėsite atidaryti integruotą terminalo programą „Mac“arba surasti ir sekti trečiosios šalies „ssh“programos, skirtos „Windows“, instrukcijas. Programoje „Terminal“įveskite:

ssh pi@JŪSŲ IP ADRESAS

Jei nepakeitėte slaptažodžio dirbdami „Raspi-config“, tada slaptažodis, kurį reikia įvesti, kai būsite paraginti, bus numatytasis slaptažodis: aviečių.

Iš ten jums turėtų būti gera eiti!

3 veiksmas: el. Paštu išsiųskite savo IP adresą įkrovos metu

Paleiskite savo IP adresą įkrovos metu
Paleiskite savo IP adresą įkrovos metu

Šiame žingsnyje mes sutelksime dėmesį į tai, kaip pasiekti „Raspberry Pi“, nepriklausomai nuo to, kuriame tinkle esate. Priklausomai nuo tinklo, „Pi“IP adresas keičiasi. Ir jei neturite monitoriaus sąrankos, turėsite įjungti „ssh“į „Pi“, kad suaktyvintumėte judesio aptikimo protokolą, pakeistumėte judesio nuostatas arba pasiektumėte bet ką kitą įrenginyje. Norėdami išspręsti šią problemą, mes parašysime „python“scenarijų, kuris el. Paštu atsiųs mums dabartinį „Pi“IP IP adresą. „Python“scenarijus yra toks ir buvo saugomas kataloge, pažymėtame „fone“.

#start namų kataloge

cd ~

#create fono aplanką

mkdir fonas

#sukurti „Python“scenarijų

sudo nano emailip.py

#rašykite į emailip.py

importo lizdas

s = socket.socket (lizdas. AF_INET, lizdas. SOCK_DGRAM)

s.connect (("8.8.8.8", 80))

spausdinti (s.getsockname () [0]) x = s.getsockname () [0] s.close ()

importuoti smtplib

iš el.pašto. MIMEMultipart importas MIMEMultipart

iš el. pašto. MIMEText importuoja MIMEText

fromaddr = "JŪSŲ ADRESAS"

toaddr = "GAVIMAS ADRESAS"

msg = MIMEMultipart ()

msg ['From'] = fromadr

msg ['Į'] = toaddr

msg ['Subject'] = "IP adresas"

body = xmsg.attach (MIMEText (body, 'paprastas'))

serveris = smtplib. SMTP ('smtp.gmail.com', 587)

server.starttls ()

server.login (fromaddr, „JŪSŲ Slaptažodis“)

text = msg.as_string ()

server.sendmail (fromaddr, toaddr, text)

server.quit ()

#tada tai daro iš naujo

sudo nano /etc/rc.local

#įveskite /etc/rc.local

kol! /sbin/ifconfig wlan0 | grep -q 'inet addr: [0-9]';

miegok 3

padaryta

_IP = $ (pagrindinio kompiuterio pavadinimas -I) || tiesa

jei ["$ _IP"]; tada

printf "Mano IP adresas yra %s / n" "$ _IP"

python /home/pi/Background/emailip.py &

fi

išeiti 0

#ir viskas

4 žingsnis: judesio diegimas ir nustatymas

Judėjimo diegimas ir nustatymas
Judėjimo diegimas ir nustatymas

#atnaujinti pi

sudo apt-get atnaujinimas

sudo apt-get atnaujinimas

#parsisiųsti

sudo apt-get install motion

#now redaguokite šį failą atlikdami šiuos pakeitimus

sudo nano /etc/motion/motion.conf

#Norėdami nustatyti šios pamokos standartą, pakeiskite

#################

demonas įjungtas

„stream_localhost“išjungtas

„webcontrol_localhost“išjungtas

ffmpeg_output_movies įjungtas

target_dir/var/lib/motion

##################

#local žiniatinklio naršyklės srautinio perdavimo parinktys

##################

stream_maxrate 100 #Tai leis transliuoti realiuoju laiku, tačiau reikalauja daugiau pralaidumo ir išteklių

kadrų dažnis 60 #Tai leis užfiksuoti 60 kadrų per sekundę #kuo didesnis, tuo lėtesnis vaizdo apdorojimas

plotis 640 #Tai pakeičia rodomo vaizdo plotį

aukštis 480 #Tai pakeičia rodomo vaizdo aukštį

##################

#el. pašto vaizdo įrašo nustatymai …/motion.conf

##################

#ištrinti „;“prieš eilutę, kabliataškis komentuoja eilutę

on_event_start python /home/pi/background/motionalert.py %f

on_movie_end python /home/pi/background/motionvid.py %f

##################

#astika

##################

#choices, aprašytas faile

output_pictures locate_motion_style

##################

#tada keiskis

sudo nano/etc/default/motion

#sakyti

start_motion_daemon = taip

#paskutinis, pradėkite B **** aukštyn

sudo paslaugos judėjimo pradžia

#galite pakeisti komandą į „stop“arba „restart“

5 veiksmas: vaizdo įrašų siuntimas el. Paštu nuo judesio aptikimo metu

Vaizdo įrašų siuntimas el. Paštu nuo judesio aptikimo metu
Vaizdo įrašų siuntimas el. Paštu nuo judesio aptikimo metu

El. Paštas, kai aptinkamas judesys:

#pradėk nuo namų

dircd ~

#create motion alert python script

sudo nano /home/pi/background/motionalert.py

#rašyti

importuoti smtplib

nuo datos laiko importavimo datos laiko

iš el.pašto. MIMEMultipart importas MIMEMultipart

iš el. pašto. MIMEText importuoja MIMEText

fromaddr = "JŪSŲ ADRESAS"

toaddr = "RECIEVINGADDRESS"

msg = MIMEMultipart ()

msg ['From'] = fromadr

msg ['Į'] = toaddr

msg ['Subject'] = "Aptiktas judesys"

body = 'Aptiktas judesys. / nLaikas: % s' % str (datetime.now ())

msg.attach (MIMEText (body, 'plain'))

serveris = smtplib. SMTP ('smtp.gmail.com', 587)

server.starttls ()

server.login (fromaddr, „YOURPASSWORD“)

text = msg.as_string ()

server.sendmail (fromaddr, toaddr, text)

server.quit ()

Judesio vaizdo įrašas el. Paštu išsaugojus vaizdo įrašą:

#pradėkite nuo homedircd ~

#create motion video python scriptsudo nano /home/pi/background/motionvid.py

importuoti smtplib

iš el.pašto. MIMEMultipart importas MIMEMultipart

iš el. pašto. MIMEText importuoja MIMEText

iš el. pašto. „MIMEBase“importuoja „MIMEBase“

iš el. pašto importavimo koduotojų

fromaddr = "JŪSŲ el. paštas"

toaddr = "El. pašto adresas, į kurį siunčiate"

msg = MIMEMultipart ()

msg ['From'] = fromadr

msg ['Į'] = toaddr

msg ['Subject'] = "Suaktyvinta" Motion Cam"

body = "Aptiktas judesio vaizdo įrašas"

msg.attach (MIMEText (body, 'plain'))

importuoti

rootpath = '/var/lib/motion'

failų sąrašas = [os.path.join (rootpath, f) for f in os.listdir (rootpath)]

failų sąrašas = [f už f failų sąraše, jei os.path.isfile (f)]

naujausias = maksimumas (failų sąrašas, raktas = lambda x: os.stat (x).st_mtime)

failo pavadinimas = naujausias

importuoti

rootpath = '/var/lib/motion'

failų sąrašas = [os.path.join (rootpath, f) for f in os.listdir (rootpath)]

failų sąrašas = [f už f failų sąraše, jei os.path.isfile (f)]

naujausias = maks. (failų sąrašas, raktas = lambda x: os.stat (x).st_mtime)

priedas = atviras (naujausias, „rb“)

part = MIMEBase ('programa', 'oktetas-srautas')

part.set_payload ((priedas). skaityti ())

encoders.encode_base64 (dalis)

part.add_header ('Content-Disposition', "priedas; failo pavadinimas = % s" % failo pavadinimas)

msg.attach (dalis)

serveris = smtplib. SMTP ('smtp.gmail.com', 587)

server.starttls ()

server.login (fromaddr, „JŪSŲ Slaptažodis“)

text = msg.as_string ()

server.sendmail (fromaddr, toaddr, text)

server.quit ()

6 veiksmas: trikčių šalinimas ir šaltiniai

Trikčių šalinimas ir šaltiniai
Trikčių šalinimas ir šaltiniai

Problemų sprendimas:

Kadangi šį projektą sudaro keli etapai, yra keletas taškų, kuriuose viskas gali negerai. Žemiau pateikiamos kelios galimos klaidos ir kaip jas ištaisyti.

  • Nustatydami „pi“el. Paštu jums dabartinį IP adresą, labai svarbu redaguoti „rc.local“failą, kaip parodyta anksčiau, nes tai leidžia šiek tiek atidėti, kol programa įsijungs iš naujo. Priešingu atveju pi dar nebus prijungtas prie „Wi -Fi“ir el. Laiškas nebus išsiųstas.
  • Redaguodami failą motion.conf būtinai ištrinkite kabliataškius prieš tam tikrus parametrus. Kabliataškiai slopina tam tikrą veiksmą, todėl kitaip pakeitimas neįsigalios.
  • „Motion.conf“failas yra labai gerai organizuotas ir išsamus. Nedvejodami pakeiskite nustatymus pagal savo skonį, tačiau supraskite, kad jie gali turėti įtakos judesio fiksavimo sistemos sėkmei.
  • Nustatę įspėjimo el. Paštu ir el. Pašto vaizdo įrašo parinktis, svarbu atkreipti dėmesį, kad judesio aptikto vaizdo įrašo el. Laiškas užtruks šiek tiek ilgiau nei išsiųstas nei pradinis įspėjimo el. Laiškas. Taip yra todėl, kad vaizdo įrašas baigiasi praėjus kelioms sekundėms po to, kai judesys nebėra aptinkamas, ir todėl, kad el. Laiško priedas gali būti pakankamai didelis, kad jį būtų galima gauti per kelias minutes. Kai kuriais atvejais, jei judesys palaikomas labai ilgą laiką, jis gali būti per didelis, kad jį būtų galima siųsti. Dėl šios priežasties visada yra gera idėja patikrinti tiesioginę transliaciją gavus pradinį įspėjimo el. Laišką.

Kodėl Motion ?:

Pradėdami šį projektą, mes atsižvelgėme į kelis skirtingus išteklius. Pirmiausia apsvarstėme galimybę naudoti „PiCam“, kuris yra specialiai „aviečių pi“sukurtas fotoaparatas. „PiCam“tikrai yra pajėgus įrenginys ir turi daug programų, tačiau jis apsiriboja tik specialiai jam sukurtų programų naudojimu ir yra palyginti brangus, palyginti su pigiomis daugiafunkcinėmis kameromis. Taigi, norėdami, kad šis projektas būtų prieinamas platesnei auditorijai, nusprendėme naudoti bendrą USB internetinę kamerą. Kitas klausimas buvo, kurią programinę įrangą įtraukti. Iš pradžių svarstėme „OpenCV“, kuri yra nemokama programinė įranga, leidžianti įgyvendinti įvairius kompiuterinio matymo ir vaizdavimo projektus. Viena iš problemų čia yra ta, kad „OpenCV“yra didžiulis failas, užimantis daug atminties ir ilgai nustatytas. Sąranką taip pat sudaro keli etapai, paliekant dar daugiau vietos klaidoms. Mes nustatėme, kad mūsų konkrečiam projektui „Motion“buvo lengviau sukonfigūruoti ir pradėti veikti, tačiau daug patikimesnis jo vykdymas.

Šaltiniai

Kodo šaltiniai:

www.techradar.com/how-to/computing/how-to-b…

pimylifeup.com/raspberry-pi-webcam-server/

www.pyimagesearch.com/2015/06/01/home-surve…

naelshiab.com/tutorial-send-email-python/

www.raspberrypi.org/documentation/linux/us…

learn.adafruit.com/adafruits-raspberry-pi-…

learn.adafruit.com/adafruits-raspberry-pi-…

pinout.xyz/pinout/i2c

Nuotraukų kreditai:

SSH sraigė:

Pašto logotipas:

„Logitech“internetinė kamera:

SSH langas:

Rekomenduojamas: