3Dプリンタ

Ender-3 firmware

投稿日:2018年10月14日 更新日:

Ender-3の機能を拡張しようと思うと、ファームウェアの書き換えが避けられない。
ので、今回Marlinの最新版へとEnder-3のファームウェアの書き換えに挑戦しました。
ので、ここにその手順を書いておきます。

 

ファームウェア書き換えに必要な物

Ender-3のファームウェアを書き換えるには、パソコンと、AVR用のISPライターと、PCとEnder-3を接続する為のUSBケーブル(miniB)も必要です。

Ender-3のメインボードにはArduinoのブートローダーが書き込まれていないので、ブートローダーを書き込む為にISPライターがどうしても必要です。

せっかくなので今回は、Arduino UNO(互換機)をISPライターとして利用してみました。
あと、ArduinoUNOをISPライターとして使う場合、ArduinoとEnder-3のメインボードを繋ぐ為のジャンパーケーブル(オスーメス)も必要です。

 

HiLetgo® UNO R3 ATmega328P ATMEGA16U2開発ボード UNO R3 Arduino互換 [並行輸入品]  – Amazon

HiLetgo® 6個セット 2*120本 3種類 オスーオス メスーメス オス ーメス デュポンワイヤー ブレッドボードジャンパー ワイヤーアソートメントキット2.54mm 長さ20CM – Amazon

iBUFFALO USB2.0ケーブル (A to miniB) スリムタイプ ブラック 1m BSUAMNSM210BK – Amazon

 

 

ArduinoIDEの準備

Arduino IDEをダウンロードしてインストールする。

Arduino – Software

今回書き込みに使った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の準備は完了です。

 

ブートローダー書き込み

続いて、Ender-3のメインボードにsanguinoのブートローダーを書き込みます。

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を利用しました。

http://marlinfw.org/

 

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が使われています。

 

[ツール]メニューのボードとプロセッサ、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の利便性が上がりました。
ファームウェアの書き換えは自己責任なので、あまりお勧めはできませんが、自分がやった手順を書いてみました。

 

 

-3Dプリンタ
-

執筆者:

関連記事

Ender-3 ケーブルピラー

Ender-3 cable pillar

Ender-3のホットエンドのケーブルを固定する支柱となる部品を作ってみました。   もともとEnder-3のケーブルは、フィラメントが通っているチューブに結束バンドによって固定されていまし …

THETA紐式リモートレリーズ

THETA 紐式リモートレリーズ

RICOH THETA用の紐式のリモートレリーズを3Dプリンターで作ってみました。 紐を引っ張ってシャッターボタンを押す仕組みの装置です。 THETAはスマホと接続してリモート撮影ができるのですが、W …

プーリー作ってみた

3DプリンターでDCモーターのプーリーを作ってみた

3DプリンターでDCモーター用のプーリーが作れれば工作の幅が広がるなと思って、試しに作ってみました。 試しに作っただけなので、モーターでプーリーを回すだけの物となっています。 用意したモーターは比較的 …

プラダン保温箱

3Dプリンタ、冬支度

今年は11月に入っても暖かい日が続いていて、ここ数日でやっと平年並みに気温が下がりましたね。 しかし、気温が下がって困るのが3Dプリンタです。 私の持っている3Dプリンタは温度を高くして軟らかくなった …

ホットエンド不具合対策

Ender-3 ホットエンドの不具合対策

少し前から、Ender-3のフィラメントを交換しようとすると、フィラメントがなかなか抜けない現象に悩んでいました。 原因はフィラメントを引き抜く時に、フィラメントの先端が少し太くなってしまい、PTFE …