MyIoT: Infineon Shield2Go Boards for IoT - Review

Table of contents

RoadTest: MyIoT: Infineon Shield2Go Boards for IoT

Author: xukangmin

Creation date:

Evaluation Type: Independent Products

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?: ACS723 current sensor

What were the biggest problems encountered?: The female header pins do not fit, have to use my own.

Detailed Review:

Unboxing

In this box, there are 3 sensors, 2 microcontrollers with on-board programmer, 1 adapter board and 1 Wi-Fi board. 3 sensors are current sensor, magnetic sensor and barometric sensor. They are all working at 3.3V. The adapter board provides voltage level shift for all digital signals. Together you can use this kit to fast prototype IoT applications such as current, pressure and magnetic measurement.

 

Here is a quick overview of these sensors and adapter board.

1 x XMC1100 Microcontroller board –  XMC1100 Boot Kit, features XMC1100 microcontroller (Cortex-M0) with Arduino Header for easy shield connection with detachable J-link debugger

1 x Mini XMC 1100 Microcontroller board –  XMC1100 2GO, mini version feature XMC1100 microcontroller (Cortex-M0) with 2x8 pins ready for bread board with on board J-link Lite Debugger

1 x DPS310 Pressure board – Power on 3.3V level, ultra-high resolution ±0.005 hPa resolution, ±0.06 hPa relative accuracy, range 300hPa – 1200hPa, idea for altitude applications

1 x TLV493D Magnetic 3D Sensor board – Power on 3.3V level, 3-dimentional Magnetic field sensing, ±130 mT range, 12-bit resolution

1 x TLI4970 Current Sensor board – Hall-effect based, Power on 3.3V level, AD & DC ±25A measurement, Accuracy %0.1 FS@ room temperature, 6.25mA resolution

1 x IoT Adapter Board – Voltage level shifter, can hold up to 3 sensors/MCU board

1 x WEMO board – ESP8266 board for Wi-Fi connectivity

 

Assembly

Three sensor boards can be directly plugged in to the adapter board and they can together fit with the microcontroller shield. The other option is using the adapter board and 2GO microcontroller board with 2 other sensors. Overall, setup is extremely easy, plug and play.

 

 

Initial Test

To read each sensor, Infineon provides libraries on GitHub. I install them on Arduino IDE and it’s ready to go.

Here is some sample readout.

Pressure Sensor

Temperature: 23 degrees of Celsius

Pressure: 99698 Pascal

Magnetic Sensor

Reading in x, y, z direction in mT.

X = 0.29 mT; Y = 0.00 mT; Z = 0.20 mT

X = 0.10 mT; Y = -0.10 mT; Z = 0.10 mT

Current Sensor

 

FAIL: 65535

FAIL: 49225

Success: 0.04

 

Note 1): It’s not working out of box with Arduino, you need to install OneWire library.

https://github.com/PaulStoffregen/OneWire/releases

Note 2): It has to be in the Socket 1 so the default SPI settings will work.

Note 3): Unit is A.

 

In general, getting sensors readout is plug-and-play. Infineon did a great job in providing read-to-use Arduino Library and adapters. It generally saves tons of time in prototyping for makers. In later sections, I will try my best to cover two Microcontroller boards and three sensors.

 

Initial Test Summary

Setup with Arduino IDESensor ReadingInterface
Pressure Sensor DPS310EasyPressure in PascalI2C
Magnetic Sensor TLV493DEasy3 axis magnetic field in mTI2C / SPI
Current Sensor TLI4970Need OneWire libCurrent Reading in ASPI

 

 

Test 1 – XMC1100 Microcontrollers

 

For microcontrollers, my focus will be peripherals and ease of use in Arduino Environment. I will test UART, SPI, I2C, Timer.

 

UART was tested using a USB UART adapter connected to a PC. I’m using ComTestSerial for testing. All tested Baud rates work fine. In XMC2GO board, the config file needs a little modification for the pins on the board to work on UART, see note 1.

 

 

SPI was tested using current sensor TLI4970 and digital potentiometer MCP4131. Both MCU boards can read TLI4970 current sensor through SPI. Both can control the digital pot to dim a LED.

 

I2C was tested using another Arduino Board as master and XMC1100 as slave and vice versa. XMC1100 serve "123456" and Arduino will request it and display in the terminal and vice versa. Two XMC1100 boards can work as master and slave at 100KHz, 400KHz and 1MHz.

 

Timer test was done in DAVE, the official IDE for XMC1100 microcontroller. See Dave section below.

 

DAVE is the official building, compiling, debugging tools for Infineon MCUs. It’s free to use. It is based on Eclipse and providing a lot of customized features for simplifying the prototyping and development process. Some unique features include interactive PIN assignment, flow chart of peripheral, code generation of peripheral.

Here I did a simple example to demonstrate timer functionality. It’s able to demonstrate the capability of DAVE. In this example, I use the timer to trigger an interrupt and inside the interrupt I toggle on-board LED on and off.

The only drawback in coding is the code generation, every time you change a setting in peripheral like timer, interrupt, you must re-generate code, building won’t generate code for the changes you made to the interactive settings. It’s trivial but can be annoying sometimes.

Other than this, DAVE seems to be decent for development, all peripherals are well documented.

 

{gallery} Dave IDE Demo

IMAGE TITLE: Flow Chart of Peripheral

IMAGE TITLE: Timer Setting

IMAGE TITLE: Interrupt Setting

IMAGE TITLE: PIN Assignment

IMAGE TITLE: Coding

IMAGE TITLE: Documentation

 

Here is the result of different timer setting viewed in oscilloscope (Interval 100us and 100ms).

 

Summary

 

XMC Boot KitXMC2GO

UART

         Baud 9600

         Baud 57600

         Baud 115200

 

Works In Arduino IDE

Works

Works

 

Works, but need some mods(1)

Works

Works

SPI

        Current Sensor

        Digital Potentiometer

 

Works with Sensor

Works to dim LED

 

Works with Sensor

Works to dim LED

I2C

        100kHz

        400kHz

        1MHz

 

Works as both Master and Slave

Works

Works

 

Works as both Master and Slave

Works

Works

PWMWorks in DAVEWorks in DAVE
TimerWorks in DAVEWorks in DAVE

 

Note (1) :  By default, serial output to debugger only, not to pins on the board, we need to change \Infineom\arm\1.2.0\variants\XMC1100\config\XMC1100_XMC2GO\pin_arduino.h file to allow UART on P2.0 and P2.6. (Add #define SERIAL _ONBOARD 1)

 

Test 2 – DPS310 Barometric Sensor

 

Barometric sensor was tested in the enclosed metal tube. Given the size limitation and to make sure the tube is sealed, the whole testing kit must be put into the tube for proper testing. I use a SD card to record the data every second, and whenever I reach a pressure, I maintained that pressure for at least 20 seconds to compare against the standard. Here is how the set up looks like and the schematics. The circuit diagram is shown as below, Pressure Sensor communicates with Feather M0 Express through I2C while the data is recorded using MicroSD Card Shield.

 

The test was performed in a test lab. Since time is limited, I can only get some feel of the sensor, not very accurate calibration. The sensor ranges from 300 hPa to 1200 hPa. Since atmosphere pressure is around 14.69 psia or 1013.25 hPa. So, to test full range, we have to vacuum the tube to get pressure below 1013.25 hPa.  Standard we used is Paro Scientific Portable Pressure Standard Model 760 as shown below with 0 to 100 psia with 0.01% accuracy. I use a vacuum pump to suck from the tube to get pressure below atmosphere. For pressure above, I simply use a pressure regulator to pressurize the tube.

 

Here is the data I recorded during the test.

 

 

This shows the continuous recording of the data for around 10 minutes. We started from room atmosphere pressure, then below then above. We try to main constant pressure at each point for at least 10 seconds. As you can see the pressure sensor captured pressure changes really well and it is sensitive and accurate. At the end we accidentally over range the sensor by 200% for about 30 seconds, but it still works fine after the pressure drops in its range.

 

Target PointsStandard (Paro)DUT (DPS310)
5 psia5.1317 psia5.14231 psia
10 psia10.4967 psia10.4903 psia
16 psia16.6368 psia16.6296 psia

 

Summary

I tested this sensor in a harsh environment and yet it survived. I’m confident about this sensor and it’s accuracy. However, since the range is a limited to 300 hPa to 1200 hPa, or 4.35 psia to 17.404 psia. It is not a good candidate for lab pressure measurement or flow measurement. But it is an excellent sensor for outdoor altitude measurement. Altitude measurement of this sensor ranges from -1449.98 m to 9163.96 m. And based on its accuracy, the accuracy of altitude can be ± 0.05 m which is insanely accurate for moderate drone navigation or floor level detection.  As a comparison, popular BMP388 Barometric sensor has accuracy of ±0.5 m.

 

 

Test 3 – TLV493D 3DSense, Magnetic Sensor

 

I have to say I don’t have any magnetic field measurement capability to quantitively study this magnetic sensor. Instead I build make two projects to test its behavior.

The first test is using it as a rotating knob. Since the sensor outputs the magnetic fields in 3 axis, if we use a earth magnetic on it and rotate it, values in 2 axis will be changed. And we can use this to estimate how much angle we rotate it.

Here is the circuit diagram.

 

I use an Arduino Pro Mini and a Monochrome OLED Display to display the angles in real time.

Here is the test setup. I printed out a dial pan with degrees and glue the earth magnetic on to it. And then I placed the whole thing above the magnetic sensor and try to rotate it. The OLED will tell me the angle I rotated.

 

 

The sensor is indeed sensitive to the magnetic fields change. I must make the earth magnetic right above the sensor to correctly reflect the angle change. As you can see in the demo, the angle doesn’t exactly follow the dial. That’s due to my hand shaking, slightly off positioning and other issues. However, if you can secure the dial with a constant distant to the sensor this will work really well.

 

 

The second test is a bike speedometer. A bike speedometer use an earth magnetic and a magnetic sensor to count how much time it spends to rotate one circle and output speed of the bike.

 

Here I use TLV493D to determine the time interval between each trigger of the magnetics on magnetic sensor. Basically, I use the square sum in x, y, z direction to get the total intensity of the magnetic field. Once the magnetic rotates over the sensor, the intensity will be above a threshold, then a start counting until next trigger. Then I update a mph value on the display.

 

 

 

Unfortunately, due to the refresh rate of the screen is too low, I couldn’t catch a reading with one hand, but the reading is really close. On the photo above, the actual reading is 6.1 mph, the display shows 5.9 mph. On the other hand, I haven’t fine-tuned Arduino’s timer.

 

Summary

I don’t have scientific tool to quantitatively study the magnetic field value output by the sensor. But I make two tests to show off what this sensor can do. To me, it’s a capable sensor to complete most of the magnetic field sensing and positioning task. I’m sure you guys can do much more things with this sensor.

 

Test 4 – TLI4970 Current Sensor

For current sensor, I did a comparison with ACS723 current sensor at different current value. I know their ranges are totally different, range of TLI4970 is ±50A and range of ACS723 is ±5A, they are not used for the same application, but that's the only sensors I have currently, so please bear with me. Also due to the test equipment limitation, I can only test this sensor up to 3A. The current values I tested are -0.3A, 0.3A, 0.6A, 3A.

The test setup is shown as below. I connect a 24V power supply and a fixed touch-screen load in high current. Measurements are taken by Arduino.

 

 

 

{gallery} Current Sensor Testing

IMAGE TITLE: Current at 0.23651 A, multi-meter reading very stable.

IMAGE TITLE: Current at 0.56418 A, multi-meter reading very stable

IMAGE TITLE: Current at 2.9788 A, multi-meter reading very stable

IMAGE TITLE: Sample measurement data, left TLI4970 in A, right ACS723 in mA.

 

Below is the testing data.

 

{gallery} Current Testing Data

IMAGE TITLE: Current at -0.3A

IMAGE TITLE: Current at 0.3A

IMAGE TITLE: Current  at 0.6A

IMAGE TITLE: Current  at 3A

 

 

TLI4970 has a max range of ± 50 A and 1% accuracy and ACS723 has max range of 5A.  It is reasonable that TLI4970 is much fluctuated than ACS723 in low current. While at 3A, it is smoother. But no matter how fluctuated the current is, it’s still within its spec. They are meant for different applications.

 

Summary

TLI4970 is more suitable high current monitoring, somewhere between 5A and 50A DC/AC will be good to use this sensor. For low current and more accurate requirement, you probably need something else, like ACS723.

 

WEMO Wifi Board

Since it's not a part of Infineon products. I only test the basic WiFi connection and MQTT protocols on this board. Everything works well. The upload process is much much easier than the ESP01 board. I would recommend this board to IoT makers since it's cheap ( aroudn $3 almost half the price of NodeMcu board $6~$8) and easy to work with.

 

Conclusion

I did bunch of tests for all the boards included in the kit. Overall, they performed as expected. They gave me of feeling of extremely accurate and stable. I would recommend them to anyone who needs high accuracy sensor applications. These sensors are little bit pricy but they definitely worth the price. In this journey, I was impressed by these sensors and their easy-to-use libraries. DAVE IDE also looks decent and powerful. Please send me more of these:)

 

Thanks for readings, I hope you can get some ideas about these sensors.

Anonymous