2020年12月13日日曜日

【石定盤3Dプリンタ】firmware Marlin 2.x、地雷多すぎ

いやはや、2日間悩んでしまいました.地雷多すぎです.

石定盤3DプリンタのY軸のstepping motorを動かしてみようかと、Arduino MEGA2560を動かそうとしたのですが、なんと地雷の多いことか....


最終的にはこの写真のように、Arduino MEGA 2560にfirmwareを焼けました.

3DPのパーツは、2年前に調達した物が多く残っていて、上の写真の基板類もその時に買ったものです.

【環境とパーツ】
1)Arduino MEGA2560 R3
2)RAMPS 1.4 + A4988
3)LCD
4)Marlin 2.x
5)windows10
6)Arduino IDE  → VSCode+PlatformIO

12は基板です.youtube動画を見てチャチャっと組み立てます.
3のLCDはこちらのページなんかを見て組み立てました.
とくに問題ないです.

4の、MEGA2560に焼くfirmwareはどうするか?
Marlinという自主制作firmwareがあるのでそれを使います.
source DLは、MarlinのGitHubはどうもピンと来ません.こちらの方がいい感じです.

sourceをDLしたら、Arduino IDEでコンパイルするのですが、windows版だとコンパイルできません.原因はこちらなどに書かれていますが、win版Arduino IDEのコンパイル作業の最終段階で、リンカがオブジェクトファイルをひとまとめにします.その時、Marlin2.xは巨大なため、リンカscriptが長すぎでerrorになるそうです.Linux版やMac版 Arduino IDEならばこのような問題は発生しません.
というわけで、win版Arduino IDEでMarlin2.xは使えません.ギャフンですわ.Arduino IDEがいずれ修正されるといいですね.

win上で動く代替IDEとしては、VSCode+PlatformIOを使うしかありません.しかしVSCode+PlatformIOの使い方がさっぱりわかりません.

PlatformIOのインスト方法についてはここでは詳述しませんが、作業の90%はVisual Studio Codeのインストです.VSCodeの拡張機能としてPlatformIOを追加すればインストは完了です.ただし、インストしてもその後に地雷多数です.

【PlatformIOでMarlinをコンパイル&焼き】
PlatformIOの使い方が分からないし、Marlinもよくわからんのです.なのでここから先が長いのですが、とりあえずMEGA 2560にMarlinを焼くまでを説明してみます.こちらの動画は比較的参考になったかな、ありがとさん.

source入手
Marlin Firmwareに移動します.2つDLします.解凍します.置き場所はどこでもいいです.  デフォルトの場所が良いかな.C:\Users\XXX\Documents\PlatformIO\Projects
configファイルを取り出します.本当はカスタマイズすべきですが、今は何も考えずに以下の4つとします.
下2つのファイルは、LCDを取り付けたいならば必要なのだそうです.わたしは冒頭の作業机写真のようにLCDをつけたいので下2つも必要です.

4つのファイルをコピーします.
コピー元フォルダ: Configurations-bugfix-2.0.x\Configurations-bugfix-2.0.x\config\examples\Creality\CR-10S\CrealityV1
CrealityV1という機種のconfig filesを選んだのは特に意味はないです.機種が違えばconfigの内容も異なります.configのカスマイズはこちらで少しですが考察しました.

4つのファイルのコピー先はここです.
コピー先フォルダ:Marlin-bugfix-2.0.x\Marlin-bugfix-2.0.x\Marlin

PlatformIO起動
これがVSCodeの起動アイコンです.PlatformIOは既に拡張機能としてVSCodeに仕込まれているものとします.
VSCode起動後に1分ぐらい待つと、左側にアリさんみたいなのが出て来るのでクリック.これでPlatformIOの画面が開きます.

Marlinをimport
①②③の順にケアしてください.
Import画面です.上から順にケアしてください.DLして解答したフォルダを指定します.フォルダ階層を間違えないようにしましょう.Marlinフォルダの中に入ってはいけません.
必要な操作なのかどうか不明なのですが念のため、今importしたprojectを開きます.①②③④⑤の順でケアしてください.Marlin-bugfix-2.0.xが目的のものです.
Marlinが使うライブラリでU8glibというのを入れておきます.最初だけで良いと思う.①②③④⑤の順にケアしてください.U8glibで検索した結果が出てきます.
U8glibをADDします.
Projectを選んでADDします.

Marlinをコンパイル&焼き
わたしにはVSCodeにおけるproject focusがよく分からないのです.なので、上で説明したprojectを開くをもう一度やります.
すると、このようにprojectの中身が表示されるようになります.この中にあるplatformio.iniに様々なproject設定が書かれています.
画面の下部にあるボタンは、レ点=コンパイル、→=焼き、の意味があります.
コンパイルが終わるまでに5分ぐらいかかります.このような表示が出れば成功です.
Linking .pio\build\mega2560\firmware.elf
Checking size .pio\build\mega2560\firmware.elf
Building .pio\build\mega2560\firmware.hex
Advanced Memory Usage is available via "PlatformIO Home > Project Inspect"
RAM:   [======    ]  60.8% (used 4978 bytes from 8192 bytes)
Flash: [======    ]  63.5% (used 161172 bytes from 253952 bytes)
=========== [SUCCESS] Took 270.01 seconds ================

MEGA 2560に焼きます.このような表示が出れば成功です.
avrdude: reading on-chip flash data:
Reading | ########################### | 100% 18.70s
avrdude: verifying ...
avrdude: 161172 bytes of flash verified
avrdude: safemode: Fuses OK (E:FD, H:D8, L:FF)
avrdude done.  Thank you.
============== [SUCCESS] Took 87.45 seconds =============
Environment    Status    Duration
-------------  --------  ------------
mega2560       SUCCESS   00:01:27.454
=========== 1 succeeded in 00:01:27.454 ================
Terminal will be reused by tasks, press any key to close it.


よく分からないままに、PlatformIOを使ってMarlinをコンパイルし、Arduino MEGA 2560に焼き、LCDに3DPの表示が出るようになりました.

しかし、PlatformIOでdebuggerの使い方がまださっぱりわかりません.

動いたよ.思ってたよりも音が静かでよかった.


かしこ



【おしらせ】
当ブログで書き散らかした3DPの投稿をまとめたノウハウ集を作りました.ダウンロード販売しています.¥660です.
pdfをダウンロードしていただけます.全36ページ.

3DP印刷部品のstlファイルを無料ダウンロードできます.
Marlinのvscode project folder詰め合わせも無料ダウンロードできます.

まずは無料立ち読み版をご覧になってはいかがでしょうか.(pdf)

よろしくでーす.

5 件のコメント:

  1. 自分はArduinoM0という基板で頼まれ仕事をしているのですが、PCとのシリアル通信が浮かくいかなくてネットで調べていました。
    恥ずかしながら初めて知ったのですが、Arduinoは2つのグループに分裂していて、その影響でArduinoM0の場合シリアル通信の関数名が変わっているそうです。
    めんどくさ。

    返信削除
    返信
    1. M0の外観はNanoと似ていますね.Cortex-M0が載ってるですか.秋月でも売ってるですか.

      なるべく自分でprogramしないで済むのを希望します.パクリ厨でありたい....

      削除
    2. その考えは正しいですねー。真っ当にコーディングしようとしたら、無駄に知らなきゃいけないことが多すぎます。

      削除
    3. 先人のおかげでたくさん楽さしてもらいます.乞食でいい、楽でさえあれば.

      削除
  2. 失礼致しました。Amazonで日本のラズベリーパイを販売している林遠です。
    ブログを拝見しました。弊社のラズベリーパイ4bレビューブログ記事を書きしてくれませんか。
    こちらは無料でサンプルを提供します。
    連絡メールはjp02@vertue.cnです。
    御返事お待ちしております。どうぞよろしくお願いします。

    返信削除