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プリンタ
-

執筆者:

関連記事

X軸 V-slot Pulley

Ender-3 Vスロットのプーリーの摩耗が激しいので調整

ふと見るとX軸のVスロットのプーリー(ローラー、タイヤ)に筋が入っていました。 え?と思って、Y軸のプーリーを確認すると・・・ X軸より酷い状態でした。 プーリーが削れて埃のようなものが筋状に付着して …

Ender-3 Fan filter

PETGフィラメントとファンフィルター

最近、PETGフィラメントを使い始めました。 PETGは、ABSと比べて反りが少なくプリントが簡単で、PLAと比べると温度が高めなのと加工性が良くて切ったり削ったりできるので、とても便利です。 特に今 …

BS01+ と BTモジュール

3DプリンタをBluetooth接続化してみた

RepRapのwikiページを見ていると、RAMPSのボードにBluetoothモジュールを接続する方法が載っていたので、私の使っている3DプリンターBS01+でもできるかなと試してみました。 RAM …

GoProヘルメットマウント

GoPro ヘルメットマウント2

前回作った自転車用ヘルメットにカメラを取り付けるマウントのGoPro版を作ってみました。 3Dプリンターの特徴として、一度データを作ってしまえば、そのデータは如何様にも流用可能と言う点がありまして、よ …

Ender-3に断熱材を

Ender-3 断熱材

他の人のEnder-3動画を見ていて、ヒートベッドの下に断熱材を入れている方を何人か見かけました。 そう言えばBS01でもベッドの下に断熱材を入れていましたが、Ender-3には断熱材がありません。 …