µCam- en pytteliten digitalkamera för bildbehandling

Berätta om dina pågående projekt.
victor_passe
Inlägg: 2436
Blev medlem: 28 januari 2007, 18:45:40
Ort: Kungsbacka

µCam- en pytteliten digitalkamera för bildbehandling

Inlägg av victor_passe »

Hej, jag håller på med ett rätt ballt projekt som innehåller en kameramodul(TCM8230MD, finns på sparkfun för ca 10$) och en pic32mx150b(28pinnars, 32kiB ram 128kiB flash 32bitars)
Målet är att ta in en bild i RAM via DMA/PMP och behandla den (Leta efter bollar eller något) och sedan skicka resultat eller hela bilden över UART eller via en nordic RF modul till en dator eller annan µC.
Den ska också vara liten, kortet är 9x11mm och har 2 LDO (2.8V och 1.5V), kameran, PIC och lite passivt, även kontakt för icsp och en led.

Just nu kör jag i 96x128xrgb565 för att ha plats för en bild i ram.

EAGLE filer:
demoboard_pic.zip
Kod (tar en bild och skickar över uart (9600baud)) i mplabx och xc32
camera.zip
Bilder på bygget:
CIMG0448.JPG
CIMG0449.JPG
Fula bilder på signaler:
Under tiden för den gula pulsen kommer 128*2 byte data att spara undan
CIMG0451.JPG
inzooming + pixelklocka(1cykel per byte)
CIMG0452.JPG
inzooming ännu mera
CIMG0454.JPG
Så 610ns för varje byte, det är inte så lång tid det.
kan tyvärr inte öka mera, vet inte varför, men det mesta ballar ur. Ska felsöka mera.

Så jag kommer alltså upp i 4FPS för tillfället, modulen ska klara 30FPS men det kan jag glömma, men 10FPS hade varit fint.

Så, hur ser utdatan ut då undrar ni såklart.
bild på test #1(som funka, mååååånga tester innan)
Detta är alltså en inbyggd testbild i kameran:
bild17.png
Och en testbild med färg:
untitled1.png
Och såklart, även en "riktig" bild:
untitled3.png
Bilden är på mitt labbagg(denna bilden är alltså INTE från min modul, utan visar vad modulen ser på bilden ovan.):
CIMG0455.JPG
Det var rätt mycket krångel att få igång I2C, DMA och PMP, inte för att det är mycket kod utan för att det saknas rätt många datablad på microchips hemsida för pic32mx150b. den är kanske för ny eller något.
Så det var lite chansningar för att få allt att funka. men det är inte många rader kod nu.

Ett mål med denna modulen är att montera på en gående robot, bygga 4-6 kopior och få dem att spela fotboll eller liknande.
Inte omöjligt alls tror jag, men det är ett bra tag kvar till dess.

Nästa steg är att bygga ett program i C# och ta in bilder där via UART i 1-2MBaud och kunna visa realtids video ström, inte slanga över en bild via pickit2 och öppna i matlab och få ut en bild på 10minuter.

Nå, vad tycker ni? coolt projekt va?
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Senast redigerad av victor_passe 7 juli 2012, 23:21:34, redigerad totalt 1 gång.
Användarvisningsbild
lizerdboy
Inlägg: 1606
Blev medlem: 6 oktober 2003, 22:24:12
Ort: Stockholm

Re: µCam- en pytteliten digitalkamera för bildbehandling

Inlägg av lizerdboy »

Nice :tumupp:

är bilden (Bilden är på mitt labbagg: ) från kameran ??
så fall är det riktigt bra,

Har själv vart sugen med att testa, har 20 liknande moduler som man köpt på sig för test, men de har inte blivit av än.

Bra kämpat, och snyggt litet kort
victor_passe
Inlägg: 2436
Blev medlem: 28 januari 2007, 18:45:40
Ort: Kungsbacka

Re: µCam- en pytteliten digitalkamera för bildbehandling

Inlägg av victor_passe »

Den fina bilden är med en riktig- köpe kamera, bara för att visa vad den tittar på. bilden ovan är med kamera modulen.
tänk på att bilden ska på plats i 32kiB ram så den är knappast några megapixlar stor.
man kan se kameran och labbagget på den fina bilden, så där har ni vinkeln som kameran ser labbagget ifrån.
Användarvisningsbild
lizerdboy
Inlägg: 1606
Blev medlem: 6 oktober 2003, 22:24:12
Ort: Stockholm

Re: µCam- en pytteliten digitalkamera för bildbehandling

Inlägg av lizerdboy »

aa´ha då fattar jag,
Jag tänkte om du bara hade "skickat vidare" datan till datorn för att ta själva bilden.
men efter jag postat så såg jag datum stämpeln så jag antog att det inte var från modulen :)'

Bra jobbat endå
victor_passe
Inlägg: 2436
Blev medlem: 28 januari 2007, 18:45:40
Ort: Kungsbacka

Re: µCam- en pytteliten digitalkamera för bildbehandling

Inlägg av victor_passe »

Jag har nu slängt ihop ett C# program för att slanga över "film" i realtid:
program.png
Jag har märkt 2 saker, 40Mips är lite väl lite på picen, och utan kristall får jag bitfel på över 115200 baud.
Så jag ska testa att överklocka processorn först, om det inte hjälper så ska jag göra ett kort med någon dspic som tickar i 60Mips/120Mhz.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Senast redigerad av victor_passe 8 juli 2012, 15:23:05, redigerad totalt 1 gång.
blueint
Inlägg: 23238
Blev medlem: 4 juli 2006, 19:26:11
Kontakt:

Re: µCam- en pytteliten digitalkamera för bildbehandling

Inlägg av blueint »

Mips vs MIPS
Mhz vs MHz
Användarvisningsbild
lizerdboy
Inlägg: 1606
Blev medlem: 6 oktober 2003, 22:24:12
Ort: Stockholm

Re: µCam- en pytteliten digitalkamera för bildbehandling

Inlägg av lizerdboy »

utan kristall får jag bitfel på över 115200 baud
Ooo de felet gör man bara en gång, hade de på ett projekt för att spara in på kristallen då inget annat var speciellt tids kritiskt.
men UART överföringen vart det bara problem med, de var visserligen AVR, men men gissar att det är så på dom flesta.
victor_passe
Inlägg: 2436
Blev medlem: 28 januari 2007, 18:45:40
Ort: Kungsbacka

Re: µCam- en pytteliten digitalkamera för bildbehandling

Inlägg av victor_passe »

Jag kan köra på 230400 men då får jag ungefär 1 bild av 5 fel.
Så jag har caddat en ny med kristall på också.
Jag kan köra kalaset på 48MHz, men på 60MHz(Nästa steg) så blir det kaos.
Vid 48MHz är jag uppe i 4.8FPS, kör jag kameran snabbare, vilket går så hinner inte DMAn med och skyffla över datan från PMP och jag får en overflow i ca varannan bild.
Så 4.8FPS är jag uppe i nu, men i 115200 tar det strax över 2sek att flytta en bild.
Men om jag får upp uarten i minst 230400 kan jag skicka bilden snabbare än jag får den.
Men det kräver kristall.
victor_passe
Inlägg: 2436
Blev medlem: 28 januari 2007, 18:45:40
Ort: Kungsbacka

Re: µCam- en pytteliten digitalkamera för bildbehandling

Inlägg av victor_passe »

Jag ska testa att köra så att PMP modulen läser 4 byte och buffrar och sedan ska DMAn läsa alla 4 byte i taget.
För som det är nu så hinner inte DMAn med att läsa och PMP får overflow. Hoppas att jag kan komma upp i över 4.8FPS då.
Har nu cadat klart kortet med kristall, slopade även pullup på I2C och reset pinnen på kameramodulen. Jag har såklart testat att ta bort dem på kortet jag har nu för att se att det går. 10x14mm blev det nya kortet.
Användarvisningsbild
lizerdboy
Inlägg: 1606
Blev medlem: 6 oktober 2003, 22:24:12
Ort: Stockholm

Re: µCam- en pytteliten digitalkamera för bildbehandling

Inlägg av lizerdboy »

låter riktigt trevligt,
Vartifrån beställer du kortet ?? gissar att det är 4 lagers ?? eller är det fler ?
blueint
Inlägg: 23238
Blev medlem: 4 juli 2006, 19:26:11
Kontakt:

Re: µCam- en pytteliten digitalkamera för bildbehandling

Inlägg av blueint »

Kikade i databladet för TCM8230MD och där är en förbindelse med D0..D7 + DCLK angiven. Kanske kunde underlätta överföringen om man gör den parallellt?

Snubblade även på "Interfacing the TCM8230MD CMOS Camera With an ARM7 ..." som kanske kan ge en del tips?

Om man överför en bild på 128 x 96 pixel med 16-bits per pixel (RGB565) i 115200 bit/s, (128*96*16)/115200 så tar det 1,706667 s. Det borde gå att optimera genom att skära ner antal bitar per pixel med hälften iaf, kanske t.om till 4-bit/pixel? Samt kanske övergå till parallell överföring? Hittade dock inget serieläge, men jag har säkert missat något ;)

Tycker annars spontant att en ARM borde kunna hantera detta utan problem. Inte direkt någon x86-ISA arkitektur ;-)

Skulle du kunna ta en bild på något lätt att känna igen? labbänk, ansikte, husdjur eller liknande? lite nyfiken på vad modulen går för.
victor_passe
Inlägg: 2436
Blev medlem: 28 januari 2007, 18:45:40
Ort: Kungsbacka

Re: µCam- en pytteliten digitalkamera för bildbehandling

Inlägg av victor_passe »

Det finns inget serieläge, jag kör på 8bitars parallell och det är ett 2 lagerskort från dorkbot, trångt och fint är det på kortet.

Man kan få uta datan i YUO eller vad det heter, då kan man slänga bort lite färgdata och behålla mer intensitets data.
Och koda kanske 1byte per pixel eller 4bitar per pixel. Sedan hittade jag någon vettig, snabb, enkel komprimerings algoritm, minns inte namnet, lzf eller lfz något., men den gick i nästan N tid för både komprimering och avkomprimering. Någon form av runtime codning tror jag det var. Hittade färdig C kod iaf.

Ja, det finns ARM med hårdvarustöd för sådana här kameror med 192KB RAM, någon STM cortex M4. som surrade på i god frekvens. Men den fanns bara i TQFP100, jag vill ha allt så litet som möjligt och enbart den kretsen är större än hela mitt kretskort.
Användarvisningsbild
lizerdboy
Inlägg: 1606
Blev medlem: 6 oktober 2003, 22:24:12
Ort: Stockholm

Re: µCam- en pytteliten digitalkamera för bildbehandling

Inlägg av lizerdboy »

Jag hade med tänkt tipsa om STM32F4 som har kamera interface och DSP, men som du säger så finns dom inte i så
pass små kapslar som du vill ha.

vet att de kommer mindre varianter av F4, men vet inte om dom finns att köpa än
tex STM32F405OE med kapsel WLCSP90 ca 4x4mm BGA 90 pinnars

2 lagers, hehe gissade på 4 då det är ett mycket mycket litet kort, visa gärna kort layout :D
bra jobbat iaf :bravo:
victor_passe
Inlägg: 2436
Blev medlem: 28 januari 2007, 18:45:40
Ort: Kungsbacka

Re: µCam- en pytteliten digitalkamera för bildbehandling

Inlägg av victor_passe »

Jasså, finns det någon info om de nya?

layout på kortet:
bottom.PNG
top.PNG
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
blueint
Inlägg: 23238
Blev medlem: 4 juli 2006, 19:26:11
Kontakt:

Re: µCam- en pytteliten digitalkamera för bildbehandling

Inlägg av blueint »

Det är nog YUV du menar. Ang överföringen så är poängen att bara skicka t.ex 6- eller 3-bitar per pixel istället för att slänga bort data. Så att överföringslänken utnyttjas maximalt.

Det kan varit LZW som avsågs?

Trodde alla ARM hadde DMA på det torra så att säga.. kanske inte så i verkligheten då ;)
Ett alternativ kanske är en CPLD eller FPGA för överföringshantering?
Skriv svar