In Spring 2020, I took MIT class 6.115 (Microcomputer Project Lab) taught by Prof. Steve Leeb. For the final project, I created a simple GUI to perform efficient image processing operations – such as blur, edge detection, and inversion – on images captured on the fly.

My setup includes only three parts: a PSoC 5LP board, a color TFT display with 320x240 pixel resolution, and an Arduino compatible color camera. Using the potentiometer and a button on the PSoC 5LP, the user can select from six menu options displayed on the TFT screen, including a “live” mode which continuously captures sequential images from the camera (rough every 0.87 seconds) and updates the TFT display until paused by a second button press. Once they select an image to process, they can iteratively apply image processing functions until they reach a desired result.

My full final project report can be accessed here. Check out this blog post from Cypress, the creator of PSoC, which mentions my project!

Figures

Project schematic Project schematic.

Project setup Project setup. From left to right - Arduino camera, PSoC 5LP board, TFT screen.

PSoC Creator schematic “Top Design” schematic of SPI interface for TFT screen, ADC for menu selection, and I2C component and dual-stage latching system for Arduino camera in PSoC Creator.

Timing diagram Timing diagram for reading from the OV7670 camera to the PSoC using dual-stage pixel latching system

Sample peppers Sample peppers image – original, gradient, blur, invert (each applied individually, image reset before each operation).

Bomber shirt Me in my bomber shirt – original, gradient, inverted (applied sequentially).

Demo Videos