Windowsのコマンドプロンプトでarduino-cliに挑戦

(2018/10/12) バージョン追従メンテナンス (invalid baud rate specified '{upload.speed}'の話題)

(2018/9/5) 追記 ignorantさんからold bootloaderの情報あり


はじめに

arduino-cliがBlogで発表されていたので、早速Windowsで使ってみました。

試したボードはArduino Nanoです。


試したこと

まず、Windows版arduino-cliをダウンロードして「配置(コマンドプロンプト)」のように配置しました。

%USERPROFILE%\workディレクトリの下です。


配置(コマンドプロンプト)

C:\Users\user1\work>dir

ドライブ C のボリューム ラベルは OS です
ボリューム シリアル番号は 96E0-12DB です

C:\Users\user1\work のディレクトリ

2018/10/12 10:06 <DIR> .
2018/10/12 10:06 <DIR> ..
2018/10/12 08:56 17,134,592 arduino-cli-0.3.1-alpha.preview-windows.exe
1 個のファイル 17,134,592 バイト
2 個のディレクトリ 24,482,226,176 バイトの空き領域


Arduino Nanoが使えるか、パッケージ情報の更新などしてみました。

ただし、Arduino Nanoのold bootloaderには対応していないようです。

arduino:avrが対象のようです。


準備

C:\Users\user1\work>arduino-cli-0.3.1-alpha.preview-windows.exe core update-index

Updating index: package_index.json downloaded

C:\Users\user1\work>arduino-cli-0.3.1-alpha.preview-windows.exe core search arduino
Searching for platforms matching 'arduino'

ID Version Name
Intel:arc32 2.0.2 Intel Curie Boards
arduino:avr 1.6.23 Arduino AVR Boards
arduino:nrf52 1.0.2 Arduino nRF52 Boards
arduino:sam 1.6.11 Arduino SAM Boards (32-bits ARM Cortex-M3)
arduino:samd 1.6.19 Arduino SAMD Boards (32-bits ARM Cortex-M0+)
arduino:samd_beta 1.6.24 Arduino SAMD Beta Boards (32-bits ARM Cortex-M0+)
arduino:stm32f4 1.0.1 Arduino STM32F4 Boards
littleBits:avr 1.0.0 littleBits Arduino AVR Modules


ここでArduino Nano用にarduino:avrをインストールしました。


インストール

C:\Users\user1\work>arduino-cli-0.3.1-alpha.preview-windows.exe core install arduino:avr

Downloading arduino:avr-gcc@5.4.0-atmel3.6.1-arduino2...
arduino:avr-gcc@5.4.0-atmel3.6.1-arduino2 downloaded
Downloading arduino:avrdude@6.3.0-arduino14...
arduino:avrdude@6.3.0-arduino14 downloaded
Downloading arduino:arduinoOTA@1.2.1...
arduino:arduinoOTA@1.2.1 downloaded
Downloading arduino:avr@1.6.23...
arduino:avr@1.6.23 downloaded
Installing arduino:avr-gcc@5.4.0-atmel3.6.1-arduino2
arduino:avr-gcc@5.4.0-atmel3.6.1-arduino2 installed
Installing arduino:avrdude@6.3.0-arduino14
arduino:avrdude@6.3.0-arduino14 installed
Installing arduino:arduinoOTA@1.2.1
arduino:arduinoOTA@1.2.1 installed
Installing arduino:avr@1.6.23...
arduino:avr@1.6.23 installed

ワークスペースを作ります。

なお、ワークスペースとプログラムが置かれる場所は以下のようです。


  • "%USERPROFILE%\Documents\Arduino"

  • "%USERPROFILE%\AppData\Local\Arduino15"


ワークスペースを作成する

C:\Users\user1\work>arduino-cli-0.3.1-alpha.preview-windows.exe sketch new Blink

Sketch created in: C:\Users\user1\Documents\Arduino\Blink

スケッチを編集します。


スケッチを編集する

C:\Users\user1\work>start notepad C:\Users\user1\Documents\Arduino\Blink\Blink.ino


今回のスケッチはLチカ。


blink.ino

void setup() {

pinMode(13, OUTPUT);
}

void loop() {
digitalWrite(13, HIGH);
delay(500);
digitalWrite(13, LOW);
delay(500);
}


コンパイルします。

ただし、Arduino Nanoはブートローダの種類によって少しオプション(fqbn)が違います。


コンパイル(new.bootloader)

C:\Users\user1\work>arduino-cli-0.3.1-alpha.preview-windows.exe compile --fqbn arduino:avr:nano:atmega328 "%USERPROFILE%\Documents\Arduino\Blink"

Downloading and installing missing tool: builtin:ctags@5.8-arduino11
Downloading builtin:ctags@5.8-arduino11...
builtin:ctags@5.8-arduino11 downloaded
Installing builtin:ctags@5.8-arduino11
builtin:ctags@5.8-arduino11 installed
Sketch uses 444 bytes (1%) of program storage space. Maximum is 30720 bytes.
Global variables use 9 bytes (0%) of dynamic memory, leaving 2039 bytes for local variables. Maximum is 2048 bytes.


コンパイル(old.bootloader)

C:\Users\user1\work>arduino-cli-0.3.1-alpha.preview-windows.exe compile --fqbn arduino:avr:nano:cpu=atmega328old %USERPROFILE%\Documents\Arduino\Blink"

Downloading and installing missing tool: builtin:ctags@5.8-arduino11
Downloading builtin:ctags@5.8-arduino11...
builtin:ctags@5.8-arduino11 downloaded
Installing builtin:ctags@5.8-arduino11
builtin:ctags@5.8-arduino11 installed
Build options changed, rebuilding all
Sketch uses 444 bytes (1%) of program storage space. Maximum is 30720 bytes.
Global variables use 9 bytes (0%) of dynamic memory, leaving 2039 bytes for local variables. Maximum is 2048 bytes.

Arduino NanoのCOMポート番号を調べます。

日本語だとガタガタ表示になったので「chcp 437」で英語にしました。「chcp 932」で日本語へ戻せます。


COMポート番号を調べる

C:\Users\user1\work>mode


Status for device COM3:
-----------------------
Baud: 115200
Parity: None
Data Bits: 8
Stop Bits: 1
Timeout: ON
XON/XOFF: OFF
CTS handshaking: OFF
DSR handshaking: OFF
DSR sensitivity: OFF
DTR circuit: OFF
RTS circuit: OFF

Status for device CON:
----------------------
Lines: 9001
Columns: 120
Keyboard rate: 31
Keyboard delay: 1
Code page: 437


コンパイルしたスケッチをArduino Nanoへアップロードします。

次の例ではnew bootloaderなのでfqbnが「arduino:avr:nano:cpu=atmega328」です。

old bootloaderの場合は「arduino:avr:nano:cpu=atmega328old」としてください。

arduino:avr:nanoとしてfqbnを指定するとアップロードに失敗するようです。(invalid baud rate specified '{upload.speed}')


アップロードする

C:\Users\user1\work>arduino-cli-0.3.1-alpha.preview-windows.exe upload -v -p COM3 --fqbn arduino:avr:nano:cpu=atmega328 %USERPROFILE%\Documents\Arduino\Blink


avrdude: Version 6.3, compiled on Jan 17 2017 at 12:00:53
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (c) 2007-2014 Joerg Wunsch

System wide configuration file is "C:\Users\user1\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino9/etc/avrdude.conf"

Using Port : COM3
Using Programmer : arduino
Overriding Baud Rate : 115200
AVR Part : ATmega328P
Chip Erase delay : 9000 us
PAGEL : PD7
BS2 : PC2
RESET disposition : dedicated
RETRY pulse : SCK
serial program mode : yes
parallel program mode : yes
Timeout : 200
StabDelay : 100
CmdexeDelay : 25
SyncLoops : 32
ByteDelay : 0
PollIndex : 3
PollValue : 0x53
Memory Detail :

Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
eeprom 65 20 4 0 no 1024 4 0 3600 3600 0xff 0xff
flash 65 6 128 0 yes 32768 128 256 4500 4500 0xff 0xff
lfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
hfuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
efuse 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
lock 0 0 0 0 no 1 0 0 4500 4500 0x00 0x00
calibration 0 0 0 0 no 1 0 0 0 0 0x00 0x00
signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00

Programmer Type : Arduino
Description : Arduino
Hardware Version: 3
Firmware Version: 4.4
Vtarget : 0.3 V
Varef : 0.3 V
Oscillator : 28.800 kHz
SCK period : 3.3 us

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x1e950f (probably m328p)
avrdude: safemode: hfuse reads as 0
avrdude: safemode: efuse reads as 0
avrdude: reading input file "../Documents/Arduino/Blink/Blink.arduino.avr.nano.cpu=atmega328.hex"
avrdude: writing flash (928 bytes):

Writing | ################################################## | 100% 0.38s

avrdude: 928 bytes of flash written

avrdude: safemode: hfuse reads as 0
avrdude: safemode: efuse reads as 0
avrdude: safemode: Fuses OK (E:00, H:00, L:00)

avrdude done. Thank you.

C:\Users\user1\work>



まとめ

そこそこ使えそうです。

GUIと組み合わせて実行したりだとか夢見られそうです。

いつかBlocklyと組み合わせたいです。


参考