µCam- en pytteliten digitalkamera för bildbehandling
-
- Inlägg: 2436
- Blev medlem: 28 januari 2007, 18:45:40
- Ort: Kungsbacka
µCam- en pytteliten digitalkamera för bildbehandling
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: Kod (tar en bild och skickar över uart (9600baud)) i mplabx och xc32 Bilder på bygget: Fula bilder på signaler:
Under tiden för den gula pulsen kommer 128*2 byte data att spara undan inzooming + pixelklocka(1cykel per byte) inzooming ännu mera 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: Och en testbild med färg: Och såklart, även en "riktig" bild: Bilden är på mitt labbagg(denna bilden är alltså INTE från min modul, utan visar vad modulen ser på bilden ovan.): 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?
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: Kod (tar en bild och skickar över uart (9600baud)) i mplabx och xc32 Bilder på bygget: Fula bilder på signaler:
Under tiden för den gula pulsen kommer 128*2 byte data att spara undan inzooming + pixelklocka(1cykel per byte) inzooming ännu mera 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: Och en testbild med färg: Och såklart, även en "riktig" bild: Bilden är på mitt labbagg(denna bilden är alltså INTE från min modul, utan visar vad modulen ser på bilden ovan.): 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.
Re: µCam- en pytteliten digitalkamera för bildbehandling
Nice
ä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
ä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
-
- Inlägg: 2436
- Blev medlem: 28 januari 2007, 18:45:40
- Ort: Kungsbacka
Re: µCam- en pytteliten digitalkamera för bildbehandling
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.
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.
Re: µCam- en pytteliten digitalkamera för bildbehandling
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å
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å
-
- Inlägg: 2436
- Blev medlem: 28 januari 2007, 18:45:40
- Ort: Kungsbacka
Re: µCam- en pytteliten digitalkamera för bildbehandling
Jag har nu slängt ihop ett C# program för att slanga över "film" i realtid:
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.
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.
Re: µCam- en pytteliten digitalkamera för bildbehandling
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.utan kristall får jag bitfel på över 115200 baud
men UART överföringen vart det bara problem med, de var visserligen AVR, men men gissar att det är så på dom flesta.
-
- Inlägg: 2436
- Blev medlem: 28 januari 2007, 18:45:40
- Ort: Kungsbacka
Re: µCam- en pytteliten digitalkamera för bildbehandling
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.
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.
-
- Inlägg: 2436
- Blev medlem: 28 januari 2007, 18:45:40
- Ort: Kungsbacka
Re: µCam- en pytteliten digitalkamera för bildbehandling
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.
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.
Re: µCam- en pytteliten digitalkamera för bildbehandling
låter riktigt trevligt,
Vartifrån beställer du kortet ?? gissar att det är 4 lagers ?? eller är det fler ?
Vartifrån beställer du kortet ?? gissar att det är 4 lagers ?? eller är det fler ?
Re: µCam- en pytteliten digitalkamera för bildbehandling
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.
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.
-
- Inlägg: 2436
- Blev medlem: 28 januari 2007, 18:45:40
- Ort: Kungsbacka
Re: µCam- en pytteliten digitalkamera för bildbehandling
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.
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.
Re: µCam- en pytteliten digitalkamera för bildbehandling
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
bra jobbat iaf
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
bra jobbat iaf
-
- Inlägg: 2436
- Blev medlem: 28 januari 2007, 18:45:40
- Ort: Kungsbacka
Re: µCam- en pytteliten digitalkamera för bildbehandling
Jasså, finns det någon info om de nya?
layout på kortet:
layout på kortet:
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Re: µCam- en pytteliten digitalkamera för bildbehandling
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?
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?