Ender-3の機能を拡張しようと思うと、ファームウェアの書き換えが避けられない。
ので、今回Marlinの最新版へとEnder-3のファームウェアの書き換えに挑戦しました。
ので、ここにその手順を書いておきます。
ファームウェア書き換えに必要な物
Ender-3のファームウェアを書き換えるには、パソコンと、AVR用のISPライターと、PCとEnder-3を接続する為のUSBケーブル(miniB)も必要です。
今回は、ISPライターとしてArduino UNO(互換機)を利用してみました。
あと、ArduinoUNOをISPライターとして使う場合、ArduinoとEnder-3のメインボードを繋ぐ為のジャンパーケーブル(オスーメス)も必要です。
HiLetgo® UNO R3 ATmega328P ATMEGA16U2開発ボード UNO R3 Arduino互換 [並行輸入品] – Amazon
iBUFFALO USB2.0ケーブル (A to miniB) スリムタイプ ブラック 1m BSUAMNSM210BK – Amazon
ArduinoIDEの準備
Arduino IDEをダウンロードしてインストールする。
今回書き込みに使ったArduino IDEは、現在の最新版Ver1.8.7を使いました。
ArduinoIDEにSanguinoボードのインストール
Ender-3のメインボードはMelziの回路が元となっているようです。
そして、使われているマイコンはATmega1284Pなので、Sanguinoを使ってメインボードのArduino化を行います。
その為に、ArduinoIDEにsanguinoをインストールします。
なお、SanguinoはATmega644/1284用のArduino互換機
https://lauszus.com/Sanguino/
https://github.com/Lauszus/Sanguino
まず、Arduinoの環境設定画面を開きます。
追加ボードマネージャーに以下のURLを追加
https://raw.githubusercontent.com/Lauszus/Sanguino/master/package_lauszus_sanguino_index.json
次にボードマネージャを開きます。
ボード一覧が表示されるので、中からsanguinoを探して、インストールをします。
私はバージョン1.0.2をインストールしました。
ArduinoIDEにu8glibライブラリーのインストール
Marlinでは液晶表示にu8gライブラリーが使われているのですが、標準のArduinoIDEには入っていないので、これをインストールします。
ライブラリ管理画面を開きます。
使えるライブラリ一覧が表示されるので、その中からu8glibを探して、インストールします。
私は、バージョン1.19.1をインストールしました。
これでarduinoIDEの準備は完了です。
ブートローダー書き込み
続いて、ファームウェアを書き込む前に、先にArduino(sanguino)のブートローダーを書き込みます。
このブートローダーを書き込む為に、ISPライターがどうしても必要です。
ブートローダーが無くてもファームウェアの書き込みは可能ですが、ブートローダーを先に書き込めば、ファームウェアの書き換えにISPライターが必要無くなり、PCとEnder-3を接続するだけでファームウェアの書き換えが可能になります。
ArduinoをISPライター化
まず、用意したArduinoにArduinoISPのプログラムを書き込んで、ISPライター化する。
ArduinoをPCに接続する。
このArduinoはUNOの互換機で、USBシリアル変換にATmega16u2が使われたちょっと高い奴。
これは、初回接続時にドライバーが自動でインストールされる。
ArduinoIDEを起動して、サンプルスケッチからArduinoISPを開く
[ツール]メニューのボードとArduinoが接続されているシリアルポート番号(数字は環境によって異なる)を確認。
今回は互換機ですがArduinoUNOを使っているので、ボードはArduino/Genuino Unoを指定しています。
左上の書き込みボタンをクリックして、Arduinoに書き込みます。
ボードへの書き込みが完了しました。と出れば終了
ArduinoとEnder-3を接続
ISPライター化したArduinoとEnder-3のISP端子をケーブルで繋ぎます。
Ender-3のISP端子は、USB端子のすぐ隣にある、6本のヘッダーピンです。
接続すると、こんな感じになりました。
Sanguinoブートローダー書き込み
いよいよ、ブートローダーを書き込みます。
なおブートローダーを書き込んだ時点で、現在のファームウェアは消えてしまいます。
緊張の一瞬・・・やめるなら今のうち。
[ツール]メニューのボードとプロセッサ、Arduinoが接続されているシリアルポートと書き込み装置を確認。
ボードはSanguino
プロセッサは ATmega1284 or ATmega1284p(16MHz)
シリアルポートはArduinoUNOのCOMポート(番号は各環境で異なる)
書き込み装置は Arduino as ISP(ArduinoISPでは無い)
以上のようになっているのを確認
全て確認できれば、[ブートローダを書き込む]をクリック
書き込みが始まると、現在のファームウェアは消されてしまいます。
しばらく待って「ブートローダの書き込みが完了しました。」と出れば一安心。
ArduinoUNOはもう使わないのでケーブルを外して片付けます。
ファームウェアの書き込み
ブートローダーを書いただけだと、Ender-3はまったく機能しなくなります。
なのでブートローダー書き込み後は、続けてファームウェアの書き込み作業が必要になる。
今回、新しく書き込むファームウェアは、Marlinの1.1.9を利用しました。
Marlinのダウンロードページから、ZIPファイルをダウンロードし、適当な場所に展開します。
http://marlinfw.org/meta/download/
解凍したMarlinのフォルダー
Marlin-1.1.x/Marlin/example_configurations/Creality/Ender-3
の中に、Ender-3用の設定ファイルが4つあります。
_Bootscreen.h
_Statusscreen.h
COnfiguration.h
COnfiguration_adv.h
README.mdは不要です。
これら4つの設定ファイルを全部、フォルダー
Marlin-1.1.x/Marlin
にコピー(上書き)します。
次に、ArduinoIDEメニューからmarlin.inoファイルを開きます。
Marlin-1.1.x/Marlin/Marlin.ino
停電時の復帰機能を有効化
Ender-3には、停電した時に、次に起動した時に復帰する機能がありますが、Marlinのデフォルトでは無効になっています。
有効にするには、Configuration_adv.hを開いて596行辺りにある
// #define POWER_LOSS_RECOVERY
の行をアンコメントします。
(行頭の//を削除する)
すると、停電時の復帰機能が有効になります。
この機能が必要無い人は、有効にする必要はありません。
PCとEnder-3を接続
PCとEnder-3をUSBケーブル(miniB)で繋ぎます。
ArduinoIDEがインストールされている環境では、初回接続時にドライバーが自動でインストールされます。
ちなみにEnder-3はUSBシリアル変換チップに、FTDIのFT232RLが使われています。
FT232RLが採用されているのは、V1.1.3までのボードのようです。
V1.1.4からは安価なCH340Gが使われているようです。
[ツール]メニューのボードとプロセッサ、Ender-3が接続されているシリアルポート番号を確認。
ボードはSanguino
プロセッサは ATmega1284 or ATmega1284p(16MHz)
シリアルポートはEnder-3のCOMポート番号(数字は各環境で異なる)
以上のようになっているのを確認
ファームウェア書き込み
左上の書き込みボタンをクリックして、ファームウェアを書き込みます。
コンパイルから書き込みまで、かなり時間かかるので、気長に待ちましょう。
私の環境では数分かかりましたw
数分後、「ボードへの書き込みが完了しました。」と出れば終了です。
あと、ファームウェアをアップデートした後の初回起動時はメニューからInitialized EEPROMを実行して、EEPROMの内容を初期化しないといけないようです。
Marlin 1.1.9になって
Marlin1.1.9になって、起動画面が2段階になりました。
最初にEnder画面、次にMarlinの画面、そしてメイン画面。
サインスマートの起動画面とはこれでさよならです。
メイン画面も表示されている内容は同じだけど、見た目が少し表示が変わった気がする・・・
前のをよく覚えてないけど。
そして、メニューの項目が大きく増えています。
例えば、色々な設定の数値とかが、メニューから変更できるようになっています。
便利だなと思ったのは、Preheatの温度が自由に変えられるところで、いつも私はベッドのPreheatをかけてからプリントする物のGCodeファイルを準備したりしているので、毎回ダイアルをくるくる回す必要が無くなって楽になりました。
あと、これは、Ender-3起動時のシリアルから出力される情報。
上のが以前の内容、下がMarlin1.1.9にした後の内容。
印刷にかかわる設定はまったく同じかと思いきや、jerkの数値が少し変更されているようです。
Jerkがいったい何なのか良く分かっておりませんが・・・
と、言う訳で、単に最新版のMarlin1.1.9にファームウェアを書き換えるだけでも、メニューから操作できる項目が増えるので、Ender-3の利便性が上がりました。
ファームウェアの書き換えは自己責任なので、あまりお勧めはできませんが、自分がやった手順を書いてみました。