Kamera modüllerini seri bağlamak

Başlatan Ömer ERKOL, 01 Aralık 2014, 00:03:53

Ömer ERKOL

Üzerinde çalıştığım sistemde 2 kamera modülünden eş zamanlı görüntü almam gerekiyor. I2C protokolüyle kamera modüllerini seri bağlamak işimi görür mü? Tek saat darbesinde ikisini tetikleyebilir miyim mikrodenetleyiciyi master göstererek? Tetikleyebiliyorsam bunun belirli bi' eleman sınırı var mı? SPI daha hızlı çalışıyor diye biliyorum. I2C'den tetiklesek, SPI'dan tekil görüntüleri alsak oluyor mu? Çok saçma sorular sormuş olabilirim. Yeni başlıyorum bu konulara. SPI'dan paralel bağlamak gibi bi' seçeneğimiz de var sanırım.

t2

Resimden görüleceği gibi, aynı bus üzerindeki cihazların SDA,SCL uçları paralel bağlı oluyor.

Bunları seri bağlamaktan kastınız nedir? Ne demek istediniz?


http://www.robot-electronics.co.uk/acatalog/I2C_Tutorial.html

ahmet_zxc

p82b96 incele
i2c ile olur, bu görüntülerin çok düşük kalitede olacağının farkındasın değil mi?

Ömer ERKOL

Aldığım bi' kitaptaki gösterimde seri gibi bi' gösterim vardı, o aklımda kalmış sanırım. P82B96 kullanmalıyım ona da tamam. 1920x1080 çözünürlükte görüntü almam gerekiyor. Mikrodenetleyiciye (STM32F407VGT6) tek bi' SRAM sürmem yeterli olur mu hızlanabilmem için, yoksa kameraların her birine bi' SRAM daha mı iyi olur?

kimlenbu

1080p görüntü alacaksan stm32f407 ile saniyede bir kare alabileceğinden bile şüpheliyim.

Ömer ERKOL

Benim saniyede en az 1080p 15 kare alabilmem gerekiyor.

elektronart

Kamera modülleri hangileri, erişimleri nasıl. Sanki bağlantı şeklini sizin tercihinizden çok kameralar belirler gibi. Fotoğraf çeken modüllerse i2c veya spi olabilir ama gerçek zamanlı görüntü veren saniyede 25-30 frame görüntü veren bir kameraysa i2c yi bırakın spi bile yeterli olmaz. Paralel bağlamanız gerekir.
Açık Elektronik

Ömer ERKOL

Elimde Pixy CMUcam5 var, LinkSprite'ın TTL 2 MP modülü var, ama birkaç gün sonra elime geçecek olan OV5642'leri kullanmak istiyorum.

leblebitozu

Biraz gerçekçi olmak lazım 256 renk bile kullansan 1 frame 2 mbyte yer kaplar 2 mb x 15 kare = 30 mbyte bu sadece tek bir camera. 4 çekirdekli bir linux board'ta dene bence şansını.

hasankara

kamera modülün nasıl bilmiyorum ama haberleşme metodları olarak bir kaç şey söyleyebilirim. spi ın i2c e göre hızlı olmasının esas sebeplerinden birisi adres datasına ihtiyaç duyulmuyor olması ve bunun yanına belki ack nack işaretlerinin beklenmesinin olmamasını da belki dahil edebiliriz. adres datası yerine her slave aygıtın üzerinde bulunan cs (chip select) pini ile adresleme işi çözülmüş oluyor. örnek olarak 3 tane slave 1 master aygıtı spi haberleştirmek için tüm clk ve tüm data pinleri paralel bağlanırken her slave aygıtın cs pinleri mikrodenetleyicinin 3 farklı pinine bağlantılanarak donanım kurulmuş olunur. cs pinleri üzerinden, slave aygıtlardan bir tanesi seçilerek slave aygıt adresi seçimi yapılmış olunur. buna karşın i2c den bir aygıta veri yazmak veya okumak istendiğinde önce cihaz adresi sonra cihaza özgü veri gidebiliyor. cihaza özgü derken mesela bu bir eeprom sa sırasıyla, "cihaz_adresi+bellek_adresi+veri" şeklinde kombinasyonlanmış olabilir. spi olsaydı cs seçiminden sonra "bellek_adresi+veri" yeterli oluyor.

seri haberleşme olarak, sonuçta usb kameralarda gayet hızlı olabiliyor ve usb de esasında bir seri haberleşme yöntemidir. ama veri paketlerinin açılması, görüntü bilgisinin iletilmesinin spesifik yanları elbette olacaktır. aygıtının dma gibi modüllerini aktif kullanabilirsen bu işi seri olarak da çözebilirsin diye düşünüyorum, elbette paralel olsa aynı frekansta bile paralel iletim hattın kadar baudunun katlanmış olacağı tartışılamaz.

Ömer ERKOL

Son derece gerçeği istiyorum gibi geliyor. 1 kameradan saniyede 15 görüntü almak yerine, 15 kameradan saniyede 1 görüntü alabilmekten söz ediyor olsaydık; bu durum biraz daha gerçekçi kılar mıydı yapabileceklerimizi?

I2C'de devreye sayısız eleman dahil edebiliyoruz, SPI'da bi' sınırımız var anladığım kadarıyla. I2C de olsa, SPI da olsa bu veri bi' anda aktarılabilecek gibi gözükmüyor. Her bi' kamerayı bellekle sürmek bize bi' avantaj getirir mi bu konuda?

hasankara

i2c özel protokol yapısını da barındırmakta, yani hatasız veri aktarımı gibi, slave aygıt erişilebilir kontrolü gibi, hata denetimi gibi, slave aygıt adreslemesi gibi ... . modül şeklinde kullandığın zaman bu yapı standart olur ve pek özelleştiremezsin. spi daha esnek kullanım olanakları sağlar. i2c gibi olmazsa olmazları çok yoktur. hangi byte ın ne anlama geldiği senin tasarımına kalmıştır. mikrodenetleyicilerle birlikte spi modülleri gelse de yazılımsal olarak bunu yapmak çok zor değildir, en azından i2c e göre böyle.

shift registerler genelde spi haberleşmesi ile kullanılır (ben başka türlüsünü görmedim). genelde port çoğullamak için kullanılan bu meretlerin kaskat bağlanmasıyla teoride sonsuz sayıda port oluşturma gibi imkanlar sunmaktadırlar. başka bir deyişle sonsuz cs pini elde edebilirsin dersek yanlış sayılmaz. elbette neticede seri bilgiyi paralele dönüştürdüğün için max bit rate sabit iken, baud oranın veri genişliğiyle direk orantılı düşecektir.

böyle bir uygulama için i2c ile spi karşılaştırması anlamsız bile görülebilir. sadece, sen fikir edin ve bunun anlamsız olduğuna sen karar ver diye yazıyorum. bu arada yazan diğer arkadaşlar gerçek dışı deyimleriyle elindeki denetleyiciyle ve birden fazla kamera ile 1080p görüntüyü saniyede 15 görüntüyü aktaramayacağını iddia etmekteler pek haksız da sayılmazlar gibi geliyor bana da, tabi önemli olan senin kararların.

bu arada haberleşme metotlarından bahsederken seri bellek örneği vermiştim bu sadece bir örnekti. bunun dışında pek az sayılmayacak boyutlarda bellek kullanman elbette gerekebilir. 16mb fena olmaz aslında. görüntüleri kayıt edip üzerinde işlem yapmak için, belki jpeg formatına dönüştürmek isteyeceksin sonra sd e kayıt edeceksin gibi. hatta görüntüyü olduğu gibi takacağın lcd e gösterceksin falan filan neticede ihtiyacın olabilir. http://www.aliexpress.com/item/W25Q128FWSSIG-25Q128FWSG-New-authentic-W25Q128FWSG-SPI-FALSH-SOIC-8PIN-209MIL-128M-bit-16M-byte-Winbond-W25Q128/2020452536.html böyle bir ucuz chip tercih edebileceğini düşünerek 16mb söyledim. bak bu chip de spi haberleşmesi hatta 3bit data veri yolu bile destekliyor bunlar hep daha hızlı veri iletimi için.

yldzelektronik

@Ömer ERKOL tam olarak ne yapmak istiyorsunuz?Açıklarsanız daha net bilgiler çıkar.
Kişinin başına gelen hayır Allah'tandır. Kişinin başına gelen şer nefsindendir. Nefislerimizle kendimize zulüm ediyoruz.

leblebitozu

I2C portu kamera konfigürasyonu için kullanılıyor. Datalar yine paralel port üzerinden gerekecek. İstediğin boyutta veri için SRAM kapasite olarak yetersiz kalır. STM32F49 gibi SDRAM destekleyen bir çipe bak. Yine de CSI portu tek olduğuna göre aynı anda tek bir kamera aktif olabilir.

Ömer ERKOL

Genelleştirecek olursam; N adet kamera modülüne eş zamanlı fotoğraf aldırarak, bunları kayıt etmek istiyorum. Arduino UNO ile Linksprite TTL seri kamera modülünü kullandım. Görüntüyü almak ve kaydetmek değmeyecek çözünürlüklerde, ciddi zamanlar aldı. Arduino'nun 16 MHz işlemcisiyle böyleyse STM32F4 serisi 10 kat daha seri diye düşündüm. Kullanılacak kamera modülünü OV5642 ile değiştirdim. @hasankara'nın linkini verdiği 16 MB chiplerden sipariş verdim.

Benim gerçeklemeye çalıştığım şey şu: 25 kameranın -tam olarak- aynı anda 1920x1080 fotoğraf alması ve bu 25x1920x1080x8 bitlik görüntüleri 3 saniye içerisinde karta yazmayı bitirmiş olmak. Her bi' kameraya 16 MB bellek ve STM32F4 olmak üzere 25 tane STM32F4 sürmek gerekir derseniz; ona da varım ama TI DaVinci serisinden tek bi' mikrodenetleyiciyle bitirebilirsek ona koşarım.

Denemeden hesabını yapabileceğim hiçbir deneyimim yok. Kontrollü deney mantığı, değişkenlerden birisini değiştirerek toplamdaki değişimi gözleyebilmekten başka bi' şey gelmiyor elimden.