NXP Rapid IoT Prototyping Kit - Review

Table of contents

RoadTest: NXP Rapid IoT Prototyping Kit

Author: sauravshandilya

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?: Broadcom Wiced sensor. Did not find boards providing range of sensors, touch, buttons, LED BLE, thread all in a board nicely integrated and well packaged.

What were the biggest problems encountered?: 1. Lack of small sample code to build upon. Some sample code is provided but expected more sample code using each blocks. 2. Developer features in Atmosphere IDE lack useful blocks such as logical blocks, arithmetic blocks 3. Power consumption of device should be lower. Typical power consumed by the device was around 90 minutes.

Detailed Review:

A lot of fellow road test reviewers and NXP team has meticulously explained the unboxing, Kit features, SW installations and usage step, using sample codes, plotting graphs which can help readers get started with the kit. Here is a link to NXP Rapid IoT official page which I used for learning everything.

 

I would like to take this opportunity of reviewing the Kit to explain to you how Rapid is NXP Rapid IoT development kit for making an application. I will explain my experience, challenges faced and insights gained while developing my own application using the kit.

 

Overview:

The kit comes bundled with hardware such as

  1. 3-axis Accelerometer, Magnetometer,
  2. 3-axis Gyroscope,
  3. Pressure,
  4. Temperature and Humidity,
  5. air quality (CO2),
  6. ambient light,
  7. 4-touch switches,
  8. 4 push button switches,
  9. Buzzer
  10. RGB LED,
  11. BLE interface, and thread for communication

 

All this powered by an ARMcortex M4 core based NXPs designed Kinetics series microcontroller. The kit can be programmed using an online development environment called Rapid IoT Studio provided by NXP. There is also an option of using MCUexpresso for developers who love embedded C and bare bone microcontroller programming. It was first time with NXP microcontroller and considering the time factor, I choose the easier path (atleast what it seems to be when I started with the kit image) of using an Online Rapid IoT Studio IDE having features similar to drag-drop without requiring to write the C-Code. It uses Atmosphere IoT platform to supports feature of blocks, dashboard to deploy our application on cloud and visualize data, support for connecting through android and iOS app via BLE to visualize data and control the device.

 

The Story:

The kit came with Out-of-Box demo code installed, which gives the feel of using all the hardware present in kit. Rapid IoT studio has few sample projects which are useful to start with. After running samples experiments and tinkering around with mobile apps and dashboard in initial days, I thought of using the kit to write an application of my own. Being a person who drink less water and aware that I should not do this, I wished I could get a smart bottle which could remind me of drinking water at regular intervals and also help me keep a log of my drinking habit over a duration.

 

There are existing mobile applications where will have to manually go and log when we drink water, but those never work for a lazy person like me. Therefore I came up with an idea to make a system where Rapid IoT kit will be mounted on a water bottle, reminding me hourly to drink water and keep a log when I drank the water without me actual doing any work (except drinking water).

 

My Experience:

Once the application was finalized, I broke down the applications into smaller sub-tasks like

  1. Reminder using buzzer
  2. Option to snooze/stop buzzer (if I am busy at work)
  3. Detecting if I drank water
  4. Counter to keep track of how many times I drank water

 

1. Reminder using Buzzer and snooze/stop

 

The buzzer should remind me of drinking water every hour. Seems easy so I added the interface to turn off buzzer using a user button or a tap. Below is block diagram:

image

 

The block uses a switch to trigger an interval time connected to a Buzzer. Every time switch is pressed, buzzer is turned off and timers starts again. On lasp of time interval, buzzer turns on.

 

I then modified the experiment to include feature of Tap detection. Tap detection is a feature provided over accelerometer module. When we tap anywhere on the Kit, tap detection happens. So I wanted to turn off buzzer by just tapping the kit without actually requiring to push the button. Below video shows the working.

 

2. Detecting if I drank water

This was accomplished using Accelerometer data. Kit was mounted on a bottle as shown in figure below. After conducting several test a proper threshold value was selected which signifies bottle was picked up for a duration in proper alignment (ensuring it is drinking position and not refill or bottle drop).

 

image

image

 

Block diagram for detection of acceleration value in all three axis is shown in figure below

image

The data for acceleration in all axis was also plotted on dashboard to help in selecting a proper threshold. One sample image is attached below.

A video of showing acceleration value through mobile app is attached belowimage

 

 

3. Counter to keep track of how many times I drank water

Started with using two user switches, Top Right for counting up and Bottom Right for counting down(for case where switch is pressed more than once by mistake). The idea was to initially to have a switch which the user presses after drinking water to make a log. Next step was to use Tap detection to turn off buzzer and increment count. After which based on accelerometer data, count will be incremented. The figure below shows switch based increment logic

image

The video below shows the implementation of the counter using switch.

 

Implementation using counter was shown in Reminder using Buzzer and snooze/stop section above.

 

4. Integration

 

As already evident all task till now was implemented individually and finally, it was thought to integrate them together. This eventually turned up to be the most challenging because of certain feature limitations and/or lack of proper understanding of Rapid IoT studio. I will discuss challenges in a separate section below.

 

At time of writing this review, I am able to integrate the accelerometer and tap counter interface to log when water intake is made. The part of using buzzer as reminder at regular interval and logging count of time water intake is made based on accelerometer data is not working as expected. Also i wished to make it as part of out-of-box demo, but putting the feature needs more understanding of way blocks such as display page controller, labeled Icon, functions are implemented and used. The current implementation state is shown in the figure below.

image

 

     Cons:

  • Rapid IoT Studio: The Drap and drop look simple and easier way to program. However, there are concepts of trigger, event and abilities for blocks are not well explained. The Atmosphere developer document does not explain these concepts properly. Sample projects provided by NXP is just ok to play around. They need to provide more experiments/document/video explaining the concepts which developers like us can use to make application rapidly.
  • Development cycle was more because of the reason stated above.
  • The absence of various blocks like logical operators (AND, OR), arithmetic operations between two variables is not present, if-else construct, options to pause time.
  • There is no way (atleast what I could find) through which we can import projects and module features while integrating multiple projects. All module, its event and properties needs to be redefined. It would be really useful if there could be an option to atleast copy blocks across project or include one project into another.
  • Battery life is less as it is powered using 600mAh battery. For my application, it was a serious limitations. But as this is a prototyping kit with lots of peripherals and small form factor, it will be harsh to expect for more juice.
  • There are clicks boards available for building upon the Rapid IoT kit, but any hardware other than click board can not be attached. No GPIO or headers are exposed.
  • Sensor response time was very low. Found this while initial testing with temperature, Air quality and Ambient light sensors.

 

     Pros and Insights:

  • A debug print block is provided which can be used printing on UART terminal - very handy option for debugging and was used as shown in figure below

image

  • We can edit the C-code as per requirement by using the code editor present in Rapid IoT Studio. For example, the accelerometer gives a positive and negative value for each axis. For my application and using features of Rapid IoT studio it was difficult to handle signed values. Therefore I modified the code to convert a negative value to positive along with a multiplication factor. Highlighted code section in figure below shows how this can be done

image

  • Form factor of board and packaging was one of the best I have seen. It is ready to be deployed with software implementation. For Hardware related changes, it is only possible through click boards available for purchase.

 

Conclusion:

  • Good kit for POC and prototyping
  • Development is not really rapid but once we understand underlining concepts of module, events, triggers, abilities and code implementation feature of Rapid IoT Studio, large number of IoT application can be developed given the feature of AWS integration, Atmosphere cloud platform and easy to deploy mobile application.

 

Vote of Thanks:

I wished I could have completed and shared a full demonstration video with the community here. However, it was a great learning experience and I am still working on the application hoping to complete in another week. This was my first experience in road test conducted by Element14 and I thoroughly enjoyed it. I would like to thank the Element14 team for organizing such initiative and NXP for designing and providing a nice platform to tinker.

Anonymous