RoadTest: CapSense MBR3 Evaluation Kit
Evaluation Type: Independent Products
Did you receive all parts the manufacturer stated would be included in the package?: True
What other parts do you consider comparable to this product?: This is my first time working with capacitive touch, so I haven't considered other parts.
What were the biggest problems encountered?: Software and documentation. Example projects not always working. More details in the review.
I'd like to thank element14 and Cypress for giving me the opportunity to review the CapSense MBR3 kit.
Having no prior experience with capacitive touch controls, this kit was interesting to work with, and I hope this review will be useful to anyone reading it.
For this Road Test, we received two items:
- Raspberry Pi Model B
- CapSense MBR3 Evaluation Kit
The Raspberry Pi is not necessarily needed as the MBR3 Kit can be used in a standalone configuration, I will however test different hosts such as the Raspberry Pi and the Arduino UNO as part of this review.
The MBR3 Evaluation Kit comes in a nice box containing all that is needed to get started:
- Quick start guide
- USB cable
- Evaluation board
- Plexi overlay
- Water dropper
The quick start guide consists of two parts:
- Getting the kit up and running and performing some tests
- Description of the board and its components
"Download and install software and examples (http://www.cypress.com/?rID=92067)"
The first step was to get the software and some examples in order to test my kit.
What immediately struck me was the fact that I couldn’t find any system requirements clearly stated on the kit’s page or box:
- Which OSes are supported ?
- Which versions of the OSes are supported ?
- Are there other dependencies ?
I decided to go through the full User guide (http://www.cypress.com/?docID=48385) to find more answers.
Paragraph 2.2 of the User Guide refers to some prerequisites, but again without any specific information about them:
This meant that I wouldn't be able to use this kit with my Mac, my primary computer. Luckily, we still have an older desktop pc running Windows XP.
But which versions of the mentioned components should at least be present ? Guess I’ll just try to install it on my Windows machine and see what happens.
Surprisingly, installing the software went smoothly. Without knowing the required versions of the prerequisites, the installation was ok.
Once installed, the installer checks for update.
Unfortunately, after installing the PSoC Programmer 3.20.0 during the initial installation, it tells me it is outdated and needs to update.
It downloads and installs the new version, 3.21.0, while uninstalling the previously installed version.
I feel this could be improved and that the correct version could be installed immediately, as the first download and installation of the PSoC programmer was useless.
Or maybe I should have refused to update ..., but I’m someone who likes having everything updated to the latest version.
With the software installed, it was time to move to step 2).
"Place overlay, connect to computer"
Easy. The device is detected and installed without any problems!
Even though this is a QUICK start guide, I feel this is too quick!
Without going through the basics first, the guide immediately jumps to the water test.
This quick start guide sure likes to rush things: I already get to play with water !
"Press buttons with water on them"
As expected and demo'ed by others, even with water drops on the buttons, everything still works.
"Configure different features with EZ-Click Software Tool"
Cool, but which features ? A link or additional info would be great!
The installation of the software was covered by step 1 of the quick start guide.
The user guide covers the software really well. I was using and finding my way around the interface in a matter of minutes.
I enabled the kit's buttons and LEDs and gave them logical names in order to be able to identify them easily later on.
The software allows various things to be configured:
- use of proximity sensor
- use of buzzer
- LED configuration (toggle, default on/off, brightness, ...)
- sensitivity of the buttons
It is also possible to visualise the button's state and the SmartSense auto-tuning feature.
In this first example, starting at time "900", you can see three short presses of the button (red), followed by a longer press.
At the end of the long press, you can see the SmartSense auto-tuning (blue) kicking in and adapting the base line. Once the blue line is at the same level as the red line, the button turns off.
Once the longer press is stopped, the base line is immediately adapted to the new reference.
This is the same behaviour as with water droplets. At first, blue and red line have the same level. When adding a droplet, a difference is created between the blue and red line. After some time, the reference is adapted and the blue line matches the red line's level again.
I've done other tests by hovering with my finger above the button and visualising the base line being adapted, or by having a new base line and see how long it takes to have it reset to the original value.
I found this software feature very useful, as it helps visualising what's going on, in real time.
For the first part of this review, I used the kit in stand-alone mode. It is however possible to use it in combination with other I2C hosts such as an Arduino or Raspberry Pi.
I found a post from earlier this year, here on element14 about setting up the MBR3 kit with an Arduino UNO: CY3280-MBR3 Example with Arduino (Uno/Mega)
With the instructions and Arduino sketch provided in the post, I was able to get the kit running on the Arduino in no time. Very straightforward, no issues.
Changing the configuration of the kit using the Arduino sketch is also straightforward, but still does require the EZ-Click software.
When generating a new configuration with Easy-Click, a file is created on disk. By pasting this file's content in the Arduino sketch, the new configuration is applied.
Just like with the Arduino, I found a post here on element14 on getting the kit to work with the Raspberry Pi: CY3280-MBR3 Example with Raspberry Pi
pi@webserver ~/Raspberry Pi code $ sudo i2cdetect -y 1 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- 37 -- -- -- UU -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: -- -- -- -- -- -- -- --
The instructions were clear on how to connect the kit to the Pi and how to set up the different jumpers. The procedure also mentions the kit should not be powered from the 5V GPIO pin of the Pi. So instead, I connected the kit's USB cable to one of the Pi's USB ports. That seemed to work ok.
I uploaded the Python test script and tried to run it. There were some problems:
- the script is not executable by default
- "^M" is appended to every line, rendering the script unusable (see screenshot)
pi@webserver ~ $ unzip Raspberry\ Pi\ code.zip Archive: Raspberry Pi code.zip inflating: Raspberry Pi code/Configure_MBR3_Read_BTN_Status.py pi@webserver ~ $ cd Raspberry\ Pi\ code/ pi@webserver ~/Raspberry Pi code $ ls -l total 12 -r--r--r-- 1 pi pi 11734 Feb 21 17:07 Configure_MBR3_Read_BTN_Status.py pi@webserver ~/Raspberry Pi code $ chmod +x Configure_MBR3_Read_BTN_Status.py pi@webserver ~/Raspberry Pi code $ ./Configure_MBR3_Read_BTN_Status.py -bash: ./Configure_MBR3_Read_BTN_Status.py: /usr/bin/python^M: bad interpreter: No such file or directory
I removed the "^M" by using the "dos2unix" command:
pi@webserver ~/Raspberry Pi code $ dos2unix Configure_MBR3_Read_BTN_Status.py Configure_MBR3_Read_BTN_Status-fixed.py dos2unix: converting file Configure_MBR3_Read_BTN_Status.py to Unix format ... dos2unix: converting file Configure_MBR3_Read_BTN_Status-fixed.py to Unix format ...
With the script fixed, I tried running it again, but this time another issue popped up:
pi@webserver ~/Raspberry Pi code $ sudo ./Configure_MBR3_Read_BTN_Status-fixed.py Configuration Sent Sucessfully!! SAVE_CHECK_CRC command sent successfully!! ERROR: Failed 10 times send COMMAMD SW_RESET!!
As this as blocking the script from running, I ended up commenting out the "applyConfig()" function which generated this error.
After that, I was able to detect button presses on the Pi.
For a mini project, I combined the MBR3 kit with an Arduino UNO to control an LED strip.
One of the buttons was configured to toggle (ON/OFF), two other buttons were configured to change the brightness.
This is not shown in the video below, but the last button could be used to change the color or the light or cycle through different animations.
I started from the MBR3 Arduino sketch and added some LED strip controls using the Adafruit NeoPixel library.
The hardest part was connecting the LED strip to the Arduino, with the shield connected, as the pins are not easily accessed.
Having no prior experience with capacitive touch, this kit was a great introduction. The kit itself is very easy and intuitive to use, and "problems" encountered were mainly related to software and documentation.
A library for the Arduino and RaspberryPi (or linux in general) would be extremely useful.
Abstracting the low level registers into understandable variables would make it accessible even to beginners:
Good point about the pre-requisites, I agreen that the installer is annoying in that it downloads, installs and then uninstalls and downloads a newer version.
It is theretically possible to generate your own config based on the CapSense MBR3 Register Technical Reference Manual but it should be easier using the UI. Perhaps a library could be written to assist?