Arduino Releases Command Line Interface (CLI) Alpha Preview

Orange Pi Development Boards

So far, AFAIK the only official ways to program Arduino boards were through the Arduino IDE program, or the cloud-based Arduino Create which works in your web browser and does not require any installation on your computer.

While graphical interfaces are nice and user-friendly, many of us are more productive while working using the command line,  especially if commands can be scripted. So Arduino decided to work on a command line interface (CLI) for professional users, and have just announced a preview release.

arduino-cli

arduino-cli works in Windows, Linux, and Mac OS, and allows you install libraries, boards, and cores (e.g. esp32 Arduino core), compile the code, and upload the binary to the target board.

If you want to get started quickly, you can download the binary “alpha” releases in the announcement board, but instead I opted to build the client myself as explained on Github. Everything below is done in Ubuntu 18.04.


I don’t have a board handy right now, so I’ll just try some commands to create new project, install boards, and build the code again mostly following the README in github.

  • Creating a new sketch


This create a Sketch with minimal code:

  • Modifying the code with vi/emacs, or other editors

  • Finding core and install it:


There’s no ESP32, so I used esp8266 instead, and it’s already installed on my system so nothing to do here if you plan to go with ESP8266, but if you had another board with the core not installed, that’s how we’d go:

  • Listing and installing libraries

Command the list already installed libraries:


Command to search for a library to install:


Installing the library:

  • Building our sketch for MKR1000

  • Checking board connection

While I don’t have a board here with me, I do has a USB to TTL debug board detected by the following command:


It shows “unknown” because it’s not an Arduino board, but you’d have the same results if the Arduino core for your board was not installed for example. If it is, the board name will be displayed.

  • JSON parsing

They also implemented an option to output JSON data for parsing by other program. e.g.:


jq is a command line JSON processor used to “beautify” the output.

arduino-cli json

Arduino Command Line Interface is a welcomed development, and it looks to work reasonably well considering it’s still alpha stage software.

Support CNX Software - Donate via PayPal or become a Patron on Patreon

6
Leave a Reply

avatar
6 Comment threads
0 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
5 Comment authors
relghuarerrepuntozoobabgeokonwilly Recent comment authors
  Subscribe  
newest oldest most voted
Notify of
willy
Guest
willy

That’s a great news for two reasons. The first one is that it will significantly simplify CLI usage. I’ve mostly used arduino via the CLI already because their IDE is a real pain to use, the editor almost doesn’t work, it does everything it can to annoy you. So I enabled verbose mode for executed commands, took note of them and placed them inside makefiles. But that was really not trivial to use, especially when it comes to dependencies. So at least now I should be able to compile regular programs without having to edit them in their awful editor.

The second reason is that Arduino is an education kit. Teaching kids to “click here” and wait is really bad to teach them how it works. It’s important that they understand the steps behind the curtains. At least here they will be able to organize their commands depending on what they changed. They will see that they have to save the file in their editor before building. And they will be able to write scripts, which are also programs.

That’s why it’s a great news ūüôā

geokon
Guest

Man.. the embedded space is so bizarre, it always seems like they sorta reinvented the wheel instead of using existing tools. They say “Many of you requested a way to use our tools in Makefiles” and then present some weird custom solution of theirs – instead of a way to build a link things in a sane/standard way. They’ve done a LOT of the hard work of making stuff “just-work”, but why didn’t they do all this using the normal tool-chain like CMake/git/GNU-tools/crosstool-NG/etc.? (well the only obvious reason is Arduino/Platformio/and-company try to establish lock in)

zoobab
Guest

Normally you do the other way around: first you design the CLI, then you map the GUI on top of it to execute those commands. Here it is the other way around…

I am now building a gitlab-ci example, together with a deployment based on a Kubernetes cluster running on an armbian box for the flashing, stay tuned…

zoobab
Guest

Idea: a vim plugin ūüôā

errepunto
Guest
errepunto

This seems very similar to platformIO…

relghuar
Guest
relghuar

Well, I’m using arduino-builder for over a year already, works quite fine once you know how to set up the build.options.json file. Works also perfectly on arm architechtures, so you can for example develop/fix stuff easily directly on the ras-pi board working as a long-term base for your arduino project…