Home / Collections / Cams / OpenMV Cam M4 V1

OpenMV Cam M4 V1

$100.00 USD
OpenMV Cam M4 V1

OpenMV Cam M4 V1

$100.00 USD

We are no longer producing this version of the OpenMV Cam. However, we'll keep the product webpage up for documentation purposes.

See our successor to the OpenMV Cam M4 V1, the OpenMV Cam RT here.

The OpenMV Cam is a small, low power, microcontroller board which allows you to easily implement applications using machine vision in the real-world. You program the OpenMV Cam in high level Python scripts (courtesy of the MicroPython Operating System) instead of C/C++. This makes it easier to deal with the complex outputs of machine vision algorithms and working with high level data structures. But, you still have total control over your OpenMV Cam and its I/O pins in Python. You can easily trigger taking pictures and video on external events or execute machine vision algorithms to figure out how to control your I/O pins.

The OpenMV Cam features:

  • The STM32F427VG ARM Cortex M4 processor running at 180 MHz with 256KB of RAM and 1 MB of flash. All I/O pins output 3.3V and are 5V tolerant. The processor has the following I/O interfaces:
    • A full speed USB (12Mbs) interface to your computer. Your OpenMV Cam will appear as a Virtual COM Port and a USB Flash Drive when plugged in.
    • A μSD Card socket capable of 100Mbs reads/writes which allows your OpenMV Cam to record video and easy pull machine vision assets off of the μSD card.
    • A SPI bus that can run up to 45Mbs allowing you to easily stream image data off the system to either the LCD Shield, the WiFi Shield, or another microcontroller.
    • An I2C Bus (up to 1Mb/s), CAN Bus (up to 1Mb/s), and an Asynchronous Serial Bus (TX/RX, up to 7.5Mb/s) for interfacing with other microcontrollers and sensors.
    • A 12-bit ADC and a 12-bit DAC.
    • Two I/O pins for servo control.
    • Interrupts and PWM on all I/O pins (there are 9 I/O pins on the board).
    • And, an RGB LED and two high power 850nm IR LEDs.
  • The OV2640 image sensor is capable of taking 320x240 8-bit Grayscale images or 320x240 16-bit RGB565 images at 20 FPS. Most simple algorithms will run between 20-40 FPS on QQVGA (320x240) resolutions and below. Your OpenMV Cam comes with a 2.8mm lens on a standard M12 lens mount. If you want to use more specialized lenses with your OpenMV Cam you can easily buy and attach them yourself.

For more information about the OpenMV Cam please see our documentation.

Interface Library

The OpenMV Cam comes built-in with an RPC (Remote Python/Procedure Call) library which makes it easy to connect the OpenMV Cam to your computer, a SBC (single board computer) like the RaspberryPi or Beaglebone, or a microcontroller like the Arduino or ESP8266/32. The RPC Interface Library works over:

  • Async Serial (UART) - at up 7.5 Mb/s.
  • I2C Bus - at up to 1 Mb/s.
  • SPI Bus - at up to 45 Mb/s.
  • CAN Bus - at up to 1 Mb/s.
  • USB Virtual COM Port (VCP) - at up to 12 Mb/s.
  • WiFi using the WiFi Shield - at up to 12 Mb/s.

With the RPC Library you can easily get image processing results, stream RAW or JPG image data, or have the OpenMV Cam control another Microcontroller for lower-level hardware control like driving motors.

OpenMV provides the following libraries for interfacing your OpenMV Cam to other systems below:


    The OpenMV Cam can be used for the following things currently (more in the future):

    • Frame Differencing
      • You can use Frame Differencing on your OpenMV Cam to detect motion in a scene by looking at what's changed. Frame Differencing allows you to use your OpenMV Cam for security applications. Checkout the video of the feature here.
    • Color Tracking
      • You can use your OpenMV Cam to detect up to 16 colors at a time in an image (realistically you'd never want to find more than 4) and each color can have any number of distinct blobs. Your OpenMV Cam will then tell you the position, size, centroid, and orientation of each blob. Using color tracking your OpenMV Cam can be programmed to do things like tracking the sun, line following, target tracking, and much, much, more. Video demo here.
    • Marker Tracking
      • You can use your OpenMV Cam to detect groups of colors instead of independent colors. This allows you to create color makers (2 or more color tags) which can be put on objects allowing your OpenMV Cam to understand what the tagged objects are. Video demo here.
    • Face Detection
      • You can detect Faces with your OpenMV Cam (or any generic object). Your OpenMV Cam can process Haar Cascades to do generic object detection and comes with a built-in Frontal Face Cascade and Eye Haar Cascade to detect faces and eyes. Video demo here.
    • Eye Tracking
      • You can use Eye Tracking with your OpenMV Cam to detect someone's gaze. You can then, for example, use that to control a robot. Eye Tracking detects where the pupil is looking versus detecting if there's an eye in the image.
    • Line Detection
      • Infinite line detection can be done speedily on your OpenMV Cam at near max FPS. And, you can also find non-infinite length line segments too. You can see our video of this feature here. Additionally, we support running linear regressions on the image for use in line following applications like this DIY Robocar.
    • Template Matching
      • You can use template matching with your OpenMV Cam to detect when a translated pre-saved image is in view. For example, template matching can be used to find fiducials on a PCB or read known digits on a display.
    • Image Capture
      • You can use the OpenMV Cam to capture up to 320x240 RGB565 (or 320x240 Grayscale) BMP/JPG/PPM/PGM images. You directly control how images are captured in your Python script. Best of all, you can preform machine vision functions and/or draw on frames before saving them.
    • Video Recording
      • You can use the OpenMV Cam to record up to 320x240 Grayscale/RGB565 MJPEG video or GIF images (or RAW video). You directly control how each frame of video is recorded in your Python script and have total control on how video recording starts and finishes. And, like capturing images, you can preform machine vision functions and/or draw on video frames before saving them.

    Finally, all the above features can be mixed and matched in your own custom application along with I/O pin control to talk to the real world.


    OpenMV Cam Pinout

    Schematic & Datasheets


    Camera Dimensions


    Processor ARM® 32-bit Cortex®-M4 CPU
    w/ Single Precision FPU
    180 MHz (225 DMIPS)
    Core Mark Score: 608
    (compare w/ Raspberry Pi Zero: 2060)
    RAM Layout 64KB .DATA/.BSS/Heap/Stack
    192KB Frame Buffer/Stack
    (256KB Total)
    Flash Layout 16KB Bootloader
    48KB Embedded Flash Drive
    960KB Firmware
    (1MB Total)
    Supported Image Formats Grayscale
    JPEG (and BAYER/YUV422)
    Maximum Supported Resolutions Grayscale: 320x240 and under
    RGB565: 320x240 and under
    Grayscale JPEG: 320x240 and under
    RGB565 JPEG: 320x240 and under
    Lens Info Focal Length: 2.8mm
    Aperture: F2.0
    Format: 1/3"
    HFOV = 70.8°, VFOV = 55.6°
    Mount: M12*0.5
    IR Cut Filter: 650nm (removable)
    Electrical Info All pins are 5V tolerant with 3.3V output. All pins can sink or source up to 25mA. P6 is not 5V tolerant in ADC or DAC mode. Up to 120mA may be sinked or sourced in total between all pins. VIN may be between 3.6V and 5V. Do not draw more than 250mA from your OpenMV Cam's 3.3V rail.
    Weight 16g
    Length 45mm
    Width 36mm
    Height 30mm

    Power Consumption

    Idle - No μSD Card 100mA @ 3.3V
    Idle - μSD Card 100mA @ 3.3V
    Active - No μSD Card 140mA @ 3.3V
    Active - μSD Card 150mA @ 3.3V

    Temperature Range

    Storage -40°C to 125°C
    Operating -20°C to 70°C

    Shipping Information

    Country of Origin China
    HS Code 854290
    Wieght 16.0g


    Unofficial Case

    Unofficial Case

    Unofficial Rugged Case

    Unofficial Rugged Case

    Unofficial Tripod Mount

    Unofficial Tripod Mount