İçindekiler:
2025 Yazar: John Day | [email protected]. Son düzenleme: 2025-01-13 06:58
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
Ş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
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
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
#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
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:
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: