2019年8月18日日曜日

3D プリンター Alunar M508 の Marlin を 1.1.9 にバージョンアップするためにソースコードを修正

はじめに

私が使っている 3D プリンター Alunar M508 のファームウェアは購入時は Marlin version 1.1.1 でしたが、これをバージョンアップするためにオリジナルの 1.1.9 のソースコードを修正してみました。

実際に 1.1.9 にバージョンアップしてうまく 3D プリンターが動いたので備忘録としてこのブログに残しておきます。

なお、最終的には M508 でオートレベリングをするつもりなので更に修正が必要ですが、今回はオートレベリングのための設定は適用していません。

実際に修正

3D プリンター Alunar-M508 Marlin ソースコードの修正箇所確認」で Marlin 1.1.1 の場合の M508 に適用するための修正箇所が確認できたので、これを元にオリジナルの 1.1.9 を M508 用に修正しました。

オリジナルの Marlin 1.1.9 のソースコードの最新版は GitHub https://github.com/MarlinFirmware/Marlin で公開されていたので、2019/08/15 時点で最新の 1.1.9 (f94c3210b67e63167e8a8ef6682af631b980e1e5) を Fork して修正しました。

補足

Marlin/Configuration.h の「#define MOTHERBOARD BOARD_MKS_BASE」について

Marlin/boards.h で BOARD_MKS_BASE が定義されていることを確認しました。 ここに定義されていないものを指定した場合はエラーになると思われます。

$ grep ' BOARD_MKS_BASE ' Marlin/boards.h
#define BOARD_MKS_BASE          40    // MKS BASE v1.0

Marlin/Configuration_adv.h の「#define FILAMENT_CHANGE_FEATURE」について

1.1.9 のソースコードには FILAMENT_CHANGE_FEATURE が存在しないようでした。 1.1.9 のソースコードでこの文字列を探してみたところ、

$ find ./ -type f -print0 | xargs -0 grep FILAMENT_CHANGE_FEATURE
./Marlin/SanityCheck.h:#elif ENABLED(FILAMENT_CHANGE_FEATURE)
./Marlin/SanityCheck.h:  #error "FILAMENT_CHANGE_FEATURE is now ADVANCED_PAUSE_FEATURE. Please update your configuration."

というのがあり、Marlin/Configuration_adv.h の ADVANCED_PAUSE_FEATURE に変更されたようです。 フィラメント交換は今まで使ったことがなかったので、とりあえず「//#define ADVANCED_PAUSE_FEATURE」は修正せず無効のままとしました。

Marlin/Version.h の「#define WEBSITE_URL ""」について

1.1.1 では

-  #define WEBSITE_URL "http://marlinfw.org"
+  #define WEBSITE_URL ""

と修正さてていましたが、機能とは関係なさそうなので「#define WEBSITE_URL "http://marlinfw.org"」のままとしました。

Marlin/ultralcd_impl_HD44780.h の修正箇所について

1.1.1 では

-    lcd.setCursor(indent, 0); lcd.print('\x00'); lcd_printPGM(PSTR( "------" ));  lcd.print('\x01');
-    lcd.setCursor(indent, 1);                    lcd_printPGM(PSTR("|Marlin|"));  lcd_printPGM(extra);
-    lcd.setCursor(indent, 2); lcd.print('\x02'); lcd_printPGM(PSTR( "------" ));  lcd.print('\x03');
+    lcd.setCursor(indent, 0);                      lcd_printPGM(PSTR( "   welcome" ));
+   // lcd.setCursor(indent, 1);                    lcd_printPGM(PSTR("|Marlin|"));  lcd_printPGM(extra);
+   // lcd.setCursor(indent, 2); lcd.print('\x02'); lcd_printPGM(PSTR( "------" ));  lcd.print('\x03');

と修正されていましたが、これは M508 電源投入時の液晶ディスプレイの表示を変更するもののようです。機能とは関係なさそうなので修正しませんでした。

language_cn.h について

3D プリンタ ALUNAR M508 のファームウェアを最新のものにする」を読むと、language_cn.h に含まれている !!! という文字列が原因でうまくバージョンアップできない不具合があるようです。

リンク先に書かれている通り、私の場合も中国語は使わないし、英語表記であれば問題無いので念のためこのファイル削除しました。

なお、「ALUNAR M508 メインボードのファームウェアをアップデートして !!! バグに対応する」に書かれているように M508 制御基板の ATmega16U4 をアップデートするとこの不具合が解消されるようです。(今回はこれやってません)

その他

Arduino IDE で M508 の Marlin をバージョンアップしたときの手順もここに残しておきます。

  • Windows 10 でやりました。
  • Microsoft Store から Arduino IDE インストール
  • Marlin/Marlin.ino を開く
  • メニューの [ツール]
    • ボード: Arduino/Genuino Mega or Mega 2560
    • プロセッサ: ATmega2560 (Mega 2560)
    • 書込装置: AVRISP mkII
  • メニューの [ツール] - [検証・コンパイル]
    • 実際のコンパイルが開始され、しばらくするとコンパイル完了
  • USB を M508 に接続
  • メニューの [ツール]
    • シリアルポート: COM3 (Arduino/Genuino Mega or Mega 2560)
  • メニューの [スケッチ] - [マイコンボードに書き込む]
    • 再度コンパイル (最初にやったコンパイルは必要なかったかも)
    • コンパイル終わって自動的に書き込みが始まった
    • 書き込み終了して、自動的に M508 の Marlin 再起動した
  • M508 の Marlin 起動時の液晶ディスプレイに修正後のものが表示された

参考

  • https://damelog.com/computer/hardware/update-alunar-m508-firmware-to-the-latest/
  • https://damelog.com/computer/hardware/update-bootloader-alunar-m508-to-mitigate-exclamation-bug/

0 件のコメント:

コメントを投稿