Arduino IDE 2.0(二):認識Arduino CLI工具

Arduino IDE可粗略分成前端(程式編輯器)和後端(程式編譯和上傳工具)兩大部分,在前端方面,1.x版傾向用於編寫單一程式檔案(.ino檔),操作介面對初學者很友善,不像一些程式開發工具畫面充斥各種窗格以及繁多的工具鈕和選單,它就像Arduino Uno開發板,沒有多餘的元件,不會把初學者嚇跑。

但是對有經驗的程式設計師來說,Arduino IDE的程式編輯器功能實在太陽春,也缺乏程式碼除錯功能,因此有些人改用其他程式編輯器來開發Arduino程式碼,像Eclipse, Sublime Text, VS Code, … 等等。

Arduino官網的”Arduino CLI: An introduction“貼文提到,最初用Java語言開發的Arduino IDE,歷經十多年的修訂、新增功能,以及新開發的Web版編輯器,開始出現一些功能重疊或者贅餘的程式碼,而且開發工具本身的原始碼也變得不易維護。

為此,Arduino官方拆分並重新打造IDE的「前端」和「後端」元件,前端的重點功能包括:

  • 引入現代程式編輯器的功能,例如:程式碼提示。
  • 建立全新的框架,讓新進的程式開發人員更容易替IDE開發新功能。
  • 整合Arduino Cloud雲端服務:方便儲存、分享Arduino專案並與多人協同開發。
  • 可支援多種程式語言:例如,未來可能加入支援MicroPython。

「後端」的主要功能是編譯和上傳程式碼,由另一個稱為Arduino CLI(代表Command Line Interface,也就是文字命令介面)工具程式負責。這個CLI已經整合到Arduino IDE 2.0以及Web版開發工具,其他軟體廠商或程式設計師也可以把這個CLI整併到其他程式編輯器中,就不用像以前使用VS Code開發Arduino,還得先安裝Arduino IDE。

Arduino CLI具備安裝工具鏈(程式編譯器)、安裝程式庫、編譯、上傳、除錯、序列通訊等功能,可單獨安裝運作,有Windows, Mac和Linux版,可在開源專案的這個頁面下載。

事先聲明:本文只是示範Arduino CLI的基本操作,一般使用Arduino IDE開發程式,並不需要額外安裝Arduino CLI,也不用透過文字命令操作。編譯和上傳程式碼,僅需按下工具列的按鈕。

單獨安裝Arduino CLI之後,以Windows版為例,安裝之後,開啟「命令提示字元」或「終端機」,輸入arduino-cli命令,將能看到如下的使用簡介:

Arduino 命令行界面 (arduino-cli)

用法:
arduino-cli [command]

示例:
arduino-cli <命令> [参数…]

可用命令:
board           Arduino 开发板命令
burn-bootloader 上传引导加载程序。
cache           Arduino 缓存命令。
compile         编译 Arduino 项目
completion      已生成脚本
config          Arduino 配置命令。
core            Arduino 内核操作。
daemon          在端口上作为守护进程运行:50051
debug           调试 Arduino 项目
help            Help about any command
lib             Arduino 关于库的命令。
monitor         开启开发板的通信端口。
outdated        列出可以升级的内核和库
sketch          Arduino CLI 项目命令
update          更新内核和库的索引
upgrade         升级已安装的内核和库。
upload          上传 Arduino 项目。
version         显示 Arduino CLI 的版本号。

参数:
–additional-urls strings   以逗号分隔的开发板管理器附加地址列表。
–config-file string        自定义配置文件(如果未指定,将使用默认值)。
–format string             日志的输出格​​式,可以是:text, json, jsonmini, yaml (default “text”)
-h, –help                      help for arduino-cli
–log-file string           写入日志的文件的路径。
–log-format string         日志的输出格​​式,可以是:text, json
–log-level string          记录此级别及以上的消息。有效级别为 trace, debug, info, warn, error, fatal, panic
–no-color                  Disable colored output.
-v, –verbose                   在标准输出上打印日志。

使用Arduino CLI編譯並上傳程式

底下示範採用Arduino CLI編譯、上傳Arduino Uno開發板程式的步驟。首先執行update命令更新開發板和相關程式套件:

arduino-cli update
arduino-cli update

列舉已經安裝的核心元件(開發板編譯工具;工具鏈),如果你的電腦有安裝Arduino IDE,這個命令將會取得你曾經安裝過的控制板開發工具(如:ESP32);Arduino Uno採用的ATmega328處理器屬於AVR系列晶片。

arduino-cli core list
arduino-cli core list

你可以透過開發板的名稱搜尋已安裝的核心元件,執行這個指令時,它發現並安裝了CLI欠缺的工具,例如serial-monitor(序列監視器):

arduino-cli core search uno
arduino-cli core search uno

假設你的電腦沒有安裝ESP32的工具鏈,可以執行底下的命令安裝:

arduino-cli core install esp32:esp32
arduino-cli core install esp32:esp32

請先把開發板(此例為Arduino Uno)接上電腦USB埠,然後執行底下命令,列舉已連接的開發板,其中的FQBN是“fully-qualified board name”的縮寫,代表「完全合格的開發板名稱」,也就是此開發板的唯一識別名稱。

arduino-cli board list
arduino-cli board list

建立新程式專案的命令是new,底下命令將在你的使用者家目錄中新建一個“blink”目錄,並存入空白的blink.ino程式檔。

arduino-cli sketch new blink
arduino-cli sketch new blink

Arduino CLI命令行工具不包含程式編輯器,你可以用任何文字編輯器開啟剛剛建立的blink.ino,然後編寫程式碼。例如,用「記事本」編輯blink.ino,輸入控制LED閃爍的程式碼:

Arduino程式碼

接著執行compile命令編譯blink專案,透過–fqbn參數指定開發板類型,此例為Arduino Uno板,所以「完全合格的開發板名稱」是arduino:avr:uno。

arduino-cli compile --fqbn arduino:avr:uno  blink
arduino-cli compile --fqbn arduino:avr:uno blink

最後執行upload命令上傳編譯完成的程式檔,透過–port參數指定開發板連接的序列埠號。

arduino-cli upload --port COM7 --fqbn  arduino:avr:uno blink
arduino-cli upload --port COM7 --fqbn arduino:avr:uno blink

上傳完畢,Uno板子上的LED就會開始閃爍。

Posts created 470

2 thoughts on “Arduino IDE 2.0(二):認識Arduino CLI工具

  1. 感觉这样的Arduino开发工具越来越变得像PlatformIO,可惜错过了风口,不过一些细节调度确实不如PlatformIO好用,比如单独记录库版本,这样陈年老程式也可以跑得起来。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

Related Posts

Begin typing your search term above and press enter to search. Press ESC to cancel.

Back To Top