Mundarija:

Raspberry Pi 3 harakatni aniqlash kamerasi jonli uzatishda: 6 qadam
Raspberry Pi 3 harakatni aniqlash kamerasi jonli uzatishda: 6 qadam

Video: Raspberry Pi 3 harakatni aniqlash kamerasi jonli uzatishda: 6 qadam

Video: Raspberry Pi 3 harakatni aniqlash kamerasi jonli uzatishda: 6 qadam
Video: Arduino Tutorial 27 - Measuring Distanc with Ultrasonic Sensor | SunFounder's ESP32 IoT Learnig kit 2024, Noyabr
Anonim
Raspberry Pi 3 Harakatni aniqlovchi kamera, jonli tasmali
Raspberry Pi 3 Harakatni aniqlovchi kamera, jonli tasmali

Kirish

Ushbu loyihada siz kamerani tuzoq, uy hayvonlari/chaqaloqlar uchun monitor, xavfsizlik kamerasi va boshqa ko'p narsalarni ishlatishingiz mumkin bo'lgan harakatni aniqlash kamerasini qurishni o'rganasiz.

Ushbu loyiha bir necha bosqichlardan iborat:

  • Kirish
  • Pi -ni sozlash
  • Sizning Pi -ga SSHing
  • Yuklash paytida IP manzilingizni elektron pochta orqali yuborish
  • Motion -ni o'rnatish va sozlash
  • Aniqlashda Motion -dan videolarni elektron pochta orqali yuborish
  • Muammolarni bartaraf etish va manbalar

Sizga nima kerak:

  • Raspberry Pi 3 modeli - $ 35
  • 8 gb Micro SD karta ~ ~ $ 10
  • USB veb -kamerasi ~ ~ $ 20 (bu loyihada Logitech HD veb -kamerasi c270 ishlatilgan)
  • micro usb kabeli ~ ~ $ 5
  • yoki:
  • qayta zaryadlanuvchi 5 voltli batareya to'plami (telefon zaxira batareyasi), bu sizning loyihangizni simsiz qiladi ~ ~ $ 20
  • yoki
  • usb devor adapteri ~ ~ $ 5
  • Wi -Fi ulanishi

O'rnatish uchun sizga kerak bo'lgan narsalar:

  • Monitor
  • Sichqoncha va klaviatura
  • SD -karta uyasi bo'lgan kompyuter
  • Micro SD to SD karta konvertori (micro SD kartangiz bilan birga bo'lishi kerak)

1 -qadam: Pi -ni sozlash

Pi -ni sozlash
Pi -ni sozlash

Endi Pi -ni o'rnatamiz

Boshlash uchun, oxirgi qadamda barcha kerakli narsalar borligiga ishonch hosil qiling. Keyin Raspberry Pi veb -saytidagi Raspbian Jessie -ni Microsd kartangizga o'rnatish bo'yicha ko'rsatmalarga amal qiling.

Pi -ga Raspbian -ni o'rnatganingizdan so'ng, ba'zi asosiy funktsiyalarni o'rnatish vaqti keldi.

Wifi

Pi -dan maksimal foyda olish uchun birinchi qadam - uni Internetga ulash. Siz bu qadamni Pi ekranining yuqori o'ng burchagidagi WiFi belgisini topib, u erga kirganingiz yoki oxirgi bosqichda Raspbian -ni o'rnatishdan oldin xuddi shu ishni bajargan bo'lishingiz mumkin. Agar siz Wi -Fi tarmog'ingizga Pi -ning ish stoli interfeysidan kira olmasangiz, buyruq satri orqali Wi -Fi -ni sozlash bo'yicha ko'rsatmalarga amal qilishingiz mumkin.

SSH

Pi -dan foydalanganda sizga juda qulay bo'lgan asbob - bu sizning boshingizga "boshsiz" deb nomlangan buyruqlar berish. Secure SHell yoki SSH yordamida siz Pi -ni kompyuterdan masofadan boshqarishingiz mumkin. Ushbu usul yordamida siz Pi -ni tahrirlashingiz kerak bo'ladi, uni ushlab turish uchun quvvat manbai, endi monitor va klaviatura yo'q!

2 -qadam: Sizning shaxsiy ma'lumotlaringizga SSHing

Sizning shaxsiy ma'lumotlaringizga SSHing
Sizning shaxsiy ma'lumotlaringizga SSHing
Sizning shaxsiy ma'lumotlaringizga SSHing
Sizning shaxsiy ma'lumotlaringizga SSHing

Raspberry Pi -ga SSHing kiritish oson va juda foydali, chunki bu jarayon sizga Wi -Fi ulanishidan boshqa hech qanday kompyuterdan Pi -ga buyruqlar berishga imkon beradi.

Pi -ga SSH kiritish uchun siz ushbu 3 oddiy qadamni bajarishingiz kerak.

Birinchidan, siz Pi -da SSH -ni yoqishingiz kerak. Buning uchun Pi -da buyruqlar oynasini oching va kiriting:

sudo raspi-config

Bu buyruq konfiguratsiya menyusiga kirishga imkon beradi. u erdan siz o'q, yorliq va kirish tugmachalarini ishlatib, avval interfeys parametrlariga o'tishingiz kerak, keyin SSH va kamerani yoqing, keyin pi -dan chiqing va qayta yoqing.

Keyin siz Pi -ning IP -manzilini topishingiz kerak. Buyruq terminaliga quyidagilarni kiriting:

sudo ifconfig

Sizning IP -manzilingiz wlan0 bo'limida, Link encap: ethernet ostida bo'lishi kerak. Yuqoridagi demo rasmda IP manzili 192.168.1.10.

Nihoyat, siz Mac -da o'rnatilgan terminal ilovasini ochishingiz yoki Windows uchun uchinchi tomon ssh -ilovasi uchun ko'rsatmalarni topishingiz va ularga amal qilishingiz kerak bo'ladi. Terminal ilovasida quyidagilarni kiriting:

ssh pi@IP -ADRESINGIZ

Agar siz Raspi-config-da parolni o'zgartirmagan bo'lsangiz, so'ralganda kiritiladigan parolingiz standart parol bo'ladi: malina.

U erdan siz borishingiz kerak!

3 -qadam: Boot -da IP -manzilingizni elektron pochta orqali yuboring

Boot -da IP -manzilingizni elektron pochta orqali yuboring
Boot -da IP -manzilingizni elektron pochta orqali yuboring

Bu bosqichda biz sizning tarmog'ingizdan qat'i nazar, Raspberry Pi -ga qanday kirishni ko'rib chiqamiz. Tarmoqqa qarab Pi -ning IP -manzili o'zgaradi. Agar sizda monitor o'rnatilmagan bo'lsa, siz harakatni aniqlash protokolini ishga tushirish, harakat parametrlarini o'zgartirish yoki qurilmadagi boshqa narsalarga kirish uchun Pi -ga ssh kiritishingiz kerak bo'ladi. Ushbu muammoni hal qilish uchun biz Python skriptini yozamiz, u ishga tushganda bizga IP -ning IP -manzilini yuboradi. Python skripti quyidagicha va "fon" deb belgilangan katalogda saqlangan.

#uy katalogidan boshlang

CD ~

#fon jildini yarating

mkdir fon

#python skriptini yarating

sudo nano emailip.py

#emailip.py -da yozing

import rozetkasi

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

ulanish (("8.8.8.8", 80))

chop etish (s.getsockname () [0]) x = s.getsockname () [0] s.close ()

smtplib import qilish

elektron pochtadan. MIMEM Multipart import MIMEMultipart

email. MIMEText import MIMEText

fromaddr = "MANZILINGIZ"

toaddr = "MANZIL QABUL QILINADI"

msg = MIMEMultipart ()

msg ['Kimdan'] = fromaddr

msg ['To'] = toaddr

msg ['Mavzu'] = "IP -manzil"

tana = xmsg.attach (MIMEText (tanasi, "oddiy"))

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

server.starttls ()

server.login (fromaddr, "Sizning parolingiz")

matn = msg.as_string ()

server.sendmail (danaddr, toaddr, matn)

server.quit ()

#keyin bu qayta yuklashda amalga oshadi

sudo nano /etc/rc.local

/etc/rc.local manziliga #kiriting

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

uxlang 3

bajarildi

_IP = $ (hostname -I) || rost

agar ["$ _IP"]; keyin

printf "Mening IP manzilim - %s / n" "$ _IP"

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

fi

chiqish 0

#va ishingiz tugadi

4 -qadam: Harakatni o'rnatish va sozlash

Harakatni o'rnatish va sozlash
Harakatni o'rnatish va sozlash

#pi -ni yangilang

sudo apt-get yangilanishi

sudo apt-get upgrade

#yuklash

sudo apt-get install motion

#Endi ushbu faylni quyidagi o'zgarishlar bilan tahrir qiling

sudo nano /etc/motion/motion.conf

#bu qo'llanma uchun standart o'rnatish uchun o'zgartiring

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

demon yoqilgan

stream_localhost o'chirilgan

webcontrol_localhost o'chirilgan

ffmpeg_output_movies yoqilgan

target_dir/var/lib/harakat

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

#mahalliy veb -brauzer oqim variantlari

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

stream_maxrate 100 #Bu real vaqt rejimida uzatishga imkon beradi, lekin ko'proq tarmoqli kengligi va resurslarni talab qiladi

kadr tezligi 60 #Bu soniyada 60 kadrni olish imkonini beradi, bu qanchalik baland bo'lsa, videoni qayta ishlash sekinlashadi.

kengligi 640 #Bu tasvirning kengligini o'zgartiradi

balandligi 480 #Bu ko'rsatilgan tasvirning balandligini o'zgartiradi

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

#/video.ailing video sozlamalari…/motion.conf

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

Chiziq oldidagi ";" belgisini o'chirib tashlang, nuqta -vergul chiziqni izohlaydi

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

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

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

#astatik

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

faylda tasvirlangan #tanlovlar

chiqish_rasmlari locate_motion_style

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

#keyin o'zgartirish

sudo nano/etc/default/motion

#Aytmoq

start_motion_daemon = ha

#oxirgi, B **** ni boshlang

sudo xizmatining harakatini boshlash

#siz buyruqni "to'xtatish" yoki "qayta boshlash" ga o'zgartirishingiz mumkin.

5 -qadam: Aniqlash harakatidan videolarni elektron pochta orqali yuborish

Aniqlash harakatidan videolarni elektron pochta orqali yuborish
Aniqlash harakatidan videolarni elektron pochta orqali yuborish

Harakat aniqlanganda elektron pochta:

#Uydan boshlang

dircd ~

#harakat haqida ogohlantirish python skriptini yarating

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

#yozish

smtplib import qilish

datetime dan datetime import qilinadi

elektron pochtadan. MIMEM Multipart import MIMEMultipart

email. MIMEText import MIMEText

fromaddr = "SIZNING ADRESS"

toaddr = "RECIEVINGADDRESS"

msg = MIMEMultipart ()

msg ['Kimdan'] = fromaddr

msg ['To'] = toaddr

msg ['Mavzu'] = "Harakat aniqlandi"

body = 'Harakat aniqlandi. / n Vaqt: % s' % str (datetime.now ())

msg.attach (MIMEText (asosiy, "oddiy"))

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

server.starttls ()

server.login (fromaddr, "YOUR SIZNING SOLINGIZ")

matn = msg.as_string ()

server.sendmail (danaddr, toaddr, matn)

server.quit ()

Elektron pochta Video saqlanayotganda harakatlanish videosi:

#boshlang homedircd ~

#harakatli video python skriptlarini yaratish nano /home/pi/background/motionvid.py

smtplib import qilish

elektron pochtadan. MIMEM Multipart import MIMEMultipart

email. MIMEText import MIMEText

email. MIMEBase import MIMEBase

elektron pochta import kodlovchi -laridan

fromaddr = "Sizning elektron pochtangiz"

toaddr = "Siz yuborgan elektron pochta manzili"

msg = MIMEMultipart ()

msg ['Kimdan'] = fromaddr

msg ['To'] = toaddr

msg ['Subject'] = "Harakat kamerasi faollashtirilgan"

tana = "Harakat videosi aniqlandi"

msg.attach (MIMEText (asosiy, "oddiy"))

import qilish os

rootpath = '/var/lib/motion'

filelist = [os.path.join (rootpath, f) f uchun os.listdir (rootpath)]

filelist = [f uchun f uchun fayllar ro'yxatida, agar os.path.isfile (f)]

eng yangi = max (fayllar ro'yxati, kalit = lambda x: os.stat (x).st_mtime)

fayl nomi = eng yangi

import qilish os

rootpath = '/var/lib/motion'

filelist = [os.path.join (rootpath, f) f uchun os.listdir (rootpath)]

filelist = [f uchun f uchun, agar os.path.isfile (f)]

eng yangi = max (fayllar ro'yxati, kalit = lambda x: os.stat (x).st_mtime)

biriktirma = ochiq (eng yangi, "rb")

qism = MIMEBase ('dastur', 'oktet-oqim')

part.set_payload ((ilova). o'qish ())

encoders.encode_base64 (qism)

part.add_header ("Tarkibni joylashtirish", "biriktirma; fayl nomi = % s" % fayl nomi)

xabar qo'shish (qism)

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

server.starttls ()

server.login (fromaddr, "Sizning parolingiz")

matn = msg.as_string ()

server.sendmail (danaddr, toaddr, matn)

server.quit ()

6 -qadam: Muammolarni bartaraf etish va manbalar

Muammolarni bartaraf etish va manbalar
Muammolarni bartaraf etish va manbalar

Muammolarni bartaraf qilish; nosozliklarni TUZATISH:

Bu loyiha bir necha bosqichlardan iborat bo'lgani uchun, ishlarning noto'g'ri ketishi mumkin bo'lgan bir nechta nuqtalar mavjud. Quyida yuzaga kelishi mumkin bo'lgan xatolar va ularni tuzatish usullari keltirilgan.

  • Sizga joriy IP -manzilini elektron pochta orqali yuborish uchun pi -ni o'rnatayotganda, rc.local faylini avval ko'rsatilgandek tahrir qilish juda muhim, chunki bu dastur qayta ishga tushirilgandan so'ng dasturni ishga tushirishidan oldin biroz kechiktirishga imkon beradi. Aks holda, pi hali Wi -Fi tarmog'iga ulanmaydi va elektron pochta yuborilmaydi.
  • Motion.conf faylini tahrir qilayotganda, ba'zi parametrlar oldidagi nuqta -vergulni o'chirib tashlang. Nuqtali vergul berilgan harakatni bostiradi, aks holda o'zgarish kuchga kirmaydi.
  • Motion.conf fayli juda yaxshi tashkil etilgan va batafsil. O'zingiz xohlaganingizcha sozlamalarni o'zgartiring, lekin ular harakatni ta'qib qilish tizimining muvaffaqiyatiga ta'sir qilishi mumkinligini tushuning.
  • Elektron pochta xabarnomasi va elektron pochta orqali video yuborish variantlarini o'rnatganingizdan so'ng, harakatni aniqlagan videoning elektron pochtasi dastlabki ogohlantiruvchi elektron pochtaga qaraganda bir oz ko'proq vaqt talab qilinishini e'tiborga olish lozim. Buning sababi shundaki, video harakat aniqlanmaganidan bir necha soniya o'tgach tugaydi va elektron pochta qo'shimchasi bir necha daqiqani talab qiladigan darajada katta bo'lishi mumkin. Ba'zi hollarda, agar harakat juda uzoq vaqt davom etsa, uni yuborish juda katta bo'lishi mumkin. Shu sababli, elektron pochta xabarini olgandan so'ng, translyatsiyani tekshirish har doim yaxshi bo'ladi.

Nima uchun harakat?:

Loyihani boshlaganimizda, biz turli xil manbalarni ko'rib chiqdik. Birinchidan, biz malina pi uchun maxsus qurilgan kamera bo'lagi bo'lgan PiCam -dan foydalanishni ko'rib chiqdik. PiCam, albatta, qobiliyatli qurilma va ko'plab ilovalarga ega, lekin u faqat maxsus mo'ljallangan dasturlardan foydalanish bilan cheklangan va arzon ko'p maqsadli veb -kameralarga qaraganda ancha qimmat. Shunday qilib, ushbu loyihani kengroq auditoriya uchun ochiq qilish uchun biz oddiy USB veb -kamerasidan foydalanishga qaror qildik. Keyingi masala qaysi dasturiy ta'minotni o'z ichiga olishi edi. Biz dastlab OpenCV -ni ko'rib chiqdik, u har xil turdagi kompyuter ko'rish va tasvirlash loyihalarini amalga oshirishga imkon beradigan bepul dasturiy ta'minot. Bu erda muammo shundaki, OpenCV - bu katta xotira va uzoq vaqt sozlangan katta fayl. O'rnatish, shuningdek, xatolarga ko'proq joy qoldirib, bir necha bosqichlardan iborat. Biz aniqladikki, bizning maxsus loyihamiz uchun Motion -ni sozlash va ishga kirish osonroq, lekin uni bajarishda ancha mustahkam.

Manbalar

Kod manbalari:

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

Fotosuratlar:

SSH salyangozi:

Pochta logotipi:

Logitech veb-kamerasi:

SSH oynasi:

Tavsiya: