Getting started with e-CAM20_CURB camera for Raspberry Pi 4

e-con Systems e-CAM20_CURB is a 2.3 MP fixed focus global shutter color camera designed for the Raspberry Pi 4, and the company has sent us a sample for evaluation and review. We’ll start by providing specifications, before checking out the package content, connecting the camera to the Raspberry Pi 4 with a DIY LEGO mount, showing how to access the resources for the camera, and trying tools provided in the Raspberry Pi OS or Yocto Linux image.

e-CAM20_CURB specifications

The camera is comprised of two boards with the following specifications:

  • eCAM217_CUMI0234_MOD full HD color camera with 4-lane MIPI CSI-2 interface
    • ON Semiconductor AR0234CS CMOS sensor with 1/2.6″ optical form-factor
    • Global Shutter
    • Onboard ISPimage sensor from ON Semiconductor
    • Uncompressed UYVY streaming
      • HD (1280 x 720) up to 120 fps
      • Full HD (1920 x 1080) up to 65 fps
      • 2.3 MP (1920 x 1200) up to 60 fps
    • External Hardware Trigger Input
  • ACC-XVRNX-MIPICAMERA adapter board with 15-pin FFC connector for connection to the Raspberry Pi
  • Dimensions – 30 x 30 mm (height depends on the lens and focal adjustment)
  • Temperature Range – -30°C to 70°C
  • Compliance – FCC and RoHS

The company provides both Yocto and Raspbian / Raspberry Pi OS 32-bit images with a V4L2 Linux camera driver and Gstreamer tools.

e-CAM20_CURB camera unboxing

I first thought I had received the wrong package having been sent a See3CAM USB 3.0 camera from the company instead.

See3CAM USB 3.0 camera

But not to worry as e-con Systems simply used a standard package with a sticker “e-CAM20_CURB_H01R1” confirming I was sent the right camera model.

e-CAM20_CURB-H01R1

We’ll find the camera in an anti-static bag and a 15 cm FPC cable for connection to the Raspberry Pi. We’ll also find a red paper attached to the top with an SO (Sales Order) number that we’ll need to access the documentation and OS images.

e-con systems SO number
The lens is protected by a cover which I removed for the photos below.

e-CAM20_CURB camera and flat cable

e-CAM20_CURB Raspberry Pi 4 camera

Raspberry Pi connection and DIY LEGO mount

The connection is super easy and the only thing you need to be careful with is the orientation of the FPC cable. After gently pulling up the black plastic clip from the connectors on Raspberry Pi and the e-CAM20_CURB camera, you’ll need to insert the cable in a way that the blue side of the cable faces the black plastic clip. Once done push the plastic clip back into place.

Raspberry Pi 4 connected to e-CAM20_CURB camera

In other words, the blue (non-conductor) side of the cable will face the Ethernet port of the Raspberry Pi board, and the conductor side (with text) will face the HDMI port.

e-CAM20_CURB LEGO mount
Since the camera would be too low when placed on the desk and holding the camera would not be convenient for testing, I had to find a DIY mounting solution. It turns out the distance between the spacers on the camera is perfect for LEGO connectors, so it’s easy to create your own mount and the camera is firmly attached to its base. For example, if I lift the camera as shown above the LEGO set with come together.

e-con systems Raspberry Pi 4 camera LEGO scene

We also had to find some colorful subjects with more LEGO and a garbage truck…

Access to e-CAM20_CURB documentation, Raspberry Pi OS, and Yocto images

All resources to get started with the camera can be accessed through the developer’s website. You’ll first need to register and log in with your email address.

developer econsystems.com

At this stage, we will need to input your SO# found inside the package as noted in the unboxing part,

e-con Systems add product

and the product will be officially registered on e-Con Systems website.

e CAM20 Curb documentationWe will be given a FTP link with credentials (username and password). I first tried to go to the FTP server directly in a Firefox, but I was not asked for credentials and all I got was a blank page, so I used Filezilla to download the files instead.

e-con systems unknown certificate

I was informed about some issues with the SSL certificate, but no problem I could still download all files for the camera:

e-CAM20_CURB documentation

The company provided pre-built binaries with Yocto and Raspbian images, patchsets and the meta layer in case you want to build the images by yourself, as well as documentations that include datasheets for the camera and main components, a getting started guide, and a developer guide explaining how to build the code from source and customize the images.

Testing e-CAM20_CURB camera on Raspberry Pi 4 with Yocto

I’ll mostly use the information from the Getting Started Guide going forward. I initially decided to use the “Raspbian” image and flashed it with USBImager. But the boot did not work quite as expected with a kernel panic.

e-con systems camera kernel panic

I tried to flash the OS image again, but the second time I only got a black screen. The company does not provide MD5 checksums for the images, so I could not easily check if there was a problem during the download or if instead, it was my microSD card having some issues (again). So instead I went with the smaller Yocto image which works fine and comes with all the same tools as the Raspbian image.

 

e-consystems Yocto Image dashboard

The dashboard has five icons with a touchscreen calibration app, a file manager, L3afpad text editor, a shutdown button, and a terminal where we’ll run all commands.

yocto wifi configuration

The top right icon allows you to access the preferences window which is mostly useful to configure WiFi if you are not using Ethernet with DHCP.
Small tip: you can take screenshots as shown above on Yocto as follows:


You’ll find two scripts in the root directory:

  • gst_1080_stream.sh used to show the camera output at 1920×1080 on the display connected to the Raspberry Pi
  • gst_1080_record.sh used to record a Full HD video into the microSD card.

Both call Gstreamers commands. Content of gst_1080_stream.sh:


and of gst_1080_record.sh:


Let’s run gst_1080_stream.sh first.

eCAM20_CURB night scene

The camera output showed nearly immediately on my HDMI display. I just had to manually adjust the focus to have a somewhat clear image.

Note the documentation stipulates:

The above GStreamer pipeline execution should be executed from terminal in Raspberry pi GUI, not from UART terminal (picocom or minicom) of Host PC

So I did most of the review from the terminal in the display attached to the Raspberry Pi, but I eventually figured out that it’s possible to run all programs from an SSH terminal by simply exporting the display first:


Output from the script for reference:


We can just press Control+C to stop the app in the terminal. Let’s do the same with the “record” script. This time the camera output does not show up on the display, and all we get is information in the terminal:


I pressed Control+C to stop the recording and got 1080p_recording.h264 file which I transferred to my PC over SSH to confirm it is an AVI file with a 1920×1080 video @ 30 fps encoded with H.264:


I’ve uploaded the sample to YouTube for reference:

YouTube video player

The video is fluid but grainy because it was shot at night.

YouTube video player

Doing so during day time is much better, but the lighting is not ideal in the video above, so I tried again with some sunlight.

YouTube video player

The gst-launch-1.0 tool is quite powerful and versatile, but if you ask me, the command line parameters are not exactly intuitive, and it takes some learning before fully understanding them all and there should be a file called “CAM20_CURB_GStreamer_Usage_Guide_<VER>.pdf” explaining this in detail that was not present in the FTP server, but could be asked from e-Con Systems. But luckily, the Yocto and Raspbian images also come with another Gstreamer tool – gst-capture – that will allow you to test a long list of parameters from the camera. We’ll first need to select the video0 device:


After which we’ll be able to switch between still capture or streaming (video) modes, and more importantly access a long list of features for detailed control of the camera:


I’ve tried a few myself successfully, but going through all of those would be beyond the scope of this review/getting started guide, so I’ll just show how to adjust brightness as an example:


You can also watch the video below for a short demo with the scripts and gst-capture program:

YouTube video player

If you’ve watched the video, you’ll have noticed I had to switch between the terminal and the program after changing values. It’s not really convenient, so I’d really recommend either attaching a second screen or using a laptop with SSH, and exporting the display before running the commands:


gst-capture raspberry pi SSH

Sadly I only thought about this at the end of my review. It should probably be added to e-Con Systems documentation…

Apart from a few issues I had at the beginning with the OS image, I had a pretty good experience with the camera which works well with a high frame rate in all lighting conditions thanks to the global shutter. The camera is also fairly easy to use with decent documentation and the source code is available to those who want to customize the OS. I’d like to thank e-Con Systems for sending the e-CAM20_CURB global shutter camera for Raspberry Pi 4 for review. If you are interested, the company sells it for $99 plus shipping.

Share this:
FacebookTwitterHacker NewsSlashdotRedditLinkedInPinterestFlipboardMeWeLineEmailShare

Support CNX Software! Donate via cryptocurrencies, become a Patron on Patreon, or purchase goods on Amazon or Aliexpress

ROCK Pi 4C Plus

3 Replies to “Getting started with e-CAM20_CURB camera for Raspberry Pi 4”

  1. A word of warning. We based one of our products on an eCon Systems board, only to find the MOQ leapt from 1 to 100 boards. I assume it was made for another customer and they made some extras for stock.
    If you are buying a one off then they are OK, but be wary for low volume products.

Leave a Reply

Your email address will not be published. Required fields are marked *

Khadas VIM4 SBC
Khadas VIM4 SBC