Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
Obě strany předchozí revize Předchozí verze Následující verze | Předchozí verze | ||
2015:cam-al422 [2016/01/18 01:32] Martin Kráčala |
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 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í: | Odkazy ke stažení: | ||
- | * Firmware: [[https://developer.mbed.org/users/wrecky/code/KL25Z_OV7670/|KL25Z_OV7670]], | + | * 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 Serial Communication Interface: [[http://www.mathworks.com/matlabcentral/fileexchange/54966-ov7670-serial-communication-interface|MATLAB Central]], | + | * 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)]] |