Úkolem projektu bylo seznámení s kamerovým modulem C3088. Při zkoumání vlastností jsme vycházeli ze závěrečných prací studentů VUT a materiálu na internetu. Jedná se o otevřený projekt AVRcam, diplomovou práci studenta VUT FEKT Bc. Miroslava Rébla - Algoritmy zpracování obrazu v osmibitových procesorech, bakalářská práce studenta VUT FSI Petra Tomáše – Implementace softwarového rozhraní pro kameru OMNIVISION, projekt Inaki Navarro Oiza - Interface digitální kamery a otevřený projekt CMUcam. Z těchto materiálů jsme se snažili najít výhody a nedostatky, kladné a záporné stránky jednotlivých řešení připojení modulu digitální kamery k mikroprocesorům Atmel AVR.
Modul C3088 je modul 0,25¨ barevné kamery s digitálním výstupem. Kamera používá CMOS snímač obrazu OV6620 od firmy Omnivision. Digitální video port modulu dodává nepřetržitý tok obrazových dat se šířkou 4/8/16 bitů. Všechny funkce kamery jako například expozice, gama korekce a další se mohou měnit prostřednictvím rozhraní SCCB, zápisem do příslušných registrů.
Video výstup lze vytvořit v různých formátech a s různými typy kanálů (RGB, UVY). Nejjednodušší formát je Zoom Video Port Formát. V tomto formátu představuje 8 bitů jasovou složku (Y) jednoho obrazového bodu. Dalších 8 bitů představuje barevné složky (U a V). Informace, které jsou přenášeny nepřetržitě, jsou časovány hodinovým signálem PCLK a synchronizovány signály HREF a VSYNC.
Signál VSYNC indikuje nový snímek, signál HREF indikuje, že je informace platná a provádí horizontální synchronizaci, PCLK je hodinový signál (data jsou platná při náběžné hraně). Perioda PCLK lze měnit pomocí registru kamery. To umožňuje mikroprocesoru přímé čtení snímků z kamery bez použití dalšího hardwaru.
Registrů pro nastavení vlastností kamery je celkem 80. Registry, jak již bylo zmíněno, se nastavují pomocí sběrnice SCCB. Při důkladném studiu katalogového listu obvodu OV6620 zjistíme, že protokol používaný pro komunikaci není běžná sběrnice I2C, ale že se jedná o SCCB (Serial Camera Control Bus) vyvinutý firmou Omnivision. Ze specifikace tohoto protokolu, můžeme vidět, že je v některých režimech stejný jako protokol I2C. Zásadní rozdíl je v tom, že používá tři vodiče. Možný však dvouvodičový režim. Přenos dat začíná stejně jako u sběrnice I2C podmínkou START a končí podmínkou STOP. Přenosy jednotlivých byte se označují jako fáze přenosu. Posloupnost čtení a zápisu dat do registru v zařízení typu SLAVE je stejná jako u I2C. Jediný rozdíl je v časování událostí na sběrnici a používání potvrzovacího bitu ACK.
Základní parametry:Pro první pochopení funkčnosti kamery jsme využili dostupnou diplomovou práci Algoritmy zpracování obrazu v osmibitových procesorech. Jako mozek projektu byl použit mikroprocesor ATmega128 s připojenou externí pamětí SRAM 64kB. Pro naši realizaci jsme využili vývojovou desku MB-ATmega128 od firmy PK Design. Obvodové řešení vývojové desky přesně odpovídá zapojení hardware podle diplomové práce včetně připojení externí paměti a obvodu USB. K propojení kamerového modulu jsme vyrobili kabel, který tvoří trojice 10-ti vodičových plochých kabelů zakončených dutinkami. Každý plochý kabel má na vodiči 1 zapojeno napájecí napětí VCC a vodiči 10 GND. Vodiče 2 – 9 jsou signálové. Kabel K1 propojuje 8 linek jasové sběrnice Y0-Y7, Kabel K3 propojuje 8 linek chromatické sběrnice UV0-UV7. Na kabelu K2 jsou umístěny řídící a synchronizační signály SCL, SDA, PWDN, RST, FODD, HREF, VSZN a PCLK.
Při spuštění a ladění přiložených zdrojových textů autora práce jsme přišli hned na několik záporných vlastností realizace. Nevýhodou projektu je, že je řešen třemi samostatnými programy. První program řeší komunikaci s registry kamery, druhý program slouží k vlastnímu přenosu digitálních dat s kamery do PC přes USB rozhraní a třetí program slouží ke zpracování obrazu a jeho zobrazení. Data jsou snímána jen z jasového výstupu, což znamená, že získaný obraz je černobílý. Přehledný rozbor práce s kamerou doplněný vývojovými diagramy vyústil do naprosto nepřehledného zdrojového kódu, který se obtížně modifikuje.
AVRcam je open source projekt pro zpracování obrazu v reálném čase, schopné sledovat barevné objekty. Základem zařízení je mikroprocesor ATmega8. V poslední verzi HW je přidán malý mikroprocesor ATtiny12, který řeší synchronizaci a časování obvodu přímo z hodin kamerového modulu.
AVRcam umožňuje sledovat až 8 různých objektů. Rozlišení obrazu může být až 88 x 144 pixelů při 30 snímcích/s. AVRcam dále podporuje ukázkový provoz a kalibraci pomocí PC aplikace, která se nazývá AVRcamVIEW.
Pomocí programu lze pořizovat plně barevné fotografie 176 x 144 pixelů a mnoho dalšího. Další vlastnosti a možnosti lze pozorovat na stránkách projektu http://www.jrobot.net/Projects/AVRcam.html. Mezi výhody projektu je kompletně otevřená platforma jak softwaru, tak i hardwaru. Uvedené možnosti poskytuje 8-bitový mikroprocesor jen za cenu 4-bitového přenosu dat.
Projekt napsal švédský student Inaki Navarro Oiza, jako závěrečnou práci a je volně stažitelný na internetu. Dokument popisuje vývoj prototypu interface mezi kamerou a počítačem. Toto rozhraní umožňuje uživateli získávání obrázků z kamery, a nastavování některých vlastností. Navíc je zabudována schopnost sledování bílého objektu pomocí modelářského serva. Projekt byl implementován na mikroprocesoru ATmega16. Výhodou projektu je přenos dat přímo ve formátu BMP. Data z kamery se posílají pomoci UART bod po bodu prvního sloupce potom druhého, až je odeslán celý obraz.
Hlavní předností projektu je jednoduchost, ucelený popis koncepce a výběr řešení z několika variant. Zdrojový kód projektu je přehledně uspořádán do modulů a autor používá srozumitelný zápis s výstižnými komentáři. Autor použil knihovnu řízení rozhraní TWI od Jaakko Ala-Paavola z Helsinské univerzity. Stránky však nejsou dostupné.
Nevýhoda všech zmíněných projektů je použití osmibitových mikroprocesorů s maximální frekvencí hodin 20 MHz. Po testu kódu z diplomové práce a studie zbylých projektů byla patrná malá rychlost zpracování obrazu popř. nízké rozlišení a monochromatická verze obrazu. Pro zrychlení zpracování obrazu je třeba uvažovat jiný mikroprocesor např. některý typ ARM. Vlastnosti obvodu s tímto procesorem lze pozorovat v projektu CMUcam3, který využívá procesor ARM7-TDMI a vyrovnávací paměť.
Při testování modulu pokračuji modifikací projektu Interface digitální kamery od Inaki Navarro Oiza. Celý projekt nelze přeložit díky chybějící knihovně rozhraní TWI. Použili jsmi vlastní modul ovládání I2C rozhraní. Knihovna vznikla již při psaní bakalářské práce.
Zdrojový kód můžete stáhnout zde.Projekt rozebírá možnosti AVRcam kamerového modulu C3088. Srovnání jednotlivých přístupů je uvedeno v tabulce 1. Seznámení s vlastním modulem, jeho vlastnostmi a parametry. Dalším bodem je rozebrání poznatků z již realizovaných projektů. Závěrem je tvorba vlastní knihovny pro rozhraní SCCB a vytvoření vlastního programu. Ucelený zdrojový kód pro funkčnost kamery nebyl z časových důvodů realizován. Kamera byla vyzkoušena s dostupnými programy v projektech, ve kterých byla implementována vlastní knihovna I2C. Na poznatky v projektu by měla navázat tvorba diplomové práce, která bude pojednávat o řízení robotického podvozku pomocí kamerového modulu C3088.
Projekt | uP | Rozlišení obrazu | Sériový přenos | Ovládání modulu | Formát obr. dat | Poznámka |
M. Rébl: Algoritmy zpracování obrazu... | ATmega128 + ext. SRAM | monochrom 120 x 100 obrazových bodů | 9600Bd 8/N/1 | *.txt nutno zpracovat v Matlab | samostatné programy, ovládání serva. | |
open src projekt: AVRcam | ATmega8 | color 176 x 144 (88 x 144) bodů | 115200 8/N/1 | Příkazy přenášené sériovým rozhraním | bin. data program AVRcam View | sledování max. 8 barevných objektů |
I. N. Oiza: Interface digitální kamery | ATmega16 | monochrom 352 x 244 obrazových bodů | 115200 8/N/1 | Příkazy přenášené sériovým rozhraním | *.bmp zobrazí každý gr. editor | ovládání serva: sledování, panorama |
Bc. Miroslava Rébla - Algoritmy zpracování obrazu v osmibitových procesorech, bakalářská práce studenta VUT FSI Petra Tomáše – Implementace softwarového rozhraní pro kameru OMNIVISION, projekt Inaki Navarro Oiza - Interface digitální kamery a otevřený projekt CMUcam. Z těchto materiálů jsme se snažili najít výhody a nedostatky kladné a záporné stránky jednotlivých řešení připojení modulu digitální kamery k mikroprocesorům Atmel AVR.