700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Arduino CLI命令行ESP32开发环境搭建(Linux Ubuntu操作系统)

Arduino CLI命令行ESP32开发环境搭建(Linux Ubuntu操作系统)

时间:2024-05-14 00:10:56

相关推荐

Arduino CLI命令行ESP32开发环境搭建(Linux Ubuntu操作系统)

陈拓/03/06-/03/11

简介

Arduino cli是一个命令行界面,您可以使用它创建草图(sketch)并将其上传到开发板中。它提供了ArduinoIDE的所有功能:

编写sketch

上载sketch

库管理

开发板和核心管理

我们可以在命令行中使用所有这些功能,而无需使用Arduino IDE。

Arduino cli概念

如果您熟悉Arduino IDE,那么迁移到Arduino cli不会有问题。即使这样,Arduino命令行界面中有一些重要的概念或关键字:

sketch草图:这是我们正在编写的应用程序的源代码

board开发板:它是我们正在使用的板,以及我们想要上传代码的位置。开发板由称为FQBN的唯一id标识。

code核心:它是开发板会使用的核心。可以有几个不同的开发板使用相同的内核。

library库:它是我们在草图中包含的一个软件,由其他人开发,负责管理特定任务:传感器库、LED库、协议库等

我的环境

CPU

操作系统

Arduino CLI官方网站

https://arduino.github.io/arduino-cli/0.31/installation/

Arduino CLI是一个多功能解决方案,它提供了板/库管理器、sketch(草图,Arduino程序)生成器、板检测、上传器以及从命令行或机器界面使用任何Arduino兼容板和平台所需的许多其他工具。

除了作为一个独立的工具,ArduinoCLI是所有Arduino官方开发软件(Arduino IDE、Arduino Web编辑器)的核心。本文档的部分内容也适用于这些工具。

安装Arduino CLI

您有几个选项可以在系统上安装最新版本的Arduino CLI,请参阅安装页面:https://arduino.github.io/arduino-cli/0.31/installation/

有几个选项可用于安装ArduinoCLI。我使用安装脚本。

使用脚本安装

此脚本将最新版本的ArduinoCLI安装到$PWD/bin:

curl -fsSL /arduino/arduino-cli/master/install.sh | sh

其他安装方法见:

https://arduino.github.io/arduino-cli/0.31/installation/

配置Arduino CLI

6.1 开始之前

arduino cli是一个命令容器,每个命令都有自己的专用帮助文本,可以通过以下帮助命令显示:

cd bin

$ arduino-cli help core

命令前面还要加./,不方便。

添加环境变量

为了在任意位置使用arduino-cli命令,添加环境变量:

nano ~/.bashrc

export PATH=$HOME/bin/arduino-cli:$PATH

添加到最后一行

刷新环境变量

source ~/.bashrc

查看环境变量

echo $PATH

这样arduino-cli help core前面就不用加./了:

Arduino Core(核心)操作。

用法: arduino-cli core [command]

实例: ./arduino-cli core update-index

可用命令:

download 下载一个或多个内核和相应的工具依赖项。

install 安装一个或多个内核和相应的工具依赖项。

list 显示已安装平台的列表。

search 在Boards Manager中搜索核心。

uninstall 如果不再使用,卸载一个或多个内核和相应的工具依赖项。

update-index 更新核心索引。

upgrade 将一个或所有已安装的平台升级到最新版本。

标志:

-h, --help 核心帮助

全局标志:

--additional-urls strings 为Boards Manager添加URL。

--config-file string 自定义配置文件(如果未指定,将使用默认值)。

--format string 输出格式可以是[text|json]。(默认为“文本”)

--log-file string 写入日志文件的路径。

--log-format string 日志的输出格式可以是[text|json]。

--log-level string 将记录此级别及以上的消息

-v, --verbose 在标准输出上打印日志。

有关命令的详细信息,请使用“arduinocli core[command]--help”。

6.2 配置ESP32开发板

创建配置文件arduino-cli.yaml

Arduino CLI并不严格要求有配置文件才能工作,因为命令行界面提供了任何可能的功能。但是,在发出命令时,有一个配置文件可以省去大量的输入,所以让我们继续创建它:

$ arduino-cli config init

如果您查看arduino-cli.yaml的内容,您将找到具有各自默认值的可用选项。有关更多信息,请参阅配置文档:

https://arduino.github.io/arduino-cli/0.31/configuration/

查看arduino-cli.yaml的内容

修改arduino-cli.yaml

为Boards Manager添加ESP32的URL。

/dl/package_esp32_index.json

nano ~/.arduino15/arduino-cli.yaml

单双引号都可以。

或这样写:

URL:/dl/package_esp32_index.json

只支持ESP32:

如果要支持ESP32-S2、ESP32-S3、ESP32-C3应使用下面的URL:

/espressif/arduino-esp32/gh-pages/package_esp32_index.json

对于这个URL,请看后面的操作。

更新index

新安装后要做的第一件事是通过运行以下命令更新可用平台和库的本地缓存:

arduino-cli core update-index

列出Arduino cli中的所有可用的开发板

在对草图进行编码之前,重要的是验证Arduino命令行界面应用程序是否支持我们将在Arduino项目中使用的板。为此,使用Arduino cli命令:

arduino-cli board listall

Board Name FQBN

AI Thinker ESP32-CAM esp32:esp32:esp32cam

ALKS ESP32 esp32:esp32:alksesp32

Adafruit ESP32 Feather esp32:esp32:featheresp32

BPI-BIT esp32:esp32:bpi-bit

D-duino-32 esp32:esp32:d-duino-32

DOIT ESP32 DEVKIT V1 esp32:esp32:esp32doit-devkit-v1

DOIT ESPduino32 esp32:esp32:esp32doit-espduino

Dongsen Tech Pocket 32 esp32:esp32:pocket_32

ESP32 Dev Module esp32:esp32:esp32

ESP32 FM DevKit esp32:esp32:fm-devkit

ESP32 Pico Kit esp32:esp32:pico32

ESP32 Wrover Module esp32:esp32:esp32wrover

ESP32vn IoT Uno esp32:esp32:esp32vn-iot-uno

ESPea32 esp32:esp32:espea32

ESPectro32 esp32:esp32:espectro32

ET-Board esp32:esp32:ET-Board

Electronic SweetPeas - ESP320 esp32:esp32:esp320

FireBeetle-ESP32 esp32:esp32:firebeetle32

Frog Board ESP32 esp32:esp32:frogboard

HONEYLemon esp32:esp32:honeylemon

Heltec WiFi Kit 32 esp32:esp32:heltec_wifi_kit_32

Heltec WiFi LoRa 32 esp32:esp32:heltec_wifi_lora_32

Heltec WiFi LoRa 32(V2) esp32:esp32:heltec_wifi_lora_32_V2

Heltec Wireless Stick esp32:esp32:heltec_wireless_stick

Heltec Wireless Stick Lite esp32:esp32:heltec_wireless_stick_lite

Hornbill ESP32 Dev esp32:esp32:hornbill32dev

Hornbill ESP32 Minima esp32:esp32:hornbill32minima

IMBRIOS LOGSENS_V1P1 esp32:esp32:imbrios-logsens-v1p1

INEX OpenKB esp32:esp32:OpenKB

IntoRobot Fig esp32:esp32:intorobot-fig

KITS ESP32 EDU esp32:esp32:kits-edu

LOLIN D32 esp32:esp32:d32

LOLIN D32 PRO esp32:esp32:d32_pro

Labplus mPython esp32:esp32:mPython

LoPy esp32:esp32:lopy

LoPy4 esp32:esp32:lopy4

M5Stack-ATOM esp32:esp32:m5stack-atom

M5Stack-Core-ESP32 esp32:esp32:m5stack-core-esp32

M5Stack-Core2 esp32:esp32:m5stack-core2

M5Stack-CoreInk esp32:esp32:m5stack-coreink

M5Stack-FIRE esp32:esp32:m5stack-fire

M5Stack-Timer-CAM esp32:esp32:m5stack-timer-cam

M5Stick-C esp32:esp32:m5stick-c

MGBOT IOTIK 32A esp32:esp32:mgbot-iotik32a

MGBOT IOTIK 32B esp32:esp32:mgbot-iotik32b

MH ET LIVE ESP32DevKIT esp32:esp32:mhetesp32devkit

MH ET LIVE ESP32MiniKit esp32:esp32:mhetesp32minikit

MagicBit esp32:esp32:magicbit

Metro ESP-32 esp32:esp32:metro_esp-32

Microduino-CoreESP32 esp32:esp32:CoreESP32

Nano32 esp32:esp32:nano32

Node32s esp32:esp32:node32s

NodeMCU-32S esp32:esp32:nodemcu-32s

Noduino Quantum esp32:esp32:quantum

ODROID ESP32 esp32:esp32:odroid_esp32

OLIMEX ESP32-DevKit-LiPo esp32:esp32:esp32-DevKitLipo

OLIMEX ESP32-EVB esp32:esp32:esp32-evb

OLIMEX ESP32-GATEWAY esp32:esp32:esp32-gateway

OLIMEX ESP32-PoE esp32:esp32:esp32-poe

OLIMEX ESP32-PoE-ISO esp32:esp32:esp32-poe-iso

OROCA EduBot esp32:esp32:oroca_edubot

Onehorse ESP32 Dev Module esp32:esp32:onehorse32dev

Piranha ESP-32 esp32:esp32:piranha_esp-32

ProtoCentral HealthyPi 4 esp32:esp32:healthypi4

Pycom GPy esp32:esp32:gpy

S.ODI Ultra v1 esp32:esp32:S_ODI_Ultra

Senses's WEIZEN esp32:esp32:sensesiot_weizen

Silicognition wESP32 esp32:esp32:wesp32

SparkFun ESP32 Thing esp32:esp32:esp32thing

SparkFun ESP32 Thing Plus esp32:esp32:esp32thing_plus

SparkFun LoRa Gateway 1-Channelesp32:esp32:sparkfun_lora_gateway_1-channel

T-Beam esp32:esp32:t-beam

TTGO LoRa32-OLED V1 esp32:esp32:ttgo-lora32-v1

TTGO LoRa32-OLED v2.1.6 esp32:esp32:ttgo-lora32-v21new

TTGO T-Watch esp32:esp32:twatch

TTGO T1 esp32:esp32:ttgo-t1

TTGO T7 V1.3 Mini32 esp32:esp32:ttgo-t7-v13-mini32

TTGO T7 V1.4 Mini32 esp32:esp32:ttgo-t7-v14-mini32

ThaiEasyElec's ESPino32 esp32:esp32:espino32

TinyPICO esp32:esp32:tinypico

Turta IoT Node esp32:esp32:turta_iot_node

VintLabs ESP32 Devkit esp32:esp32:vintlabs-devkit-v1

WEMOS D1 MINI ESP32 esp32:esp32:d1_mini32

WEMOS LOLIN32 esp32:esp32:lolin32

WEMOS LOLIN32 Lite esp32:esp32:lolin32-lite

WeMos WiFi&BluetoothBattery esp32:esp32:WeMosBat

WiFiduino32 esp32:esp32:wifiduino32

WiPy 3.0 esp32:esp32:wipy3

Widora AIR esp32:esp32:widora-air

XinaBox CW02 esp32:esp32:cw02

u-blox NINA-W10 series (ESP32) esp32:esp32:nina_w10

查看已安装的核心

arduino-cli core list

没有。

搜索可以安装的安装ESp32核心

arduino-cli core search esp32

安装ESP2核心

arduino-cli core install esp32:esp32

核心升级

arduino-cli core upgrade

已经是最新版本。

安装arduino:var核心(这个板子我没有,这里只是好奇测试一下,可以略过)

arduino-cli core install arduino:avr

再次查看已安装的核心

arduino-cli core list

卸载arduino:var核心(如果已安装)

arduino-cli core uninstall arduino:avr

已经安装的核心:

很好,现在我们已经准备好为ESP32编译并上传sketch了。

但是,这个配置版本太低,只支持ESP32,下面我们配置ESP32的高版本。

6.3 配置ESP32、ESP32-S2、ESP32-S3和ESP32-C3开发板

前面我们通过修改arduino-cli.yaml为Boards Manager添加了ESP32的URL。

也可以使用命令行标志更新index

通过命令行标志为Boards Manager添加高版本的ESP32 URL

Arduino CLI的命令行标志记录在命令行帮助和Arduino命令参考中。

https://arduino.github.io/arduino-cli/0.31/commands/arduino-cli/

使用--additionalurls命令行标志设置其他BoardsManager URL:

我们使用下面的URL:

/espressif/arduino-esp32/gh-pages/package_esp32_index.json

以支持ESP32-S2、ESP32-S3和ESP32-C3。

arduino-cli core update-index--additional-urls /espressif/arduino-esp32/gh-pages/package_esp32_index.json

相关内容详情见:

https://arduino.github.io/arduino-cli/0.31/configuration/

查看已安装的核心

arduino-cli core list

升级核心

arduino-cli core upgrade

如果失败,像这样

反复操作这个命令:

直至成功:

再查看已安装的核心

arduino-cli core list

6.4 将开发板连接到电脑

我的ESP32开发板

使用USB-串口电缆将电路板连接到电脑后,您应该能够通过运行以下命令检查是否已识别:

查看ESP32开发板连接电脑的串口

ls -l /dev/ttyUSB*

修改串口权限

sudo chmod 777 /dev/ttyUSB0

检查Arduino是否已识别开发板

arduino-cli board list

如果您看到开发板的类型是未知(Unknown),只要您识别了平台核心并使用正确的FQBN字符串,上传仍应有效。

再执行arduino-cli board list

arduino-cli board list –format json

查看开发板的详细信息

arduino-cli board details -b esp32:esp32

测试

7.1 创建新的sketch

要在当前目录中创建名为MyFirstSketch的新sketch,请运行以下命令:

arduino-cli sketch new MyFirstSketch

sketch是包含资源(如源文件和库)的文件夹;新命令将为您创建一个名为MyFirstSketch.ino的.ino文件,其中包含Arduino样板代码:

cat $HOME/bin/MyFirstSketch/MyFirstSketch.ino

此时,您可以使用您喜爱的文件编辑器或IDE打开文件,我用nano:

nano $HOME/bin/MyFirstSketch/MyFirstSketch.ino

如下更改代码:

#define LED_BUILTIN 2void setup() {pinMode(LED_BUILTIN, OUTPUT);Serial.begin(115200);}void loop() {digitalWrite(LED_BUILTIN, HIGH);delay(1000);digitalWrite(LED_BUILTIN, LOW);delay(1000);Serial.println("helloworld");delay(2000);}

7.2 编译

设置python3为默认python

whereis python

sudo ln -s /usr/bin/python3.8/usr/bin/python

编译

cd MyFirstSketch

arduino-cli compile -besp32:esp32:esp32 MyFirstSketch.ino

编译完成。

升级核心后编译:

7.3 上传到开发板

修改串口权限:

sudo chmod 777 /dev/ttyUSB0

上传:

arduino-cli upload-p /dev/ttyUSB0 --fqbn esp32:esp32:esp32:UploadSpeed=115200 MyFirstSketch.ino

板载蓝色LED以每秒一次频率闪烁。

如果串口被其他进程占用

查看占用串口的进程:

ps -aux | grep ttyUSB*

杀掉进程:

fuser -k /dev/ttyUSB0

7.4 串口监视器

查看串口信息:

arduino-cli monitor -p /dev/ttyUSB0--describe

启用串口监视器:

arduino-cli monitor -p /dev/ttyUSB0 -c baudrate=115200

参考文档

MacOS下使用Arduino命令行工具进行嵌入式开发——Arduino CLI使用教程

/p/437784814

ESP32 with Arduino CLI

https://dev.to/stepanvrany/esp32-with-arduino-cli-36mh

树莓派上ESP32C3-arduino-cli配置方法

/video/BV14T411w714/

Arduino-cli: compile, uploadand manage libraries, cores, and boards

/blog/Activities/Arduino_cli__compile__upload_and_manage_libraries__cores__and_boards.html

With esp32 can't usebaud=115200 option #824

/arduino/arduino-cli/issues/824

monitor does not apply serial port configuration change …

/arduino/arduino-cli/issues/1562

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。