【问题标题】:Is there a way to use Arduino CLI to compile sketch.ino to a .bin file?有没有办法使用 Arduino CLI 将 sketch.ino 编译为 .bin 文件?
【发布时间】:2019-08-09 12:10:57
【问题描述】:

我想在我的 Wemos D1 mini 上上传一个草图,通过 OTA 使用 Arduino CLI 或任何其他解决方案,但不使用 Arudino IDE,因为我需要让进程自行运行。 (1. 从 web 获取代码 / 2. 将其保存到 sketch.ino 文件 / 3. 使用脚本将其编译为 .bin 文件,4. 使用 espota.py 上传)

我可以通过 ITA 上传带有 espota.py 命令的草图,但我需要有一个已经编译的 .bin 文件,我使用 Arduino IDE 获得,所以不是我想要的。

命令: ~/Sketch> python espota.py -d -i ip_esp8266 -f sketch.bin

ip_esp8266 例如= 192.168.1.101 sketch.bin = 从 Arduino IDE 生成的文件 -> Sketch -> 导出编译后的二进制文件

【问题讨论】:

标签: arduino command-line-interface arduino-uno arduino-esp8266 ota


【解决方案1】:

我正在使用无头树莓派作为我的程序员,因为我的笔记本电脑被锁定了。我不熟悉espota.py,但下面的这个过程完全可以从命令行编译和上传.ino 代码。 arduino-cli 功能非常齐全,我在 Adafruit 的 Huzzah(使用 FTDI 电缆)和 Wemos D1 Mini(直接 USB)上取得了成功

首先要做的是添加 esp8266 板。我不确定我是怎么做到的,但是您可以通过config dump 命令查看哪些附加板可用:

pi@dogwood:~/sketchbook $ arduino-cli config dump
proxy_type: auto
sketchbook_path: /home/pi/Arduino
arduino_data: /home/pi/.arduino15

于是我破解了/home/pi/.arduino15/目录,里面有一个arduino-cli.yaml文件。在那里,我添加了 ESP8266 包,使 arduino-cli.yaml 看起来像这样:

pi@dogwood:~/sketchbook $ cat /home/pi/.arduino15/arduino-cli.yaml 
proxy_type: auto
sketchbook_path: /home/pi/Arduino
arduino_data: /home/pi/.arduino15
board_manager:
  additional_urls:
  - http://arduino.esp8266.com/stable/package_esp8266com_index.json

(我为此奋斗了几次,所以可能不是 100%,但 config dump 应该反映它使用的数据目录,并且应该有一个带有附加 URL 的 .yaml 文件)

在没有插入 D1 的情况下,运行以下命令查看列出的端口:

arduino-cli board list

然后插入 D1,输出应该是这样的:

Port         Type              Board Name FQBN Core
/dev/ttyAMA0 Serial Port       Unknown             
/dev/ttyUSB0 Serial Port (USB) Unknown  

对于 Huzzah 和 D1,我的板名未知,但它们都是 ESP8266 板。 board listall 命令将显示所有板子及其 FQBN,这是编译和上传所需的:



pi@dogwood:~/sketchbook $ arduino-cli board listall
Board Name                        FQBN                            
4D Systems gen4 IoD Range         esp8266:esp8266:gen4iod         
Adafruit Circuit Playground       arduino:avr:circuitplay32u4cat  
Adafruit Feather HUZZAH ESP8266   esp8266:esp8266:huzzah  

....snip.....

LOLIN(WEMOS) D1 R2 & mini         esp8266:esp8266:d1_mini         
LOLIN(WEMOS) D1 mini Lite         esp8266:esp8266:d1_mini_lite    
LOLIN(WEMOS) D1 mini Pro          esp8266:esp8266:d1_mini_pro    
WeMos D1 R1                       esp8266:esp8266:d1       

从那里,我复制 FQBN。 然后(或者之前),我创建一个新草图:

pi@dogwood:~/sketchbook $ arduino-cli sketch new MyFirstSketch
Sketch created in: /home/pi/sketchbook/MyFirstSketch

然后编辑.ino文件并编译:

pi@dogwood:~/sketchbook $ vim ./MyFirstSketch/MyFirstSketch.ino 
pi@dogwood:~/sketchbook $ 
pi@dogwood:~/sketchbook $ SKETCH=MyFirstSketch
pi@dogwood:~/sketchbook $ arduino-cli compile --fqbn esp8266:esp8266:d1_mini $SKETCH
Sketch uses 257680 bytes (24%) of program storage space. Maximum is 1044464 bytes.
Global variables use 26572 bytes (32%) of dynamic memory, leaving 55348 bytes for local variables. Maximum is 81920 bytes.
pi@dogwood:~/sketchbook $ 

然后上传:

pi@dogwood:~/sketchbook $ arduino-cli upload -p /dev/ttyUSB0 --fqbn esp8266:esp8266:d1_mini $SKETCH
No new serial port detected.
esptool.py v2.6
2.6
esptool.py v2.6
Serial port /dev/ttyUSB0
Connecting....
Chip is ESP8266EX
Features: WiFi
MAC: ec:fa:bc:61:0e:31
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 460800
Changed.
Configuring flash size...
Auto-detected Flash size: 4MB
Compressed 261840 bytes to 191242...
Wrote 261840 bytes (191242 compressed) at 0x00000000 in 7.4 seconds (effective 282.8 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...

上传后我不得不重置 Huzzah,但上传后 D1 mini 运行良好并正确运行了我的代码。

要获得串行监视器,请使用 screen 之类的东西,如下所示:

screen /dev/ttyUSB0 115200

【讨论】:

    【解决方案2】:

    在当前版本中,您可以执行以下操作来获取输出文件:

    arduino-cli compile --fqbn arduino:avr:uno my_arduino_program.ino --output-dir ./
    

    所有二进制文件和工件文件都将在当前目录中。

    但是,手册页显示我们应该能够只通过 -o 并获得二进制输出。但它不适用于我当前下载的主分支arduino-cli

    【讨论】:

      【解决方案3】:

      搜索AVRDUDE,可以通过命令行有效地使用AVRDUDE。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-07-03
        • 2011-09-02
        • 1970-01-01
        • 2021-07-10
        • 2013-10-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多