Some months ago, I was looking about the possibility to acquire an image from an optical sensor with the psoc 5, and send it through WiFi, in order to make a sort of remote camera for surveillance.
I already had an optical sensor, that actually is the Omnivision OV7675, a 640*480 optical sensor, with 256 colors.
For the WiFi module I found this Cypress/Redpine kit RS-CY8C001-220X
that mount a RS9110-N-11-22 module.
The PSoC 5 board is the CY8CKIT-050, and here there is a photo of the complete camera.
Sorry for the very raw mounting, but it is just a test 🙂
The concept from an Hardware design point of view is the following
The data is read from the camera bus (8 bits) and transfered to a RAM buffer through the DMA.
When the transfer is finished, the buffer is pushed out through the wifi module, to an Host PC, that read the data and draw the frame received, through a program wrote in C#.
The camera handling is all implemented in the HW part of PSoC5, so the ARM is not used, and it is free to do other tasks.
The resolution of the camera is set to 540*400, and every pixel is 1 byte size.
The color scheme of the camera is RAW Bayer. The camera is able also to give data in other more usefull format like RGB or YUV, but it will lead to a pixel size of 2 bytes, and the whole PSoC RAM will be not enough, so the conversion RAW Bayer -> RGB is done by the host PC.
The buffer length for image storing into the PSoC is of 54000 Bytes. In order to be able to use so many bytes of the whole 64KBytes of RAM I reduce to the limit the stack and the heap area.
This buffer is not enough to keep all the data coming from a frame of 540*400*1byte, so the PSoC HW is actually filtering
removing 1 bytes and keeping the next, and the same for the row, removing 1 line and keeping the next, in order to half the resolution keeping the same viewing window size.
I have so the sensor view size of 540*400, but downscaled on a resolution of 270*200.
The maximum fps that i measured in this condition, with 4 Mhz clock on the camera, is of 1.67 fps, and it is equivalent to a baudrate of about 88 KB/sec.
No extra hardware was used for realizing this project. The only hardware parts are the wifi module, the camera, and 2 resistors for the I2C line...
Here there are some snapshot taken from the camera:
Road in front of my house:
This is just an experiment, and i know, there are a lot of improvements possibile, like jpeg compression on the fly,
or adding external ram to PSoC, in order to buffer more frames.
I would really appreciate any feedback or suggestion on my project 🙂
Consider using verilog / Creator UDB design tool as a solution in HW for compression.
Also excellent resource is IEEE image papers, I think there is a specific collection
on image processing/compression algorithims.
Google DSP web sites of major vendors, Freescale, Analogic, they have ap notes
on compression routines.
Lastly USB as a connection will give you higher performance for the serial link.
Thank you for the suggestion and appreciation.
I know that with USB connection I can reach an higher speed, but my goal actually was to make it WiFi :).
hi, i am trying to interface same camera with psoc5,
will it possible i thought psoc wont support camera interface,if possible please forward me the project file .
Can you please send me the pin configuration of this project. I mean interface between cmos camera (ov 7675) and psoc 5. I find lot of difficulties with configuration. Is there any possibility like with out sending data through wifi, it can store in some pc connected to it. Please send pin layout to me.
Thanks in advance
Very Interesting, Thank you for sharing.
I too, am working on a project like yours. I will be using a camera that has a USB output. Therefor I will have to go the HOST route.
Would it be possible for you to share any of the details or your project? Have you any suggestion for mine? Places to look, etc. I just loaded Cypress and have never used it before. Big project, I know for a first timer but hey, think of what I will learn.
Welcome in the forum!
Keep in mind that none of the PSoCs 3, 4, or 5 are able to communicate in host mode with an USB device. You may of course use one of the Cypress USB products to connect to your camera.
Cypress FX3 works real well and has a good explorer board..John Hyde has a book "Super speed device design by example" That deals with this board and chip to help you out. Ive used this on a couple of 4k systems and had no troubles.