Posts | Comments

Planet Arduino

Archive for the ‘News’ Category

People who were subscribed to updates on the Alexa Connect Kit (ACK) would recently have received an email informing that this kit is now available for sale. Last time we covered the ACK was back in September of 2018, the ‘release’ moniker meant ‘preview’ and there wasn’t any hardware one could actually purchase.

Over a year a later it seems that we can now finally get our grubby mitts on this kit that should enable us to make any of our projects Alexa-enabled. What this basically seems to mean is that one can spend close to 200 US dollars on an Arduino Zero and an Arduino shield-mounted WM-BN-MT-52 module from USI (though not listed on their site, but similar to the WM-BN-BM-22?) that integrates a 192 MHz Cortex-M MCU and a WiFi/Bluetooth module, as summarized on the Amazon Developer page for the ACK.

Getting Started with ACK

The idea behind the kit is that one uses the Arduino IDE to program the Cortex-M0+-based Arduino board with the application firmware. The fully assembled kit will listen on the network for any service discovery broadcast from an Alexa app (on a smartphone or similar), responding to such a broadcast with a summary of its capabilities, following the Smart Home Skill API protocol. This is essentially the application of mDNS with DNS-SD (Service Discovery).

After the Alexa app on one’s smarthome has found all Alexa-enabled devices, you can then use the Alexa voice interface to control those devices, such as turning them on and off, or adjusting parameters like the speed of a PWM-controlled fan. The Amazon Developer site provides an overview of what kind of devices are supported by the Alexa system for reference.

Welcome to the Amazon Walled Garden

For those who already rushed out to get an ACK, they will have run into the unfortunate realization that the ACK is not merely a fun piece of hardware to play around with. By purchasing it, you are literally signing up to become a part of the Amazon ecosystem, starting by registering the Amazon Developer Account. As noted by the intrepid reporters over at The Register last year,  part of the cost of the ACK is you paying for the Amazon cloud services that enable the ACK to work, with Amazon’s Alexa servers doing the heavy lifting of interpreting customer utterances for you.

The WiFi/Bluetooth module that one gets with the ACK also seems rather secretive, with no datasheet or detailed information available on the internet at the time of writing. It appears to be limited to 802.11 b/g/n (2.4 GHz single-band) WiFi with no mention of anything newer than Bluetooth 4.1 support, meaning it misses out on the energy-saving features in Bluetooth 5 (and BLE).

So then there is the cool thing on one hand that with a bit of Arduino wrangling and the use of the Alexa Android app (or that Echo in your living room), you can make that smart toaster you have always dreamed of, allowing you to burn toast with a simple voice command. On the other hand it means that you fully rely on Amazon’s Alexa infrastructure and the continued existence of ACK support.

We Have Been Here Before

Those with a few years of Internet-of-Things news under their belt may remember Apple’s Homekit, which from a distance at least looks to be a carbon copy of the Alexa Connect Kit, with Apple-blessed hardware and SDK that people would have to integrate into their product to enable Smart Home goodness. Homekit is now pretty much on life-support.

Apple Homekit on iPad, iPhone and iWatch.

Apple decided to throw in the proprietary towel last year, instead joining the Thread Group, which was started by Google and ARM, and which focuses on creating a low-power wireless networking protocol, suitable for connecting smart devices within the home. Thread is built around IEEE 802.15.4, which specifies a low-rate wireless personal area network (LR-WPAN). This same standard underlies Zigbee. Networks supporting this standard are low-power and feature data rates of <1 Mb.

The skeptical view then is that WiFi-based home automation like what ACK offers is beating the same dead horse which Apple seemed to have been beating with Homekit, merely with Alexa instead of Siri. The same skeptic is also likely to note that the Thread protocol is not the open and free panacea some may see it as, with one having to be a (paying) member of the Thread Group to be allowed to have any input on its development, and to be allowed to ship Thread-enabled devices. But if you’re still itching to jump on the Alexa-enabled bandwagon and can live with the spectre of Amazon rule, the door is now open.

While the Arduino has a very vocal fan club, there are always a few people less than thrilled with the ubiquitous ecosystem. While fans may just dismiss it as sour grapes, there are a few legitimate complaints you can fairly level at the stock setup. To address at least some of those concerns, Arduino is rolling out the Arduino Pro IDE and while it doesn’t completely address every shortcoming, it is worth a look and may grow to quiet down some of the other criticisms, given time.

For the record, we think the most meaningful critiques fall into three categories: 1) the primitive development environment, 2) the convoluted build system, and 3) the lack of debugging. Of course, there are third party answers for all of these problems, but now the Pro IDE at least answers the first one. As far as we can tell, the IDE hides the build process just like the original IDE. Debugging, though, will have to wait for a later build.

We were happy to see a few things with the new IDE. There’s some autocompletion support, Git is integrated, and there’s still our old friend the serial monitor. The system still uses the Arduino CLI, so that means there isn’t much danger of the development getting out of sync. The actual editor is Eclipse Theia. People typically either love Eclipse or hate it, however, it is at least a credible editor. However, Theia uses Electron which makes many people unhappy because Electron applications typically eat a lot of resources. We’ll have to see how taxing using the new Pro IDE is on typical systems with normal workloads.

On the future feature list is our number one pick: debugging. They are also promising support for new languages, third party plugins, and synchronization with the Web-based editor. All good features.

This is just an alpha preview release, but it is a great start. Our only question is will existing users really care? Most people already write code in another editor. Many use an external build system like PlatformIO. Eclipse already has a plug in for Arduino that supports debugging with the right hardware. So while new users may appreciate the features, advanced users may be wondering why this is so late to the party.

 

One of the great things about the Arduino environment is that it covers a wide variety of hardware with a common interface. Importantly, this isn’t just about language, but also about abstracting away the gory details of the underlying silicon. The problem is, of course, that someone has to decode often cryptic datasheets to write that interface layer in the first place. In a recent blog post on omzlo.com, [Alain] explains how they found a bug in the Arduino SAMD21 analogRead() code which causes the output to be offset by between 25 mV and 57 mV. For a 12-bit ADC operating with a reference of 3.3 V, this represents a whopping error of up to 70 least-significant-bits!

Excerpt from the SAMD wiring_analog.c file in the Arduino Core repo.

While developing a shield that interfaces to 24 V systems, the development team noticed that the ADC readings on a SAMD21-based board were off by a consistent 35 mV; expanding their tests to a number of different analog pins and SAMD21 boards, they saw offsets between 25 mV and 57 mV. It seems like this offset was a known issue; Arduino actually provides code to calibrate the ADC on SAMD boards, which will “fix” the problem with software gain and offset factors, although this can reduce the range of the ADC slightly. Still, having to correct for this level of error on a microcontroller ADC in 2019 — or even 2015 when the code was written — seems really wrong.

After writing their own ADC read routine that produced errors of only between 1 mV and 5 mV (1 to 6 LSB), the team turned their attention to the Arduino code. That code disables the ADC between measurements, and when it is re-enabled for each measurement, the first result needs to be discarded. It turns out that the Arduino code doesn’t wait for the first, garbage, result to finish before starting the next one. That is enough to cause the observed offset issue.

It seems odd to us that such a bug would go unnoticed for so long, but we’ve all seen stranger things happen. There are instructions on the blog page on how to quickly test this bug. We didn’t have a SAMD21-based Arduino available for testing before press time, but if you’ve got one handy and can replicate these experiments to verify the results, definitely let us know in the comments section below.

If you don’t have an Arduino board with a SAMD21 uC, you can find out more about them here.

Sometimes it seems like Arduino is everywhere. However, with a new glut of IoT processors, it must be quite a task to keep the Arduino core on all of them. Writing on the Arduino blog, [Martino Facchin], Arduino’s chief of firmware development, talks about the problem they faced supporting two new boards from Nordic.

The boards, the Nano 33 BLE and Nano 33 BLE Sense are based on an ARM Cortex M4 CPU from Nordic. The obvious answer, of course, is to port the Arduino core over from scratch. However, the team didn’t want to spend the time for just a couple of boards. They considered using the Nordic libraries to interact with the hardware, but since that is closed source, it didn’t really fit with Arduino’s sensitivities. However, in the end, they took a third approach which could be a very interesting development: they ported the Arduino core to the Mbed OS. There’s even an example of loading a sketch on top of Mbed available from [Jan Jongboom].

On the one hand, this has two big advantages: in theory, Arduino can now run on anything that supports Mbed, which is quite a lot. Second, even though the system retains the simplicity of Arduino, the entire Mbed system is available to Arduino developers and vice versa.

On the other hand, you could argue that if you have Mbed, you don’t really need Arduino. While much is made about Arduino’s simplicity, it is really a C++ program with two predefined functions and an IDE that builds your code without as much explicit help as you’d expect. However, the wide variety of code that supports Arduino should be of interest since you could just use it from either an Arduino or Mbed program without much effort.

This might make some of our favorite Mbed labs projects more popular. If you want to see our take on an Mbed project, you can turn it into a signal generator.

Thanks [halherta] for the tip.

Love it or hate it, for many people embedded systems means Arduino. Now Arduino is leveraging its more powerful MKR boards and introducing a cloud service, the Arduino IoT Cloud. The goal is to make it simple for Arduino programs to record data and control actions from the cloud.

The program is in beta and features a variety of both human and machine interaction styles. At the simple end, you can assemble a dashboard of controls and have the IoT Cloud generate your code and download it to your Arduino itself with no user programming required. More advanced users can use HTTP REST, MQTT, Javascript, Websockets, or a suite of command line tools.

The system relies on “things” like temperature sensors, LEDs, and servos. With all the focus on security now, it isn’t surprising that the system supports X.509 authentication and TLS security for traffic in both directions.

Honestly, we tried it and the web-based IDE couldn’t find our MKR1000 board under Linux. That could be a misconfiguration on our part, but it is frustrating how little information you get from many web-based tools. It decided we had multiple Arduinos connected (we didn’t). Then removing a multiport serial adapter made it see no Arduinos even though there was an MKR1000 Vidor attached.

Naturally, there are plenty of options when it comes to putting devices on the cloud. However, if you are only using Arduino boards, this one is going to be pretty seamless — assuming it works for you.

Love it or hate it, for many people embedded systems means Arduino. Now Arduino is leveraging its more powerful MKR boards and introducing a cloud service, the Arduino IoT Cloud. The goal is to make it simple for Arduino programs to record data and control actions from the cloud.

The program is in beta and features a variety of both human and machine interaction styles. At the simple end, you can assemble a dashboard of controls and have the IoT Cloud generate your code and download it to your Arduino itself with no user programming required. More advanced users can use HTTP REST, MQTT, Javascript, Websockets, or a suite of command line tools.

The system relies on “things” like temperature sensors, LEDs, and servos. With all the focus on security now, it isn’t surprising that the system supports X.509 authentication and TLS security for traffic in both directions.

Honestly, we tried it and the web-based IDE couldn’t find our MKR1000 board under Linux. That could be a misconfiguration on our part, but it is frustrating how little information you get from many web-based tools. It decided we had multiple Arduinos connected (we didn’t). Then removing a multiport serial adapter made it see no Arduinos even though there was an MKR1000 Vidor attached.

Naturally, there are plenty of options when it comes to putting devices on the cloud. However, if you are only using Arduino boards, this one is going to be pretty seamless — assuming it works for you.

If you speak French and you have an Arduino Vidor 4000, you are in luck because there’s some good news. The good news is there’s finally some inside information about how to configure the onboard FPGA yourself. The bad news though is that it is pretty sparse. If your high school French isn’t up to the task, there’s always Google Translate.

We knew some of this already. You’ll need Quartus, the FPGA design tool from Altera — er, Intel — and we know about the sample project on GitHub, too. Instead of using conventional Verilog or VHDL, the new information uses schematic capture, but that’s OK. All the design entry winds up in the same place, so it should be easy to adapt to the language of your choice. In fact, in part 2 they show both some schematics and some Verilog. Google Translate does have a little trouble with code comments, though. If you want something even stouter, there’s an example that uses Verilog to output a video frame.

The real question has been: how do you get the bitstream into the FPGA without surgery on the board? There’s a Java application (Zip download) that builds a .H file for you. Including that in your sketch will cause the Arduino to load the FPGA for you. There are still not a lot of details about how that works — we think there’s almost an FPGA bootloader that stays loaded and then gets the rest of the configuration like this.

In addition, there is a warning at the end:

Under no circumstances should you reconfigure the PA20 port of the SAMD21 output. This one is already used as output by the FPGA.

We can imagine that there are other gotchas, so if you start experimenting you are taking some chance of blowing up or bricking your Arduino.

Still, this is great news! We’ve been itching to play with the onboard FPGA and this should answer enough questions to work out the rest of the details. All the examples, including a DVI output example, are linked on one download page.

If you are wanting to learn more about the hardware, we covered it. We also have some FPGA boot camps that would help you get started with FPGAs in general.

If you are a lover of all-things remote-conteolled, it’s likely that you know a thing or two about controllers. You’ll have one or two of the things, both the familiar two-joystick type and the pistol-grip variety. But had you ever considered that there m ight be another means to do it? [Andrei] over at ELECTRONOOBS has posted a guide to a tilt-controlled RC car. It is a good example of how simple parts can be linked together to make something novel and entertaining, and a great starter project for an aspiring hacker.

An Arduino Nano reads from an accelerometer over an I2C bus, and sends commands over a wireless link, courtesy of a pair of HC-12 wireless modules.  Another Nano mounted to the car decodes the commands, and uses a pair of H-bridges, which we’ve covered in detail, to control the motors.

The tutorial is well done, and includes details on the hardware and all the code you need to get rolling.  Check out the build and demo video after the break.

We’d love to see this idea turned up to 11 by using a more capable base vehicle, and finer controls on the steering– A Honda Civic perhaps?

[Thanks to Baldpower for the tip!]

Arduino now has an officially supported command-line interface. The project, called arduino-cli, is the first time that the official toolchain has departed from the Java-based editor known as the Arduino IDE. You can see the official announcement video below.

Obviously this isn’t a new idea. Platform IO and other command-line driven tools exist. But official support means even if you don’t want to use the command line yourself, this should open up a path to integrate the Arduino build process to other IDEs more easily.

The code is open source, but they do mention in their official announcement that you can license it for commercial use. We assume that would mean if you wanted to build it into a product, not just provide an interface to it. This seems like something Arduino expects, because a lot of the command line tools can produce json which is a fair way to send information to another application for parsing.

The command line interface doesn’t just build a sketch. You can do things like install and manage libraries. For example, to create a new sketch:

arduino-cli sketch new HackadayPgm

You can update the installed platforms, list the connected boards, and search for board support:

arduino-cli core update-index

arduino-cli board list

arduino-cli core search mkr1000

If you don’t already have the board support, you can install it and verify that it is there:

arduino-cli core install arduino:samd

arduino-cli core list

That last step will give you the FQBN or unique name for the core. So to compile and upload you have this mouthful:

arduino-cli compile --fqbn arduino:samd:mkr1000 Arduino/HackadayPgm

arduino-cli upload -p /dev/ttyACM0 -fqbn arduino:samd:mkr1000 Arduino/HackadayPgm

Unlike, say, PlatformIO, this is clearly better for building into a tool, even if it is a makefile. We’d like to see a .build.json file or something that allows you to just issue short commands that do the right thing in a working directory. Of course, you could build that with a little shell scripting. Hmm….

It is nice to see the release of an official method and we hope this will lead to more editors being able to handle Arduino seamlessly.

Arduino now has an officially supported command-line interface. The project, called arduino-cli, is the first time that the official toolchain has departed from the Java-based editor known as the Arduino IDE. You can see the official announcement video below.

Obviously this isn’t a new idea. Platform IO and other command-line driven tools exist. But official support means even if you don’t want to use the command line yourself, this should open up a path to integrate the Arduino build process to other IDEs more easily.

The code is open source, but they do mention in their official announcement that you can license it for commercial use. We assume that would mean if you wanted to build it into a product, not just provide an interface to it. This seems like something Arduino expects, because a lot of the command line tools can produce json which is a fair way to send information to another application for parsing.

The command line interface doesn’t just build a sketch. You can do things like install and manage libraries. For example, to create a new sketch:

arduino-cli sketch new HackadayPgm

You can update the installed platforms, list the connected boards, and search for board support:

arduino-cli core update-index

arduino-cli board list

arduino-cli core search mkr1000

If you don’t already have the board support, you can install it and verify that it is there:

arduino-cli core install arduino:samd

arduino-cli core list

That last step will give you the FQBN or unique name for the core. So to compile and upload you have this mouthful:

arduino-cli compile --fqbn arduino:samd:mkr1000 Arduino/HackadayPgm

arduino-cli upload -p /dev/ttyACM0 -fqbn arduino:samd:mkr1000 Arduino/HackadayPgm

Unlike, say, PlatformIO, this is clearly better for building into a tool, even if it is a makefile. We’d like to see a .build.json file or something that allows you to just issue short commands that do the right thing in a working directory. Of course, you could build that with a little shell scripting. Hmm….

It is nice to see the release of an official method and we hope this will lead to more editors being able to handle Arduino seamlessly.



  • Newsletter

    Sign up for the PlanetArduino Newsletter, which delivers the most popular articles via e-mail to your inbox every week. Just fill in the information below and submit.

  • Like Us on Facebook