Raspberry Pi 3 Canlı Beslemeli Hareket Algılama Kamerası: 6 Adım
Raspberry Pi 3 Canlı Beslemeli Hareket Algılama Kamerası: 6 Adım
Anonim
Raspberry Pi 3 Canlı Beslemeli Hareket Algılama Kamerası
Raspberry Pi 3 Canlı Beslemeli Hareket Algılama Kamerası

Tanıtım

Bu projede, kamera kapanı, evcil hayvan/bebek monitörü, güvenlik kamerası ve çok daha fazlası olarak kullanabileceğiniz bir hareket algılama kamerasının nasıl yapıldığını öğreneceksiniz.

Bu Proje birkaç adımdan oluşmaktadır:

  • Tanıtım
  • Pi'nizi ayarlama
  • Pi'nize SSH gönderme
  • Açılışta IP adresinizi e-posta ile gönderme
  • Motion'ı yükleme ve ayarlama
  • Algılandığında Motion'dan Videoları E-postayla Gönderme
  • Sorun Giderme ve Kaynaklar

Neye ihtiyacınız olacak:

  • A Raspberry Pi 3 modeli b ~~35$
  • 8gb Mikro SD kart ~~10$
  • USB Web Kamerası ~~20$ (bu proje bir Logitech HD Webcam c270 kullandı)
  • mikro usb kablosu ~~$5
  • herhangi biri:
  • şarj edilebilir 5 voltluk pil takımı (telefon yedek pili), bu projenizi kablosuz hale getirir ~~ 20 $
  • veya
  • usb duvar adaptörü ~~$5
  • WiFi bağlantısı

Kurulum için erişmeniz gerekenler:

  • Bir ekran
  • Bir fare ve klavye
  • SD kart yuvası olan bir bilgisayar
  • Bir Micro SD'den SD karta dönüştürücü (mikro SD kartınızla birlikte verilmelidir)

Adım 1: Pi'nizi Ayarlama

Pi'nizi Ayarlama
Pi'nizi Ayarlama

Şimdi Pi'nizi ayarlayalım

Başlamak için, son adımdaki tüm gerekli öğelere sahip olduğunuzdan emin olun. Ardından, burada bulunan Microsd kartınıza Raspbian Jessie'yi yüklemek için Raspberry Pi web sitesindeki adımları izleyin.

Pi'nize Raspbian yükledikten sonra, bazı temel özellikleri kurmanın zamanı geldi.

Wifi

Pi'nizden en iyi şekilde yararlanmanın ilk adımı, onu internete bağlamaktır. Bu adımı, Pi'nizin ana ekranının sağ üst köşesindeki WiFi sembolünü bulup giriş yaparak ya da son adımda Raspbian'ı kurmadan önce aynı şeyi yaparak tamamlamış olabilirsiniz. Pi'nizin masaüstü arayüzünden WiFi ağınıza giriş yapamıyorsanız, komut satırı üzerinden WiFi kurmak için buradaki talimatları takip edebilirsiniz.

SSH

Pi'nizi kullanırken kullanabileceğiniz çok kullanışlı bir araç, Pi'nize başsız kurulum olarak bilinen komutlar verme seçeneğidir. Secure Shell veya SSH kullanarak Pi'nizi bir bilgisayardan uzaktan kontrol edebilirsiniz. Bu yöntemle Pi'nizi düzenlemek için ihtiyacınız olan tek şey, onu açık tutmak için bir güç kaynağı, artık monitör ve klavye yok!

Adım 2: PI'nize SSHing

PI'nize SSHing
PI'nize SSHing
PI'nize SSHing
PI'nize SSHing

Raspberry Pi'nize SSH eklemek kolay ve çok kullanışlıdır, çünkü işlem Pi'nize herhangi bir bilgisayardan WiFi bağlantısından başka bir şey olmadan komut vermenize izin verir.

Pi'nize SSH göndermek için bu 3 basit adımı izlemeniz gerekir.

İlk olarak, Pi'nizde SSH'yi etkinleştirmeniz gerekir. Bunu yapmak için Pi'nizde bir komut penceresi açın ve şunu yazın:

sudo raspi yapılandırması

Bu komut, bir konfigürasyon menüsüne girmenizi sağlar. oradan önce arayüz seçeneklerine gitmek için ok, sekme ve enter tuşlarını kullanmak, ardından SSH'yi ve kamerayı etkinleştirmek, ardından çıkmak ve pi'yi yeniden başlatmak isteyeceksiniz.

Ardından, Pi'nizin IP adresini bulmanız gerekecek. Bir komut terminalinde şunu yazın:

sudo ifconfig

Ve IP adresiniz, Link encap:ethernet'in hemen altında, açılan wlan0 bölümünde olmalıdır. Yukarıdaki demo resimde IP Adresi 192.168.1.10.

Son olarak, bir mac'ta yerleşik terminal uygulamasını açmanız veya Windows için bir 3. taraf ssh uygulamasına ilişkin talimatları bulmanız ve izlemeniz gerekir. Terminal uygulamasında şunu yazın:

ssh pi@IP ADRESİNİZ

Raspi-config sırasında şifreyi değiştirmediyseniz, istendiğinde gireceğiniz şifre varsayılan şifre olacaktır: ahududu.

Oradan, gitmek için iyi olmalısın!

3. Adım: Açılışta IP Adresinizi E-postayla Gönderin

Açılışta IP Adresinizi E-postayla Gönderin
Açılışta IP Adresinizi E-postayla Gönderin

Bu adımda, bulunduğunuz ağdan bağımsız olarak Raspberry Pi'nize nasıl erişeceğinize odaklanacağız. Ağa bağlı olarak Pi'nin IP adresi değişir. Ve bir monitör kurulumunuz yoksa, hareket algılama protokolünü tetiklemek, hareket tercihlerini değiştirmek veya cihazdaki başka herhangi bir şeye erişmek için Pi'ye ssh yapmanız gerekir. Bu sorunu çözmek için, başlangıçta Pi'nin IP mevcut IP adresini bize e-postayla gönderen bir python betiği yazacağız. Python betiği aşağıdaki gibidir ve "arka plan" olarak işaretlenmiş bir dizinde depolanmıştır.

#ana dizinde başla

cd ~

#arka plan klasörü oluştur

arka plan

#python betiği oluştur

sudo nano emailip.py

#emailip.py'ye yaz

ithalat soketi

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

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

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

smtplib'i içe aktar

email. MIMEMçok parçalı içe aktarma MIMEMçok parçalı

email. MIMEText'ten içe aktar MIMEText

fromaddr = "ADRESİNİZ"

toaddr = "ALICI ADRES"

msg = MIMEMçok parçalı()

msg['Kimden'] = fromaddr

msg['Kime'] = toaddr

msg['Konu'] = "IP Adresi"

gövde = xmsg.attach(MIMEText(gövde, 'düz'))

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

sunucu.starttls()

server.login(fromaddr, "ŞİFRENİZ")

metin = msg.as_string()

server.sendmail(fromaddr, toaddr, metin)

server.quit()

#o zaman bu yeniden başlatıldığında yapar

sudo nano /etc/rc.local

# /etc/rc.local'a girin

süre ! /sbin/ifconfig wlan0 | grep -q 'inet adresi:[0-9]';

uyu 3

tamamlamak

_IP=$(hostname -I) || NS

if ["$_IP"]; sonra

printf "IP adresim %s\n" "$_IP"

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

fi

0 çıkışı

#ve işin bitti

Adım 4: Hareketi Kurma ve Ayarlama

Hareketi Kurma ve Ayarlama
Hareketi Kurma ve Ayarlama

#pi'yi güncelle

sudo apt-get güncellemesi

sudo apt-get yükseltme

#indirmek

sudo apt-get yükleme hareketi

#şimdi bu dosyayı aşağıdaki değişikliklerle düzenleyin

sudo nano /etc/motion/motion.conf

#bu eğitim için bir standart belirlemek için, değiştir

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

arka plan programı

stream_localhost kapalı

webcontrol_localhost kapalı

ffmpeg_output_movies açık

target_dir /var/lib/hareket

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

#local web tarayıcısı akış seçenekleri

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

stream_maxrate 100 #Bu, gerçek zamanlı akışa izin verir ancak daha fazla bant genişliği ve kaynak gerektirir

kare hızı 60 #Bu, saniyede 60 karenin yakalanmasını sağlar #bu ne kadar yüksek olursa, video işleme o kadar yavaş olur

genişlik 640 #Bu, görüntülenen görüntünün genişliğini değiştirir

yükseklik 480 #Bu, görüntülenen görüntünün yüksekliğini değiştirir

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

#emailing video ayarları …/motion.conf dosyasında

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

#delete satırın önündeki "; ", noktalı virgül satırı yorumlar

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

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

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

#estetik

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

#dosyada açıklanan seçenekler

output_pictures bulun_motion_style

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

#sonra değiştir

sudo nano /etc/default/hareket

#söylemek

start_motion_daemon=evet

#last, B****'ı başlat

sudo servis hareket başlangıcı

#komutu "dur" veya "yeniden başlat" olarak değiştirebilirsin

Adım 5: Algılamada Hareketten Videoları E-postayla Gönderme

Algılamada Hareketten Videoları E-postayla Gönderme
Algılamada Hareketten Videoları E-postayla Gönderme

Hareket algılandığında e-posta:

#evde başla

yön ~

#hareket uyarısı python betiği oluştur

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

#yazı yazmak

smtplib'i içe aktar

tarih saatinden içe aktarma tarih saatinden

email. MIMEMçok parçalı içe aktarma MIMEMçok parçalı

email. MIMEText'ten içe aktar MIMEText

fromaddr = "ADRESİNİZ"

toaddr = "ALICI ADRESİ"

msg = MIMEMçok parçalı()

msg['Kimden'] = fromaddr

msg['Kime'] = toaddr

msg['Subject'] = "Hareket Algılandı"

body = 'Bir hareket algılandı.\nSaat: %s' % str(datetime.now())

msg.attach(MIMEText(gövde, 'düz'))

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

sunucu.starttls()

server.login(fromaddr, "ŞİFRENİZ")

metin = msg.as_string()

server.sendmail(fromaddr, toaddr, metin)

server.quit()

Video kaydedildiğinde hareketin videosu:

#homedircd'de başla ~

#hareketli video oluştur python scriptsudo nano /home/pi/background/motionvid.py

smtplib'i içe aktar

email. MIMEMçok parçalı içe aktarma MIMEMçok parçalı

email. MIMEText'ten içe aktar MIMEText

email. MIMEBase'den MIMEBase'i içe aktar

e-posta içe aktarma kodlayıcılarından

fromaddr = "E-POSTA SİZİN"

toaddr = "GÖNDERDİĞİNİZ E-POSTA ADRESİ"

msg = MIMEMçok parçalı()

msg['Kimden'] = fromaddr

msg['Kime'] = toaddr

msg['Subject'] = "Hareket Kamerası Etkinleştirildi"

body = "Hareket Algılanan Video"

msg.attach(MIMEText(gövde, 'düz'))

işletim sistemini içe aktar

kök yol = '/var/lib/hareket'

filelist = [os.path.join(rootpath, f) için os.listdir(rootpath)]

filelist = [f için f için filelist if os.path.isfile(f)]

en yeni = max(dosya listesi, anahtar=lambda x: os.stat(x).st_mtime)

dosya adı = en yeni

işletim sistemini içe aktar

kök yol = '/var/lib/hareket'

filelist = [os.path.join(rootpath, f) için os.listdir(rootpath)]

filelist = [f için f için filelist if os.path.isfile(f)]

en yeni = max(dosya listesi, anahtar=lambda x: os.stat(x).st_mtime)

ek = open(en yeni, "rb")

bölüm = MIMEBase('application', 'octet-stream')

part.set_payload((ek).read())

encoders.encode_base64(bölüm)

part.add_header('Content-Disposition', "ek; dosya adı= %s" % dosya adı)

msg.ekle(bölüm)

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

sunucu.starttls()

server.login(fromaddr, "ŞİFRENİZ")

metin = msg.as_string()

server.sendmail(fromaddr, toaddr, metin)

server.quit()

6. Adım: Sorun Giderme ve Kaynaklar

Sorun Giderme ve Kaynaklar
Sorun Giderme ve Kaynaklar

Sorun giderme:

Bu projenin birden fazla aşaması olduğundan, işlerin ters gidebileceği birkaç nokta var. Aşağıda oluşabilecek olası hatalardan bazıları ve bunların nasıl düzeltileceği yer almaktadır.

  • Pi'nizi size mevcut IP adresini e-postayla gönderecek şekilde ayarlarken, rc.local dosyasını daha önce gösterildiği gibi düzenlemek çok önemlidir çünkü bu, yeniden başlatmanın ardından program etkinleştirilmeden önce hafif bir gecikmeye izin verir. Aksi takdirde, pi henüz wifi'ye bağlanmayacak ve e-posta gönderilmeyecektir.
  • Motion.conf dosyasını düzenlerken, belirli parametrelerin önündeki noktalı virgülleri sildiğinizden emin olun. Noktalı virgül belirli bir eylemi bastırır, aksi takdirde değişiklik etkili olmaz.
  • Motion.conf dosyası çok iyi organize edilmiş ve ayrıntılıdır. Ayarları istediğiniz gibi değiştirmekten çekinmeyin, ancak bunların hareket yakalama sisteminin başarısını etkileyebileceğini anlayın.
  • E-posta uyarısı ve e-posta video seçeneklerini ayarladıktan sonra, hareket algılanan videonun e-postasının, ilk uyarı e-postasından gönderilmesinden biraz daha uzun süreceğini unutmamak önemlidir. Bunun nedeni, videonun hareket algılanmadığında birkaç saniye sonra sona ermesi ve e-posta ekinin alınması için birkaç dakika gerektirebilecek kadar büyük olabilmesidir. Bazı durumlarda, hareket çok uzun süre devam ederse, gönderilemeyecek kadar büyük olabilir. Bu nedenle, ilk uyarı e-postasını aldıktan sonra canlı yayını kontrol etmek her zaman iyi bir fikirdir.

Neden Hareket?:

Bu projeye ilk başlarken birkaç farklı kaynağı düşündük. Öncelikle ahududu pi için özel olarak üretilmiş bir kamera birimi olan PiCam'i kullanmayı düşündük. PiCam kesinlikle yetenekli bir cihazdır ve birçok uygulamaya sahiptir, ancak özellikle onun için tasarlanmış programları kullanmakla sınırlıdır ve ucuz çok amaçlı web kameralarına kıyasla nispeten pahalıdır. Bu projeyi daha geniş bir kitle için erişilebilir kılmak için ortak bir USB web kamerası kullanmaya karar verdik. Bir sonraki konu, hangi yazılımın dahil edileceğiydi. Başlangıçta, birçok farklı Bilgisayarla Görme ve görüntüleme projesine izin veren ücretsiz bir yazılım olan OpenCV'yi düşündük. Buradaki sorunlardan biri, OpenCV'nin çok fazla bellek ve uzun bir kurulum süresi alan büyük bir dosya olmasıdır. Kurulum ayrıca birden fazla aşamaya sahiptir ve hata için daha fazla alan bırakır. Özel projemiz için Motion'ın kurulumunun ve çalışmasının daha basit olduğunu, ancak yürütülmesinde çok daha sağlam olduğunu gördük.

Kaynaklar

Kod Kaynakları:

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

Fotoğrafa katkı verenler:

SSH Salyangozu:

Posta logosu:

Logitech web kamerası:

SSH penceresi: