2019年8月13日Ender-3の機能を拡張しようと思うと、ファームウェアの書き換えが避けられない。今回Marlinの最新版へとEnder-3のファームウェアの書き換えに挑戦しました。ここにその手順を書いておきます。1.1.9になってファームウェア書き換えに必要な物Ender-3のファームウェアを書き換えるには、パソコンと、AVR用のISPライターと、PCとEnder-3を接続する為のUSBケーブル(miniB)も必要です。UNO(互換機)を利用してみました。あと、ArduinoUNOをISPライターとして使う場合、ArduinoとEnder-3のメインボードを繋ぐ為のジャンパーケーブル(オスーメス)も必要です。IDEをダウンロードしてインストールする。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が接続されているシリアルポート番号(数字は環境によって異なる)を確認。Unoを指定しています。左上の書き込みボタンをクリックして、Arduinoに書き込みます。ボードへの書き込みが完了しました。出れば終了ArduinoとEnder-3を接続ISPライター化したArduinoとEnder-3のISP端子をケーブルで繋ぎます。Ender-3のISP端子は、USB端子のすぐ隣にある、6本のヘッダーピンです。接続すると、こんな感じになりました。Sanguinoブートローダー書き込みいよいよ、ブートローダーを書き込みます。ブートローダーを書き込んだ時点で、現在のファームウェアは消えてしまいます。緊張の一瞬・・・やめるなら今のうち。[ツール]メニューのボードとプロセッサ、Arduinoが接続されているシリアルポートと書き込み装置を確認。全て確認できれば、[ブートローダを書き込む]をクリック書き込みが始まると、現在のファームウェアは消されてしまいます。待って「ブートローダの書き込みが完了しました。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.hCOnfiguration.hCOnfiguration_adv.hREADME.mdは不要です。これら4つの設定ファイルを全部、フォルダーMarlin-1.1.x/Marlinにコピー(上書き)します。次に、ArduinoIDEメニューからmarlin.inoファイルを開きます。Marlin-1.1.x/Marlin/Marlin.ino停電時の復帰機能を有効化Ender-3には、停電した時に、次に起動した時に復帰する機能がありますが、Marlinのデフォルトでは無効になっています。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が接続されているシリアルポート番号を確認。ATmega1284p(16MHz)シリアルポートはEnder-3のCOMポート番号(数字は各環境で異なる)以上のようになっているのを確認ファームウェア書き込み左上の書き込みボタンをクリックして、ファームウェアを書き込みます。コンパイルから書き込みまで、かなり時間かかるので、気長に待ちましょう。私の環境では数分かかりましたw数分後、「ボードへの書き込みが完了しました。EEPROMを実行して、EEPROMの内容を初期化しないといけないようです。1.1.9になってMarlin1.1.9になって、起動画面が2段階になりました。最初にEnder画面、次にMarlinの画面、そしてメイン画面。サインスマートの起動画面とはこれでさよならです。前のをよく覚えてないけど。メニューの項目が大きく増えています。色々な設定の数値とかが、メニューから変更できるようになっています。便利だなと思ったのは、Preheatの温度が自由に変えられるところで、いつも私はベッドのPreheatをかけてからプリントする物のGCodeファイルを準備したりしているので、毎回ダイアルをくるくる回す必要が無くなって楽になりました。あと、これは、Ender-3起動時のシリアルから出力される情報。上のが以前の内容、下がMarlin1.1.9にした後の内容。印刷にかかわる設定はまったく同じかと思いきや、jerkの数値が少し変更されているようです。Jerkがいったい何なのか良く分かっておりませんが・・・と、言う訳で、単に最新版のMarlin1.1.9にファームウェアを書き換えるだけでも、メニューから操作できる項目が増えるので、Ender-3の利便性が上がりました。ファームウェアの書き換えは自己責任なので、あまりお勧めはできませんが、自分がやった手順を書いてみました。TwitterFacebookGoogle+PocketB!はてブLINE-3Dプリンタ-Ender-3執筆者:admin関連記事3DTouchをEnder-3で使う為のファームウェア書き換え今回は3DTouchを使ったオートベッドレベリングを行う為にEnder-3のファームウェアを書き換えました。BFPTouchの時と編集箇所は殆ど同じなのですが、一応書いてみました。29番ピン2台目Ender-3のオートベッドレベリングのセンサーに、BFPTouchを使うことにしました。...BFPTouchをEnder-3で使う為のファームウェア書き換え今回は、BFPTouch(自作のタッチセンサー)をEnder-3でオートベッドレベリングに利用する為のファームウェアについてです。...オートベッドレベリングのセンサーの精度ここのところ2台目Ender-3用のオートベッドレベリングの取り付けをやっていました。...3DプリンタをBluetooth接続化してみたRepRapのwikiページを見ていると、RAMPSのボードにBluetoothモジュールを接続する方法が載っていたので、私の使っている3DプリンターBS01+でもできるかなと試してみました。