Getting started with e
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.
The camera is comprised of two boards with the following specifications:
The company provides both Yocto and Raspbian / Raspberry Pi OS 32-bit images with a V4L2 Linux camera driver and Gstreamer tools.
I first thought I had received the wrong package having been sent a See3CAM USB 3.0 camera from the company instead.
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.
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.
The lens is protected by a cover which I removed for the photos below.
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.
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.
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.
We also had to find some colorful subjects with more LEGO and a garbage truck…
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.
At this stage, we will need to input your SO# found inside the package as noted in the unboxing part,
and the product will be officially registered on e-Con Systems website.
We 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.
I was informed about some issues with the SSL certificate, but no problem I could still download all files for the camera:
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.
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.
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.
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.
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:
Both call Gstreamers commands. Content of gst_1080_stream.sh:
and of gst_1080_record.sh:
Let’s run gst_1080_stream.sh first.
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:
The video is fluid but grainy because it was shot at night.
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.
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:
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:
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.
Jean-Luc started CNX Software in 2010 as a part-time endeavor, before quitting his job as a software engineering manager, and starting to write daily news, and reviews full time later in 2011.
Support CNX Software! Donate via cryptocurrencies or become a Patron on Patreon
Related posts: