Thursday, November 20, 2014

LPRS eRIC Development Kit - Review


I would like to thank Element14 and LPRS for selecting me for this Road Test Review. This was an interesting and fun road test due to my past experience with the Texas Instruments CC3x00 SimpleLink family, LS Research ProFlex Zigbee and Anaren AIR Zigbee modules amongst others. I was very much looking forward at comparing the ease of use of the eRIC modules as well as the range such modules could give.

The packaging for these module was truly surprising. The box fits everything snuggly inside with almost no space to spare, this is a nice consideration as it allows for easy storage when the kit is no longer needed. The box is made from anti-static cardboard and anti-static foam. The kit contains two eRIC modules, two development boards, two antenna for the specified frequency (433/868/915 MHz),  two type A to Micro-B USB connectors, two 9V batteries and a Wireless Mike memory stick.

P1010206.JPGP1010208.JPG  p1010253.jpgp1010271.jpg
Figure 1. Opening the eRIC Development Kit and displaying the kits contents

The models are location specific, this means that a different frequency is used depending on the country the modules are sent to. Europe models use 434 MHz while North America modules use 868/915 MHz. The modules are easily set apart by the markings on the individual module. The Europe modules have a “4” in the lower right corner while those for North America have a “9”, this can be seen in the picture below.

Figure 2. eRIC module with a distinct “9” announcing its North American designation

First Impressions
After opening the kit it is a simple step to get the kit working to see what the kit is capable of. It is this step that gives the user there first impressions of the kit and modules and aid in deciding where to move forward with such a unit or not.

The onboard demo allows for either choosing a predefined flashing sequence or an echo of the button press of a tester. The predefined sequence is useful in quickly and simply determining the range the modules can handle. To get this demo working it is a matter of 3 button presses on each development board respectively. This is a simple and easy process, button #1 is pressed and held for 2 seconds, LED #3 & #4 will flash twice and then either button #2 (transmitter) or #4 (receiver) is pressed to choose the functionality that module is to take.

Figure 3. Test buttons located on the left side

Hardware overview
The eRIC modules are encased in a distinct gold plated RF shielding can with an opening for the u.fl connector and have 22 gold plated connection points. The connection points allow for the modules to be fully and easily used for a vast array of applications. The modules on the uC are also fully accessible allowing for high speed communication over SPI and I2C as well as lower speed communication over UART. There is also the ability to use the  GPIOs, ADCs and WDT all of this makes the eRIC an easy module to integrate into most projects. With 22 connection points at standard 0.1” pitch the module can easily be used with standard headers and breadboarded if needed. The different modules (North America vs. Europe) are easily distinguished from the number after the module’s eRIC marking.

Figure 4. Development Kit with eRIC 9 module and Antenna (Battery not present)

Development Board
The modules fit easily and snugly into the development board and provides all necessary connections to the modules peripherals. The boards allow for a module to be soldered to the board or to use those pads as permanent test points. The development boards also provide a method to program the modules either through USB or through JTAG. There are 4 buttons to use for GPIO input and 4 LEDs for GPIO output allowing for crude debugging or program testing. Also included on the development board is an SMA connection for an external antenna. The antenna has been previously matched removing any need for set up by the end user. There is also a variable resistor for use with the modules accessible ADC. The on board battery connector allows for the development kit to work remotely and be a prototype substitute for a planned product.

The choice of battery is interesting due to its lower mAh (~500 mAh) compared to that of a AA battery (~1500 mAh). Considering the voltage regulators need to reduce the voltage from 9V to 3.3V instead of 4.5V to 3.3V the efficiency would definitely be lower. At the same time the use of a 9V battery allows for one battery to be used in a more compact form.  Since this is mainly for development this shorter run time would be acceptable.

easyRadio companion software
The kit comes with easy to use test software. The software includes easy configuration of all the basic modules wireless systems. These systems include UART baud rate, transmit power level, desired channel (frequency) as well as the over the air data rate. All of these settings allow for easy testing of the module in desired scenarios. This may include how the modules may interfere with or be disturbed by other systems, what is the optimal data rate so as not to lose data packets. Also included in the software is a test tab allowing for selecting high/low side and modulated carrier allowing for further testing of the RF signal with other systems. Also available in this tab is the ability to get the module version and the raw data being returned from the modules.

2014-11-18 01_04_21-Program Manager.jpg2014-11-18 01_06_09-Greenshot.jpg2014-11-18 01_05_39-Greenshot.jpg2014-11-18 01_06_26-Greenshot.jpg2014-11-18 01_06_41-Greenshot.jpg2014-11-18 01_07_16-Greenshot.jpg
Figure 5. The six screens viewable on the easyRadio Companion Software

The last tab allows for over the air transmission. This tab has an option for repeated sending at a rate of 1Hz as well a for a local echo. The one thing missing would be the ability to send large quantities of data in this test method so as to see what limits your unique situation encounter.

The modules come with what LPRS calls eROS (easyRadio operating system). This is a simple “operating system” to allow for a greater use of the modules subsystems. There is a large API (~100 functions) that allows for setting up the wireless, the UART, SPI, ADC, clock speed, interrupts etc. I have tested some of these calls and they seem to work with little issue, and it really helps to reduce the setup and prototyping stages.

The modules are coded using CCS from Texas Instruments and as this is not a foreign IDE there was little trouble using that as well. The code uses a predefined linker file as there is a bootloader on the modules that needs to be accommodated for. While this allows for security for LPRS’ code it makes coding slightly clumsy, its not a showstopper but it has some drawbacks. Over all the API it well defined, easy to follow and gives a lot of control of the module.

Some basic testing was conducted with these units to see what type of range they have (a Spectrum analyzer would be awesome Element4… wink, wink). Since this is supposed to be a IoT module and presumably used for sensor networks there were two basic test done. The first was to place one unit  transmitting in one corner of a house while walking around with the second to determine when bits in the sequence where skipped. In a standard North American house both the the main floor as well as the basement where traversed with no missing bits in the sequence. The second test was a line of sight this was done by placing the unit first at shoulder height on a plastic stand and then on the ground transmitting. Again the second unit was receiving and was used to look for missing bits. The first test resulted in approximately 165 meters while the second test resulted in approximately 110 meters. While these numbers may seem small for the size and power consumption these are respectable numbers. Lastly both antennae were removed and as expected barely a meter out there was no longer any reception.

Comparison to CC3x00
As I have just completed a road test of the CC3x00 SimpleLink family it would be somewhat acceptable to compare at least the control of both products. For the most part the CC3x00s are a lot more complex and take longer to get up and running. Even with their added functionality they are more complex over all and harder to use than the eRIC modules. That being said both modules have their place in the IoT arena. For small sensor networks that could then relay information back to a single point the eRIC modules would be sufficient. However, for anything more complex I would suggest a CC3x00. Part of the reason for this is the lack of protocol on the eRIC modules. All communication is done via broadcast and therefore all addressing, message type would need to be implemented by the end user. While some will say this allows for flexibility it also can slow down some development.

Price point comparison vs features
For the price ($25) of these modules (not kits) they deliver a lot. They are easy to use, simple to set up and work out of the box. In comparison to the CC3100/CC3200 ($34/$23) they would be lacking a programer as at least one of them includes one and the other for an extra $15 it would be included. The eRIC kit on the other hand is $190 for a kit that only includes two modules any extra modules would need an antenna as well as a way to connect to the rest of your project, I’m not sure the extra $120 is worth it for the simplicity in the software.

Original post on Element14 can be found here

Wednesday, November 19, 2014

TI Wi-Fi CC3200 LaunchPad & CC3100 BoosterPack - Review


I would like to thank Element14 for the opportunity to test these development kits and get the chance to see what they are capable of. These kits were a lot of fun to work with and were well suited to the project I was working on. Most of my work was focused on the CC3100 Boosterpack mounted on the MSP430F5529 as can be seen from my project. Towards the end I was working to migrate the code from the CC3100 to the CC3200 and generally did not find this to complicated. I will outline all of this as I go through my review.

The boxing for both the CC3100 and the CC3200 were similar and were in the standard Texas Instruments style. This has over the years made their boxes smaller and less elaborate, while some may find this unattractive it definitely helps when you are finished with a kit as it takes up less space in storage and ALL their boxes fit nicely on top of each other, THANK YOU Texas Instruments!


Figure 2. Unboxing the CC3100 (left) and CC3200 (right)

Both kits came with a USB cable, the CC3100 uses the cable for optional alternative power and the CC3200 it to program and power the board. Both boards can be powered from alternative sources but incase these are not available the USB can be used. Jumpers on both boards are used to choose the power source being used and if by accident (or on purpose) the wrong setting is selected there is seemingly no harm done to the board.

Hardware Overview
The boards are the usual elegant red Texas Instruments PCBs. The boards are well labeled for ease of use and follow the BYOB specification allowing for ease of use with any Launchpad as well as integration with other Boosterpacks. The layout of the CC3100 and the CC3200 are similar except for the added programmer on the CC3200 PCB. Both units have a connection point for external power. The CC3200 has a connection point for 2xAA batteries to power the unit while removed from a PC or power mains, the CC3100 has a USB connector to power the unit for cases where it is used with a 20 pin Launchpad and is unable to get the power otherwise needed.

Figure 3. Layout of the CC3100 (left) and the CC3200 (right) modules

Both the CC3100 and the CC3200 have the ability to attach an external antenna via a hardware modification that includes moving a capacitor from one location to another. There is also the ability to test signal power and integrity from an inline U.FL connector. Unfortunately I did not have the correct antenna to test this functionality on these units but it would have been interesting to see if an external antenna would have helped the connectivity issues seen with this board. One nice touch to the CC3200 is the addition of onboard sensors, being a stand alone unit these added sensors allow for out of the box testing with the added ability to send real data over the network.

Software/API Overview
The software that accompanies the CC3x00 is well developed and documented. The CC3100 has examples for every use of the module allowing someone to quickly and easily get a project started. Since the CC3100 is predominantly paired with the MSP430F5529,there are examples for most if not all modules and functions included in this uC making getting a project started that much easier. For this reason alone the CC3100 + MSP430F5529 would be a very good place for anyone wanting to get further into Wi-Fi projects. As I only used the CC3200 in a limited capacity I can not fully coment of the number and usefulness of example code for the peripherals.

An interesting feature for the CC3100 is the ability to write code in Visual Studio and then use the CC31XXEMUBOOST to upload the code to the CC3100 and run the code. This allows those familiar with that environment as well as that form of programing to also easily access embedded Wi-Fi device programing. Again for this there are numerous examples to help someone get started on a project in such a manner.

The new demo code (version 1.0.0) removes all login information to a separate file making it easier to share and collaborate on projects without sharing your specific security information. On the topic of security, Texas Instruments has implemented an interesting mechanism to easily add embedded projects to your Wi-Fi network. SmartConfig uses either an Android or iOS app to send all the information (optionally) in an encrypted format, thereby removing the need to hardcode in the network the system will be used or or the need to wire in an external keyboard or some other entry device. Also, with regards to security, it should be noted that some of the ness capable uC such as the MSP430G2553 can not handle Wi-Fi security such as WAP, this is mainly due to memory limitations on the uC.

The only real downside to this module is with regards to the communication protocol. The SPI/UART commands to control the module are not published and therefore if you wanted to move from a Texas Instruments uC to an unsupported uC the hardware abstraction layer would need to be rewritten for this. That being said, Texas Instruments has gone one step further and has tried to outline how this change would be done. I have not attempted this or looked into it in great detail but I am assuming even with this it would not be as simple as simply sending the needed SPI commands for the few functions you may be interested in.

Getting started
I started of using the CC3100 as a replacement for the CC3000 and found this board from the start to be a lot simpler to use. While they both follow the both basic standards the CC3100 has a more logical and well thought out code style as well as a more complete firmware. To get this Boosterpack working I chose to use the MSP430F5529LP. The main reason for the MSP430F5529LP is the amazingly long list of examples provided. There appears to be a demo for each function of the CC3x00 which is very helpful in getting started and getting a huge boost on what ever project it is you may be working on. There is a caveat to this list though, there are a few demos that exceed the code limit for CCS and therefore can not be run on the MSP430F5529 (I have run onder versions, V0.52 I think, with no issue, so somehow from 0.52 to 1.0.0 something changed and it no longer works).

I did not try all the demos for a few reasons. There are approximately 30 code demos and they each have their own quirks to get them running. Some need just to input your WiFi information others may need a bit more, there are others that need a second module or even hardware  changes. Every demo is listed in the user guide with clear steps how to get them up and running.

Creating a Project
I signed up to for this Road Test to help work on a project I was interested in. The project was to read in data from a temperature and barometric pressure sensor and then in real time plot the data. The project used the TCP Demo and then modified the code one step at a time until the current state of the project was achieved. As the project functionality is outlined in the linked blog I will describe more of how the project evolved and the challenges faced getting to the state it is currently at as well as the useability of this boosterpack.

Having started with the CC3000 and finding that I could not send any packets due to some erroneous error flag I jumped at the chance to try the CC3100. Having looked over the CC3000 code for a while the CC3100 code was not too difficult to get into especially since it seemed to follow a similar yet more natural progression. The commands are well named and for the most part self explanatory. Adding functionality to a demo is relatively ease due to the well documented logically laid out code

I started by just trying to connect to the Wi-Fi access point, as I was in a basement I found this to be my first major hurdle with the CC3100. The laptop I was working on was registering low to slightly poor connection (~ -78dBm) but it was still functioning reasonably, the CC3100 on the other hand was having a very difficult time connecting. I tried various orientations and locations (moving even a few centimeters can have a large effect). I found this to be one negative difference from the CC3000, the CC300 had less of an issue connecting than the CC3100, while I am not sure if this is due to a change in antenna or some other hardware on the boards but it was noticeable in my case.


Figure 4. Comparison of the CC3000 (left) with the CC3100 (right)

There was also an issue sending data to a remote server as the code would always return an error while sending the data. While Texas Instruments took the stance that there code was indeed correct, data was infact being received at the server side of the connection. For this testing Hercules was used and proved to be a very easy and reliable piece of test software. After stepping through the code it was clear to me that a conditional statement was not set correctly, changing this no longer produced an error but still allowed for code to be transmitted correctly. If there are some potential error cases that are no longer being caught I can not be 100% as I did not step through every case.

TCP socket application - Version 1.0.0
Device is configured in default state
Device started as STATION
Connection established w/ AP and IP is acquired
Establishing connection with TCP server
Connection with TCP server established successfully
Error while sending the data
Started TCP serve

Figure 5. Message received from CC3100 displaying transmission error

While building up the project I also encountered hanging issues. When attempting to connect to the access point (AP) the software would somehow jump into an infinite loop that there was no way out of. After reinstalling the SDK a few times which would temporarily help the issue but only for so long. Trying to tell the debugger where to jump too, to hopefully break out of the loop, also resulted in going back to the same infinite loop. This issue was finally resolved by uploading new firmware to the board via the  CC31XXEMUBOOST. I believe the CC3100/CC3200 was released a bit too early as there were a lot of issues on the e2e forums that seemed related to issues you would not find in a more mature product.

Figure 6. CC3100 Mounted on CC31XXEMUBOOST

In summary the SimpleLink Wi-Fi family is a good and easy place to get into Wi-Fi. All the hardware and software are well labeled and documented. There are numerous examples on almost all uses of the code as well as hardware. The support for these boards is very good and is such that I have not seen on many other manufacturers forums. I would therefore highly recommend these units to anyone wanting to get started or move forward with Wi-Fi.

Related Issues

Original post on Element14 can be found here