Posts | Comments

Planet Arduino

Archive for the ‘Featured’ Category

This week we are launching our  Arduino Explore IoT Kit, which allows high school and college students to take their first steps in building connected devices. Educators can make a complex subject simple – explore the Internet of Things right now with Arduino Education. 

Aimed at the beginner,  there is a complete set of easy to follow online projects providing students with a  gateway into the digital world of connected objects and how people work together.

The kit comes complete with a complimentary 12 months subscription to the Arduino Create Maker plan, meaning it’s quicker and easier than ever to learn how to monitor, manage and control devices using the cloud – with the new Arduino IoT Cloud Remote app you can now do this ‘on the go’ via your mobile.

We recently spoke to Sara Willner-Giwerc, (a PhD candidate at Tufts University in Boston, Massachusetts, US) about her amazing work using the Internet of Things in education – helping to show just how useful the new Explore IoT Kit will be.

“By leveraging the Internet of Things, students are able to build more powerful systems that are no longer limited to only the resources they physically possess. This technological capability presents a cool opportunity for students to experience how they can be more powerful when they connect and collaborate with others than they can be on their own. “

“Especially now, in this time of social distancing and remote learning, the ability to communicate with devices that aren’t physically near us has become even more essential than it was previously. I’m really excited about the idea of using IoT to help students think about designing for more global systems.” 

Read the full article about Sara here

Here’s what a student had to say about the new Explore IoT Kit, when he got the chance to try out an advanced version:

“I would describe it as a very beginner-friendly way to get started with the Internet of Things, and a kit that you will be able to expand upon with your own ideas and components.”

“…the getting started section got me really excited to actually get started because it inspired all these thought streams of what I could potentially create with the kit.” Oliver Kempel – Danish High School Student 

The kit features 10 activities for students to develop a complete understanding of IoT:

  • Using the IoT Cloud and connected devices: Control physical objects, such as a displays or lights, remotely with the Arduino IoT Cloud
  • Collecting, processing, and storing data: Store data locally, wirelessly, and remotely for analysis and backup
  • Graphing and visualizing data and understanding its meaning: Use different tools and techniques to graph data and interpret the information collected
  • Serial communication, APIs, JSON, and web servers: Learn the essentials of how APIs (application programming interfaces) work, how to access remote web servers, and how to store the incoming data in JSON objects to create devices that can access all sorts of data from all over the world, and display it locally
  • Network security considerations: Understand how software developers protect devices and information from unauthorized access
  • Different sensors and how to use them: Investigate the environment using temperature, humidity, and light sensors, collect data about movement using an accelerometer, pressure, and motion sensors, take care of your plants by following the data from moisture and light sensors
  • Actuators and how to use them: Use lights, sound, display, and relays: electronic components used to activate high power devices, to visualize data, and control external devices

The Explore IoT Kit is available to buy now from our Education Partners locally or from the Arduino Store for only €99 / $114.

N.B. In addition to the Explore IoT Kit,  a second kit the “Oplà IoT Kit” will also be coming soon, targeting makers and professionals alike who are after an out-of-the-box IoT experience. The Oplà IoT Kit will enable users to instantly add connectivity to devices for the home and workplace – available to buy from early October onwards.

The COVID-19 pandemic has changed the way we interact with people, things, and the world around us. A few months ago, we launched the Touch Less, Do More Challenge, calling on our community to build solutions based on Arduino Nano or MKR boards to enforce social distancing or enable touch-free technologies.

More than 1,000 participants submitted solutions to the contest in hopes of winning tens of thousands of dollars in prizes, including hardware from Newark, Dragon Innovation product assessment, and Hackster marketing support.

The judging panel — composed by Massimo Banzi (Arduino Co-Founder), Nishant Nishant (Avnet VP & Global Head of Digital), Benedetta Piantella (Design Researcher and  Professor at NYU), Alessandro Ranellucci (Arduino Chief of Open Source Community) and Alex Glow (IoT Media at Hackster) — selected the best projects. Without further ado, here are your winners…

Overall Winner

Intangible Surface

Buttons can be found everywhere from light switches and pedestrian crossings to elevators and kiosks. These buttons, however, can also be a catalyst in the spread of viruses. This led Swapnil Verma to come up with a gesture and IoT-based touchless interface that provides a simple, intuitive, and most of all, germ-free way of interacting with the digital world.

Touch-Free Category

1st Place: Complex Signs Recognition & Person Counter for Automation

Jean Perardel‘s Grumpy Hedgehog is a MKR WiFi 1010-controlled gadget that, thanks to an LCD screen, allows users to read and communicate through hand signs and movements. With GrumpyHedgehog, anyone can operate a send keyboard commands to a computer, track the number of patrons in a store on a smartphone, relay encrypted information to a server, turn on the lights, and much more.

2nd Place: Spectrino TinyML Arduino & IoT Based Touch- Free Solutions

15-year-old Dhruv Sheth has impressively designed an intelligent system comprised of six solutions that automate commonly used devices throughout homes and in public to prevent COVID-19 transmission. These solutions — which are built upon the MKR WiFi 1010 and Nano 33 BLE Sense — include a smart intercom, a temperature monitor, a voice-controlled elevator, a mask detector, a queue management system, and a sanitization system.

Social Distancing Category

1st Place: COVID-19 Simple Friendly Social Distance Robot Watchzi

draakje156‘s Nano-powered robot easily sits on a desk, cash register, or elsewhere to measure the distance between itself and any approaching person, emitting a light and sound alarm if someone comes within six feet.

2nd Place: Small Store Congestion Warning

Ever wish you could know how crowded a shop was before entering? With this in mind, Ian Mercer created low-cost storefront indicator to help at-risk individuals decide whether it’s a good time to go in or best to wait until later by tracking cell phone BLE traffic via a MKR WiFi 1010.


This article was written by Isabela Freire from the Design Team.

On behalf of the Arduino Design and Web Teams, we’re proud to announce a new navigation for our online ecosystem to improve your Arduino experience.

Arduino’s commitment is to put our users in the center of what we do and make complex technology easy. Not only as our mission, but as part of our workflow and method. In the past couple of years, Arduino has been investing more and more time and resources to improve the broader user experience across our whole digital ecosystem — we have almost tripled the Design and Web Teams to achieve this goal!

Speaking of which, if you’ve been using our website in the past month you probably noticed we have a brand new search engine. Here’s what you can do now quickly, all in one place:

  • Find all the documentation that will help you with your next project (being it a tutorial, a library, a reference entry, you name it);
  • Look up for hardware in our store using specific filters;
  • Search for forum threads (even old ones!);
  • Browse tutorials and tips on Project Hub; 
  • Read through our blog posts, sorting them by category and year. 

So you will no longer find yourself inadvertently taken off into the outer reaches of Google — it’s all here searchable and findable within Arduino.

The new search engine is just the tip of the iceberg. We are in the quest of improving the overall user experience of all Arduino websites. That’s why today we are also introducing the new headers and footers

Arduino’s offering is pretty diverse, with a rich and complex digital ecosystem. We not only provide powerful hardware, software, and digital services, but online platforms with content and spaces to share and create community as well. Further to months of testing and trials, the new headers and footers are to be as lean as possible for our users, enabling you to find what you are looking for in the shortest amount of time — leaving you to focus all your energy on creating, learning, developing, having fun, and building professional projects with Arduino! 

It doesn’t matter where you begin your journey, either on Arduino.cc, Arduino Education, Arduino Pro or in the Arduino Store, you will notice our headers now have two main parts. One we call the first level (number 1 in the image above), which provides a global experience where users can navigate between our main websites, our new search bar engine, their user profile and a menu for our Arduino Create apps. The second level (number 2 in the image above) is a contextual menu that displays internal links that vary depending on which Arduino website you are in.

This is the first of a number of improvements we are going to release in the forthcoming months. We’re always open to feedback that will enhance your experience, so please share your opinions (positive or negative) with us in the comment section below, or in our Forum or on Discord. Please don’t hesitate to contact our Support team if there’s anything we can help you with or to report a bug whenever you spot one. 🙂

This article was written by Luigi Gubello, Arduino Security Team.

Be kind to the end user. At Arduino, we like to develop powerful ideas into simple tools. This is the spirit behind our team’s efforts in launching our IoT Cloud platform: making the Internet of Things accessible and easy for everyone. We can now offer a complete low-code IoT application development platform that seamlessly integrates with our hardware products: Arduino IoT Cloud.

Behind such simplicity, you’ll always find a thorough design study carried out by our team in order to offer a user-friendly IoT cloud solution, which is suitable for everything from your first IoT project to state-of-the-art professional use — what the user needs to do is connect their compatible Arduino board to a computer and follow the steps displayed in the browser window. The process will configure the device to securely connect to the Arduino IoT Cloud, thus creating an  Internet-connected device in minutes.

So how does Arduino IoT Cloud provisioning work?

TLS Client Authentication

In a previous blog post titled “Arduino Security Primer,” we began to introduce how the device provisioning works, showing how security is a fundamental requirement for us. The Arduino IoT Cloud security model is based on three key elements: an open-source library named ArduinoBearSSL, a Hardware Secure Element, and a device certificate provisioning for TLS Client Authentication. 

The TLS Client Authentication (or TLS Mutual Authentication) is an authentication method in which the server verifies the client’s identity through a certificate to grant or deny access to the device. In the standard TLS handshake, only a client authenticating a server is required, while in TLS Client Authentication, the server also needs to authenticate the client by verifying its identity. If the server cannot trust the client’s identity, it does not authorize a connection.

In the TLS Client Authentication system, the device’s credentials are replaced by a signed certificate that guarantees the device identity, thereby eliminating some security risks such as credentials stealing, weak passwords, or brute-force attacks. During the device provisioning process, a certificate — signed by our certificate authority — is stored inside the hardware secure element of supported Arduino boards to be used when identity verification is required.

ArduinoECCX08 Library

In order to communicate with the Microchip secure element (ATECC508A or ATECC608A) mounted on some Arduino boards, our engineering team developed an open-source library (ArduinoECCX8) which is used for device provisioning by the Arduino IoT Cloud. This library is responsible for writing and reading data from the secure element. In particular — during the provisioning stage — it manages the generation of private keys, certificate signing requests, and certificate storage. This library can also be used to generate self-signed certificates and to sign JWT, using the public key generated by the crypto chip.

Arduino Provisioning Sketch

IoT device provisioning for the Arduino IoT Cloud is performed by an open-source Arduino sketch, Provisioning.ino, contained in our ArduinoIoTCloud library. 

The entire device provisioning process is hidden behind a browser based user-friendly interface, so that users can quickly and easily connect their Arduino boards to the Arduino IoT Cloud by following a step-by-step procedure from the Getting Started page. During this process, the provisioning sketch is uploaded to the Arduino board and the open-source Arduino Create agent interacts with the browser content to help complete the device registration procedure. Taking a look at the provisioning source code to better understand what happens “behind the scenes,” it is possible to see how we use the hardware secure element.

The secure element’s slot 0 is used for storing the device private key, only the secure element can access its content. Slots 10, 11, and 12 are used for storing the compressed certificate, signed by Arduino’s certificate authority.

const int keySlot                                   = 0;
const int compressedCertSlot                        = 10;
const int serialNumberAndAuthorityKeyIdentifierSlot = 11;
const int deviceIdSlot                              = 12;

At first, the sketch configures and locks the hardware secure element. This process is required to begin using the device.

#include "ECCX08TLSConfig.h"

[...]

    if (!ECCX08.writeConfiguration(DEFAULT_ECCX08_TLS_CONFIG)) {
      Serial.println("Writing ECCX08 configuration failed!");
      while (1);
    }

After the hardware secure element has been configured, a private key and a certificate signing request (CSR) are generated.

 if (!ECCX08Cert.beginCSR(keySlot, true)) {
    Serial.println("Error starting CSR generation!");
    while (1);
  }

  String deviceId = promptAndReadLine("Please enter the device id: ");
  ECCX08Cert.setSubjectCommonName(deviceId);

  String csr = ECCX08Cert.endCSR();

The Create Agent takes the generated CSR and sends it to the server via the Arduino IoT Cloud API in order to receive a signed certificate. At this point the signed certificate is sent to the Arduino board and stored in the secure element.

  if (!ECCX08Cert.beginStorage(compressedCertSlot, serialNumberAndAuthorityKeyIdentifierSlot)) {
    Serial.println("Error starting ECCX08 storage!");
    while (1);
  }

[...]

  if (!ECCX08Cert.endStorage()) {
    Serial.println("Error storing ECCX08 compressed cert!");
    while (1);
  }

Once the signed certificate is successfully stored, the device provisioning is complete and the Arduino board is ready to connect to the Arduino IoT Cloud.

Self-Provisioning

The Arduino IoT Cloud facilitates the first approach to the Internet of Things, providing a simple user experience, but beneath its simplicity lies a powerful tool to develop professional projects. Our platform offers access to the Arduino IoT Cloud API, which is ideal for automation workflows.

In this use case, we will demonstrate how a user in need of provisioning a device fleet can automate and improve the process through the use of the Arduino IoT Cloud’s API and our open-source Arduino_JSON library. The following code is a self-provisioning sketch optimized for the Arduino Nano 33 IoT, which automatically takes care of registering the board to the Arduino IoT Cloud once uploaded to the board and executed.

[Self-provisioning for MKR WiFi 1010 and Nano 33 IoT in prod: https://github.com/arduino-libraries/ArduinoIoTCloud/tree/master/examples/utility/SelfProvisioning]

To further enhance this process, we use our open-source Arduino CLI to quickly upload the code to the board. All that’s needed is a simple command:

arduino-cli compile -b arduino:samd:nano_33_iot -u -p /dev/ttyACM0 SelfProvisioning

These are only a few of the features that show how the Arduino hardware products and cloud service can automate processes and create an interconnected system to improve users’ projects and businesses. There will be an increasing number of connected and communicating devices added in the near future, and we are working to make this IoT revolution user-friendly, accessible, and open-source.

This article was written by Silvano Cerza and Ubi de Feo from the Arduino Tooling team.

Over the past two months our newly established Tooling Team has taken over operations concerning the Arduino CLI and Pro IDE.

We’ve been silent at work in our little rooms, striving to come up with solutions to reported issues and features requests.

As time went on, the development of the CLI and Pro IDE has been moving forward in a parallel fashion, so here we bring you new versions of both applications for you to play with and build your workflows around.

arduino-cli 0.12.0

The new Arduino CLI is alive and kicking!

Highlights for this release include:

  • We introduced high-level update, outdated, upgrade commands to make arduino-cli more package manager like
  • Package index is now downloaded automatically at first run
  • Custom post-installation scripts can now be executed safely (3rd party cores will issue non blocking warnings)
  • Slight but useful UX improvements
  • Bugfixes
  • Security bugfixes

Remember, we have CLI nightly builds if you want to stay updated on the latest features!

Release link

Arduino Pro IDE

The Arduino Pro IDE is now better than ever! The team squeezed out a very juicy release, enough to skip ahead in the version numbers and jump from 0.0.6 to 0.1.0.

Highlights for this release include:

  • Updated the bundled CLI version to ‘0.12.0’
  • Reworked the menu organization
  • Added support for upload using external programmers
  • UI bugfixes aplenty

We are pleased to announce that from now on we have nightly builds available if you want to try out the latest features (and bugfixes). They can be found at the links below depending on your preferred operating System:

Release link

The full release of Arduino IoT Cloud provides an end-to-end solution that makes building connected projects easy for makers, IoT enthusiasts, and professionals from start to finish.

Arduino IoT Cloud’s low-code approach helps you to optimize their workflows and simplify device registration for convenience and flexibility. If you are an advanced user, the platform also enables other methods of interaction, including HTTP REST API, MQTT, command line tools, Javascript, and WebSockets.

The Arduino IoT Cloud offers a range of key features, such as:

  • Automatically generated code that you can adapt with minimal effort, removing barriers for anyone who is not familiar with coding and empowering makers of all ages and experience.
  • Easy onboarding that will automatically generate a sketch layout when setting up a new device, so you can edit it right away and quickly go from unboxing to building your project.
  • On-the-go’ mobile dashboard gives you the ability to access, check data, and control remote sensor monitoring from anywhere using accessible widgets.

Getting started with the Arduino IoT Cloud has never been easier; simply sign up for free today and follow the guides to connect a device to start your project. 

Using open hardware and IoT standards, you can send and receive data across multiple connected objects within the platform — making it perfectly suited to professionals that want to manage fleets of devices. Arduino IoT Cloud supports STEM/STEAM learning programs as well. Educators can share sketches with students with pre-existing code that allows entry-level developers to understand and create projects without having any prior coding experience.

You can also upgrade your plan to power-up your tools and access additional features. For USD $6.99 per month, the Create Maker plan lets you connect more ‘things,’ save more sketches, increase data storage on the cloud, and access unlimited compilation times, plus much more. For businesses, the Create Professional plan provides flexible and scalable options for enterprise solutions.

The platform integrates with Amazon Alexa, Google Sheets, IFTTT, and ZAPIER, so you can program and manage devices using voice, spreadsheets, databases, and automate alerts via webhooks. The platform even enables developers to create custom apps using the Arduino IoT API, with custom endpoint webhooks to be added for enhanced flexibility.

Automatic control of devices through an API puts easy remote management at the heart of the platform. You can manage, configure, and connect not only Arduino hardware, but the vast majority of Linux-based devices easily and securely through a simple Internet connection. Devices are secured using X.509 certificate-based authentication, with further security benefits unlocked by the secure element crypto chips embedded into Arduino IoT-enabled boards.

This post was written by Valentina Chinnici, Arduino Product Manager.

Arduino and Google are excited to announce that the Science Journal app will be transferring from Google to Arduino this September! Arduino’s existing experience with the Science Journal and a long-standing commitment to open source and hands-on science has been crucial to the transfer ownership of the open source project over to Arduino.  

The Google versions of the app will officially cease support and updates on December 11th, 2020, with Arduino continuing all support and app development moving forward, including a brand new Arduino integration for iOS. 

Arduino Science Journal will include support for the Arduino Nano 33 BLE Sense board, as well as the Arduino Science Kit, with students able to document science experiments and record observations using their own Android or iOS device. The Science Journal actively encourages students to learn outside of the classroom, delivering accessible resources to support both teachers and students for remote or in person activities. For developers, the Arduino version will continue to be open: codes, APIs, and firmware to help them create innovative new projects.

“Arduino’s heritage in both education and open source makes us the ideal partner to take on and develop the great work started by Google with the Science Journal,” commented Fabio Violante, Arduino CEO. “After all, Arduino has been enabling hands-on learning experiences for students and hobbyists since they were founded in 2005. Our mission is to shape the future of the next generation of STEAM leaders, and allow them to have a more equitable and affordable access to complete, hands-on, and engaging learning experiences, in line with UN Sustainable Goals of Quality Education.”

In 2019, we released the Arduino Science Kit, an Arduino-based physics lab that’s fully compatible with the Science Journal. Moving forward, all new updates to the app will take place through Arduino’s new version of the Science Journal, available in September. 

The new Arduino version of the app will still be free and open to let users measure the world around them using the capabilities built into their phone, tablet, and Chromebook. Furthermore, Arduino will be providing better integration between the Science Journal and existing Arduino products and education programs. 

Stay tuned for Arduino’s version of the Science Journal, coming to iOS and Android in September 2020!

With thousands of users around the world entering the Arduino Certification Program, we are excited to announce the availability of the Arduino Certification Program: Arduino Fundamentals in Bengali, the seventh language now available.

Localized in partnership with our Education partner in Bangladesh – Code19, this first release of the ACP in Bengali opens up the opportunity for our huge Bengali speaking user base to become Arduino certified.

The Arduino Certification Program: Fundamentals is a structured way to enhance and validate your Arduino skills, and receive official recognition as you progress. Anyone interested in engaging with Arduino through a process that involves study, practice, and project building is encouraged to pursue this official certificate. 

The Fundamentals Certification offers the right balance of academic excellence and real-world skills to give participants the confidence and motivation they need to succeed both in educational and professional environments. Successful entrants receive an official certificate verifying their skills and knowledge on Arduino, which can be referred to in a resume for academic or professional purposes.

Based upon the Arduino Starter Kit, the official assessment covers three main subjects: theory and introduction to Arduino, electronics, and coding. During the exam, entrants are asked to answer 36 questions of varying difficulty and formats in 75 minutes. 

Questions will test knowledge on the following topics: 

  • Electricity 
  • Reading circuits and schematics 
  • Arduino IDE 
  • Arduino boards
  • Frequency and duty cycle
  • Electronic components
  • Programming syntax and semantics 
  • Programming logic

Want to learn more? You can find additional supporting information on how to take the program in Bengali via our partner Code19 here, or purchase the Arduino Certification Program: Fundamentals from our store.

The perfect companion to the Arduino IoT Cloud! Develop your IoT solution online via a desktop, then monitor and control your dashboards on your mobile with the new Arduino IoT Cloud Remote app.

Initially available for free for iPhone on the App Store (Android to follow in the next few weeks), the Arduino IoT Cloud Remote app gives you with the ability to access, monitor or control your IoT projects regardless of the time or place:

  • In the field: you can read the data from your soil sensors or start your irrigation system directly from anywhere. 
  • In the factory: constant visibility of the state of your manufacturing process status, with the ability to control your automation remotely. 
  • In the home: monitor your home automation systems, check your previous or actual energy consumption from the convenience of your sofa.

The latest dashboard for the Arduino IoT Cloud comes with a host of enhanced features. Creating your dashboard via a desktop or tablet is quick and easy. The tool automatically configures your devices (including the secure crypto element) and automatically generates the main code for your project, making setup as straightforward as possible. A broad set of simple widgets to connect to the properties provides maximum versatility and enables you to set up a new dashboard in minutes.

Your dashboards, how you like them — all dashboards are fully customizable, it’s possible to group devices and organize them in any sequence — just drag and drop to arrange the layout, and select from multiple options including graphs to visualize the data. You can gather and display data from multiple IoT devices in one dashboard, and control those devices as required through your dashboard to fully integrate your solution. 

The addition of the Arduino IoT Cloud Remote app to access, monitor, and control dashboards on the go via your phone is the final piece of the jigsaw. 

iOS version is now available for free from the App Store.

The Arduino CLI is an open source command line application written in Golang that can be used from a terminal to compile, verify and upload sketches to Arduino boards, and that’s capable of managing all the software and tools needed in the process. But don’t get fooled by its name: the Arduino CLI can do much more than the average console application, as shown by the Pro IDE and Arduino Create, which rely on it for similar purposes but each one in a completely different way from the other.

In this article, we introduce the three pillars of the Arduino CLI, explaining how we designed the software so that it can be effectively leveraged under different scenarios.

The first pillar: command line interface

Console applications for humans

As you might expect, the first way to use the Arduino CLI is from a terminal and by a human, and user experience plays a key role here. The UX is under a continuous improvement process as we want the tool to be powerful without being too complicated. We heavily rely on sub-commands to provide a rich set of different operations logically grouped together, so that users can easily explore the interface while getting very specific contextual help.

Console applications for robots

Humans are not the only type of customers we want to support and the Arduino CLI was also designed to be used programmatically — think about automation pipelines or a CI/CD system. 

There are some niceties to observe when you write software that’s supposed to be easy to run when unattended and one in particular is the ability to run without a configuration file. This is possible because every configuration option you find in the arduino-cli.yaml configuration file can be provided either through a command line flag or by setting an environment variable. To give an example, the following commands are all equivalent and will proceed fetching the unstable package index that can be used to work with experimental versions of cores: 

See the documentation for details about Arduino CLI’s configuration system.

Consistent with the previous paragraph, when it comes to providing output the Arduino CLI aims to be user friendly but also slightly verbose, something that doesn’t play well with robots. This is why we added an option to provide output that’s easy to parse. For example, the following figure shows what getting the software version in JSON format looks like.

Even if not related to software design, one last feature that’s worth mentioning is the availability of a one-line installation script that can be used to make the latest version of the Arduino CLI available on most systems with an HTTP client like curl or wget and a shell like bash.

The second pillar: gRPC interface

gRPC is a high-performance RPC framework that can efficiently connect client and server applications. The Arduino CLI can act as a gRPC server (we call it daemon mode), exposing a set of procedures that implement the very same set of features of the command line interface and waiting for clients to connect and use them. To give an idea, the following is some Golang code capable of retrieving the version number of a remote running Arduino CLI server instance:

gRPC is language-agnostic: even if the example is written in Golang, the programming language used for the client can be Python, JavaScript or any of the many supported ones, leading to a variety of possible scenarios. The new Arduino Pro IDE is a good example of how to leverage the daemon mode of the Arduino CLI with a clean separation of concerns: the Pro IDE knows nothing about how to download a core, compile a sketch or talk to an Arduino board and it demands all these features of an Arduino CLI instance. Conversely, the Arduino CLI doesn’t even know that the client that’s connected is the Pro IDE, and neither does it care.

The third pillar: embedding

The Arduino CLI is written in Golang and the code is organized in a way that makes it easy to use it as a library by including the modules you need in another Golang application at compile time. Both the first and second pillars rely on a common Golang API, a set of functions that abstract all the functionalities offered by the Arduino CLI, so that when we provide a fix or a new feature, they are automatically available to both the command line and gRPC interfaces. 

The source modules implementing this API can be imported in other Golang programs to embed a full-fledged Arduino CLI. For example, this is how some backend services powering Arduino Create can compile sketches and manage libraries. Just to give you a taste of what it means to embed the Arduino CLI, here is how to search for a core using the API:

Embedding the Arduino CLI is limited to Golang applications and requires a deep knowledge of its internals. For the average use case, the gRPC interface might be a better alternative; nevertheless this remains a valid option that we use and provide support for.

Conclusion

You can start playing with the Arduino CLI right away. The code is open source and we provide extensive documentation. The repo contains example code showing how to implement a gRPC client, and if you’re curious about how we designed the low-level API, have a look at the commands package and don’t hesitate to leave feedback on the issue tracker if you’ve got a use case that doesn’t fit one of the three pillars.



  • 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