RoadTest: Cypress PSoC® 6 BLE Pioneer Kit (CY8CKIT-062-BLE)
Author: BigG
Creation date:
Evaluation Type: Development Boards & Tools
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?: I see two categories for comparison: The first is BLE + ARM Cortex M4 MCU's: Silicon Lab's Blue Gecko, Nordic's nRF52832, NXP's QN908x. And, the second is Dual Core MCU’s + BLE: Espressif's ESP32
What were the biggest problems encountered?: Nothing significant getting started but that is probably because I learnt the basics before with a PSoC 4 BLE Pioneer kit. The E-Ink Display Shield failed out of the box but this got resolved fairly promptly. My biggest problem was then trying not to get carried away with this kit. Mr. Alan Hawes (from Cypress Semiconductor & presenter of the PSoC 101 video tutorial series) was right, it really is that good!
Detailed Review:
Firstly, I would like to thank Element14 and Cypress Semiconductor for the PSoC 6 Pioneer development kit. It really is impressive.
In my view, this is the new “Rubik’s Cube” of IoT development kits – at first, for the uninitiated, it looks daunting trying to figure out how to manipulate the 54 coloured squares (i.e. the Programmable System on Chip components) in a certain sequence to generate a prototype and then a production ready application, but the more familiar you get with their development methodologies, the quicker and quicker it gets to complete your intended design.
Let me start my road test intro by summarising why I felt it necessary to deduct points off what should have been a perfect score and then where my starting point is for the review.
Let me start by saying that while reviewing, testing and developing code, I never detected any obvious bugs with any of the components used. These worked as documented. However, I did eventually discover that the “incomplete” element was found with some of the detail in the component documentation. Part of this problem lies with the introduction of PDL 3.0 where some information if found in the component document and some in the PDL document. This is demonstrated when looking at the PSoC 4 vs PSoc 6 datasheets you can see that more detail for the PSoC 4 components. There were a number of occasions where I had to refer to the older component datasheets to get the information I needed (for example, information on BLE GATT services). Thus when starting out I found it a little unclear about the importance and relevance of the Peripheral Document Library and how this has changed for PSoC 6 compared to PSoC 4. It was for this reason that I reduced my score for “Specifications were sufficient to design with”.
PSoC 4 components | PSoC 6 components |
Real-Time Clock (RTC_P4) v1.10: 25 pages | Real-Time Clock (RTC_PDL) v2.0: 11 pages |
Bluetooth Low Energy (BLE) v3.40: 552 pages | Bluetooth Low Energy (BLE_PDL) v2.0: 80 pages |
Serial Communication Block (SCB) v4.0: 47 pages on UART component | (SCB_UART_PDL) v2.0: 16 pages |
The other criterion that was not given a perfect 10 was “the price to performance ratio”. The reason being is that I do not believe selling ONLY development “kits” is the best value for the IoT developer. Development boards certainly are but not just kits. In my biased opinion, I find that kits are designed for the classroom or for the corporate manager who wants to see demos. So maybe it is early days, but I hope Cypress follow the same methodology as before with PSoC 4 and offer just the development board for sale. A good development board is hardware that is available in different form factors so that they can be readily deployed in initial field testing. This is where PSoC 4 really nailed it by allowing you to plug in / plug out different BLE modules into the Pioneer board but then also these smaller modules could be deployed out in the field for further testing. It is a pity that the PSoC 6 Pioneer board did away with this option, but can understand the challenge as there are now more GPIO pins available.
This kit also includes a CY5677 CySmart BLE 4.2 USB Dongle. While this is an important tool for many project developments it is not essential. Thus, in my opinion, the CY5677 CySmart BLE 4.2 USB Dongle should simply be offered as an add-on purchase, similar to their BLE JTAG programmer. For example, if you had to purchase multiples kits, the additional dongles become redundant. I couldn’t help notice that the dongle is not even mentioned on the PSoC 6 Landing Page.
Lastly, another reason for the thumbs down on the kits only approach is that if part of the kit is damaged, as I experienced for the first time with the EPD eInk display shield, then it is not possible (at this stage) to purchase a replacement. |
With the scoring out the way, let me explain where my starting point is as this defined my road testing approach.
I am someone who has never been formally trained to use any of the PSoC devices and so all my learning has been based solely on what is provided online at cypress.com and from their YouTube channel. I have some previous experience learning to use the PSoC 4 BLE Pioneer kit, and other BLE devices, and so I am familiar with the PSoC Creator design methodology but I did struggle to understand the component-led approach. So, this previous experience has helped me work with the PSoC 6 BLE Pioneer kit as I was already familiar with the concepts presented.
So, for this review a key aim of mine was to evaluate the degree of effort it takes to get familiar with the PSoC 6 Pioneer Kit and associated IDE, together with libraries and examples, and then to develop my own proof-of-concept (POC) prototype.
To achieve this aim, within the allotted timescale, I followed a number of steps, namely:
The PSoC 6 BLE Pioneer kit comes with a folded (C6 size) pamphlet which is printed double sided, creating 4 pages as follows:
{gallery} The Quick Start Guide |
---|
PAGE 1 |
PAGE 2 |
PAGE 3 |
PAGE 4 |
You may have noticed that I took pictures of the Quick Start Guide rather than show image capture of the guide. This is because I could not find the PSoC 6 Quick Start Guide online anywhere, which is rather curious. It is not listed on any of the pages and if you search for it on the Cypress website nothing is found. So if you are looking for it, it comes with a PSoC 6 software download and will be found on your hard drive (C:\Program Files\Cypress\CY8CKIT-062-BLE PSoC 6 BLE Pioneer Kit\1.0\Documentation). Not sure why it is +20MB in size though.
With that out the way, let’s look at the QS Guide in more detail.
Page 1 starts with the kit contents, a QR code and a URL. This forms the important bridge to the Cypress Semiconductor’s website. The QR code / URL directs you to the PSoC 6 BLE Pioneer Kit Landing Page, which then provides other links to important information, as illustrated below.
Just to note that if you leave out the “www” as I tend to do, then the URL provided in the QS guide does not work as you will be redirected to the homepage instead.
The bottom half of page 1 and page 2 of the Quick Start guide provide us with 6 steps to follow. These steps form a handy demonstration of how a mobile app can interact with the PSoC 6 BLE dev kit (this is what triggered my Rubik’s cube analogy).
If you are familiar with the CySmart app or are comfortable with using BLE type apps, then it should be very straightforward to follow the text instructions. In my case, I had a faulty display shield which did cause me some confusion at first, as the screen did not refresh, but as I was familiar with the CySmart app I was still able to follow through with the Cap slider demo and the RGB demo. Both worked perfectly.
Then, Pages 3 and 4 are very useful as these provide an excellent reference sheet as to what components are on the board and a pinout reference. Once again it pays to study both pages carefully.
Similarly, it pays to read through the text detail in the QS guide as within this text it tells you which code example is used for the demo; as in CE220167 – PsoC 6 BLE with User Interface. You may want to use it later.
So, by way of review (as to whether this guide facilitated or confused the real getting started learning and application development process), I felt that this quick start guide is more of a quick demo guide showcasing what’s possible. So it is helpful but if you are not familiar with the kit it would be recommended to review the PSoC 6 BLE Pioneer Kit user’s guide first (found on website). It is also well worth reviewing the CE220167 example’s documentation prior to demo to ensure that the hardware is configured correctly in case of problems.
So, while the Quick Start Guide provided a nice introduction, by way of demos and a hardware reference, it did not really direct you onto a defined learning curve other than provide a link to the PSoC6 landing page.
So what does this Landing Page provide in terms of links to various documentation and learning resources?
The PSoC6 landing page follows the standard Cypress format, with an overview provided and then links to documentation, software and examples provided at the bottom of the page.
Unfortunately, very little information is provided on this landing page about the E-Ink Display Shield Board and the embedded sensors – in fact finding out information about those embedded sensors proved a challenge as had to search for it within the Cypress website. As such, some html links to this information would really be helpful as a time saver.
Similarly, there’s no associated html product links found under the “Industry-Leading CapSense” and “BLE Made Easy” sections. Then for some reason, the only html link to “PSoC Creator” can only be found under the section “BLE Made Easy” and not under “Related Resources” or “Related Pages” menu on the right. Then under “Related Resources”, I would like to see a link to the training videos as these are really, really, helpful to get started with learning how to develop on the PSoC 6 BLE platform.
The documentation and related file links found at the bottom of the page all relate to the pioneer kit itself. The zip file contains BOM, schematics, Gerber and assembly/fabrication information. I would like to note that I struggled to find any similar documentation for the display shield. Entering the product ID “CY8CKIT-028-EPD” into the Cypress website search box did not return any documentation directly related to this shield. Maybe this is an oversight on Cypress’s part perhaps. I did eventually find a reference to where this information is located within the appendix of the PSoC 6 BLE Pioneer Kit Guide.
To illustrate, this graphic highlights the difference between what I was expecting, based on PSoC4 information provided and what is provided on the PSoC6 landing page.
So in my opinion, this landing page may cause some confusion to any person not familiar with any of the Cypress development platform as this landing page is not providing a complete and thorough stepping stone to these other resources.
Thankfully the PSoC 6 BLE Pioneer Kit Release Notes makes up for some of the shortcomings. I would strongly recommend that you read this PDF document.
Then there is the 59-page PSoC 6 BLE Pioneer Kit Guide, which ties everything together. This guide provides an intro to the board and to PSoC Creator. There is info about the software installation process and an overview of using the kit together with some code examples. The big surprise here is that within this document no details are given about the three sensors found on the display shield. Section 2.2 (Install Software) is misleading as it appears to mention the same setup process as with PSoC4 products but the appropriate zip files do not exist on the PSoC6 page. Here, the document states “The kit software is available in two different formats for download: a. CY8CKIT-062-BLE Kit Complete Setup or CY8CKIT-062-BLE Kit Only. This is not quite correct.
Now, back to the website.
The webpage that helped me was found under the “Related Pages” menu option. This takes you to the product page (http://www.cypress.com/products/32-bit-arm-cortex-m4-psoc-6) detailing the PSoC 6x microcontroller range. It is on this product page that the important learning resources and details are provided.
If like me you had PSoC Creator 4.1 already installed on your plate and regularly kept it up to date you may also initially miss the obvious. Thankfully it appears that this web page provides sufficient clarification to tell you that the beta version 4.2 is required for all PSoC6 firmware development (It is also clearly stated in the Release Notes). There is a Windows only installer provided in a compressed file for this purpose.
PSoC Creator 4.2 – folder – documentation – 2 PDF’s – Quick Start Guide and Release Notes.
Finally, another oversight perhaps, is that no information is providing in the PSoC 6 documentation or website about PSoC Programmer or the Bridge Control Panel tools. The PSoC Programmer is required for updating the KitProgrammer2 firmware. It is also a tool for uploading hex files to the PSoC6 chipset directly. To learn more about the use of the Bridge Control Panel, I found this link to be really useful: https://iotexpert.com/2018/02/06/bosch-bmi160-psoc-6-cy8ckit-028-epd/
In fact iotexpert.com provides many useful case studies on the PSoC 6 development platform.
The other great learning resource would the PSoC 101 video series which can be view online on the Cypress Semiconductor YouTube channel or via this link.
Here Mr. Alan Hawes from Cypress Semiconductors provides a great introduction on how to use the two cores. If I had not viewed these videos, I would have struggled somewhat to understand some of the key concepts.
So, by way of review (as to whether supporting materials, tools and resources are available to help facilitate and possibly accelerate the learning by doing process), I felt that all the information is there if you are prepared to look for it. If you are used to PSoC 4 and how the website information is provided then you should have no real problems. If starting from scratch you may struggle. I suppose because PSoC 6 is a new release, these teething problems regarding missing documentation etc. are to be expected. Even as I complete this write up, I have noticed change and improvement. So, no doubt this will all get resolved over time.
My first impression, when I unboxed my PSoC 6 BLE Pioneer Board is that this board is crammed full of useful stuff. To make some sense out of the hardware you get with the PSoC 6 BLE Pioneer Kit, I have split it out into 6 segments. You may need to hunt for it on the Cypress website, but all the technical detail, even down to the registers is there.
To kick start matters I found this video intro by Cypress Semiconductor provides a nice overview of what you are getting hardware wise.
Then to provide a nice graphic overview for the road test, thankfully, the Quick Start guide provides a very handy diagram and table of what components are included where on the board itself. I’ve included the diagram here for ready reference.
Unlike say the PSoC 4 Pioneer Board, the underside of this board is almost more populated with components than the top/front side of the board. Similar to the PSoC 4 board they have included a USB Serial Interface Pin reference, although it is not titled as such on the silk screen. The PSoC 6 has also squeezed in the LED and the onboard button pin references. There are also two switches (sw6 and sw7) underneath which are properly labelled.
I have yet to explore all the options here, such as the use of SW6, the KitProg2 programming target selection switch (Item 20), or the use of SW7, the Vbackup and PMIC control selection switch (item 30), or the use of J8, the PSoC 6 BLE power monitoring jumper (item 24).
To get a better sense of how different the new PSoC 6 board really is, here is a comparison of the PSoC 6 system architecture versus a PSoC BLE 4200. On every level there are improvements.
{gallery} PSoC 6 vs PSoC 4 BLE Pioneer Boards |
---|
So to summarise my review of the hardware, I thought what it offered is superb and it provides a good broad range of options that cover most bases from HMI (display and buttons) through to sensors and low power battery operation. So there is plenty here to start getting creative and building quickly. The hardware component I did not have time to test was the EZ-PD CCG3 Type-C Power Delivery system. Based on the online literature, it can simultaneously charge a 3.7-V lithium-ion polymer battery if powered through the Type-C USB port. Certainly the Cypress USB Type-C controller looks very promising. Similarly, I did not explore the sensors provided on the display shield.
If there was an opportunity to offer a derivative of this display shield, I would like to see one with the eInk display and sensor plug-in connectors, such as SeeedStudio’s Grove connect system or Sparkfun’s new Qwiic Connect System (https://www.sparkfun.com/qwiic) instead of the embedded sensors. This would allow for greater flexibility and choice on sensor applications as the user could then plug in their own sensor breakout boards.
Firstly, some of you very early adopters may notice that many of the components within your PSoC Creator 4.2 Beta version have the words “Prototype” written across them. If that is the case then it is time to update using the PSoC Update Manager. However, please note that it is not that straightforward going from the Beta version to the new update, as I discovered, even though update manager provides a handy update feature.
To get this to work, a workaround has now been established for the update. Please refer to the PSoC 6 community forum by clicking on this link for further information.
For my Firmware Development Review, I decided to get creative and stretch myself by going beyond just replicating the many and growing list of examples provided on Cypress.com.
All the examples I looked at are very well documented and work. I found the code layout to be very well structured and there are plenty of comments to help you too.
http://www.cypress.com/documentation/code-examples/psoc-6-mcu-code-examples
As such, I attempted two mini projects. The aim of the projects was to combine the examples provided and create something new. I thought this was a good way to demonstrate the range of examples on offer.
The first project idea, which is purely a proof of concept (and therefore not complete), was to create a “smart chair” app which would use the Proximity Sensor example and the Eddystone Beacon example. My idea was to combine the two to offer a service or provide features, such as playing music, when the user connected to the PSoC 6 device. The aim was that BLE connection could only happen when presence was detected.
So for proof of concept I attached some conductive thread to the proximity sensor and tested how well it worked. Here is a demo of the outcome.
Then for the Eddystone part, I first used this element of the POC project to review the process of selecting a ready made example, then installing it in my workspace, building and then flashing my PSoC 6 BLE Pioneer board. Here is a video walking you through the process.
Here is a demo of that Eddystone example:
I then took it a step further and looked at how easy it would be to amend the Eddystone example and insert my own URL. For the URL I created a simple one pager using the Bootstrap template and saved the html/css/image fiels in a folder on my domain which resides on Github pages (it's free!).
Here is an overview of the parts that changed.
If you want to change the behaviour of the Eddystone beacon example altogether, such as use UID instead of URL or you wish to change the time period between when the TLM data is shown, then you need to look at ble_application.c . Here is a code snippet of the relevant constants and variables.
/* Number of packets broadcasted during a UID/URL + TLM advertisement. This is equal to the total time out in seconds / 100 milliseconds or total time out *10 */ #define PACKETS_PER_BROADCAST ((APP_UID_URL_TIMEOUT \ +APP_TLM_TIMEOUT)*10) /* Variables that store constant URL, UID and TLM packet data. To change the Eddystone packet settings, see the header file eddystone_config.h */ uint8_t const solicitationData[] = SERVICE_SOLICITATION; uint8_t const serviceDataUID[] = UID_SERVICE_DATA; uint8_t const nameSpaceID[] = NAME_SPACE_ID; uint8_t const instanceID[] = INSTANCE_ID; uint8_t const packetDataURL[] = URL_PACKET_DATA; uint8_t const serviceDataTLM[] = TLM_SERVICE_DATA; /* Variable that stores the current role (UID/URL or TLM). To change the Eddystone packet settings, see the header file eddystone_config.h */ eddystone_role_t beaconCurrentRole = EDDYSTONE_IMPLEMENTATION;
Then if you wish to change UID data or the URL address etc. then this is handled within eddystone_config.h. Here is a code snippet of the URL changes I made for my little project.
#define URL_PACKET_DATA {0x14u, /* Length */\ 0x16u, /* Service Data */\ 0xAAu, /* LSB - Eddystone Service */\ 0xFEu, /* MSB - Eddystone Service */\ 0x10u, /* Signifies Eddystone URL */\ 0xF2u, /* Ranging data: -18dB*/\ 0x03u, /* URL scheme prefix- http://www. */\ 0x6Cu, /* Encoded URL - 'l' */\ 0x69u, /* Encoded URL - 'i' */\ 0x6Eu, /* Encoded URL - 'n' */\ 0x67u, /* Encoded URL - 'g' */\ 0x65u, /* Encoded URL - 'e' */\ 0x72u, /* Encoded URL - 'r' */\ 0x74u, /* Encoded URL - 't' */\ 0x65u, /* Encoded URL - 'e' */\ 0x63u, /* Encoded URL - 'c' */\ 0x68u, /* Encoded URL - 'h' */\ 0x04u, /* Expansion - .com */\ 0x31u, /* Encoded URL - '1' */\ 0x34u, /* Encoded URL - '4' */\ 0x2Fu} /* Encoded URL - '/' */ /* Eddystone packet index of the URL data */ #define URL_INDEX (0x07u) /* Total size of a URL frame */ #define URL_PACKET_SIZE (0x1Cu)
The important thing to remember is to get your URL_PACKET_DATA length (1st item in byte array) and URL_PACKET_SIZE correct.
There are then two Eddystone related codes which are used to define "URL scheme prefix" and "Expansion". To read up about the relevant URL codes you should refer to the Eddystone Github page by clicking on this link.
You should have noticed that the web address is defined as a byte array. I found this handy website that does all the work for you.
Here is a demo of my revised Eddystone code:
Then next step of my POC is to combine the two (for another day).
For the second project I created a simple Industrial Internet of Things (IIoT) type application, which leveraged the Immediate Alert GATT service profile. Here I used both a PSoC 6 Pioneer board, which used a modified version of the “FindMe” example and a PSoC 4 Pioneer board, which used a modified version of the “Immediate Alert” example. The firmware for both was created on PSoC Creator 4.2.
A key part of the PSoC 6 firmware was to use the eInk Display to display an explanation of the leds (solid for high alert / flashing for medium alert), user information (such as when a device connects), then when connected it displays date/time of when high and medium alert events occurred and then also provides data statistics to evaluate frequency of alert events and trends. A Real Time Clock component was also included to provide this date and time functionality.
To help me understand how to modify the eInk code and understand some of the functions I also had a little play around. Here is an example of how full screen refresh looks versus the partial screen refresh method. This example uses 8 separate image files to create an animation effect.
The next challenge I faced was to work out how to update or amend the default date and time on the PSoC 6 so that it would display the correct date and time. There are a number of RTC examples examples provided by Cypress but none were suitable for this application. There is a CTS example, for example, but this only works with iPhones (I tested this and it does work!) and I use an Android phone. The CTS GATT service also requires pairing, which is not compatible with the Immediate Alert GAP requirements. So to get around this, I created a custom GATT service which could then be used to allow the user to update the RTC date and time values.
For the PSoC 4 firmware a key part involved porting across and modifying code to drive a 1.44” TFT display. I was interested to learn, when looking at how to drive a TFT display using the PSoC 6 Pioneer Board that the I2C and SPI libraries have changed somewhat. With PSoC 6 the library uses uint32_t for everything. To learn more please read the response to my Cypress community forum post.
Here is a demonstration of how my application was put together and how it works.
So to summarise, I really like the PSoC Creator IDE and found myself accelerating through how much I could accomplish within the review period, once I understood the basics. I am someone who likes structure when it comes to reviewing and understanding someone else’s code and thus the PSoC code examples were very much to my liking. So, overall I give this top marks.
Then as a footnote I had one more thought. Considering that I have only managed to scratch the surface in this review, I feel that for bigger projects (and I believe the PSoC 6 can handle complex projects) you really need an IDE that facilitates collaborative working amongst a team of developers. In that context I felt that not much guidance is provided. Maybe this is something they should look at.
I think the PSoC 6 BLE Pioneer Kit is ground breaking and I believe they have carved out a nice niche here as no other dual core development board provides the complete package. I think there are going to be many industrial applications where this will be a winner, especially in providing a smart gateway type configuration between BLE services and some other communication protocol, combined with some rich sensor or user interface. So, well done Cypress Semiconductor.
Top Comments
Very good road test report.
DAB
Excellent review and set of examples that you walked through in the videos.
Thanks for posting.
Kind regards
Hi Gene. Thanks for the comment. Yes I'm certainly enjoying it and yes I have a few more ideas so will be pushing to get interest and approvals etc. Rgds Colin.