Analog bir kamerayı Raspberry Pi'ye bağlama. Raspberry Pi kullanan video gözetim sunucusu. Hızlandırılmış video oluşturma

Kamerayı Raspberry Pi'ye doğru şekilde bağlamak ve onunla bir terminal penceresi aracılığıyla çalışmak ve Python programlama dilini kullanmak için yöntemlere bakalım.
İlgili malzemeler:
Kamerayı Raspberry'e bağlarken aşağıdakileri unutmayın:
  • Kamera statik elektrikten korkar; çalışma sırasında antistatik malzeme ile dokunulması tavsiye edilir.
  • kamera 250 mA tüketiyor - vasat bir Malina güç kaynağı kullanıldığında, kameranın bağlanması, kamera aktif olarak çalışırken güç eksikliğine neden olabilir
  • kamerada mikrofon yok
  • kameranın üst kısmı kablo çıkışının karşı tarafında bulunur, ancak görüntüyü dikey olarak yansıtmak için özel bir komut vardır - daha fazlası aşağıdadır.

Bağlantı

Kameranın kapalı bir Raspberry'e bağlanması tavsiye edilir. komutuyla Raspberry'i hızlı bir şekilde kapatabilirsiniz.
sudo şimdi kapat
CSI papatya dizimi konektörü HDMI'nin yanında bulunur: USB'den farklı olarak kamerayı bu konektör aracılığıyla bağlamanın avantajı, CSI arayüzü üzerinden veri aktarırken işlemciyi rahatlatmasıdır.
Kamerayı tamir etmeyi kolaylaştırmak için hazır çözümlerörneğin - Akrilik tutucu.
Raspberry ayarlarında kamera arayüzü etkinleştirilmelidir:
Kamerayı etkinleştirdikten sonra (gerekirse), Malina'nın yeniden başlatılması gerekir: sudo restart now
Kamerayla çalışmak için Raspbian'da gerekli yardımcı programlar ve sürücüler önceden yüklenmiştir. En son sürümleri kullanmak için paketleri güncelleyelim: sudo apt-get update -y sudo apt-get dist-upgrade -y Her şey doğru yapıldıysa, kameradan bir test karesi almayı deneyelim - fotoğraflar için bir klasör oluşturun, gidin ona gidin ve görüntü yakalama komutunu çalıştırın: mkdir ~/pi_cam/ cd ~/pi_cam/ raspistill -v -o test.jpg
Arıza durumunda önceki adımları kontrol etmeli veya kamera ve Malina üzerindeki konnektör kontaklarını çaldırmalısınız.
Kamerayla çalışmak için aşağıdaki paketler Raspbian OS'ye önceden yüklenmiştir:
  • Raspivid, Raspvidyuv - video yakalama
  • raspistill, raspiyuv - fotoğraf çekmek
Listelenen yardımcı programlara ilişkin eksiksiz bir kılavuz şu adreste mevcuttur: ingilizce dili açık kapalı. Raspberry Pi web sitesi
Tüm yardımcı programlar terminalden başlatılır ve kullanımı oldukça kolaydır.
Adları "yuv" ile biten paketler kodlama bileşenini kullanmaz; kamera sensörü tarafından alınan "ham" işlenmemiş bilgileri saklarlar. Her paketle çalışmaya bakalım, ancak önce tüm paketlerde ortak olan kamera parametrelerinin listesini öğreneceğiz, ardından belirli argümanlara ve spesifik örnekler onların uygulamaları.

Ortak parametreler

Parametre değerlerine bakalım. Şunu belirtmekte fayda var:
  • Yardımcı program çağrılırken bir bağımsız değişken belirtilmezse, varsayılan değeri kullanılır.
  • “İZİN VERİLEN DEĞERLER ARALIĞI” SÜTUNU BOŞ İSE, hiçbir ek değerin iletilmesine gerek yoktur; yalnızca argümanın kendisinin iletilmesi yeterlidir.
  • Önizleme yalnızca Raspberry'ye bağlı fiziksel bir monitörde gösterilir. Raspberry'e uzak masaüstü (VNC) aracılığıyla erişirseniz, önizleme görüntüsü geri kalan bilgilerin yanı sıra doğrudan monitöre gönderildiğinden önizleme hiçbir ayarda gösterilmeyecektir.
  • Masaüstü üzerinden video izlemeye benzer
Argüman
Tanım
Geçerli aralık
Varsayılan değer
-P
Önizleme Penceresi Seçenekleri
genişlik, yükseklik, x koordinatı, y koordinatı
-F
Tam ekran önizleme
HAYIR
-N
Önizleme yok
-op
Pencere şeffaflığını önizleyin
0...255
255
-sh
Keskinlik
-100...100
0
-co
Zıtlık
-100...100
0
-br
Aydınlatma
0...100
50
-sa
Doyma
-100...100
0
-ISO
Kamera sensörü hassasiyeti
-100...100
0
-vs
Video sabitleme
(Sadece video)
HAYIR
-ev
Pozlama telafisi
-10...10
0
-eski
Sergi
  • gece
  • gece önizlemesi
  • arka ışık: nesnenin arkasındaki arka ışık
  • spot ışığı: spot ışığı aydınlatması
  • spor: hareket halindeki nesne
  • kar: karlı manzara
  • plaj: plaj manzarası
  • çok uzun: uzun pozlama
  • sabit fps: FPS'yi sabit bir değerle sınırlandırın
  • antishake : sarsıntı önleyici
  • havai fişek: havai fişekli manzara
Oto
-awb
Beyaz dengesi
  • güneş: 5000K...6500K - güneşli
  • bulut:6500K ... 12000K bulutlu
  • gölge: gölgede
  • tungsten: 2500K ... 3500K tungsten
  • floresan: 2500K...4500K
  • akkor: kırmızı-sıcak metal
  • flaş: flaşlı
  • ufuk
Oto
-ifx
Çeşitli efektler
hiçbiri, negatif, solarizasyon, posterleştirme, beyaz tahta, karatahta, eskiz, gürültü giderme, kabartma, yağlı boya, kapak, gpen, pastel, suluboya, film, bulanıklık, doygunluk, renk değişimi, solgunluk, renk noktası, renk dengesi, çizgi film
hiçbiri
-cfx
Renk dengesi
0...255:0...255
128:128
-mm
Pozlama ölçümü
  • ortalama: ortalama
  • nokta: nokta
  • arkadan aydınlatmalı: arkadan aydınlatmalı görüntüyü oku
  • matris: matris ölçümü
ortalama
-çürüme
Dönüş
0 ... 359
0
-hf
Yatay yansıma
HAYIR
-vf
Dikey yansıma
HAYIR
-roi
Sensör yatırım getirisi
sol üst köşeden koordinatlar ve alanın genişliği ve yüksekliği
0 … 1,0 … 1,0 … 1,0 … 1
0,0,1,1
-ss
Deklanşör hızı
mikrosaniye cinsinden
6000000
-drc
Dinamik aralık sıkıştırması
kapalı
-st
istatistikleri göster
HAYIR
Daha sonra yardımcı programları ayrı ayrı ele alacağız.


Raspistill - fotoğraf çekimi

Bu yardımcı program kodlanmış sıkıştırılmış bir görüntü üretir ve bu eylemi gerçekleştirmek için raspistill'i çalıştırırken argüman olarak iletilen epeyce parametre vardır.

Argümanlar

Argüman
Tanım
Geçerli aralık
Varsayılan değer
-w
Genişlik
0...maks
Maksimum
-H
Yükseklik
0...maks
Maksimum
-Q
Kalite
0...100
75

Dosya adı
dosyanın yolu
-
-v
Terminale çıkış
Yakalama işlemi hakkında bilgi
HAYIR
-T
Eylem öncesi gecikme
milisaniye cinsinden
0
-tl
Zaman aşımı
örnek: -tl 2000 -o resim%04d.jpg
2000 - aralık
%04d - 4 haneli sayı düzeni
-
-e
Formata göre kodlama
jpg, bmp, gif ve png
jpg
-X
EXIF etiketleri ekleme
32 etikete kadar
-
-R
Bayer Dizisini Kodlanmış Bir Görüntünün Meta Verilerinde Saklamak
-

Örnekler

Raspistill kullanmanın belirli örneklerine bakalım:
2 saniye sonra standart bir görüntü yakalayın ve bunu image.jpg dosyasına (bulunduğunuz klasöre) kaydedin. Çözünürlük standart (maksimum) olacaktır raspistill -t 2000 -o image.jpg Aynı şey, ancak 640x480 çözünürlükte raspistill -o image.jpg -w 640 -h 480 %5'e düşürülmüş kalitede bir görüntü yakalayın ve onu bir image.jpg dosyasına kaydedin (şu anda bulunduğunuz klasöre). Bu kalite ile görselin boyutu çok daha küçük olacaktır. raspistill -o image.jpg -q 5 PNG formatında kodlanmış bir görsel elde edip image.png dosyasına kaydetme image.png raspistill -o image.png –e png ile standart bir görsel elde etme iki gömülü EXIF ​​​​etiketi: Sanatçı - Boris, GPS yüksekliği - 123,5 m raspistill -o image.jpg -x IFD0.Artist=Boris -x GPS.GPSAltitude=1235/10 Yakalanacak bir hızlandırılmış görüntü seti oluşturma 10 dakika (600.000 ms) boyunca 10 saniyelik aralıklarla ve image_num_001_today.jpg, image_num_002_today.jpg vb. olarak adlandırılacaktır. Son görüntüye last.jpg adı verilecek raspistill -t 600000 -tl 10000 -o image_num_%03d_today.jpg -l en son.jpg Enter tuşuna bastığınızda görüntüleri yakalayın, dosyalar yan yana kaydedilecek ve my_pics01.jpg my_pics02 olarak adlandırılacaktır. jpg vb. raspistill -t 0 -k -o my_pics%02d.jpg

Raspiyuv

Başlatma argümanları raspistill'inkilerle tamamen aynıdır (yukarı bakın), bunlardan yalnızca aşağıdakiler MEVCUT DEĞİLDİR:
-q - kalite
-e - hedef resim formatını belirtme
-x - EXIF ​​​​etiketlerini ekleyin
-r - Bayer dizisini kodlanmış görüntünün Meta verilerinde saklayın
Ancak KENDİ bir argüman var
-rgb - "ham" ham verileri RGB888 formatında kaydetme (8 bit/kanal)

Raspivid - video yakalama

Başlatma parametreleri

Argüman
Tanım
Geçerli aralık
Varsayılan değer
-w
Genişlik
0...maks
1920
-H
Yükseklik
0...maks
1080
-B
Video bit hızı
saniyedeki bit sayısı.
10Mbits/s -b 10000000 olarak ayarlandı

Dosya adı
dosyanın yolu
-
-v
Terminale çıkış
Yakalama işlemi hakkında bilgi
-T
Eylem öncesi gecikme
milisaniye cinsinden
0
-fps
Kare hızı
Saniyedeki kare sayısı 2...30
-k
Enter tuşuna basarak kaydı başlatın/durdurun
“X” tuşuna basılarak işlem durdurulur
-sg
Sabit süreli video bölümlerini ayrı dosyalara kaydetme
Bir segmentin ve dosya maskesinin süresini ayarlayın
-sg 3000 -o video%04d.h264
-wr
Segmentasyon sırasında maksimum dosya sayısını sınırlama
-sg argümanıyla birlikte kullanılır ve esasen DVR'lerde olduğu gibi döngüsel yeniden yazmayı uygular
Varsayılan çözünürlük 1080p'dir (1920x1080)
Belirli örneklere bakalım:
5 saniyelik standart bir video kaydetme (1920x1080, 30 kare/sn) ve bir dosyaya kaydetme video.h264 raspivid -t 5000 -o video.h264 1080p çözünürlükte ve 3,5Mbit belirli bit hızında 5 saniyelik bir video kaydetme /s ve video dosyasına kaydetme.h264 raspivid -t 5000 -o video.h264 -b 3500000 5 fps kare hızında 5 saniyelik standart tanımlı video kaydedin ve video dosyasına kaydedin.h264 raspivid -t 5000 -o video.h264 -f 5 Raspberry'ye HDMI yoluyla bir monitör bağlıysa, kaydedilen video omxplayer oynatıcı kullanılarak görüntülenebilir: sudo apt-get install omxplayer #if oynatıcı henüz kurulmamışsa omxplayer video.h264 Video görüntüleme VNC aracılığıyla mümkün değil

Hata kodları

  • 0 - başarılı tamamlama
  • 64 - geçersiz komut gönderildi (sözdizimi hatası)
  • 70 - yardımcı programda veya kamerayla iletişim kurulurken hata
  • 130 - yürütme kullanıcı tarafından kesintiye uğradı (Ctrl + C tuş kombinasyonu)

PiCamera Kütüphanesi

Bu, Raspberry kamerayla çalışmayı basitleştirmenize ve otomatikleştirmenize olanak tanıyan Python programlama dili için bir kütüphanedir.
Kütüphanenin İngilizce tam açıklaması
Raspbian dağıtımının modern versiyonlarında, kütüphane önceden kuruludur, bunu Python konsolu python3 import picamera aracılığıyla kontrol edebilirsiniz. Arıza durumunda, çıkış() komutunu girerek veya Ctrl + tuşlarına basarak konsoldan ayrılmalısınız. D'yi açın ve sudo apt-get install python3-picamera komutuyla kütüphaneyi kurun. Yukarıda tartışılan terminal komutlarına benzer şekilde Python kodundan kamerayla çalışmak. Doğrudan Python konsolunda bir kameradan kolayca standart bir görüntü alabilirsiniz: import picamera #kamera kütüphanesini içe aktarın kamera = picamera.PiCamera() #bir kamera nesnesi yaratın kamera.capture("image.jpg") #kamera görüntüsünü çağırın yakalama yöntemi kamera .close() #kamera oturumunu kapat Görüntü geçerli klasördeki image.jpg dosyasına kaydedilecektir.

İki yıl önce multikopterler üzerinde ilk çalışmaya başladığımda küçük bir tane yapmak zorunda kaldım. Quadcopter tamamen otonom olacak şekilde tasarlandığından, bu uzaktan kumandanın yapması gereken tek şey, test ve kurulum sırasında drone'yu kontrol etmekti.

Prensip olarak, uzaktan kumanda kendisine verilen tüm görevlerle oldukça başarılı bir şekilde başa çıktı . Ama ciddi eksiklikler de vardı.

  1. Piller kutuya sığmadığı için elektrik bandıyla kasaya bantlamak zorunda kaldım :)
  2. Parametreler, sıcaklığa çok duyarlı olduğu ortaya çıkan dört potansiyometre kullanılarak ayarlandı. İçeride bazı değerler belirliyorsunuz, dışarı çıkıyorsunuz - ve bunlar zaten farklı, uçup gittiler.
  3. sen Arduino Nano'su Uzaktan kumandada kullandığım cihazda sadece 8 adet analog giriş var. Dördü potansiyometrelerin ayarlanmasıyla meşguldü. Bir potansiyometre gaz görevi gördü. Joystick'e iki giriş bağlandı. Yalnızca bir çıktı boş kaldı ve yapılandırılacak çok daha fazla parametre vardı.
  4. Tek joystick pilot değildi. Gazı potansiyometreyle kontrol etmek de oldukça sinir bozucuydu.
  5. Uzaktan kumanda da hiç ses çıkarmıyordu ki bu bazen son derece kullanışlı olabiliyordu.

Tüm bu eksiklikleri ortadan kaldırmak için uzaktan kumandayı radikal bir şekilde yeniden tasarlamaya karar verdim. Hem donanım kısmı hem de yazılım kısmı. İşte yapmak istediğim şey:

  • Şimdi istediğiniz her şeyi (piller dahil) ve daha sonra istediğiniz her şeyi içine koyabilmeniz için büyük bir kutu yapın.
  • Bir şekilde sorunu potansiyometre sayısını artırarak değil, ayarlarla çözün. Ayrıca, parametreleri uzaktan kumandaya kaydetme özelliğini de ekleyin.
  • Normal pilot konsollarındaki gibi iki joystick yapın. Peki, joystick'lerin kendilerini Ortodoks'a koyun.

Yeni bina

Fikir son derece basit ve etkilidir. Pleksiglas veya diğer ince malzemeden iki plakayı kesip raflara bağlarız. Kasanın tüm içeriği üst veya alt plakaya tutturulmuştur.

Kontroller ve Menüler

Bir grup parametreyi kontrol etmek için ya uzaktan kumandaya bir grup potansiyometre yerleştirip bir ADC eklemeniz ya da tüm ayarları menüden yapmanız gerekir. Daha önce de söylediğim gibi potansiyometrelerle ayarlama yapmak her zaman iyi bir fikir değildir ancak bundan da vazgeçmemelisiniz. Böylece uzaktan kumandada dört potansiyometre bırakılıp tam bir menü eklenmesine karar verildi.

Menüde gezinmek ve parametreleri değiştirmek için genellikle düğmeler kullanılır. Sol sağ yukarı aşağı. Ancak düğmeler yerine kodlayıcı kullanmak istedim. Bu fikri bir 3D yazıcı denetleyicisinden aldım.


Elbette menünün eklenmesi nedeniyle uzaktan kumanda kodu birkaç kez genişletildi. Başlamak için yalnızca üç menü öğesi ekledim: "Telemetri", "Parametreler" ve "Paramları sakla". İlk pencerede sekize kadar farklı gösterge görüntülenir. Şu ana kadar sadece üçünü kullandım: pil gücü, pusula ve rakım.

İkinci pencerede altı parametre mevcuttur: X/Y, Z eksenleri için PID kontrolör katsayıları ve ivmeölçer düzeltme açıları.

Üçüncü öğe, parametreleri EEPROM'a kaydetmenizi sağlar.

Oyun çubukları

Pilot joystick seçimi hakkında uzun süre düşünmedim. Öyle oldu ki, ilk Turnigy 9XR joystick'ini quadcopter işindeki bir meslektaşımdan, tanınmış alex-exe.ru web sitesinin sahibi Alexander Vasiliev'den aldım. İkincisini doğrudan Hobbyking'den sipariş ettim.


İlk joystick, sapmayı ve eğimi kontrol etmek için her iki koordinatta da yay yüklüydü. Aldığım ikinci de aynıydı, böylece onu çekişi ve dönüşü kontrol etmek için bir joystick'e dönüştürebildim.

Beslenme

Eski uzaktan kumandamda, bir grup 8 adet AA pille beslenen basit bir LM7805 voltaj regülatörü kullanıyordum. Regülatörü ısıtmak için 7 voltun harcandığı son derece verimsiz bir seçenek. 8 pil - çünkü elimde yalnızca böyle bir bölme vardı ve LM7805 - çünkü o zamanlar bu seçenek bana en basit ve en önemlisi en hızlısı gibi geldi.

Şimdi daha akıllıca olanı yapmaya karar verdim ve LM2596S'ye oldukça etkili bir regülatör kurdum. Ve 8 adet AA pil yerine iki adet LiIon 18650 pil için bir bölme yerleştirdim.


Sonuç

Her şeyi bir araya getirerek bu cihazı aldık. İç görünüm.


Ancak kapak kapalıyken.


Bir potansiyometrenin kapağı ve kumanda kollarının kapakları eksik.

Son olarak menü üzerinden ayarların nasıl yapılandırıldığını anlatan bir video.


Sonuç olarak

Uzaktan kumanda fiziksel olarak monte edilmiştir. Şimdi onları eski güçlü dostluklarına geri döndürmek için uzaktan kumanda ve quadcopter'in kodunu tamamlamaya çalışıyorum.

Uzaktan kumandayı kurarken eksiklikler tespit edildi. Öncelikle uzaktan kumandanın alt köşeleri elinizde: (Muhtemelen plakaları biraz yeniden tasarlayacağım, köşeleri düzelteceğim. İkincisi, güzel bir telemetri ekranı için 16x4 ekran bile yeterli değil - kısaltmam gerekiyor) Cihazın bir sonraki versiyonunda parametre adlarını iki harften oluşan bir nokta ekran veya hemen bir TFT matrisi kuracağım.


Raspberry Pi tek kartlı bilgisayar, multimedya merkezlerinden ev otomasyon sistemlerine kadar gerçekten ilginç ve kullanışlı şeyler yaratmanıza olanak tanır. Raspberry Pi'ye çeşitli modüller bağlayarak bu mini bilgisayarın işlevselliğini önemli ölçüde artırabilirsiniz.



Bu ek eklentilerden biri, fotoğraf çekmenizi veya video çekmenizi sağlayan bir kameradır. Bugün piyasada Raspberry Pi için çok sayıda kamera var ve bu yazımızda bunların kısa bir incelemesini yapacağız.


En popüler altı kameraya bakalım: ZeroCam Noir, ZeroCam FishEye, Raspberry Pi Uyumlu Balıkgözü Kamera, Raspberry Pi Kamera V2, Raspberry Pi Kamera V2 Noir ve Raspberry Pi Kamera 1.3.



ZeroCam Noir, Raspberry Pi Zero veya Raspberry Pi Zero W için bir kamera modülüdür, dolayısıyla Raspberry Pi 3 veya 2'de kullanmak istiyorsanız adaptör kablosu kullanmanız gerekecektir. Bu kameranın lensinde IR filtresi yoktur, bu da onu düşük ışıkta fotoğrafçılık için ideal kılar. Temel özelliklerinden bazıları şunlardır: 5 megapiksel sensör, 2592 × 1944 piksel, 30 FPS'de 1080p (veya 720p'de 60 FPS, 480p'de 90 FPS), odak uzaklığı 3,60 mm, 53,50 derece yatay, 41,41 derece dikey, yaklaşık. kamerayla birlikte pano boyutları: 60 x 11,4 x 5,1 mm.



Bu, ZeroCam'in balıkgözü versiyonudur, yani geniş açılı bir görüntüye sahiptir. Bu kamera aynı zamanda Pi Zero veya Pi Zero W için de üretilmiştir, dolayısıyla onu başka bir Pi paneliyle kullanmak için bir adaptör kablosuna ihtiyacınız vardır.



Bu, AliExpress, TaoBao, eBay gibi çeşitli çevrimiçi ticaret platformlarında kolayca bulunabilen Raspberry Pi uyumlu bir balıkgözü kameradır. 175°'lik geniş açılı bir görünüm ile karakterize edilir. 5 megapiksel (2592 x 1944 piksel) çözünürlüğe sahip Omnivision 5647 sensörüne dayanmaktadır.



Bu kamera, 3280×2464 piksel statik görüntüleri gösterebilen, sabit odaklı lense sahip 8 megapiksel Sony IMX219 görüntü sensörüyle donatılmıştır; 1080p30, 720p60 ve 640×480p90 videoları destekler. Kamera tüm Raspberry Pi kartlarıyla uyumludur ancak Pi Zero ile kullanmak istiyorsanız adaptör kablosuna ihtiyacınız vardır.



Bu kamera Raspberry Pi Kamera V2 modülünün tüm özelliklerine sahiptir ancak IR filtresi yoktur. Bu da karanlıkta çekim yapmak için neredeyse ideal bir kamera olduğu anlamına geliyor.



Raspberry Pi Kamera 1.3, V2 modülünün öncüsüdür. 5 megapiksel OmniVision OV5647 sensörle donatılmıştır.

Raspberry Pi için kameraların görüş alanı ve görüntü kalitesinin karşılaştırılması

Bu testte tüm kameralar test görüntüsünden 1 metre mesafeye kurulur. Sonuçlar aşağıdaki gibidir:











Yakınlaştırma sırasında Raspberry Pi kameralarının görüntü kalitesi ve renk sunumunun karşılaştırılması











Gece çekim kalitesinin karşılaştırılması

Aşağıdaki sonuçlar, aynı şeyi yapan birkaç gece fotoğrafçılığına hazır kamerayı göstermektedir. test resmi karanlıkta çok düşük ışıkta.







sonuçlar

Tüm kameralar bu kadar ucuz modüllerden beklenenden biraz daha iyi performans gösteriyor. Ne yazık ki aralarında hepsi bir arada kamera yok ve IR kesme filtresi çıkarılmış geniş açılı (balıkgözü) kameralar bulunmadığından yapılması gereken bir ödünleşme var. Yani geniş açı istiyorsanız, düzenli aydınlatmaya ihtiyacınız olacak ve tam tersi, geceleri geniş açılı çekimler yapmanız pek mümkün değil.

İyi günler!

Yılbaşı arifesinde bir tür video gözetim sistemi kurma fikrim vardı. İhtiyacım olan her şey elimdeydi:

  • Raspberry Pi Model B tek kartlı bilgisayar
  • Web kamerası LOGITECH HD Web kamerası C270
Okuduktan sonra yazarın fikrini biraz geliştirmeye karar verdim.
tanıdık
Öncelikle ana “bileşeni” tanıyalım:
Raspberry Pi'nin görünümü:

Özellikler:

  • FPU ve Videocore 4 GPU'lu Broadcom BCM2835 700MHz ARM1176JZFS işlemci
  • GPU, Open GL ES 2.0, donanım hızlandırmalı OpenVG ve 1080p30 H.264 yüksek profilli kod çözme sağlar
  • GPU, doku filtreleme ve DMA altyapısıyla 1Gpixel/s, 1,5Gtexel/s veya 24GFLOPS kapasitesine sahiptir
  • 512 MB RAM
  • Linux işletim sisteminin bir sürümünü çalıştıran SD karttan önyükleme yapar
  • 10/100 BaseT Ethernet soketi
  • HDMI video çıkış soketi
  • 2 x USB 2.0 soketi
  • RCA kompozit video çıkış soketi
  • SD kart yuvası
  • Mikro USB soketinden güç alır
  • 3,5 mm ses çıkış jakı
  • Raspberry Pi HD video kamera konektörü
  • Boyut: 85,6 x 53,98 x 17 mm"
pi@hall-pi ~ $ cat /proc/cpuinfo işlemci: 0 model adı: ARMv6 uyumlu işlemci rev 7 (v6l) BogoMIPS: 2.00 Özellikler: swp yarım başparmak fastmult vfp edsp java tls CPU uygulayıcısı: 0x41 CPU mimarisi: 7 CPU çeşidi : 0x0 CPU parçası: 0xb76 CPU revizyonu: 7 Donanım: BCM2708 Revizyon: 000e Seri: 000000005a82c372

Resmi olarak desteklenen dağıtımların bir listesini bulabilirsiniz. Grafik kabuğu olmayan Raspbian'ı seçtim.

Kurulum işlemi oldukça basittir ve gerektirmez Detaylı Açıklama, bu yüzden dikkat etmeye değer ana gerçekleri listeleyeceğim:

  1. Saat dilimini ayarlama
  2. Bilgisayar adını ayarlama
  3. SSH erişimini etkinleştirme
  4. Sistem güncellemesi
Gerekli tüm ayarları tamamladıktan sonra başlayabilirsiniz.
Hazırlık
Öncelikle gerekli tüm paketleri kuralım:
sudo apt-get install imagemagick libav-tools libjpeg8-dev subversion
Ardından mjpg-streamer'ı indirin ve birleştirin:
sudo svn co https://svn.code.sf.net/p/mjpg-streamer/code/mjpg-streamer/ mjpg-streamer cd mjpg-streamer make
Çünkü Tüm verileri bulutta saklayacağız, uzaktan çalışma kuracağız dosya sistemi WebDAV aracılığıyla:
sudo apt-get install davfs2 sudo mkdir /mnt/dav sudo mount -t davfs https://webdav.yandex.ru /mnt/dav -o uid=pi,gid=pi
Kullanıcı adınızı ve şifrenizi her seferinde girmemek için dosyaya eklemeniz gerekmektedir.
/etc/davfs2/secrets
/mnt/dav kullanıcı şifresi
Çalışma süreci
WebDAV'ı bağlamak ve ağa yayınlamak üzere betiği çalıştırmak için /etc/rc.local dosyasına komutlar ekleyelim:
mount -t davfs https://webdav.yandex.ru /mnt/dav -o uid=pi,gid=pi cd /home/pi/mjpg-streamer && ./mjpg_streamer -i "./input_uvc.so" -o "./output_http.so -w ./www"
Şimdi http://:8080/ adresine giderek kameraya erişim sağlayacağız. Geriye kalan tek şey yönlendiricideki bağlantı noktasını iletmektir ve kameraya yerel ağ dışından erişebilirsiniz.
Hızlandırılmış video oluşturma
Öncelikle kameradan görüntü almamız gerekiyor. Çünkü zaten doluysa (görüntü web sunucusu tarafından yayınlanır), o zaman mevcut görüntüyü web sunucusundan alma fırsatını kullanacağız:
curl http://localhost:8080/?action=snapshot > out.jpg
Fotoğrafın tarihini görselin üzerine çizmek istersek Convert komutunu kullanabiliriz.
timestamp=`stat -c %y out.jpg` dönüştür out.jpg -siyah doldur -beyaz doldur -puanboyutu 15 -draw "text 5.15 "$(timestamp:0:19)"" out_.jpg
Tam versiyon senaryo:
#!/bin/bash dosyaadı=$(perl -e "yazdırma zamanı") klasöradı=$(tarih --rfc-3339=tarih) curl http://localhost:8080/?action=snapshot > $dosyaadı timestamp=` stat -c %y $dosyaadı` mkdir /mnt/dav/out/$klasöradı dönüştür $dosyaadı -doldur siyah -doldur beyaz -puanboyutu 15 -draw "text 5.15 "$(timestamp:0:19)"" /mnt /dav /out/$klasöradı/$dosyaadı.jpg rm $dosyaadı
Video avconv komutu kullanılarak birleştirilir:
avconv -r 10 -i %06d.jpg -r 10 -vcodec mjpeg -qscale 1 out.avi
Video derleme komut dosyasının tam sürümü:
#!/bin/bash dosyaadı=$(tarih --rfc-3339=tarih) i=0 f için `ls -tr /mnt/dav/out/$dosyaadı/*.jpg 2>/dev/null` do newf=`printf %06d $i`.jpg echo $f "-->" $newf mv $f $newf i=$((i+1)) tamamlandı rmdir -R /mnt/dav/out/$dosyaadı/ avconv -r 10 -i %06d.jpg -r 10 -vcodec mjpeg -qscale 1 /mnt/dav/$dosyaadı.avi rm *.jpg
Artık geriye kalan tek şey, komut dosyalarının yürütülmesini Cron zamanlayıcıya kaydetmektir:
* * * * * pi bash /home/pi/cam.sh 59 23 * * * pi bash /home/pi/build.sh
Örnek video
Çözüm
Bu yaklaşım, video izlemek için çok fazla zaman harcama ihtiyacını ortadan kaldırmaya yardımcı olur ve aynı zamanda nihai ürünün maliyetini de azaltır. Tam teşekküllü bir işletim sisteminin varlığı sayesinde işlevselliği doğru yönde genişletmek mümkün hale geliyor.

Çünkü Bu bilgisayar, bir kameradan (örneğin bir USB kameradan) videoyu wifi aracılığıyla diğer cihazlara almak, depolamak, işlemek ve iletmek için yeterli performansa sahiptir. Raspberry PI için üzerinde özel bir konnektöre bağlanan özel kameralar ve herhangi bir ağa bağlanan USB kameralar bulunmaktadır. USB girişi Raspberry PI'da. Çünkü USB kameralar, kural olarak, özel olanlardan çok daha ucuzdur (daha da kötü olsa da), bu nedenle bundan sonra Raspberry PI'lı bir USB kamera kullanmayı düşüneceğiz. Bir USB kameradan video yakalamak için çok sayıda program vardır veya kendiniz yazabilirsiniz, ancak basitlik adına önce hareket programını kullanarak video yakalama ve iletme konusuna bakalım. Hareket programını Raspberry PI'ye kurmak için önce Putty programı (veya SSH aracılığıyla iletişim kurabilen başka bir terminal programı) aracılığıyla ona bağlanmanız gerekir (bunun nasıl yapılacağı hakkında bilgi için önceki "Raspberry PI 3" makalesine bakın). GPIO'yu WIFI aracılığıyla kurma ve yönetme"). Raspberry PI'ya bağlandıktan sonra komutları kullanarak sistemi güncellemeniz gerekir.

Sudo apt-get güncellemesi

Sudo apt-get yükseltmesi

Başarılı bir sistem güncellemesinden sonra hareket programını komutla kurmanız gerekir.

Sudo apt-get yükleme hareketi

Kurulum sırasında size "Devam etmek istiyor musunuz?" sorusu sorulabilir. bundan sonra "Y" harfini girmeniz gerekecektir. Hareket programını kurduktan sonra konfigürasyon dosyalarında bazı değişiklikler yapmanız gerekecektir. Motion.conf dosyasını nano düzenleyicide şu komutla açın:

Sudo nano /etc/motion/motion.conf

Daha sonra

İle ikame edilmiş

Daha sonra değiştirilecek diğer satırları bulalım, bunun için CTRL+W tuş kombinasyonuna basın, "stream_localhost" girin ve enter tuşuna basın, bundan sonra gerekli satır bulunmalı, bulunamazsa "stream_localhost" değişkeni başka bir şey denir, örneğin "webcam_localhost" veya buna benzer bir şey. Bu değişkenin bulunduğu satır bulunduktan sonra şunları yapmanız gerekir:

Stream_localhost açık

ile ikame edilmiş

Stream_maxrate 1

Ve şununla değiştirin:

Stream_maxrate 100

İle ikame edilmiş

Daha sonra

Minimum_frame_time 0

İle ikame edilmiş

Minimum_frame_time 1

İkincisi, karelerin saniyede bir çıkması için yapılır - bu pek iyi görünmüyor, ancak görüntü aniden değişirse video kaybolmayacaktır. Her değişkenin amacı yorumlarda okunabilir.
Şimdi CTRL+O tuşlarına basarak değişiklikleri kaydedin ve girin, ardından CTRL+X tuşlarına basın ve çıkın nano düzenleyici. Şimdi başka bir dosyayı düzenleyelim, bunun için komutu giriyoruz

Sudo nano /etc/default/motion

Ve satırı değiştir

Start_motion_daemon=hayır

Start_motion_daemon=evet

Daha sonra CTRL+O tuşlarına basarak değişiklikleri kaydedin ve enter yapın, ardından CTRL+X tuşlarına basın ve nano düzenleyiciden çıkın. Artık şu komutla video aktarımını başlatabilirsiniz (USB kamera bağlantı noktalarından birine bağlı olmalıdır)

Sudo servis hareketi başlangıcı

Komutla durdur

Sudo hizmeti hareket durdurma

Videoyu görmek için tarayıcıyı açmanız ve adres çubuğuna Raspberry PI'nin IP adresini girmeniz, ardından iki nokta üst üste ve 8081 (Raspberry PI'nin IP adresi: 8081) koyup enter tuşuna basmanız gerekir. USB kameradan gelen video tarayıcıda görünmelidir. Tüm bunların nasıl yapıldığını görebilir, sonucu ve videoda başka bir şeyi görebilirsiniz:

Bunun gibi basit bir şekilde Raspberry PI'ye bağlı bir USB kameradan video alabilirsiniz. Dahili wifi özelliğine sahip ve bir güç bankası (veya başka bir taşınabilir elektrik kaynağı) tarafından desteklenen bir Raspberry PI 3 ise (örneğin, bu veya daha ucuz olanı, ancak ucuz olanı kullanılması tavsiye edilmese de, Raspberry PI) tüm yeteneklerini kullanmak için normal bir güç kaynağına ihtiyaç duyar, ayrıca işlemci için bir soğutucu ve Raspberry'nin çalışması sırasında gelişen diğer mikro devreler için bir soğutucu takılması da çok tavsiye edilir, ideal olarak soğutucu bakır olmalı ve özel siyah boya ile kaplanmalıdır), sonra hepsine göre bununla bir tür video gözetim sistemi, video kamera veya benzeri bir şey yapabilirsiniz.




Tepe