RoadTest: STWIN SensorTile Wireless Node Dev Kit
Author: pratyush_cetb
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?: 1) Silicon Labs Thunderboard Sense 2 2) iCOMOX Evaluation Kit 3) Eta Compute Ecm3532 4) BOB Assistant 5)nRF52 Thingy:52 6)RA6M3 ML Sensor Module None of these match the quality and quantity of sensors packed on the STWIN Board and the software package support.
What were the biggest problems encountered?: No wifi connectivity support out of the box is a big let down as the most captivating examples and demo software required the STEVAL-STWINWFV1 to connected as add on. At this price point, I guess either the inbuild connectivity chip should have dual wifi and ble support or the STEVAL-STWINWFV1 should have been included.
Detailed Review:
In this booming era of Industrial IoT, the need for a board densely packed with sensors is of paramount importance. Therefore STMicroelectronics have come up with STEVAL-STWINKT1 : development kit to accelerate time to market for your Industrial Product reference design that is complemented with a rich set of software packages and optimized firmware libraries that simplifies prototyping and testing of advanced industrial IoT applications such as condition monitoring and predictive maintenance.
On-Board Sensor:
The picture below would give you a brief idea of the applications and location of on-board sensors.
{gallery} Sensors |
---|
Range of Sensors |
Location of Sensors |
Connectivity Options :
Protection Components :
Expansion Options:
(The expansion board is not available separately and can only be ordered as part of the P-L496G-CELL02 STM32 Discovery pack)
(This is not included in the box which is a major letdown, as out of the box there is no option to connect to the cloud)
Unboxing:
The STWIN SensorTile Wireless Node Dev KitSTWIN SensorTile Wireless Node Dev Kit comes in a transparent package, showcasing the following included peripherals:
Included Debugger comes quite handy and could be used with the stm32 board as well. The plastic case included is designed to protect and hold the STWIN core system board and the LiPo battery together. This case has designed with keeping in mind the application where it is to be used. The case has carved out filings for the bots. The case can also house two magnets (not included in the STEVAL-STWINKT1 kit), allowing you to stick the wireless industrial node on appropriate metallic areas in the monitored equipment. It has a cutout for inserting the sd card also.I'm fond of this case
{gallery}Unboxing |
---|
![]() |
Retail Unit |
Platic Box |
Out of the Box Software:
The kit comes preloaded with the predictive maintenance function pack (FP-IND-PREDMNT1) . As soon you power up the board via USB or included battery the green led starts flashing while waiting for an external connection via Bluetooth. We just need to download the ST-BLE-Sensor app which is available for android as well as iOS. The connection is straight forward and after a few seconds, we can see the data coming from the sensor. The app has the following functionalities:
{gallery} STBLE-Sensor App |
---|
Power Up |
Welcome Screen |
Environmental Screen |
FFT Screen |
Predictive Maintenance |
Battery and Network Status |
Since the FFT plot feature attracted me the most, hence I tried it on an Industrial Motor Pump set-up at my home.
STWIN Assembly Steps:
To assemble your SensorTile Wireless Industrial Node, you need the following components:
• STWIN core system board | 4x M3 bolts and nuts | Plastic box (2 parts) | Battery (included in the kit)
• 2x Magnets (not included in the kit): ECLIPSE MAGNETICS - N859ECLIPSE MAGNETICS - N859
Step 1. (Optional) Insert the magnets in the rectangular recesses in the bottom of the main case.
Step 2. Slide the U-shaped bracket into the main case. This will secure the magnets if they are present.
Step 3. Connect the battery to STWIN Core Board .
Step 4. Insert the STWIN core system board with the correct orientation .
Make sure that wires don't get tangled between board and case.
Step 5. Fasten the core system board to the case using the nuts and bolts provided with the kit.
{gallery} STWIN Assembly |
---|
Exploded cad drawing of STWIN node components |
Optional magnets inserted in the main case |
Core system board inserted in the main case |
Core system board fastened with bolts |
STWIN SensorTile Wireless Node Dev Kit comes with a whole ecosystem of software packages and firmware examples to help from grass-root levels of analyzing real-time data using python and Matlab, logging it using the BLESensor app, and sending it to the cloud for further processing. The Software Packages supporting the kit are:
Non-Cloud Based Packages:
calculate FFT for condition-based monitoring applications.
Cloud-Based Packages:
(Requires the STEVAL-STWINWFV1STEVAL-STWINWFV1 Wi-Fi expansion board not included in the kit)
(Requires P-L496G-CELL02 STMod+ cellular expansion board featuring the BG96 modem )
Since the Wi-Fi expansion board not included in the kit, only the Non-cloud Software packages would be covered in this review.
The package features two projects that demonstrate data logging functionality. One involves streaming data via the USB Virtual COM Port class, which you can subsequently display directly on a PC terminal, and the other is for high-speed data storage at maximum sensor sampling rates where sensor data can be streamed via USB (WinUSB class) and stored on the PC itself or on an SD card controlled via Bluetooth app. The other two projects demonstrate wireless connectivity using Bluetooth and Wi-Fi. The Bluetooth project allows you to stream sensor data via the Bluetooth Low Energy (BLE) protocol and is compatible with our freely available ST BLE Sensor app on Android and iOS stores.
You need to connect both the
The firmware packages are in the format of .rar files and all you need to do is extract them at a suitable location. The package has support for pre-compiled Binary files which you can find inside " STSW-STWINKT01_V2.0.0 \Projects\HSDatalog\Binary\ " as well as for the source project is also included which you can directly import into STM32CubeIDE.
Note: Make sure to check the "Copy projects into workspace" options when you import the project or else the files are imported as read-only files.
{gallery} Import Guide |
---|
Components of STSW-STWINKT01 Package |
Connection Guide |
Choose the option marked in red |
Or-else you cannot edit the files |
The Serial_DataLog Firmware is a simple project to printout the sensor values on the Serial Terminal. The BLE_SampleApp project is similar to the one that we have discussed earlier in the review. It allows the user to stream environmental sensor data via the Bluetooth Low Energy (BLE) protocol, a switch to toggle the LED. The battery status and Azure cloud option don't seem to work on the BLE_app. Here are some snapshots.
{gallery} Serial_DataLog & BLE_SampleApp |
---|
Serial DataLog |
Environmental Data |
Data Plot Feature |
LED Toggle Switch |
Azure Cloud |
Battery Status Not Working |
HS_DataLog:
This project has been hyped up is ST's blogs as well in the demo presentation and it does meet the expectations. The High-Speed DataLog firmware for STEVAL-STWINKT1 provides a comprehensive solution for saving data from any combination of sensors and microphones configured up to the maximum sampling rate and which can be used a tool for data scientists to monitor, analyze and log data of all the sensors in real-time. This has been quite possible due to easy-to-use scripts in Python(3.7) and Matlab(v2019a) that are provided in the software package.
Once you have flashed the HSDatalog.bin to the STEVAL-STWINKT1 you are good to go. Browse to "STSW-STWINKT01_V2.0.0\Utilities\HSDatalog" to find the support libraries and executable. The "cli_example" folder contains a command line-based interface to interact and configure different parameters of the board. By double-clicking on the USB_DataLog_Run batch script inside the "STSW-STWINKT01_V2.0.0\Utilities\HSDatalog\cli_example" the application starts, and the following command line appears, showing information about the connected board. Before running the script we need to configure the settings by using some JSON configuration examples in the directory "Utilities/HSDatalog/STWIN_config_examples".
The application creates a YYYYMMDD_HH_MM_SS (i.e., 20200128_16_33_00) folder containing the raw data, the JSON configuration file, and the UCF configuration file if loaded on PC or SD card. BLESensor App allows us to configure all the parameters of the sensors, and start/stop logging data on the SD card makes data logging a breeze. However, for longer periods of data logging the App and the board fails to communicate, and the only way to stop logging would pressing the USER button. Functionality to label\tag a particular part of data for a specific time period while performing the data logging makes it useful in certain types of data-driven algorithms such as supervised machine learning.
Hardware tags allow automatically enabling/disabling a tag according to the logical state of a pin on the STWIN STMOD+ connector. This can be extremely useful when the monitored equipment already provides some electrical signals that reflect the machine status, connecting these signals to the hardware tag pins allows retrieving this information during data acquisition.
{gallery} HS_DataLog |
---|
Folder Structure |
Editing the Script |
Script Running |
Label Options |
BLE App |
BLESense app Data Tagging Functionality |
ST has provided post-logging support by providing Python(3.7) and Matlab(v2019a) libraries to analyze the recorded data, which is a good addition as not many players in the markets provide that support. I'm not well versed with MATLAB Scripts hence limit the scope with python scripts only. The Python scripts and classes available in the HSDatalog package can be used to handle the datasets obtained by the HSDatalog firmware.
In-order to make use of these scripts you have to copy the desired data folders inside the HSDatalog/python folder. You can either use "How to use HSDatalog Python class.ipynb" for a more procedural approach or "HSDatalogPlot.py" along with command options for a direct approach.
HSDatalog Python class.ipynb:
HSDatalogPlot.py:
HSDatalogPlot application includes the following options:
– a <folder>: path of acquisition folder
– s <sensor name>: sensor name ("all" to plot all active sensors)
– f <data file name>: "cli" to select from a list
– l : for labels (by default, the label is chosen via CLI)
– p: subplot multi-dimensional sensors
– d: debug timestamps
{gallery} Python Scripts |
---|
Python Script Overview |
Python Folder Structure |
How to use HSDatalog Python class.ipynb |
HSDatalogPlot application - Anaconda Prompt |
Here are some amazing data plots generated from the python scripts. The data plotter GUI is customizable and allows the user to change the color as well as configure the axis parameters of the plot.
{gallery} Un-Labelled Plots |
---|
{gallery} Tagged Plot |
---|
X-CUBE-MEMSMIC1:
This is Complete middleware to build applications using MEMS digital microphones (MP34DT06J) and analog microphones (MP23ABS1). This package includes demos software for the STWIN kit, as MP23ABS1 is one interesting choice of sensors included in the board. The ultrawide bandwidth (up to 80khz) of this microphone makes it ideal for ultrasonic fault detection use-cases in industries. The initial signs of degradation of machine health comes in the form of Ultrasonic noise and the inclusion of such a capability in the STWIN make it stand-out of kits available in the market. The procedure is the same :
First, we'll be looking at the linear performance of the microphone over the audible range. I would play a test tone that varies from 0 - 20kHz to analyze the FFT output and how accurate it is.
Now to test the ultrasonic capabilities of the microphone we needed a source that produces waves over the audible range. Hence I went with a simple ultrasonic distance measurement module which outputs around 40khz waves for it's intended application. I used the J5 connector to supply power to the ultrasonic sensor and arranged it perpendicular to the mic inlet. Here is a video of the complete demonstration.
Since we have already discussed FP-IND-PREDMNT1 at the beginning of our review perhaps we'll jump onto one of the unique features of the kit that is running machine learning on the sensor itself !.
Normally accel/gyro sensor data is read out by an MCU, doing all kinds of algorithmic calculations on the dataflow to decide what type of movement is ongoing. Sometimes this is complex and requires even FFT's, but most times it is slow and simple movements. Keeping this in mind ST has a broad portfolio of sensors that have machine learning core embedded in their hardware itself! This adds intelligence to the sensor and enables them to acts on the incoming data, filter it out before passing it onto the MCU. Moving to compute so close to where data is collected is quite disruptive as you save a lot in terms of fewer machine cycles for keeping a check on the system anomalous behavior. This helps to wake up the MCU only for the confirmed anomalous events of interest. This also benefits the overall power budget of the system.
The idea behind the Machine Learning Core is to use the accelerometer, gyroscope, and external sensor data (readable through the I²C master interface) to compute a set of statistical parameters selectable by the user (such as mean, variance, energy, peak, zero crossings, etc.) in a defined time window. In addition to the sensor input data, some new inputs can be defined by applying some configurable filters available in the device.
The Machine Learning processing capability in ISM330DHCX is obtained through decision-tree logic. A decision tree is a mathematical tool composed of a series of configurable nodes. Each node is characterized by an “if-then-else” condition, where an input signal (represented by statistical parameters calculated from the sensor data) is evaluated against a threshold. The ISM330DHCX can be configured to run up to 8 decision trees simultaneously and independently. The decision trees are stored in the device and generate results in the dedicated output registers. The results of the decision tree can be read from the application processor at any time. Furthermore, there is the possibility to generate an interrupt for every change in the result in the decision tree.
The Machine Learning processing capability is obtained through decision-tree logic. A decision tree is a mathematical tool composed of a series of configurable nodes. Each node is characterized by an “if-then-else” condition, where an input signal(represented by statistical parameters calculated from the sensor data) is evaluated against a threshold. The ISM330DHCX can be configured to run up to 8 decision trees simultaneously and independently. The decision trees are stored in the device and generate results in the dedicated output registers. The results of the decision tree can be read from the application processor at any time. Furthermore, there is the possibility to generate an interrupt for every change in the result in the decision tree.
Going deeper into detail on the Machine Learning Core feature inside the ISM330DHCX, it can be thought of as three main blocks: 1. Sensor data 2. Computation block 3. Decision tree
The first block, called “Sensor Data”, is composed of data coming from the accelerometer and gyroscope which are built in the device, or from an additional external sensor that might be connected to the ISM330DHCX through the I²C master interface (sensor hub). The Machine Learning Core inputs defined in the first block are used in the second block, the “Computation Block”, where filters and features can be applied. The features are statistical parameters computed from the input data (or from the filtered data) in a defined time window, selectable by the user.
The features computed in the computation block will be used as input for the third block of the Machine Learning Core. This block, called “Decision Tree”, includes the binary tree which evaluates the statistical parameters computed from the input data. In the binary tree, the statistical parameters are compared against certain thresholds to generate results (in the example of the activity recognition described above, the results were: stationary, walking, jogging, biking, etc.). The decision tree results might also be filtered by an optional filter called "Meta-classifier".The Machine Learning Core results will be the decision tree results which include the optional meta-classifier. A meta-classifier is a filter on the outputs of the decision tree. The meta-classifier uses some internal counters in order to filter the decision tree outputs.
The decision tree generation for ISM330DHCX in the STWIN kit is allowed through a dedicated tool, available as an extension of the Unico GUI or also possible through external tools such as Weka, RapidMiner, MATLAB, Python.
We are going to use the Unico GUI to build our decision tree. This tool mostly used for evaluating stand-alone sensor kits from ST however it does have the functionality to support STWIN.
Decision Tree Generation Tree Procedure:
1) Download and Install Unico-GUI on your PC according to the operating system you have.
2) Open the application, disable the "Communication with the motherboard" option, and select the steval-mki210v1k board. After that Select, the MLC tab on the bottom left of the window.
3) In the data patterns tab, select the "advanced options" and then you can select the datalog folder created from the HS_DataLog Firmware. This will create a converted datalog format in the same folder which can be used by Unico-GUI
4) Select the converted folder and then label the class of data. Similarly, repeat the process for a number of different classes that you want predictions for.
5) Once you loaded all the data sets, hop into the configuration tab and start configuring the output data rate, sensor selection, and signal filters. Select the end configuration option after you satisfied with your filter configurations.
6) In the Features window select all the features you want as input to the decision tree. You can select as many as you want because the application will discard all the features automatically that don't contribute much to the learning of the decision tree.
7) Save the .arff file presumably in the same folder as the data-set. Now, this file is used to generate the decision tree and the parameter of the decision tree is reflected on the right-hand side of the window.
8) You can also configure the meta-classifier which runs a counter for every class of predictions and according to the counter value, the output is shown. You can also configure the output value from the register for every prediction class. Save the .ucf file and use it with USB_DataLog_Run script in High-speed data logging firmware project. Here are some snaps of the output of the MLC register-trained for a two-class gesture prediction.
{gallery} MLC Prediction |
---|
Accelerometer Data |
GyroScope Data |
MLC Output: 8 corresponds to the gesture detected |
For more details visit the following Links:
https://www.st.com/en/embedded-software/unico-gui.html
https://www.youtube.com/playlist?list=PLnMKNibPkDnHPjJKRZeXCIyrHwZJctvAI
Top Comments
I had to publish this unfinished review as the "save as draft option" disappeared mysteriously and this was the only way I could have saved my work so far. I have reached out rscasny about this…
Makes sense.
I didn't know whether you were done or not.
Look forward to your finished review.
The FFT captured here is of the Motor's Vibrations in X - Y - Z axis through the preprogrammed predictive maintenance firmware that comes along with the Kit.