RSL10 Sensor Development Kit - Review

Table of contents

RoadTest: RSL10 Sensor Development Kit - Industrial Sensing

Author: stevesmythe

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?: The nearest comparison that I know of is the CC2650STK SimpleLink Bluetooth Smart SensorTag loT Kit . This is also low-power, wearable and provides similar sensors together with Android/iOS apps. It is lower cost than the RSL10, but the RSL10 has an RFID chip and realtime sound processing capability.There is also the Nordic Thingy:52, which is somewhat larger than the RSL10 but with similar features.

What were the biggest problems encountered?: The Android app seems to have some significant bugs.

Detailed Review:

 

Introduction

image

The subject of this RoadTest is the ON Semiconductor RSL10 Sensor Development Kit. There was some initial confusion with this RoadTest - the initial batch of kits sent to element14 did not include the debugger so some people only received the RSL10 device but some (like me) also received the associated Segger J-Link debugger board. There is another RoadTest where the participants were sent the debugger version. Consequently, I RoadTested the version without debugger first, to show what you could do with the RSL10 device as shipped from the factory. I then RoadTested the device with the debugger to show what benefits you would gain if you bought the debugger version.

 

What is in the kit?

{gallery} Unboxing the RSL10
image
image
image
image

 

[Note: Egg shown for scale. It is not included in the kit!]

 

The RSL10 Sensor Development Kit (RSL10-SENSE-GEVK) consists of:

  • A small (3cm diameter), circular circuit board containing the RSL10 SIP module (which is Bluetooth 5 certified to international wireless regulations (CE, IC, KC, MIC, FCC)) and the following components:
    • ON Semiconductor NOA1305 (Ambient light sensor) with 16-bit ADC and I2C interface

    • Bosch BHI160 (Integrated low power smart hub with 3-axis accelerometer and 3-axis gyroscope)

    • Bosch BMM150 (Low power, low noise 3-axis digital geomagnetic sensor)

    • Bosch BME680 (Integrated high-accuracy gas, pressure, humidity and temperature sensor)

    • INMP522 (Ultra-low noise digital Microphone)

    • APTF1616 (Programmable RGB LED)

    • N24RF64 (64kB NFC EEPROM)

    • Three programmable push-buttons

    • N24RF64 RFID/NFC tag (an ISO5693 NFC tag (with 64kb EEPROM)) with antenna connector
  • A flexible NFC (ISO15693) antenna
  • CR2032 coin cell battery holder with coin cell

 

The debug version of the kit (RSL10-SENSE-DB-GEVK) also includes:

 

If you only have the non-debug version, you will not be able to change the default firmware as the debug header is not populated. You would either need to solder an SMD 10 pin debug header or buy a TC2050 10-pin needle adaptor and connect it to the PC via a Segger J-Link board if you wanted to put different firmware on the board. The default firmware is designed to work with the companion RSL10 Sense and Control app (Android or iOS) to demonstrate the low-power use of the board with most of the onboard sensors.

 

Who is it aimed at?

You could buy the (non-debug version of) the kit and just use it "as is" with your mobile device. It would suit various applications including wearables, horticulture and sport. Most of this review covers the non-debug version so that people can understand what is possible and what the limitations are.

 

The debug version of the kit is aimed at developers looking to use the RSL10 SIP module in their low-power designs. Towards the end of the review I will cover the other things that you can do with the RSL10 board if you have the debugger.

 

A comparison of different IoT platforms

This is not intended to be exhaustive, but I have RoadTested a fair few IoT devices over the past eighteen months and each of them has had its own "niche". The table below sets out some of the different devices that I have tested, and their associated "use cases".

 

 

SymbisaParticle Xenon

AVNET

Azure Sphere MT360

HARTING MicaON Semi RSL10
Sensors included

Yes

Light, humidity, temperature, pressure, accelerometer, GPS

NoYes (Light, accelerometer, gyro, temperature, pressure)No (Bosch CISS sensor recommended)Yes (Light, accelerometer, gyro, temperature, humidity, pressure, gas, sound)

Intermediate

transmission protocol?

n/aThread meshn/an/aBLE
Connection to cloud

Built-in cellular modem (2G)

WiFi (Particle Argon) or Cellular (Particle Boron)WiFiMQTT via hardwired Ethernet port
MQTT via mobile device and 3G/4G/WiFi
Key differentiator

Works anywhere, includes GPS

Uses Thread mesh to overcome poor WiFi coverage. Low-power applications
Security – each field device is tied to an Azure accountIndustrial – designed and certified for harsh conditionsSmall size, low weight, low-power
"Use cases"Suits periodic location and sensor monitoring e.g. asset trackingLow power applications
General purposeCondition monitoringWearables, horticulture, sports
DisadvantagesCost per message payload can make it expensive. No "real-time" data.
Large deployments can be expensive due to Particle's cost model.
Can be complex to set upExpensiveNeeds BLE device as intermediary
Cloud platformPrivate cloud only – no public cloud optionsPrivate (Particle Cloud) or public cloud Public cloud onlyPublic cloud onlyPublic cloud only

 

Documentation

The ON Semiconductor website has a web page devoted to the RSL10 kit. One of the links on the "Documentation" section takes you to the main "go to" document for this kit (the RSL10-SENSE-GEVK User Guide (EVBUM2614)). After a brief hardware description, this takes you through six pages describing the process of downloading the debugging environment (which would be confusing for people with the non-debug version). I did think "Oh no. Not another IDE to install and learn", but at least the ON Semi IDE is based on Eclipse, upon which a lot of IDEs are based. The User Guide then describes the RSL10 Sense and Control app before moving on to describe how to install and debug new firmware.

 

There is further documentation available on the RSL10 SIP web page.

 

Generally, I would say that the documentation is quite comprehensive (but slightly hard to follow) except for the RSL10 Sense and Control app which is notably lacking (or at least I couldn't find it).

 

The instructions in the “User Guide” do not quite match the current terminology on the On Semiconductor website. Where the User Guide refers to the RSL10 SDK, the website refers to RSL10 Software Package. It is not very clear that you have to install two "CMSIS packs” (one called ONSemiconductor.RSL10.3.0.534.pack and one called ONSEMICONDUCTOR.BDK.1.10.2.PACK). The Cortex Microcontroller Software Interface Standard ("CMSIS") is a vendor-independent hardware abstraction layer for microcontrollers that are based on Arm Cortex processors. For the purposes of this kit, the CMSIS packs are necessary in order to get the demo example code and dependencies.

 

While looking for documentation, I came across an interesting alternative to On Semiconductor's software - Atmosphere. I haven''t pursued this avenue yet, but I will investigate further.

 

Getting started

NFC tag

If you are deploying a number of these devices in the field, I guess it would be useful to have a quick way of identifying which is which and perhaps automating the discovery process. As delivered, the RSL10 emulates an ISO5693 NFC tag. I guess that there is a way to configure the chip but, if so, I didn't find it. However, I could read the tag easily.

 

 

RSL10 Sense and Control app

In essence, the RSL10 board connects via Bluetooth to a device running the RSL10 Sense and Control app. This is available for Android or iOS. I tested both versions (on my Motorola G6 phone and Apple iPad respectively).

 

You use the app to pick which sensor data you want to monitor (or send to the cloud). You can save this as a “configuration” and give it a name.

 

image

 

You can choose, in the app, whether to view sensor data on the Android or iOS device, or send it using MQTT to the cloud.

 

The screenshot below shows an example of what you see if you choose to view sensor data on the device. Note that the air quality sensor is not available in the default low-power firmware that is installed when you receive the board.

 

image

 

You can switch between "tile view" and "graph view" for each sensor on an individual basis. In the screen below, I have changed the Temperature display to "graph view".

 

image

 

The app allows you to configure an MQTT broker of your choice. There are existing configurations but I think these are useful to keep as examples, so I set up my own connection to CloudMQTT, which has a free plan that is ideal for testing and low-volume applications.

 

You can also choose whether to use a secure connection, which is essential for production environments. For my testing, I just used an unencrypted channel as there was no data of any significance being sent.

 

 

{gallery} Connecting to the cloud
image
image
image

 

I decided to send analyse and graph my data with Node-Red. This involved the following steps (on Windows 10):

 

Install Node.js

 

This can take a while. Sorry for the lack of a screenshot but I already had NPM installed.

 

Install Node-Red

image

Install Node-Red dashboard

image

Connect to CloudMQTT

 

image

 

If you stream your data to the cloud, you will need to know how the MQTT payload is structured. After experimenting with MQTTlens and Node-Red, it seems that each sensor that you select in the app sends a separate MQTT message. The MQTT payload varies according to which sensor(s) is/are involved but each of the sensors sends a “cmd_id” message to identify the sensor and a “cmdVal” message containing the data. These are sent as strings.

 

image

 

In the screenshot above, I had selected the "ALS-NOA1305" (light level) and "Environmental" sensors in the app and you can see that they have cmd_ids of "9" and "E" respectively. If you know the cmd_id, then you can make sense of the data.

 

cmd_idSensorcmdValMeaning
"9"ALS-NOA1305 (Light)String (e.g. "51")51 Lux
"E"

BME680 (Environmental)

(only updated every five minutes

in low-power mode)

String array (e.g. "206,59,0,97")

Temperature 20.6C

Humidity 59% rh

Air quality 0 (not available in low-power mode)

Atmospheric pressure 9.7kPA

"A"

BHI160 (Accelerometer)

(updated every three seconds in low-power mode)

String array (e.g. "0,-10,-27")0, -10, -27 m/sec/sec in x,y,z planes respectively
"G"

BHI160 (Gyrometer)

(updated every three seconds in low-power mode)

String array (e.g. "21,0,980")21,0,980 deg/sec in x,y,z planes respectively
"M"

BMM (Magnetometer)

(updated every three seconds in low-power mode)

String array (e.g. "-197,-328,82")-197,-328,82 micro Tesla in x,y,z planes respectively

 

How did it perform?

Non-debug version

 

The Sense and Control app comes in two versions – one for iOS and one for Android. I shall comment first on the iOS app.

 

I found that, to be able to save a configuration with a (meaningful) name, you have to create it first with the “Enable broadcast” option turned off. If you try and create a configuration “Broadcast” enabled, it saves the configuration but gives it a name such as NewProfile, NewProfile_1 etc. You can delete unwanted configurations by pressing on the little wastepaper icon and releasing. Then a dialogue pops up (see below). Whilst you can save configurations (profiles) in the Android and iOS versions of the app, it seems that the “delete configuration” option in the Android version does not work.

 

image

 

Note that, in its default configuration the RSL10 is operating in low power mode (which means you need to have the RSL10 within a couple of feet of your iOS device). Also, several of the icons on the app do not apply to the RSL10 as supplied because they are intended for measuring or controlling additional sensors and actuators.

 

I set up some flows on Node-Red to process the MQTT data. The first thing I discovered is that everything is published under one topic - and one that is not particularly easy to discover. It turned out to be (in my case "_565AF326-8421-4B66-AAB2-CB8A3EB1704E"). I found that subscribing to all topics (#) got me all the data, which made things easier.

 

{gallery} Node-Red
image
image
image
image
image

 

 

In the default low-power mode, the environmental sensor only updates every five minutes (see Dashboard graphs below).

 

image

 

 

 

I found that, although the app appears to keep running when my iOS screensaver (autolock) kicked in (i.e. it seemed to be streaming data), this stopped the actual transmission of the data to cloudMQTT. Turning off autolock fixed it (although, of course, my iPad battery drained fairly quickly).

 

Although it is called Sense and Control, as far as the (as supplied) RSL10 device is concerned, there is nothing to control. I suppose you could control the RGB LED, but that is not very exciting. In any case, I don’t know how you would discover what topic to publish to since the documentation doesn’t seem to tell you that anywhere.

 

Each RSL10 has a unique "mac_id": (e.g. "60:C0:BF:28:7C:88"), so if you have more than one RSL10, you can filter by that too.

 

 

 

 

Annoyingly, the MQTT output of the device is different depending on whether you use the Android app or the iOS app. Here is the JSON payload (two messages) from the Android app with just the Environmental sensor selected:

 

{
     "token":"OSGatewayActivity",
     "event":"/updates/",
     "mac_id":"60:C0:BF:28:7C:88",
     "cmd_id":"6",
     "cmdVal":"27.86",
     "Temperature_6":"27.86",
     "Source_60_C0_BF_28_7C_88_Temperature":"27.86"
}


and

 

{
     "token":"OSGatewayActivity",
     "event":"/updates/",
     "mac_id":"60:C0:BF:28:7C:88",
     "cmd_id":"E",
     "cmdVal":"279,37,0,98",
     "Environmental Sensor_E":"279,37,0,98",
     "Source_60_C0_BF_28_7C_88_Environmental Sensor":"279,37,0,98"
}


And here is the output (one message) from the iOS app with just the Environmental sensor selected:

 

{
     "cmd_id":"E",
     "mac_id":"60:C0:BF:28:7C:88",
     "cmdVal":"234,62,0,98",
     "event":"/updates/",
     "Environmental Sensor_E":"234,62,0,98",
     "cmd":"","token":"OSGatewayActivity",
     "Source_60_C0_BF_28_7C_88Environmental Sensor":"234,62,0,98"
}

 

This is quite annoying because it means that you would have to have different code in Node-Red (or whatever you are using to analyse the data stream) depending on whether you were using the Android app or the iOS app.

 

I only discovered this when I found that my Node-Red dashboard didn’t work properly when I switched apps.

 

Debug version

 

The Segger J-Link is a well-regarded debugger and the J-Link LITE for Cortex-M is a vendor-specific version for the RSL10 board. It is only licenced for use on the RSL10 board but I did wonder whether it would work on other boards. I tested it on an NXP FRDM-KW41Z board (Cortex M7) and it worked just fine but I leave it up to the reader to decide whether to make use of that knowledge.

 

The main RSL10 circuit board has a row of 2.54mm pitch pin headers (unpopulated). As well as power, these allow access to the I2C bus and one GPIO pin. This would enable you to add different sensors or actuators to your design.

 

Installing the ON Semiconductor IDE and RSL10 SDK

To program the RSL10, you need to download and install the ON Semiconductor IDE and the RSL10 SDK from here.

 

The instructions in the “Getting Started Guide” do not quite match the current terminology on the On Semiconductor website. Where the Getting Started Guide refers to the RSL10 SDK, the website refers to RSL10 Software Package. It is not very clear that you have to install two CMSIS “packs” (one called ONSemiconductor.RSL10.3.0.534.pack and one called ONSEMICONDUCTOR.BDK.1.10.2.PACK). Having done that, I got a warning message about unresolved dependencies. Trying to resolve this by right clicking on the yellow message and choosing “Install required packs” didn’t resolve the problem (whatever it was). Nevertheless, everything still seemed to work OK.

 

image

 

Once the IDE and SDK was installed, it was now possible to tweak the existing firmware. Some of the settings are available through a configuration file (CMSIS Configuration file).

 

image

 

However, I decided to install the “normal power” version of the demo app. This allows you to use the Air Quality Sensor and provides environmental sensor readings every three seconds, rather than every five minutes. I also found that you don’t have to keep the RSL10 right next to the iOS device. Compared with the low-power version, this was a welcome relief – it provided a reliable connection and frequent readings. Compare the smoothness of the readings with the one obtained with the default firmware above.

 

image

I think that this would make a better firmware to supply to people who buy the kit without the debugger.

 

The SDK comes with around half a dozen  examples that you can use and modify.They are written in C and not very heavily commented, so it takes a lot of effort to work out what is going on in the code.

 

Overall evaluation

The RSL10 is a fantastic little device which is perfect for developing wearables and other applications. However, without the debugger, you'll be stuck with the low-power version of the sensor demo application which is a bit disappointing as the main sensors only update every five minutes.

 

The documentation is, on the whole, poor.

 

In addition to not being able to find any documentation about the RSL10 Sense and Control app, neither could I find the source code for the app. In the absence of any documentation, it is hard to see how you could control any additional devices without remaining tethered to the debugger.

 

It appears that the Android app is the poor cousin of the iOS app and some of its functionality does not work fully:

1. You can’t delete profiles

2. Environmental sensor data is not updated unless you reboot the RSL10 board

3. Publishing data to the cloud repeatedly fails due to network connectivity being lost

 

As a result, I gave up on using the Android app.

 

Neither version of the app supports the microphone or the RFID chip. One of the SDK examples supports the microphone and the EEPROM, so you can, at least test them out in "tethered mode".

 

image

 

I plan to investigate connecting additional devices a bit more and see if I can work out how to access them via the app. I will update this RoadTest report after I have done so.

 

In summary, great little device, let down by poor or missing documentation.

Anonymous
  • well you certainly cracked it... with that egg image

  • Thanks Shabaz. My brother was a geologist and they always put a "standard geologist's hammer" in photos, for scale. The RSL10 is just so small and cute, I wanted something to convey that impression in a memorable way. image

  • Thanks Rod

     

    The good thing is that the basic device is great. It would be (relatively) easy to fix the other things. I'm glad you enjoyed the egg cameo!

  • Hi Steve,

     

    Very comprehensive review!

    The egg comparison for size was very cool too : )

  • Hi Steve,

     

    What a great review. I saw this roadtest when it came out but wasn't sure if I could show it off and therefore didn't apply, however your roadtest report explains very well what this product does and can achieve. The shortfalls in documentation and Android support are disappointing but hopefully your roadtest will help ON Semiconductor to improve those areas...after sponsoring the roadtest they should be interested in the findings. The sensors on the board could add so much functionality to many projects. Apart from that I really enjoyed your Node-Red schematics - something I need to look at again on my Beaglebone Pocket.

     

    I have never seen something calibrated before via comparison to an egg - well done on that first.

  • Yes, I agree that if you already have the debugger version you wouldn't want several Segger J-Links kicking around. However, if you then buy lots of RSL10 boards without the debugger, you'll still have to buy a TC2050 10-pin needle adaptor or solder in the SMD 10 pin debug header. I don't see why they don't just provide a needle adapter with the debugger version.

     

    I'll have a go at programming the board with the Particle Debugger.

     

    Thanks

  • I found this to be a useful roadtest. I liked your use of the Node-Red Dashboard for visuals and great spot finding those differences between the IOS and Android apps. Yes, I would totally agree with you. It would be rather annoying having to modify code to accomodate both apps. Also good spot for "Atmosphere". I will be reading through too to try and make out what it does.

     

    I agree totally with your intro and explained things nicely:

     

    If you only have the non-debug version, you will not be able to change the default firmware as the debug header is not populated. You would either need to solder an SMD 10 pin debug header or buy a TC2050 10-pin needle adaptor and connect it to the PC via a Segger J-Link board if you wanted to put different firmware on the board.

     

    But then having used the device and finally getting a debugger, I would probably see things differently compare to you:

    Who is it aimed at?

     

    Esssentially the debug and non-debug are one and the same. Firmware can be uploaded on both. Thus, I would say that the debug version would be my first purchase option as you get the Segger J-Link with the board (and I did not have one at the time) and then if you need more RSL10 Sense boards you purchase the non-debug version and solder in the 10 pin header or get a TC2050 (still not sure why they created this second option, mind you). Otherwise you'll end up with loads of J-Link boards with the debug board option. Hopefully you would agree with the logic here.

     

    Regarding debugging, I would be very intrigued to see if you could get the OpenOCD option to work (assuming you have a OpenOCD debugger like the Particle.io one). Maybe we or others can work this one out.

     

     

    Anyway, thanks for confirming.  I knew it could be done, but with my fat fingers.. "You can delete unwanted configurations by pressing on the little wastepaper icon and releasing." I just had another go on my app and finally discovered that on my phone I literally had to just tap lightly. If I press hardish on the phone screen nothing. So it appears that the icon has a very small tap zone, but it works. Horray!