Tiny Machine Vision Module for Robots

This is a low-resolution machine vision module suitable for small robots or Arduino projects

Similar projects worth following
This is a simple to use machine vision module designed for applications such as mobile robotic projects. It is quite similar to the Pixy2, OpenMV and other similar projects, but with a smaller physical dimensions. It requires a 5V power source with around 150mA of current, and can be interfaced via UART port at 57600 bps to external hardware such as your custom controller, Arduino or Raspberry Pi. The maximum resolution and frame rate of the on-board camera is 640X480 and 30 fps, but for now I actually use a lower resolution and frame rate at 160x120 (via sub-sampling) and 20 fps. I use this module on my so-called 'insect robots', from what I gathered most insects and small creatures can get around with low-resolution biological eyes. I built this project as a way to learn the low-level intricacy of interfacing a CMOS camera to a micro-controller, and also as a fun way to learn the principles behind image processing. The latest version can even support a neural network.

1. A description of the journey in building this machine vision module can be found in the blog post:

2. A description of incorporating convolution neural network (CNN) for real-time image processing can be found in this blog post:

3. A video showing the machine vision module in action with Arduino Uno:

4. Another video showing connection to TFT LCD display and running a custom CNN (convolutional Neural Network) algorithm for obstacle detection.

5. The component list below shows the important components.  The rest are just generic surface mount resistors, capacitors, LEDs and crystal.  I use 1% tolerance for all resistors, and 5-10% tolerance for all capacitors.  Refer to Github site for full schematic.

  • 1 × ATSAMS70J20A 32-bits ARM Cortex-M7 micro-controller, 64 pins LQFP, Microchip Technologies. Source: Mouser, Farnell or Microchip Direct
  • 1 × TCM8320MD VGA CMOS camera module. Ex-stock from (
  • 1 × LP2985-33DBVR Power Management ICs / Linear Voltage Regulators and LDOs, 3.3V 150mA. Texas Instruments
  • 1 × LP2985AIM5X-2.8/NOPB Power Management ICs / Linear Voltage Regulators and LDOs, 2.8V 150mA, Texas Instruments
  • 1 × MCP1703AT-1502E/CB Power Management ICs / Linear Voltage Regulators and LDOs, 1.5V 250mA, Microchip Technology

View all 7 components

  • Updated quick start guide (QSG)

    FKRF12/06/2020 at 06:22 0 comments

    1. Added the description of the PCB layers in the QSG.

    2. Added slides to describe the ability to save the displayed image on the MVM Monitoring Software in raw or bitmap format on the computer, and also to retrieve the saved image using routines developed in MATLAB, Scilab or Python. This is useful if we want to develop some image processing algorithms to the captured image from the MVM.

  • Support for TFT LCD Display

    FKRF11/02/2020 at 09:43 0 comments

    2 Nov 2020:

    Added support for 320x240 QVGA LCD display.  Please see project details above.

  • WiFi link with ESP8266 [Update Nov 2021]

    FKRF09/22/2020 at 07:08 0 comments

    The present version send the image data to a remote computer for viewing the image captured by the module via Bluetooth module or USB-to-Serial converter.  Currently I am experimenting with using the popular ESP8266 to broadcast the image data to the remote computer via WiFi, using TCP or UDP protocols.  The ESP8266 will functions as a server, with a client software running on the PC.

    Nov 2021: Finally have time to re-look into this project. I have create a firmware version that can support ESP8266. This allows MVM V1.5C to stream images to a remote computer via WiFi connectivity. Currently I am using TCP protocol, with ESP8266 configured as a TCP server, while the remote computer works as a TCP client. Updated the codes on GitHub.

  • Convolution Neural Network Support

    FKRF07/04/2020 at 05:42 0 comments

    1 July 2020:

    Added a small convolution neural network (CNN) process into the latest source code (Image Processing Algorithm 4).  For now the CNN process is used to classify a small region of the image frame in gray scale for identifying obstacles. For details see

View all 4 project logs

Enjoy this project?



Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates