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.
![](https://i2.wp.com/systop.ru/uploads/posts/2018-05/1527699779_vydelenie_298.png)
![](https://i0.wp.com/systop.ru/uploads/posts/2018-05/1527699865_vydelenie_300.png)
![](https://i2.wp.com/systop.ru/uploads/posts/2018-05/1527699957_vydelenie_301.png)
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
![](https://i0.wp.com/systop.ru/uploads/posts/2018-05/1527700014_vydelenie_302.png)
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
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 |
| Oto |
-awb | Beyaz dengesi |
| 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 |
-çü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 |
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 |
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ı.
- Piller kutuya sığmadığı için elektrik bandıyla kasaya bantlamak zorunda kaldım :)
- 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.
- 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ı.
- Tek joystick pilot değildi. Gazı potansiyometreyle kontrol etmek de oldukça sinir bozucuydu.
- 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
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"
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:
- Saat dilimini ayarlama
- Bilgisayar adını ayarlama
- SSH erişimini etkinleştirme
- Sistem güncellemesi
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.