RoadTest: CY8CKIT-042-BLE Bluetooth® Development Kit
Author: amgalbu
Creation date:
Evaluation Type: Evaluation Boards
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?:
What were the biggest problems encountered?: No particular problems found. Everything ran smoothly
Detailed Review:
The Bluetooth Low Energy Pioneer kit comes in a nice box where all the components are tidily placed
The Bluetooth Low Energy Pioneer kit comes with the following components
The BLE Pioneer Baseboard acts as the baseboard for the PSoC 4 BLE (red module) and PRoC BLE (black module). The BLE Pioneer Baseboard contains a PSoC 5LP device, that has KitProg firmware, used as an onboard programmer or debugger, and for the USB-Serial interface. The baseboard is Arduino form-factor compatible, enabling Arduino shields to be connected on top of the board to extend the functionality of BLE modules. The board also features a 1-Mb F-RAM, an RGB LED, a five-segment CapSense slider, a proximity header, a user switch, and a reset switch for the PSoC 4 BLE and PRoC BLE devices on the module. The Pioneer board supports three voltage levels: 1.9 V, 3.3 V, and 5 V.
The BLE Pioneer Baseboard can also be used as a standalone programmer to program and debug other BLE devices using serial wire debug (SWD), and as a USB-Serial interface. The KitProg firmware on PSoC 5LP device enables bootloading PSoC 5LP over USB to upgrade the firmware.
The kit comes with two different BLE boards: one red and one blue. I initially had some difficulties to understand the difference between the two boards
The red one is called PSoC. According to the datasheet, PSoC 4 BLE enables system designers to create sensor-based, low-power wireless systems using integrated programmable analog front ends, programmable digital peripherals, industry-leading CapSense user interfaces and the Bluetooth Low Energy radio in an ARM® Cortex™-M0 one-chip solution
The blue one is called PRoC. PRoC BLE is an easy-to-use, ARM® Cortex™-M0 based, single-chip solution which integrates a Bluetooth® LE (Low Energy) or Bluetooth Smart radio and one- and two- fingers gestures recognition library. The PRoC is supposed to be less flexible than the PSoC but with the advantage of being less expensive than the PSoC
Both have plenty of input and outputs and the same RF circuitry. The main difference is that the RPoC includes the support for the Capsense technology
All the boards included in the kit looks very well engineered and manufactured.
The two BLE modules (PSoC and PRoC) are very compact and has two female connectors that makes a large number of pins available for an external board. This makes these boards perfect for experimenting with your own external hardware and implement BLE connectivity very easily.
Antenna (which typically is critical is demo kits) looks well studied. The BLE module is mated with the baseboard so that the antenna protrude from the baseboard itself, thus making the antenna in the optimal operating conditions.
Another interesting feature is the presence of a current measurement jumper, that let you easily check how much power is drawn by the BLE module. Regarding the power supply section, it's nice that the kit can be powered from a variety of power sources ranging from the 3V of a coin battery to 12V of an external power supply.
I also appreciated the presence of Arduino-compatibles pin headers. Unfortunately this headers are the baseboard. Should such headers be on the BLE module, they would be much more useful and it would be really a plug-and-play job to add BLE connectivity to your Arduino projects
Another thing I didn't like was the position of the Capacitive sensor: because of the BLE module's header connectors, it a bit difficult to slide your finger. I would have placed the capacitve sensor n another daughter board so that it was at an higher level so that it would have been very easy to enclose this kit in a case and use it as a ready-to-use slider control for your DIY projects
As my first experiment, I tried the steps suggested in the Quick Start Guide. I connected the dongle to your computer's USB port.
Insert the 3-V coin cell (included with the kit) into the coin cell holder on the rear side of the baseboard
Press the button SW2 on both the dongle and the baseboard. The red LED on the baseboard and the blue LED on the dongle will stay on for three seconds before turning off, indicating a Bluetooth low energy connection between the two boards
Move your finger over the CapSense® slider on the baseboard to control the brightness of the blue LED on the dongle
The BLE modules can connect to a smartphone by means of an app (that can be downloaded from the Google Store for Android phone or fro App Store for iOS-based phones) called CySmart.
I have an Android phone but, unfortunately, this app requires Android 4.3 or later and my phone has Android 4.2.1...
Thankfully, there is also a PC version of the CySmart application that connects using the BLE dongle included in the kit.
First of all, a special application needs to be downloaded into the BLE Dongle. Form PSOC Creator IDE, in the Start page, I selected the example project named "BLE_Dongle_CySmart"
Then, I selected Debug -> Program to download the project. Everything went smoothly and I was able to launch the CySmart application.
The application immediately recognized the Dongle and let me choose it for connection
I clicked "Start scan" and pressed the SW2 button on the baseboard. The advertisement was immediately shown
This application was very useful because it let me test the range of BLE.
I powered the baseboard using the 3V coin battery move more and more away from the PC to find out the maximum distance at which the PSoC BLE was discoverable
The results are very surprising to me: the devices communicate in open air at a distance of about 35 meters, which is very good considered that one device was powered by a 3V coin battery! This is an evidence of the quality of the PCB I was able to visually appreciate in the right moment I opened the shipping box
To get hands on the hardware and the PSOC Creator IDE, I made a simple project using the two BLE modules included in the kit.
The PSoC (red) module will act as a server (aka Peripheral mode), whereas the PRoC (blue) module will act as a client (aka Central mode)
On the PSoC side, the starting point is the example project named "PSoC_4_BLE_CapSens_Slider_LED". This project does not need any change
On the PRoC side, the starting point is the example project named "PRoC_4_BLE_Central_IAS". This project requires some minor changes. The first change is to add a PWM output. This is very easy to do thanks to the graphical designer included in the IDE. I already get accustomed with this user interface because I worked (some time ago) on the PSoC4 module. The graphical interface provides a convenient way to configure system peripheral. For example, to enable the PWM output, simply open the TopDesign.cysch document. Right-click on the PWM_1 peripheral and select "Enable" in the context menu
Now double-click on the clock peripheral to open the configuration window
Next, let's configure the PWM period and duty-cycle
Finally. let's add the pin where the PWM signal will be output
It is now possible to access PWM peripheral by using C functions like
PWM_1_Start();
PWM_1_WriteCompare(<value>);
PWM_1_Stop();
Finally, let's change the C code to handle notifications from PSoC (red) module
All the logic to handle BLE communication is in the BLEClient.c file. In particular, the function ApplicationEventHandler.
This function is invoked by the BLE stack and is set by invoking (when firmware boots) the following code (in main.c)
CyBle_Start(ApplicationEventHandler);
The function
void ApplicationEventHandler(uint32 event, void *eventparam)
has two parameters: event identifies the notification that is required to be processed, and eventparam points to a structure that depends n the value of the event parameter. To handle notifications sent by PSoC, we need to add a case for the following event
/* Notification data received from server device. Event parameter
is a pointer to a structure of type CYBLE_GATTC_HANDLE_VALUE_NTF_PARAM_T. */
CYBLE_EVT_GATTC_HANDLE_VALUE_NTF,
The CYBLE_GATTC_HANDLE_VALUE_NTF_PARAM_T contains the data that can be accessed as follow
reqParam = (CYBLE_GATTC_HANDLE_VALUE_NTF_PARAM_T *) eventParam;
RGBledData[RED_INDEX] = reqParam->handleValPair.value.val[RED_INDEX];
RGBledData[GREEN_INDEX] = reqParam->handleValPair.value.val[GREEN_INDEX];
RGBledData[BLUE_INDEX] = reqParam->handleValPair.value.val[BLUE_INDEX];
Here are the pros and cons of this kit
Top Comments
Hi DAB
Cypress support looks very good also to me... I was impressed both by their tools and by the demo applications they provide
I already had experiences with PSoC4 and the first impression was exactly…
@Ambrogio
good kit review! if you are looking to create any designs with this kit, take a look at the PSoC Pioneer Challenge for a chance to win an all-expenses paid trip to Maker Faire 2015!