Individální projekty MPOA

Mikroprocesory s architekturou ARM

Uživatelské nástroje

Nástroje pro tento web


2015:cam-al422

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Obě strany předchozí revize Předchozí verze
Následující verze
Předchozí verze
2015:cam-al422 [2016/01/18 01:22]
Martin Kráčala [Závěr]
2015:cam-al422 [2016/02/04 22:47] (aktuální)
Martin Kráčala MATLAB link
Řádek 47: Řádek 47:
 ===== Zapojení ===== ===== Zapojení =====
  
 +Zapojení jednotlivých pinů kamery je následující:​
 + 
 +^  OV7670 ​     ^  Pin    ^  KL25Z  ^ 
 +|  VCC         ​| ​ 1      |  3v3    |
 +|  GND         ​| ​ 2      |  GND    |
 +|  SCL (SCCB) ​ |  3      |  PTC8   |
 +|  SDA (SCCB) ​ |  4      |  PTC9   |
 +|  VSYNC       ​| ​ 5      |  PTA13  |
 +|  HREF        |  6      |  NC     |
 +|  WEN         ​| ​ 7      |  PTE2   |
 +|  XCLK        |  8      |  NC     |
 +|  RRST        |  9      |  PTE3   |
 +|  OE          |  10     ​| ​ PTE4   |
 +|  RCLK        |  11     ​| ​ PTE5   |
 +|  GND         ​| ​ 12     ​| ​ GND    |
 +|  D0          |  13     ​| ​ PTB0   |
 +|  D1          |  14     ​| ​ PTB1   |
 +|  D2          |  15     ​| ​ PTB2   |
 +|  D3          |  16     ​| ​ PTB3   |
 +|  D4          |  17     ​| ​ PTB8   |
 +|  D5          |  18     ​| ​ PTB9   |
 +|  D6          |  19     ​| ​ PTB10  |
 +|  D7          |  20     ​| ​ PTB11  |
  
 +Na SCCB (I2C) sběrnici jsou dále připojeny nezbytné 4k7 pull-up rezistory.
  
-{{ :​2015:​cam-al422:​zapojeni.jpg?600 | Obr. 5:  Zapojení přípravku}}+{{ :​2015:​cam-al422:​zapojeni.jpg | Obr. 5:  Zapojení přípravku}}
  
 ===== Firmware ===== ===== Firmware =====
Řádek 58: Řádek 82:
 ==== Odkaz k programu na mbed.org ==== ==== Odkaz k programu na mbed.org ====
  
-Firmware pro KL25Z je k dispozici na stránkách mbed.org ​[[https://​developer.mbed.org/​users/​wrecky/​code/​KL25Z_OV7670/|KL25Z_OV7670]].+Firmware pro KL25Z je k dispozici na stránkách mbed.org [https://​developer.mbed.org/​users/​wrecky/​code/​OV7670-application-over-USB-with-KL25Z/|OV7670 application over USB with KL25Z]].
  
 ==== Hlavní části main.cpp ==== ==== Hlavní části main.cpp ====
Řádek 91: Řádek 115:
     while (true)     while (true)
     {     {
-        // Look if things are in the Rx-buffer...+        // Look whether ​things are in the RX-buffer...
         if(pc.readable())         if(pc.readable())
         {         {
Řádek 110: Řádek 134:
 </​code>​ </​code>​
  
 +Následující funkce slouží k rozeznání přijatého příkazu a jeho provedení. Obsahuje funkce na výpis všech registrů kamery (reg_status) používanou především při vývoji programu, dále funkce pro nastavení kamery (setup_...) a sejmutí a odeslání snímku (snapshot).
  
 +Základním nástrojem pro všechny tyto funkce je knihovna [[https://​developer.mbed.org/​users/​wrecky/​code/​OV7670/​|OV7670]].
  
 <code cpp> <code cpp>
Řádek 179: Řádek 205:
     }     }
     memset(buffer_in,​ 0, sizeof(buffer_in));​     memset(buffer_in,​ 0, sizeof(buffer_in));​
-} 
-</​code>​ 
- 
-==== Některé základní funkce knihovny OV7670 ==== 
- 
-<code cpp> 
-// write to camera 
-void OV7670::​WriteReg(int addr,int data) 
-{ 
-    _i2c.start();​ 
-    _i2c.write(OV7670_WRITE);​ 
-    wait_us(OV7670_WRITEWAIT);​ 
-    _i2c.write(addr);​ 
-    wait_us(OV7670_WRITEWAIT);​ 
-    _i2c.write(data);​ 
-    _i2c.stop();​ 
-} 
- 
-// read from camera 
-int OV7670::​ReadReg(int addr) 
-{ 
-    int data; 
-    ​ 
-    _i2c.start();​ 
-    _i2c.write(OV7670_WRITE);​ 
-    wait_us(OV7670_WRITEWAIT);​ 
-    _i2c.write(addr);​ 
-    _i2c.stop();​ 
-    wait_us(OV7670_WRITEWAIT); ​   ​ 
- 
-    _i2c.start();​ 
-    _i2c.write(OV7670_READ);​ 
-    wait_us(OV7670_WRITEWAIT);​ 
-    data = _i2c.read(OV7670_NOACK);​ 
-    _i2c.stop();​ 
- 
-    return data; 
-} 
-</​code>​ 
- 
-<code cpp> 
-int OV7670::​ReadOnebyte(int mask1, int offset1, int mask2, int offset2) 
-{ 
-    int B1; 
-    rclk = 1; 
-    B1 = (((data & mask1) >> offset1) | ((data & mask2) >> offset2)); 
-    rclk = 0; 
-    return B1; 
 } }
 </​code>​ </​code>​
Řádek 234: Řádek 212:
 Pro řízení a přenos dat z kamery je využito sériové komunikace skrze USB port. Možností komunikace na straně PC je několik, např. využití běžných terminálových aplikací nebo návrh programu pro sériovou komunikaci a zpracování snímků. V rámci této úlohy bylo využito prostředí MATLAB, které obsahuje integrované nástroje pro sériovou komunikaci, zpracování dat a v neposlední řadě i vývoj aplikací (GUI). Pro řízení a přenos dat z kamery je využito sériové komunikace skrze USB port. Možností komunikace na straně PC je několik, např. využití běžných terminálových aplikací nebo návrh programu pro sériovou komunikaci a zpracování snímků. V rámci této úlohy bylo využito prostředí MATLAB, které obsahuje integrované nástroje pro sériovou komunikaci, zpracování dat a v neposlední řadě i vývoj aplikací (GUI).
  
-Aplikace je dostupná ke stažení na [[http://​www.mathworks.com/​matlabcentral/​fileexchange/​54966-ov7670-serial-communication-interface|MATLAB Central]]. Umožňuje připojení k sériovému portu počítače s pokročilými možnostmi nastavení komunikačního módu. Po připojení aplikace funguje podobně, jako jiné terminály pro sériovou komunikaci. Navíc však obsahuje sadu ovládacích prvků pro řízení kamery - nastavení formátu a zachycení jednotlivých snímků, které jsou následně zobrazeny. Aplikace umožňuje také získané snímky uložit do PC. V další části dokumentace jsou uvedeny příklady sejmutých snímků i video ukazující ovládání programu.+Aplikace je dostupná ke stažení na [[http://​www.mathworks.com/​matlabcentral/​fileexchange/​54966-ov7670-mbed-serial-interface|MATLAB Central]]. Umožňuje připojení k sériovému portu počítače s pokročilými možnostmi nastavení komunikačního módu. Po připojení aplikace funguje podobně, jako jiné terminály pro sériovou komunikaci. Navíc však obsahuje sadu ovládacích prvků pro řízení kamery - nastavení formátu a zachycení jednotlivých snímků, které jsou následně zobrazeny. Aplikace umožňuje také získané snímky uložit do PC. V další části dokumentace jsou uvedeny příklady sejmutých snímků i video ukazující ovládání programu.
  
 {{ :​2015:​cam-al422:​serialgui.png |Obr. 6:  OV7670 Serial Communication Interface}} {{ :​2015:​cam-al422:​serialgui.png |Obr. 6:  OV7670 Serial Communication Interface}}
Řádek 267: Řádek 245:
  
 Dalšími možnostmi rozvoje projektu by byla implementace zbylých formátů, podporovaných kamerou OV7670 a zdokonalení programu v MATLAB. Přes na dnešní dobu nízké maximální rozlišení kamery mají snímky při správném nastavení vysokou kvalitu a kamera by tak byla použitelná například v automatizovaných robotech. Dalšími možnostmi rozvoje projektu by byla implementace zbylých formátů, podporovaných kamerou OV7670 a zdokonalení programu v MATLAB. Přes na dnešní dobu nízké maximální rozlišení kamery mají snímky při správném nastavení vysokou kvalitu a kamera by tak byla použitelná například v automatizovaných robotech.
 +
 +----
 +
 +Odkazy ke stažení:
 +  * KL25Z_OV7670 firmware: [[https://​developer.mbed.org/​users/​wrecky/​code/​OV7670-application-over-USB-with-KL25Z/​|mbed.org]],​ [[http://​www.urel.feec.vutbr.cz/​MPOA/​_media/​2015/​cam-al422/​kl25z_ov7670_zip_kl25z.zip|Dokuwiki mirror]] ​
 +  * OV7670 mbed Serial Interface: [[http://​www.mathworks.com/​matlabcentral/​fileexchange/​54966-ov7670-mbed-serial-interface|MATLAB Central]], [[http://​www.urel.feec.vutbr.cz/​MPOA/​_media/​2015/​cam-al422/​install_ov7670_mbed_serial_interface.zip|Dokuwiki mirror (exe)]]
2015/cam-al422.1453076523.txt.gz · Poslední úprava: 2016/01/18 01:22 autor: Martin Kráčala