AVRcam

Tomáš Kakáč, Kamil Kazelle UREL, FEKT, VUT Brno
xkakac00@stud.feec.vutbr.cz
xkazel00@stud.feec.vutbr.cz

Obsah:

Úvod
Digitální kamerový modul C3088
Diplomová práce Algoritmy zpracování dat
AVRcam
Interface digitální kamery
Implementace hardwaru
Knihovna pro I2C
Závěr
Literatura

Úvod

Ú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.


Digitální kamerový modul C3088

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ů.

Obrázek 1. Kamerový modul C3088
Obrázek 1. Kamerový modul C3088

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.

Obrázek 2. Výstupní signál z C3088
Obrázek 2. Výstupní signál z C3088

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: Popis vývodů

Diplomová práce Algoritmy zpracování dat

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.

Obrázek 3. Sestava modulu C3088 a vývojové desky MB-ATmega128
Obrázek 3. Sestava modulu C3088 a vývojové desky MB-ATmega128

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

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.

Obrázek 4. Hardware projektu AVR cam
Obrázek 4. Hardware projektu AVR cam

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.

Obrázek 5. Ovládací program AVRCAM View
Obrázek 5. Ovládací program AVRCAM View

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.

Interface digitální kamery

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é.

Obrázek 6. Panoramatický snímek pomocí projektu
Obrázek 6. Panoramatický snímek pomocí projektu

Implementace hardwaru

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ěť.

Knihovna pro I2C

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.

Závěr

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
Tabulka 1. Porovnání projektů pro zpracování obrazu z modulu C3088

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.

Literatura

[1] Rébl, M. Algoritmy zpracování obrazu v osmibitových procesorech. Brno: VUT v Brně, FEKT, 2011. Dostupné z URL: https://www.vutbr.cz/www_base/zav_prace_soubor_verejne.php?file_id=37796
[2] Tomáš, P. Implementace softwarového rozhraní pro kameru Omnivision. Brno: VUT v Brně, FSI, 2011.
[3] Oiza, I. N. Interface digitální kamery. Švédsko: LTH, 2004. Dostupné na URL: http://www.robozes.com/inaki/dprojec
[4] AVRcam. Dostupné na URL: http://www.jrobot.net/Projects/AVRcam.html
[5] CMUcam. Dostupné na URL: http://www.cmucam.org/
[6] Datasheet modulu C3088. Dostupné na URL: http://www.electronics123.net/amazon/datasheet/c3088.pdf
[7] Datasheet obvodu ov6620 Dostupné na URL: http://shop.snailinstruments.com/docs/ov6620.pdf