The participants of the The Internet of Holiday Lights RoadTest Plus received these three devices:
- Infineon Lighting RGB LED Arduino Shield
- Arduino Yún
- Arduino Uno
- Evaluation Type:Evaluation Boards
- Application you used the part in:[Christmas Wreath of Things] Internet of Holiday Lights - summary
- Was everything in the box required?:Yes - complete
- Comparable Products/Other parts you considered:There are plethora of other IoT capable development boards and RGB drivers
- What were the biggest problems encountered?:USB connection to PC of the Arduino Yún
Scoring
Product Performed to Expectations: | 7 |
Specifications were sufficient to design with: | 10 |
Demo Software was of good quality: | 9 |
Demo was easy to use: | 7 |
Support materials were available: | 10 |
The price to performance ratio was good: | 10 |
TotalScore: | 53 / 60 |
Infineon Lighting RGB LED Arduino Shield
This board is tagged as an RGB driver shield. But it is actually a fully capable microcontroller all by itself.
The manual for the evaluation board says 'XMC1200 Microcontroller Series for Industrial Applications'.
And that's no lie. The board hosts an Infineon XMC1202. One of its peripherals is 'Brightness Color Control Unit (BCCU) for LED lighting control'.
When using it as an Arduino shield, your sketch talks to the controller using i2c.
But since the shield sports a debug header, you could just as well program the on-board controller.
shabaz has written about that in his RGB LED Shield from Infineon - Getting Started Guide.
Using the board is not difficult, but I think Infineon can do a better job explaining the configuration parameters and the limits calculations.
It is all understandable if you read their documentation for the shield and inspect the schematics a few times.
A nice narrative explanation of the concepts wouldn't be bad though.
However, I give Infineon an A for the completeness of specifications and principles of LED driving operation - and the elaborate explanation of that part.
Several road testers have made a library for the board. Compare the Infineon RGB libraries that spawned from the Internet of Holiday Lights
A watch-out: the shield uses D14 and D15 for i2c.
This can be an issue when this board is stacked on other shields that don't have these two 'newer' pins (e.g.: some of SparkFun and Velleman shields).
I had to do some bodge-wiring in my design:
And a second watch-out. This board (at least my board) emits a high frequency pitch when driving the leds. The pitch changes depending on the intensity.
This can be annoying if you're using it in a silent place - and your dog may complain.
Arduino Yún
I'm not going to write down the capabilities of this board. I would only repeat what thousands of other reviewers have done before.
I'll just tell about my first experiences with the Yún.
I have skills in both Arduino development and Linux. So the only step I had to talke was to learn how to link the two worlds and how to get each of them connected to the PC.
Making the sketch world talk to the Linux world was so simple. I loaded the Bridge TimeCheck sketch, inspected it, and done.
It's all self-explanatory. Also the other interaction principles explained on arduino.cc Yún getting started page worked straight away.
Getting the Yún up and running and connecting it to my home WiFi was also easy. Follow instructions, and done. Works.
The same for telnetting into the Linux part. I used the instructions for Putty and was on the Linux prompt in minutes.
I've used the ATMega timer interrupts in my sketch. It worked well with calling the Linux part. So they really run beautifully in parallel.
The USB connectivity is another story. It's been playing up from the beginning that I installed the Yún and is continuing to be a * in the *.
Disclaimer: I have a recent PC, recent OS and the drivers all installed ok.
But at regular times, the Yún disappears from the radar. And it doesn't get re-listed when I unplug it and plug it in again.
Even rebooting the PC does not help. And I have pushed all possible reset buttons on the Yún to no avail.
The symptoms are these:
- the Yún is not visible in the IDE.
- there's no COM port assigned to a Yún
- the Yún appears as a problematic device in the device manager.
Fixing it requires one or two steps. I haven't figured out why it is sometimes one and sometimes two steps.
If I select the Choose Driver from the device manager, sometimes the Arduino Yun driver is listed.
In that case I select that driver, push next, and the Yún is back in the USB world.
Sometimes the Arduino Yun driver is not listed. Then I have to first select the standard Port driver first.
After that I can go back into the 'flagged device', and the Arduino Yun driver is available.
Upon re-selecting that, the Yun is USB-able again.
So yes, strange. May be related to my PC - but still, it's a normal recent one, and it happens.
And what's that with the USB and Ethernet connector position on the Yún? They interfere with almost every shield in existence.
Either the pins of your shield are to short. Or when they are long enough, the two metal connectors shortcut something on the underside of your shield. Why?
None of my shields I have at home fitted (SainSmart, Adafruit, Velleman, Infineon).
The internet of things talks
I drove the memory use of the Yún to red when I made a talking sketch.
I used the Yún to read out aloud the payload of messages I subscribed to .
Sketch uses 28,454 bytes (99%) of program storage space. Maximum is 28,672 bytes.
Global variables use 1,208 bytes (47%) of dynamic memory, leaving 1,352 bytes for local variables. Maximum is 2,560 bytes.
But it works. It took me 1 hour to adapt the TSS example to the Yún and latest IDE release, and 3 hours to bring the memory under the maximum.
Here you can hear the Yún shout out my name once, and peteroakes name twice.
The amplifier is a Science Fair 200 in One kit. That is my tribute to Radio Shack. A company that I care for a lot. Tandy: respect forever!
Early sketch (Works, there's a delay sometimes - but it can be a start point to get you going. You go and debug it please):
// needed for MQTT and Process lib #include <Bridge.h> // MQTT includes start #include <SPI.h> #include <YunClient.h> #include <IPStack.h> #include <Countdown.h> #include <MQTTClient.h> #include <TTS.h> TTS text2speech; // speech output is digital pin 10 YunClient c; // replace by a YunClient if running on a Yun IPStack ipstack(c); MQTT::Client<IPStack, Countdown> client = MQTT::Client<IPStack, Countdown>(ipstack); bool messageChanged = false; // start MQTT functionality ==================================== void mqttInit() { // Ethernet.begin(mac); // replace by Bridge.begin() if running on a Yun Bridge.begin(); // // Serial.println("MQTT Internet of Holiday Lights example"); connect(); } void messageArrived(MQTT::MessageData& md) // this handler is called when a subscribed MQTT message arrives { MQTT::Message &message = md.message; text2speech.say((char*)message.payload); // Test_Speech(); client.yield(1000); } void connect() // connect to the MQTT broker { ipstack.connect("iot.eclipse.org", 1883); // // Serial.println("MQTT connecting"); MQTTPacket_connectData data = MQTTPacket_connectData_initializer; data.MQTTVersion = 3; data.clientID.cstring = "1cfee8dd0afc_yun"; //(char*)_id; client.connect(data); client.subscribe("element14_IoT", MQTT::QOS1, messageArrived); } void sendAliveMessage() { if (!client.isConnected()) connect(); MQTT::Message message; message.qos = MQTT::QOS1; message.retained = false; message.dup = false; message.payload = (void *)"jancumps"; //(void*)payLoadBuf; message.payloadlen = 8; // strlen(payLoadBuf)+1; client.publish("element14_IoT", message); client.yield(1000); } // end MQTT functionality ============================== /* void Test_Speech() { // text2speech.setPitch(6); //higher values = lower voice pitch // strcpy(printbuf, "Hello master! How are you doin?"); text2speech.say(printbuf); /* delay(500); text2speech.setPitch(1); //lower values = higher voice pitch strcpy(text, "I am fine, thankyou."); text2speech.say(text);*/ /* } */ void setup() { // Serial.begin(9600); // delay(10000); // give me time to start the yun monitor // MQTT related tasks mqttInit(); } void loop() { // non timer related functionality comes here // static unsigned int uCounter = 0; sendAliveMessage(); delay(60000); // uCounter++; }
Arduino UNO
The most reviewed gizmo in the world. I didn't use it in my final design.
It had prototyping duty.
All not-IoT related parts have been prototyped on the UNO when the Yún was already ripping away on the Internet of Things.
Top Comments