====== ファームウェア更新方法 (Arduino版) ======
このページでは、サークル「MT40」で頒布している、「[[:mobiledecoder2:top|Nゲージ向けDCCデコーダ (第二世代)]]」のファームウェアを更新する方法についてご案内しております。
これ以外の機種の場合は、該当の機種のページをご参照ください。
この手順書では、Arduino IDEを用いて書き換えを行う方法の案内となります。 \\
これ以外の方法で書き換えを行う場合は、該当の方法の更新方法をご確認ください。
----
====== はじめに ======
この手順では、デコーダとは別に用意したArduinoに[[https://github.com/ElTangas/jtag2updi|jtag2updi]]を書き込み、AVRライターとして使用することで、ファームウェアのアップデートを行います。
デコーダに書き込むスケッチは、書き換え対象のデコーダ機種を確認したうえで適切なものをダウンロードしてください。
^ デコーダの型番 ^ 対応するスケッチ ^
| K3066RA | [[https://github.com/ytsurui/dcc-decoder2-firmware/releases/download/v1.0.5/motordecoder2-arduino-v1.0.5.zip|motordecoder2-arduino-v1.0.5.zip]] |
| K3057RA | ::: |
| K3057RA-S | ::: |
| K7012RA | ::: |
| T-EC215RA | ::: |
| M02F0RA | ::: |
| M02F7RA | ::: |
| K3057-T | [[https://github.com/ytsurui/dcc-decoder2-firmware/releases/download/v1.0.5/funcdecoder2-arduino-v1.0.5.zip|funcdecoder2-arduino-v1.0.5.zip]] |
| K3057-ST | ::: |
| T-EC215Tc | ::: |
| T-EC215F | ::: |
----
====== 更新に必要なもの ======
ファームウェア更新を行うために必要となるものは、下記となります。
** Arduino **
{{ :mobiledecoder2:firmupdate:arduino:arduino.jpg?300 |}}
マイコンへの書き込み機として、Arduinoを使用します。 \\
([[https://github.com/ElTangas/jtag2updi|jtag2updi]]を書き込んで使用します) \\
この手順でプログラムを書き換えますので、スケッチを消去してもよいものをご用意ください。
互換機等でも対応可能であると思われます。
** 4.7kΩの抵抗 **
{{ :mobiledecoder2:firmupdate:arduino:register.jpg?300 |}}
UPDIの信号線に挿入します。 \\
この例ではリード付きの1/6Wタイプを用意しましたが、もっと大きなものや、チップ抵抗にリード線をはんだ付けしたものでも可能です。
** ブレッドボード用のジャンプワイヤ **
{{ :mobiledecoder2:firmupdate:arduino:cable1.jpg?300 |}}
リード線の前後に抵抗の足などをはんだ付けしたものでも代用可能です。
** ワニ口クリップ付きの配線 **
{{ :mobiledecoder2:firmupdate:arduino:cable2.jpg?300 |}}
ファームウェア更新対象のデコーダをに対して、車両から外した状態で電力を供給するために使用します。 \\
車載した状態で線路電源を投入すれば書き込み可能な状態となりますが、プログラム端子と線路電源の接触によるデコーダ焼損のリスクがあるため推奨しません。
----
====== ArduinoをAVRライターにする ======
用意したArduinoにjtag2updiを書き込み、UPDIライターとして機能するようにします。
書き込み方法等の詳細は[[mobiledecoder2:firmupdate:jtag2updi|こちら]]をご確認ください。
----
====== デコーダ側のプログラムポートの確認 ======
デコーダの各機種ごとに、プログラムポートの位置と配線の向きを確認してください。
** [[mobiledecoder2:k3066ra|K3066RAシリーズ]] **
{{:mobiledecoder2:firmupdate:jtag2updi:k3066ra-progconn.jpg?400|}}
** [[mobiledecoder2:k3057ra|K3057RAシリーズ]] **
{{:mobiledecoder2:firmupdate:k3057ra-progconn.jpg?400|}}
どの機種も1.27mmピッチとなっておりますので、1.27mmピッチピンヘッダを使ったケーブルを作成すればより確実に書き込みを行うことができます。
----
====== 配線方法 ======
DCCデコーダ基板のPROG端子の「GND」を、Arduinoの「GND」端子にジャンプワイヤで接続します。
PROG端子の「UPDI」は、4.7kΩの抵抗器を介して、Arduinoの「#6」端子 (Digital #6) に接続します。
線路電源の端子については、ワニ口クリップで線路電源 (コマンドステーション出力やDC12V) 、またはArduino上から供給する+5V電源に接続します。
{{ :mobiledecoder2:k3066ra:k3066ra_progconn.jpg?400 |}}
{{ :mobiledecoder2:k3057ra:k3057ra_progconn.jpg?400 |}}
もっとも単純な接続事例を下記写真で示しますので、参考にしてください。
{{:mobiledecoder2:update:jtag2updi:conn_k3066ra.jpg?400|}}
** 接続時の注意点 **
* PROG端子に接続するワイヤと、デコーダ上のPROG端子以外の接点と接触していないことをかならず確認してから通電を開始してください。 \\ PROG端子と関係のない端子が電気的に接触している場合、高確率でデコーダが焼損します。 \\ (特にRail+、Rail-、12Vに接触した場合はほぼ確実に焼損します)
* PROG端子に接続するワイヤ2本 (GND、UPDI) 同士が接触している場合は、ファームウェアの書き込みはできませんが焼損はしません。 安心して配線を確認後、書き込み操作をやり直してください。
===== K3057シリーズで接続される場合の注意 =====
K3057シリーズは構造上、線路端子の裏側に別のパターンが存在しており、そのままワニ口クリップで基板を挟むとはんだレジストが損傷し、意図せず短絡してデコーダ焼損が発生するケースがあります。 \\
そのため、下記例のように適当な厚紙やプラ板などを挟み、線路端子の反対側を保護するように接続してください。
{{:mobiledecoder2:firmupdate:jtag2updi:k3057-warning.jpg?400|}}
{{:mobiledecoder2:firmupdate:jtag2updi:k3057-warning-2.jpg?400|}}
----
====== Arduino IDEへボード情報を追加する ======
先ほど用意したスケッチをビルド・書き込みできるようにするため、Arduino IDEにボード情報を追加します。
[[https://github.com/SpenceKonde/megaTinyCore|megaTinyCore]]を使用し、ATtiny1606 / ATtiny806に対応したバイナリのビルド・書き込みを行えるようにします。
===== megaTinyCoreの追加方法 =====
==== ボードマネージャのURL追加 ====
ファイル -> 環境設定と開き、「追加のボードマネージャのURL」に、「http://drazzy.com/package_drazzy.com_index.json」を入力します。
{{:mobiledecoder2:firmupdate:arduino:add-boardinfo.png?400|}}
{{:mobiledecoder2:firmupdate:arduino:add-boardinfo2.png?400|}}
==== ボード情報のインストール ====
ツール -> ボード -> ボードマネージャを開き、「megaTinyCore」をインストールします。
{{:mobiledecoder2:firmupdate:arduino:add-boardinfo3.png?400 |}}
{{:mobiledecoder2:firmupdate:arduino:add-boardinfo4.png?400|}}
ボード情報のダウンロードに少し時間がかかりますが、これでmegaTinyCoreの追加は完了です。
==== MacOSをお使いの場合 ====
一部のメニュー表示が異なります。 \\
Arduino -> Preferencesを開くと、環境設定が開きます。
{{:mobiledecoder2:firmupdate:arduino:macos-add-boardinfo.png?400|}}
また、2021/7/4現在、最新版のmegaTinyCore (2.3.2)でスケッチの書き込みを行おうとすると、EEPROM関連のライブラリでエラーとなり先に進めない不具合がありますので、バージョン2.2.9を選択してインストールを行ってください。
{{:mobiledecoder2:firmupdate:arduino:macos_megatinycore_version.png?400|}}
----
====== ファームウェアの準備 ======
[[https://github.com/ytsurui/dcc-decoder2-firmware/releases/tag/v1.0.2|こちら]]のページから、使用しているデコーダに適合するスケッチをダウンロードしてください。
現在の最新バージョン: Version 2021.07.02v2 (v1.0.2)
{{:mobiledecoder2:update:jtag2updi:download-firmware.png?400|}}
^ デコーダの型番 ^ 対応するスケッチ ^
| K3066RA | [[https://github.com/ytsurui/dcc-decoder2-firmware/releases/download/v1.0.2/motordecoder2-arduino-v1.0.2.zip|motordecoder2]] |
| K3057RA | ::: |
| K3057RA-S | ::: |
| K3057-T | [[https://github.com/ytsurui/dcc-decoder2-firmware/releases/download/v1.0.2/funcdecoder2-arduino-v1.0.2.zip|funcdecoder2]] |
| K3057-ST | ::: |
zipファイルを展開すると、中にinoファイルが入っていますのでこれをArduino IDEで開きます。
{{:mobiledecoder2:firmupdate:arduino:open-arduinofile.png?400|}}
----
====== ボードの設定 ======
Arduino IDE側の書き込み設定を、デコーダに搭載されているマイコンに合わせます。
設定が下の表および画像と同じになるように変更します。
^ 設定名 ^ 設定内容 ^
| ボード | ATtiny3226/3216/1626/1616/1606/826/816/806/426/416/406 \\ (ツール -> ボード -> megaTinyCore) |
| Chip or Board | ATtiny1606 (motordecoder2の場合) \\ ATtiny806 (funcdecoder2の場合) |
| Clock | 20MHz internal |
| millis()/micros() Timer | Enabled (default timer) |
| Startup Time | 8ms \\ 64ms \\ ※どちらでも動きます。 |
| BOD Voltage Level | 1.8V (5 MHz or less) |
| BOD Mode when Active/Sleeping | Enabled/Sampled (1 kHz) |
| Save EEPROM | EEPROM not retained |
| UPDI/Reset Pin Function | UPDI (no reset pin) |
| Voltage Baud Correction | Ignore (saves flash, almost always fine) |
{{:mobiledecoder2:firmupdate:arduino:arduino-board-config.png?400|}}
----
====== 書き込み装置の選択 ======
ツール -> 書込装置で、「jtag2updi」を選択します。
{{:mobiledecoder2:firmupdate:arduino:arduino-select-writer.png?600|}}
ツール -> シリアルポートで、jtag2updiとして接続されているArduinoのCOMポートも選択します。
{{:mobiledecoder2:firmupdate:arduino:arduino-select-commport.png?400|}}
----
====== ファームウェアの書き込み ======
スケッチ -> 書き込み装置を使って書き込むを選び、デコーダにファームウェアを書き込みます。
{{:mobiledecoder2:firmupdate:arduino:arduino-write-board.png?400|}}
問題なく書き込みが完了すれば、書き込みは完了です。
----