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)]] |