In many respects we think of artificial intelligence as being all encompassing. One AI will do any task we ask of it. But in reality, even when AI reaches the advanced levels we envision, it won’t automatically be able to do everything. The Fraunhofer Institute for Microelectronic Circuits and Systems has been giving this a lot of thought.
AI gesture training
Okay, so you’ve got an AI. Now you need it to learn the tasks you want it to perform. Even today this isn’t an uncommon exercise. But the challenge that Fraunhofer IMS set itself was training an AI without any additional computers.
As a test case, an Arduino Nano 33 BLE Sense was employed to build a demonstration device. Using only the onboard 9-axis motion sensor, the team built an untethered gesture recognition controller. When a button is pressed, the user draws a number in the air, and corresponding commands are wirelessly sent to peripherals. In this case, a robotic arm.
At first glance this might not seem overly advanced. But consider that it’s running entirely from the device, with just a small amount of memory and an Arduino Nano. Fraunhofer IMS calls this “embedded intelligence,” as it’s not the robot arms that’s clever, but the controller itself.
This is achieved when training the device using a “feature extraction” algorithm. When the gesture is executed, the artificial neural network (ANN) is able to pick out only the relevant information. This allows for impressive data reduction and a very efficient, compact AI.
Obviously this is just an example use case. It’s easy to see the massive potential that this kind of compact, learning AI could have. Whether it’s in edge control, industrial applications, wearables or maker projects. If you can train a device to do the job you want, it can offer amazing embedded intelligence with very few resources.
It was a long Monday with the Arduino forum closed for maintenance, wasn’t it? Many people had to hold back their Arduino-related questions for an entire day… panic! But before getting mad at us, read on and you’ll understand it was for an extremely good cause.
We migrated the forum to a new, modern, platform which provides adramatically improved user experience. Try it now at forum.arduino.cc! It’s fast, clean, practical, and mobile-friendly. The new interface helps focus on contents, share knowledge and generate quality interactions between people.
New Forum Features
No more pages to browse manually.
Long conversations are loaded dynamically while scrolling.
Notifications are shown when someone mentions you or replies to your posts.
Links are expanded with previews. Long conversations can be automatically summarized.
Trust levels and other tools help fight spamming and encourage good behaviors.
And there’s a lot more!
The new forum is built on Discourse, which is the leading forum platform and is 100% open source. This makes the Arduino forum into the largest Discourse forum in the world, with over one million users and more than five million posts. We partnered with the Discourse team to perform this long and complex migration. It was great to collaborate with people who believe in quality, human-centric software and open source as much as we do.
A big thank you also goes out to all the volunteer moderators who help newcomers and keep things in order. They do an incredible job.
User images (avatars) won’t be visible for a few hours because they’re being imported. There’s also some minor formatting in posts that hasn’t been applied yet, like emoticons and underlined text. There’s a job running in the background job which is working on things. Everything will appear automatically as soon as the process is complete. But we wanted to reopen the forum as soon as possible.
These are the most important things you need to know if you’re used to the old forum:
Drafts are automatically saved while typing. No need to click “Save Draft”.
The “Add Karma” button is not there any more because we now have message likes. If you want to show your appreciation, click the “Like” icon under a post.
The “Report to moderator” link has been replaced by the “Flag” button.
You can configure your notification preferences on a per-category or per-topic basis by clicking the bell icon at the top-right.
There’s no “Print” button any more. Just use the print function of your browser and a printer-friendly rendering will be applied.
You can now bookmark your favorite posts. Bookmarks are found, along with your notifications, mentions and history, by clicking on the avatar icon at the top right.
Should you notice issues with the new forum, let us know.
This article was written by Per Tillisch from the Arduino Tooling Team.
The Arduino team created some tools that make it easy to automate a check for whether your Arduino sketches compile. Used with GitHub Actions, the tools allow anyone to set up a simple “smoke test” on every commit and pull request made to a GitHub repository, with reports on the impacts of those changes.
Although passing a “Does it compile?” check is not definitive proof of a working project, failure to compile is a sure sign of a non-working project! For this reason, it can provide a useful “smoke test”.
Even if you have more formal tests in place, a compilation check remains a valuable supplement, since it is able to catch incompatibilities with the Arduino build system that other tests will miss.
The biggest advantage of this approach is that, unlike other testing methods, it takes very little effort to set up and maintain. All that’s needed is to define a few basic parameters of the compilations, such as which Arduino boards to compile for and which library dependencies of the sketch need to be installed. After that, everything is automatic!
GitHub Actions is the preferred automation service for continuous integration in the Arduino firmware repositories. Let’s take a look at its fundamental concepts.
Workflows define the procedure that should run when a specific event occurs in the repository. For example, you might have a workflow that runs every time someone submits a pull request to your repository. Using GitHub Actions is only a matter of adding a workflow configuration file to your repository.
Actions are programs that do specific tasks. These programs are packaged in a manner that makes them easy to reuse in any GitHub Actions workflow. By using combinations of the many actions provided by the open source community, you can easily do complex things with simple, easy to maintain workflows.
Actions for Arduino projects
Several GitHub Actions actions are available for use with Arduino projects. One of these is arduino/compile-sketches. As you might have guessed from the name, this is a tool for compiling Arduino sketches.
A complete workflow to compile the sketches in a repository can be as minimal as this:
On every commit and pull request, this workflow searches the subfolders of the repository recursively for sketches and compiles them for the Arduino Uno. If compilation of any of the sketches has an error, the commit status will be set to failure.
Next, let’s take a look at a workflow that shows some of the other features of the arduino/compile-sketches action:
This is a workflow used to test the sketches that accompany a machine learning tutorial. There are a few differences from the previous workflow:
The tutorial’s sketches were written for the Arduino Nano 33 BLE board, so instead of compiling for the action’s default Arduino Uno board as in the previous workflow, the workflow was configured to compile for the Nano 33 BLE by specifying that board’s fully qualified board name (FQBN) identifier (arduino:mbed:nano33ble) via the action’s fqbn input.
These sketches require some libraries to be installed. The names of the libraries are specified via the action’s libraries input. This causes them to be installed from the Arduino Library Manager.
Just because we are compiling sketches, that doesn’t mean this action can only be used to test sketches. Compiling a sketch is also testing whether the libraries and boards platform used by that sketch will compile. Continuous integration in library and platform repositories is especially important to avoid breaking components other people rely upon. These projects often have multiple sketches that need to be compiled for multiple boards, making automation of the task even more beneficial. If you’re a library or platform developer, we strongly recommend spending a little time to set up a workflow.
This is the workflow used to test the ArduinoBLE library:
This library supports multiple architectures, so the compilations must be done for several boards. This is done by creating a job matrix. A copy of the compile-examples job runs for each of the boards listed under the jobs.compile-examples.strategy.matrix.fqbn key, avoiding the need to define a separate job for each board in the workflow.
Don’t let its ease of use for basic applications fool you into thinking it’s not suitable for advanced use cases. arduino/compile-sketches is a powerful general purpose tool for compiling Arduino sketches. The configuration options provide a lot of flexibility that will make it useful no matter what your requirements are. See the documentation for details: https://github.com/arduino/compile-sketches#readme
The arduino/compile-sketches action can be configured to report the change in memory usage and compiler warnings resulting from commits and pull requests. These will be displayed in the build log:
A companion action, arduino/report-size-deltas, comments on pull requests with a report of the resulting change in memory usage of the sketches that were compiled by the arduino/compile-sketches action:
The workflow for arduino/report-size-deltas is very simple, and doesn’t require any modifications to be used in your repository:
Give it a try!
Continuous integration can reduce the tedious task of manual testing. You probably wouldn’t enjoy compiling multiple sketches for multiple boards for every commit and every pull request, but these new actions are happy to do it for you.
These actions are especially useful for pull request triage. They provide an initial “smoke test” of the pull request without any effort from the repository maintainer. If the workflow job for the pull request fails or reports an undue increase in memory usage, the contributor of the pull request will often work to resolve the issues revealed by the CI system on their own initiative, reducing some of the effort required to review contributions.
We use these actions in the Arduino firmware repositories and are sure you’ll also find them useful for your projects.
Support and feedback
You can discuss or get assistance with setting up continuous integration for your Arduino projects on the Arduino Forum.
Feedback is welcome! Please submit feature requests or bug reports to the issue trackers:
Everything’s in place and ready for the global celebration of Arduino’s sweet sixteenth birthday, including some amazing interviews, demos and talks. See you on March 27th at 4 p.m. CET on Arduino’s online channels.
It’s Arduino’s sweet sixteenth on March 27th, and after such a tough 2020 we wanted to make it an extra special event.
As you’ve probably already seen, we’ve themed this year’s Arduino Day around “Undistancing: open makes us close”, which is all about using everyone’s favorite tech to bring people together and find new ways to connect while we’re physically apart.
There are so many topics the Arduino team wanted to cover this year that we’ve got lots of great presentations in the works for you.
Not least of them being a new inclusivity program called #include, that’s being integrated into Arduino as we speak, but there are big plans to bring it out into the community too. Isabela Freire from the Arduino Design Team will be with us to tell you all about that, and how it can benefit your projects, causes and communities.
We also want to show you around some of the top new Arduino devices, with some big reveals that are guaranteed to get people excited across the maker, education and professional sectors. The Nano RP2040 Connect is definitely going to be a highlight you won’t want to miss.
Arduino Day is just as exciting to those of us inside the company, as well as you guys out there in the community. It’s at events like this where we get to talk to brilliant people who are making a genuine difference to the world through open-source tech.
Among them is the ever-inspiring Judi Girò Benet and Billy Chen, co-founders of the amazing breast cancer testing device The Blue Box. This incredible project recently won the international James Dyson Award, and it’s a remarkable tale of a first-time maker who brought her vision to life through Arduino and prototyping her own electronics.
We’ll also be revealing the 10 winners of this year’s Arduino Day Community Challenge. So if you’ve submitted a project to the competition make sure you’re online to find out if a treasure trove of Arduino gear is on its way to you.
Our very own Massimo Banzi is ready to give you a personal tour of the Tiny Machine Learning (TinyML) Kit. Together with Prof. Vijay Janapa Reddi of Harvard University – who specializes in mobile, cloud and edge-centric computing systems – they’ll discuss the impact that devices like TinyML can have in the education sector.
Ubi de Feo from Arduino Tooling Team will then follow with a first-hand demo of the exciting new Arduino IDE 2 beta, in which he’ll show us how this awesome platform represents the next evolution in accessible firmware development. Everything you ever wanted to know about the new IDE, plus a few new features in the pipeline.
Arduino Day Live Stream
So set the day aside on March 27th to join in with the Official Arduino Day live stream, which launches at 4:00 p.m. CET on the Arduino channels.
Get your seat on the front row at day.arduino.cc, and if you’ve any comments or questions in the meantime, just let us know.
Oh, and if you want to see your face on the live stream, why not record a short video clip of yourself saying a big happy birthday to Arduino, and we’ll add you to the celebrations!
Just post it on social media with the hashtag #ArduinoD21 and we’ll stick a virtual candle in the sweet 16th birthday cake just for you!
Arduino Day isn’t just Arduino’s birthday. It’s a celebration of the Arduino Community and its achievements. Creativity is the fuel that motivates our users to experiment, build amazing projects, push the boundaries of open-source hardware and software and have a positive impact on people’s lives.
We’re excited to announce that this year’s Arduino Day contest (you can apply with this form) will be all about highlighting the incredible creativity of our community. This is our way of thanking our amazing users, whose passion, innovation and vision inspire us every day.
Inspiration and community participation have never been more vital than during the pandemic, so this year we’ve made a special effort to instill a feeling of inclusivity and bringing people together. So the whole event this year has been given a theme of “undistancing”. We want Arduino Day to encourage people to collaborate, and create as one; to close the distance between us all virtually, until we’re all able to get back together physically.
The community challenge embodies this same principle of bringing people together, which we’re hoping will provide a great source of inspiration for your projects.
Get Creative with Arduino
TheArduino Day 2021 Challenge will award the top 10 community projects that stand out for their creativity and innovation. The contest is open to everybody, whether you’re a beginner, a pro user, a student, or an artist. Everyone’s welcome to join the contest and share their innovative projects, big and small, with the rest of the community.
We’ll select 10 projects that we feel demonstrate the most creative, innovative ideas, and send them an awesome Arduino Day box packed with our favorite boards, kits, and goodies, to a value of around €250 EUR/$280 USD. Moreover, the videos of the best projects will be featured on the official Arduino Day live stream that will take place on March 27th across all our channels!
Aside from a description, you’ll need to upload a video demonstrating your finished project (and if you’d like to add a happy birthday message to Arduino at the end, that’d be great!). The winners of the contest will be announced on Arduino Day during the live streaming (around 4pm CET).
We are pleased to announce the launch of the new Arduino Portenta Breakout, designed for developing hardware projects, testing, and debugging on Portenta family boards.
The Portenta Breakout exploits all the capabilities of the input and outputs, making all high density connectors’ signals individually accessible.
The Portenta Breakout reduces development time for industrial grade solution automation based on the Portenta line. Designed to help the hardware engineers and makers who want to develop a proprietary device for Portenta family boards or interfacing external devices to the Portenta family boards (e.g. the Portenta H7). It is now quick and easy to connect and test external hardware components and devices in the lab using all the high density connectors’ signals of the Portenta individually.
Rapid development for machine vision
Connectivity to the OpenMV Global Shutter Camera Module is provided on the Portenta Breakout, allowing for rapid development of machine vision applications alongside the Portenta family.
Test external hardware and devices
The Portenta Breakout enables easy debugging through the JTAG connector and allows for inspection of the bus lines through the breakout pins. In addition to the breakout pins, the Portenta Breakout features Ethernet, USB and SD sockets, a coin cell, a power button, an external power supply, an OpenMV camera socket, and configurable boot selection modes.
Power ON button
Boot mode DIP switch
RJ45 GBit Ethernet
OpenMV shutter module
MIPI 20T JTAG with trace capability
CR2032 RTC lithium battery backup
External power terminal block
Break out all Portenta high density connector signals
Male/female HD connectors for interposing breakout between Portenta and shield to debug signals
Beyond use in the development lab, the Portenta Breakout can act as a first point of entry for educating technicians in industrial grade control and embedded systems.