ボード・アップデートで書き込みエラー
「ArduinoIDEのボード情報のアップデートをしたら書き込みエラーが出るようになりましたよ」という連絡を受けて調査した結果をレポートします。
「ボードアップデートとは何ぞや?」から始まり「書き込みエラー対処方法」までを記事にしました。
詳細は後で述べますが、このエラーは通信速度を112.5kbpsにアップした新ブートコード搭載ArduinoNanoに切り替わったのが原因なのでした。
目 次
ボードアップデートとは?
ボード設定メニュー
既に皆さんご存知の様にArduinoIDEには接続しているArduinoボードを設定する箇所がツールメニューにあります。
ボード情報
この設定メニューで選択した各ボード種別に従った情報をベースにHEXデータ(コンパイルされたデータ)がボードに書き込みされます。
- メモリサイズ
- 通信速度
- CPU設定ビット
などが有りますが、ArduinoIDE上では見ることが出来なく、またユーザが直接使用する必要もないです。
そしてこれらはボード供給サイド(Arduino.ccなど)から随時アップデートがリリースされます。
ちなみに、ArduinoIDE内部ではボード情報のアップデートがあるかどうかを自動でチェックします、そしてアップデートが見つかると下図のようにメッセージが表示されます。
上の図で「ボード」部分をクリックすると次に説明するボードマネージャーが起動します。
ボードマネージャー
このアップデートを実施するにはボードマネージャーを使います、ArduinoIDEのツールメニューから入りボード選択サブメニュまでカーソル移動すると更にサブメニューが開きトップにボードマネージャー選択メニューが有ります。
ボードアップデート方法
①アップデート可能を選択
②既インストールのバージョン
③バージョンを選択する。(特に選択しなくても良い)
④「更新」をクリック
更新が開始するとウィンド下部に進捗状態が表示されます。
終了後、②の部分の既インストールのバージョン情報が更新されていることが分かる。
ちなみに今回のバージョンは
バージョン:1.6.20(旧) ⇒ 1.6.21(新)です。
書き込みエラー発生
実は、このバージョン1.6.21にアップした後にArduinoボードへの書き込みを実施すると書き込みエラーが発生するようになります。
エラー対処法
ボード設定メニューのプロセッサー種別選択のサブメニューにて「ATmega328P(Old Bootloader)」を選択するだけでOKです。
エラーの原因は?
Arduino.ccサイトの情報によると2018年1月から出荷のArduinoNanoは新Bootloaderを搭載しているとのことです。
ということでArduinoNあのには新旧2種類(もっと古いバージョンがあるかもしれませんが)のBootloader搭載の物があり、それらで大きく異なるのは「通信速度」です。
- 新Bootloader:112500bps
- 旧Bootloader:57600bps
となり上の図の中のプロセッサー選択メニュー内のATmega328Pは新Bootloader用で通信速度112500bpsでして、ATmega328P(Old Boolloader)は文字通り旧Bootloader用で通信速度57600bpsです。
ということで、書き込みエラーの原因は「通信速度の不一致」でした。
尚、通信速度とはPCとArduinoボード間のシリアルポート通信速度を言います。
Bootloaderとは?
これについては話すと長くなるのですが、実体はArduinoボード搭載のCPU(ArduinoNanoの場合ATmega328P)内にスケッチとは別に恒常的に書き込まれているプログラムです。
このプログラムがあるのでスケッチを買い込むことができるのです。
更に、このBootloaderプログラムを書き換えるには特殊なツールが必要です。(でも、ツールさえあれば難しくはないです)