Ana Sayfa STM32F429 Discovery STM32F429 Discovery ile Dijital Kamera

STM32F429 Discovery ile Dijital Kamera

8 min read
3
0
1,726

Merhaba arkadaşlar,

Bu yazımda size vc0706 prokokolü ile jpeg kamera kullanımından bahsedeceğim. vc0706 protokolü kamera registerlarını okumak ve kamerayı uygun ayarlarda çalıştırmak için geliştirilmiş bir protokol. kullandığımız kamera:
kamera

Kamerayı aldığımızda,arka tarafında max232 olduğunu gördük. Bu bizim için büyük bir problemdir. Bu şekilde işlemciyle haberleştiremeyiz. Havalı havya ile sökmeniz yada sötkürmeniz lazım. Kalem havya ile denemeyin.Başka yerlere zarar verebilirsiniz.Ayrıca aşırı ısınması kamera sensörüne zarar verebilir. Dikkatli olun.
a_kamera
20150313_083244r16
Söküm işlemi bittikten sonra R15 ve R16 direç yerlerini kısa devre ediyoruz.

Artık kullanıma hazır.Resmi kaydetmek için sd card bağlantılarını yapmamız lazım. 1 bit olarak programlayacağız şimdilik.
sd-card-pinout

Baglantılarıda yaptıktan sonra birazda kameradan bahsedelim.Kameramızın üzerinde dijital sinyal işleme birimi mevcuttur. Aynı zamanda eepromu da vardır.
camera smatic
Biz reset kodunu gönderdigimizde dsp akışı başlatır. Durdurma kodunu gönderdigimizde akış durur ve o anki resim datasını jpeg olarak paket paket eeproma kayıt eder. jpeg olmasının avantajı resmin boyutu 200 kb lerden 12 kb lere kadar düşer. Çünkü jpeg bir sıkıştırma formatıdır. Bu bize işlemlerde hız kazandırır.Dezavantajı ise bu resim ile görüntü işleme veya lcd ekranda görüntüleme yapacaksak, zigzag jpeg decoder tarzı algoritmalarla bitmapa çevirmemiz lazım.Jpeg kodlar satır satır gelir ve her satırda 32 data vardır. FF D8 ile başlar , FF D9 ile biter.İlk 20 satır hatasız gelmesi lazım.Burada yapacagınız herhengibir yazılımsal çakışma veye interrup hatası görüntünün hasarlı olarak açılmamasına sebeb olcaktır.İlk 20 satırı düzdün olarak okuyup jpeg olarak kaydederseniz alacagınız görüntü şu şekildedir:
resim1
Kameranın dış dünyaya açılan penceresi usartır.Kamera üzerinde 6 pin Bulunur. 2 si beleme,2 si usart(Rx,TX) ve son ikisi de analog video çıkışıdır.Burada dikkat etmemiz gereken verileri ardı ardına gönderirken aradaki gecikmeyi iyi ayarlamalıyız.Ayrıca usart kesmese kontrolleri yerinde olmalıdır.

          if(UB_Fatfs_CheckMedia(MMC_0)==FATFS_OK) {
          if(UB_Fatfs_Mount(MMC_0)==FATFS_OK) {
	  if(UB_Fatfs_OpenFile(&myFile, "0:/r.jpg", F_WR_NEW)==FATFS_OK) {

        UB_Fatfs_CloseFile(&myFile);
		  		  }
		  UB_Fatfs_UnMount(MMC_0);
		  		  }
		  		 }

yukarıdaki kod parçasında ilk olarak sd carda boş bir jpeg dosyası açıyoruz.

   USART_ITConfig(USART1, USART_IT_RXNE, DISABLE);
	USART_SendData(USART1,(uint16_t)0x56); Delay(500);
	USART_SendData(USART1,(uint16_t)0x00); Delay(500);
	USART_SendData(USART1,(uint16_t)0x26); Delay(500);
	USART_SendData(USART1,(uint16_t)0x00);
	Delay(900000);

daha sonra kameraya reset kodlarını hexadecimal olarak gönderiyoruz. sondaki gecikme süresi biraz uzun. çünkü resetten sonra kamera info su geliyorusart kesmesini kapattık.Resetten sonra gelen veriler kesmeye girmesin diye.

	USART_SendData(USART1,(uint16_t)0x56); Delay(500);
	USART_SendData(USART1,(uint16_t)0x00); Delay(500);
	USART_SendData(USART1,(uint16_t)0x36); Delay(500);
	USART_SendData(USART1,(uint16_t)0x01); Delay(500);
	USART_SendData(USART1,(uint16_t)0x00); Delay(900000);
	USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);

akışı durduruyoruz. kesme aktif.

while(EndFlag==0){
		if((image_buf[count-1]==0xFF)&&(image_buf[count]==0xD9)){EndFlag=1;flag=3;}

		if(flag==0){

	        MH=a/0x100;
	 	ML=a%0x100;
		USART_SendData(USART1,(uint16_t)0x56); Delay(500);
		USART_SendData(USART1,(uint16_t)0x00); Delay(500);
		USART_SendData(USART1,(uint16_t)0x32); Delay(500);
		USART_SendData(USART1,(uint16_t)0x0c); Delay(500);
		USART_SendData(USART1,(uint16_t)0x00); Delay(500);
		USART_SendData(USART1,(uint16_t)0x0a); Delay(500);
		USART_SendData(USART1,(uint16_t)0x00); Delay(500);
		USART_SendData(USART1,(uint16_t)0x00); Delay(500);
		USART_SendData(USART1,(uint16_t)MH); Delay(500);
		USART_SendData(USART1,(uint16_t)ML); Delay(500);
		USART_SendData(USART1,(uint16_t)0x00); Delay(500);
		USART_SendData(USART1,(uint16_t)0x00); Delay(500);
		USART_SendData(USART1,(uint16_t)0x00); Delay(500);
		USART_SendData(USART1,(uint16_t)0x20); Delay(500);
		USART_SendData(USART1,(uint16_t)0x00); Delay(500);
		USART_SendData(USART1,(uint16_t)0x0a);
		a+=0x20; flag=1;count=0;say++;Delay(70000);
		if(say==50){Delay(130000);say=0;}

		}

bu parçada ise eepromdan dataları okuyoruz. biz bu kodları her gönderişimizde bize bir 32 data gönderiyor.

    	 if(UB_Fatfs_CheckMedia(MMC_0)==FATFS_OK) {
		  if(UB_Fatfs_Mount(MMC_0)==FATFS_OK) {
		  if(UB_Fatfs_OpenFile(&myFile, "0:/r.jpg", F_WR)==FATFS_OK) {
		  UB_Fatfs_WriteBlock(&myFile,image_save,32,save_cnt);
                  UB_Fatfs_CloseFile(&myFile);
		  		  }
		  UB_Fatfs_UnMount(MMC_0);
		  		  }
		  		 }

Son olarakda her 32 lik veri geldiginde hemen sd carda yazıyoruz.
sonuç:
RESIM3

Kaynak dosyalara buradan ulaşabilirsiniz.

Buna Benzer Yazılar Göster !
Daha Fazlasını Yükle - Konuk Yazar
Daha Fazla Göster -  STM32F429 Discovery

3 Yorumlar

  1. Yusuf özyer

    14 Mart 2015 at 19:23

    hocam onu kalem havya kullanılarak sağlam bir şekilde sökülebilir entegre bir daha kullanılmayacak ise karı bir şekilde sabitleriz bir elimizde havya ile bacağın birini ısıtırız direğ elimizdeki cımbız ile bacağı eyerek plaketden sökebiliriz çünkü bizim buralarda söktürebileceğim bir kişi yok o yüzden ancak o şekilde sökebilirim

    Reply

    • abdullah keskin

      14 Mart 2015 at 19:36

      tabiki yapabilirsiniz. ancak dediğim gibi aşırı ısınma karta zarar verebilir. kamera sensörü çok hassas. Havyanız iyi ise lehim doldurarakta söke bilirsiniz.

      Reply

  2. Dogan

    25 Temmuz 2018 at 23:20

    Kamerayı işlemciyi baglayıp bu değerleri 300 m uzaklıkta bir ekrandan nasıl okuyabiliriz_

    Reply

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Bak Bakalım ?

Egesim’de Yaşadığım Kötü Olaylar

Merhaba arkadaşlar , Bu yazıda Egesim adlı bir firmanın GOSB içerisinde bulunan fabrikasın…