RoadTest: Cypress EZ-BT™ Module Mesh Evaluation Kit
Author: clickio
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?: Its really a pioneering product, I've never seen or used anything similar in such a small package.
What were the biggest problems encountered?: I initially worked on OSX/MacOS, and while the main Modus Toolbox IDE is available on OSX/MacOS, the mesh configuration apps are Windows only. I managed to use the iOS app for some testing, but not for all.
Detailed Review:
What is it?
The Cypress EZ-BT Mesh Evaluation Kit (CYBT-213043-MESH) is a set of 4 identical ready-to-implement boards that combine an advanced mesh bluetooth module based on the Cypress CYW20819(datasheet) with a set of onboard sensors and also breakout connectivity for adding either more sensors or connecting it to other things that can be triggered by the boards and the signals between eachother.
Bluetooth-wise it is dual-mode - Bluetooth Low Energy (BLE), Bluetooth Basic Rate (BR) and Enhanced Data Rate (EDR) and also Bluetooth 5.0-compliant fully certified (FCC, ISED, MIC, and CE Certified). Having BLE makes it usable with a coin-cell battery while the other protocols can help with more powerful applications.
The onboard sensors that can be used for either testing/demos or for being included in the workflow of an application include a thermistor for temperature sensing, a motion detecting passive infrared sensor (PIR) and also an ambient light sensor. Using the 14 available pins you can add any other sensor that you need (6 of them are UART pins: GND, VDD, RXD, TXD, CRS & RTS, and the other 8 include a connection to the 5V_VBUS and also special, module-specific options like HOST_WAKE and DEV_WAKE)
There is also a RGB LED onboard, with additional 1MB External Serial Flash which you can use to either easily test out the connection of the boards or to familiarize yourself with how the mesh setup works, you can also use it in an application as an advanced status led with different colors for different steps or application results/outcomes.
The boards also have single color LEDs for its own status (power on) and for confirming/signaling the firmware upload process or reading from the chip's memory.
They can be powered in two ways: via USB from a PC/SBC or an USB battery, and also from a coin-shaped CR 2032 battery (not supplied in the box, but easily available everywhere)
Unboxing - Very Safe Packaging
I have to admit, I just loved the simple and safe packaging that these boards came in and it’s a sign of the care that went into them. You can see everything inside the package and, at the same time, theyre sitting as safe as they can possibly be, using both the hard plastic box and the foam as to provide maximum safety: encasing the modules, double bottom and vertical foam walls for each module’s encasement. They traveled half the planet and everything was perfect from the start.
Physical size and mounting/placing
The size of each module is 12 x 16,61 cm and you can see them below compared to a Raspberry Pi 3B+ and also to a credit card (under the board). They have each 4 rubber feet in the corners which help them stay on any surface – this way you can easily program them and deploy them out-of-the-box very quickly. They also have two mounting holes on one side, so you’re also able to mount them securely in one place with screws (M 2,5 or M3).
Setup - Programming the boards
Each module/board has an USB connector for power, programming and USB-UART bridge functions. Also provided in the box are four short usb-to-microusb cables, that you can use both to program and power the board or to directly access everything on the board on your pc/laptop via the USB-UART bridge.
For programming each module, you need to download the ModusToolbox™ Software Environment ( I used version 1.1 but there's also a v2 beta just announced), which is a dedicated all-in-one software solution that allows you to write the code, using all the needed libraries for all the components, compile it, upload it to each board as firmware and then provisioning the role for each board in the network.
It is available for all three major flavors of operating systems (Windows, MacOS, Linux) and it also has a CLI (command-line interface) if you want to use it that way for efficiency.
I installed the MacOS version, and here you can see it running.
Its very easy to setup the demo apps and I see it as very good solution for easy-deployment of application kits. There's a bit of hassle if you use Macs, but there are workarounds. I initially worked on OSX/MacOS, and while the main Modus Toolbox IDE is available on OSX/MacOS, the mesh configuration apps are Windows only. I managed to use the iOS app for some testing, but not for all.
You connect the board to the computer/laptop using one of the 4 provided usb-to-microusb cables. In my case, since I use a Macbook I had also to use an USB-A to USB-C adapter, but USB-A ports are the most popular.
You then click New Application, select the specific board you have (ours are CYBT-213043-MESH), then click Next to choose the app.
You initially have 4 demo apps to test the boards provided by default with the ModusToolbox™ Software Environment, but you can import more, there are also other demo apps/code samples on Cypress Semiconductor Github.
The 4 initial demo apps are:
BLE_Mesh_Dimmer, an app that allows one of the boards to dim the led on another board as a proof-of-concept - of course, by modifying the code, you can dim any other connectable light source. It does that using, in this case, a single button, see the explanation in the screenshot below.
BLE_Mesh_Light_Dimmable, the app to be installed on the board whose led you want to dim;
You can have any of each as you like, working together or separately, that being the beauty of the mesh system. In one kit you get only 4 boards, but you can buy/add more, as needed.
BLE_Mesh_OnOff Switch App - basic on/off functionality, using the temporary switch button (black button, called User, first from the right side of the board) as a trigger for an On or Off command - the opposite of the current state.
BLE_Mesh_Sensor - demo app for showing the functionality of the temperature sensor on each of the boards. You can set the reporting interval in miliseconds and also change other settings.
You load the complete source of the app in the ModusToolbox™ Software Environment by selecting it and then you click Build and program to write the compiled .elf firmware on the CYBT-213043-MESH board.
So, as a recap for these quick steps:
1. Connect the board
2. Load the app in ModusToolbox
3. Build and program
Easy, right?
You also have to do another step, which is the provisioning of roles which you can do from either mobile apps (iOS, Android) or from the Mesh Client app on Windows.
For example, if you build one of the simplest demo apps, the bluetooth light dimmer, using the RGB LED on a board as the dimmed light, the steps are like this:
1. Connect the control board
2. Load the BLE_Mesh_Dimmer app
3. Build and program the BLE_Mesh_Dimmer app on the control board and label it to remember which one it is
4. Connect the board whose LED you want to dim
5. Load the BLE_Mesh_LightDimmable app
6. Build and program the BLE_Mesh_LightDimmable app on the LED board and label it to remember which one it is
7. Launch the Mesh Client app on Windows to provision the roles for each board. I had no Windows computer around and tried doing that with the Cypress MeshApp in my iPhone, but no luck so far. I'm still working on getting this running in a mesh with a PC running the mesh apps, and will update this roadtest when I finish.
** I WILL UPDATE THIS PART OF THE ROADTEST IN A FEW DAYS BECAUSE I REALLY WANT TO MAKE IT WORK**
Although my programming language of choice is Python and not C, the code is very clearly commented so you can also try your hand at playing with the parameter values and the functions assigned to the buttons.
You can use the third and fourth board to have, for example in the light-dimming demo app above, two/three controlling boards and one dimmable led, or the other way around, one control board and three simultaneously dimmable leds and also more if you add other kits.
The beauty of the system is that you can program, add and provision more nodes as needed, in order to scale any application. Once you’ve succeeded with the first, programming the other boards is very easy and quick.
If you’re stuck in building your own app or if you have any issue, Cypress has a dedicated dev community where you can register and search for answers to similar issues or post your own.
I'm still working on getting this running in a mesh with a PC running the mesh apps, and will update this roadtest when I finish. And I will be using the Cypress dev comunity if I get stuck:)