FLY-GeminiでEnder-3 V2にKlipper導入
MellowからFLY-Gemini発売
3Dプリンター用メインボードであるFLY-Geminiを購入しました。
3Dプリンター向けのファームウェアにKlipperというのがあって、モーター制御とかが高精度に行える優れものらしいのですが
制御用にある程度計算能力のあるコンピュータ(ラズパイ)を接続する必要があり、3Dプリンターのメインボードと制御用コンピュータの二枚構成になるのが常です。
FLY-Geminiはそれが一枚で済むという新製品です。
(多分Gemini=双子座という製品名もここから来てるんでしょうな)
Klipperではfluiddと呼ばれるイケてるレスポンシブUIを使用出来て、PCやスマホから3Dプリンターの操作/管理をすることが可能です。(なんか2021年の夏から開発が止まってるという不穏な噂も聞きますけども)→2022年2月にv1.17.0がリリースされました!
で、このFLY-GeminiをEnder-3 V2で使おうというのがこの記事の目的です。
Ender-3 V2へ繋げるのに必要なもの
FLY-Geminiは当然購入しないといけないですが、忘れがちなのがモータードライバです。実際忘れました。
FLY-Geminiと一緒に最低4つ購入しておきましょう。
ほとんどの配線は元のコネクタをFLY-Geminiに差し替えるだけでOKです。
ただ、一部はコネクタ形状が異なっていたり、そもそもコネクタになっていなかったりするので、XHコネクタのセットと、圧着工具、ワイヤーを購入しました。
また、電源回りの端子台への接続は、より線のままだと抜けたり十分な接触面積が取れずに発熱→発火のリスクがあるので、丸端子に置き換えます。
FLY-Geminiの下準備
セットアップは公式ドキュメントを参照しましょう。
ここでは公式ドキュメントにない下準備について説明します。
ヒューズの取り付け
ボード上の三か所に付属のヒューズ(青いやつ)を挿しましょう。
これを忘れてると24V電源が一切入りません。
私はここで一回躓きました。笑
MOSFETの取り付け
付属のファン用MOSFETを挿しましょう。
これを挿すとホットエンドのクーラーが常時駆動になるらしい?
FLY-Geminiへの接続
最低限の資材が揃ったら接続していきます。
24V電源の接続
電源端子に24V電源を接続します。Ender-3 V2純正電源でOKです。
モータードライバ電源はボード電源の端子から拝借してます。
多分モーター駆動の消費電力が高い場合は別途接続してあげる感じ?
上の写真では動作テストの段階だったのでより線で接続してますが、後で丸端子に置き換えました。
24V電源を入れるとFLY-Geminiが起動します。
セットアップの時はPCと接続したUSB Type-Cを電源としていましたが、これでFLY-Gemini単体で起動出来るようになります。
サーミスタの接続
これは超簡単。挿すだけです。
この時点でfluiddに接続するとそれっぽい温度が表示されているはずです。
ヒーターの接続
サーミスタを接続したので、ヒーターも繋げます。
ノズルブロックの方は極性なさそうです。(多分ニクロム線の抵抗加熱だから)
この段階で、fluiddで目標温度を設定してあげると各ヒーターの過熱が始まり、サーミスタの温度に変化が現れるはずです。
モータードライバの取り付け
モータードライバを取り付けていきますが、まずはUARTモードにするためのジャンパピンを挿します。
(UARTモードが何か分かってませんが、KlipperのデフォルトはUARTモードを使ってるっぽい?)
ジャンパピンを挿したらモータードライバを取り付けます。
挿すだけですが向きがあるので注意です。
ステッピングモーターの接続
XYZ軸とエクストルーダーのステッピングモーターを接続します。
純正ハーネスのまま挿しちゃって大丈夫です。
エンドストップリミットスイッチの接続
ステッピングモーター脇に3つ挿します。
Ender-3 V2純正ハーネスは2pinコネクタなので3pinに置き換えます。
リミットスイッチはただのスイッチで極性はないのでpin配置は適当でOKですが、使わない1pinは5V電源が来ていて(多分LED付きスイッチ用)、ここには繋げないよう注意です。
ファンの接続
パーツクーラー(黄/青線)は挿すだけですが、ホットエンドクーラー(赤/黒線)はより線になっているので2pinコネクタに加工する必要があります。
これで一通りの接続が完了しました。
次に設定ファイルを編集していきます。
printer.cfgの書き換え
Klipperの設定関係はprinter.cfgに記載されていて、ここを書き換える事で簡単に設定変更が出来るようになっています。
他のファームウェア(Marlin)だと設定変更の度にファームウェアを焼き直さないといけないらしい?
で、私が作ったprinter.cfgを置いておくので、これに書き換えるだけで動くはず…です…多分。
(私も初心者なのであくまで参考として下さい…そのまま使って何か起きても責任は取れません)
モータードライバはMellowのTMC2209で、ステルスチョップ(静音モード)を有効にしています。
あと、私の環境に合わせてZ軸は上限220mmにしています。
[include kiauh_macros.cfg]
# Support tmc5160 driver
# Integrated Linux host
# "FLY flyboard FLY-Gemini" board
# use this config, the firmware should be compiled for the STM32F405
# with a "32KiB bootloader".
# after running "make", copy the generated "out/klipper.bin" file to a
# file named "firmware.bin" on an SD card and then restart the FLYBOARD
# with that SD card.
# See docs/Config_Reference.md for a description of parameters.
[stepper_x]
step_pin: PC13
dir_pin: !PC1
enable_pin: !PB2
microsteps: 16
step_pulse_duration: 0.000004
rotation_distance: 40
endstop_pin: PA3
position_endstop: 0
position_max: 235
homing_speed: 20
[stepper_y]
step_pin: PC14
dir_pin: !PC4
enable_pin: !PB6
microsteps: 16
step_pulse_duration: 0.000004
rotation_distance: 40
endstop_pin: PB1
position_endstop: 0
position_max: 235
homing_speed: 30
[stepper_z]
step_pin: PC15
dir_pin: PC5
enable_pin: !PB5
microsteps: 16
step_pulse_duration: 0.0000004
rotation_distance: 8
endstop_pin: PB10
position_endstop: 0.0
position_max: 220
[extruder]
step_pin: PC3
dir_pin: !PC7
enable_pin: !PB4
microsteps: 16
step_pulse_duration: 0.0000004
rotation_distance: 34.406
nozzle_diameter: 0.400
filament_diameter: 1.750
heater_pin: PA0
sensor_pin: PC0
sensor_type: EPCOS 100K B57560G104F
control: pid
pid_Kp: 21.527
pid_Ki: 1.063
pid_Kd: 108.982
min_temp: 0
max_temp: 250
[heater_bed]
heater_pin: PA2
sensor_pin: PC2
sensor_type: ATC Semitec 104GT-2
control: watermark
min_temp: 0
max_temp: 260
[fan]
pin: PC6
cycle_time: 0.50
[mcu]
serial: /dev/ttyACM0
[mcu host]
serial: /tmp/klipper_host_mcu
[printer]
#kinematics: corexy
kinematics: cartesian
max_velocity: 300
max_accel: 3000
max_z_velocity: 5
max_z_accel: 100
[temperature_sensor FLY-Gemini]
sensor_type: temperature_host
[temperature_sensor FLY-MCU]
sensor_type: temperature_mcu
[tmc2209 stepper_x]
uart_pin: PB11
run_current: 0.800
stealthchop_threshold: 999999
interpolate: False
[tmc2209 stepper_y]
uart_pin: PB9
run_current: 0.800
stealthchop_threshold: 999999
interpolate: False
[tmc2209 stepper_z]
uart_pin: PB8
run_current: 0.800
stealthchop_threshold: 999999
interpolate: False
[tmc2209 extruder]
uart_pin: PB7
run_current: 0.800
stealthchop_threshold: 999999
interpolate: False
########################################
# EXP1 / EXP2 (display) pins
########################################
[board_pins]
aliases:
# EXP1 header
EXP1_1=<NC>, EXP1_3=PA13, EXP1_5=PA9, EXP1_7=<NC>, EXP1_9=<GND>,
EXP1_2=PA4, EXP1_4=PA10, EXP1_6=PA8, EXP1_8=<NC>, EXP1_10=<5V>,
# EXP2 header
EXP2_1=PB14, EXP2_3=PA15, EXP2_5=PA14, EXP2_7=PB3, EXP2_9=<GND>,
EXP2_2=PB13, EXP2_4=PB12, EXP2_6=PB15, EXP2_8=<RST>, EXP2_10=<NC>
# Pins EXP2_1, EXP2_6, EXP2_2 are also MISO, MOSI, SCK of bus "spi2"
# See the sample-lcd.cfg file for definitions of common LCD displays.
これをコピペすれば動くようになるはずです!
番外編
ここからはEnder-3 V2とFLY-Geminiを繋げて使うだけなら直接は関係ない話です。
ハーネスを作り直した
純正ハーネスは短すぎたり長すぎたりするので丁度いい長さで作り直す事にしました。
ステッピングモーターとリミットスイッチ辺りは計6本のワイヤで繋がっていて、そのままだとゴチャゴチャになってしまうのでスリーブを使いました。
ステッピングモーターのハーネスを作る時に要注意なのが、モーター側のコネクタがPHコネクタの6pinというのと、真ん中の二本がクロスになってるところです。
AWG24×6本で幅4mmのスリーブはパツパツだったので、もうちょっと太いのが良いかもしれない。
地味にしんどかったのでもうやりたくないです。
FLY-Geminiのマウンタを作った
FLY-GeminiはCrealityの純正ボードより大きいので、元の位置に取り付けるのは厳しそう。
エンクロージャーを使っていて夏場は庫内が50℃近くなる事もあって、メインボードをエンクロージャーの外に取り付ける事にしました。
エンクロージャーの記事はこちら↓
LACKの天板裏に木ねじで止めたいので、専用のマウンタを設計。
印刷途中に六角ナットを埋め込んで、そこにFLY-Geminiを固定する作戦です。
ボード周りの発熱を考慮して一応ABSで出力します。
まぁ落としたら見事にそこから割れたんですけど。
印刷を一時停止している間に冷えたとか、ナットに熱が吸われたとか原因は色々考えられますが、追い込む時間が勿体ないのでアクリサンデー漬けにしました。
適当に位置を決めて取り付けました。
エンクロージャーに配線孔を追加
メインボードがエンクロージャーの外に来たので、庫内から外に出す配線が増えました。
なので天板に配線孔を開けてそこを通す事に。
キャップを取り付けて良い感じに。
わざわざ買わずプリントすれば良かった気もしつつ、まぁ安かったので。
こんな感じで各種ハーネスを通します。
最後に、FLY-Geminiに付いてきたまろやかステッカーを貼り付け。
やってみた感想
繋げるだけなら思ったほど難しくなかった印象です。
事前にステッピングモーターのピン配列とかめっちゃ調べたんですけど、結局そのまま繋いでソフト側で吸収する形にしました。
それよりも、慣れないLinuxの扱いとか、ハーネス作ったり配線レイアウト考えたりする方が大変だったかなぁと思います。
Klipper+fluiddにしてみて一番変わったのは、SDカードをいちいちPC⇔プリンターで差し換える必要がなく遠隔で操作出来るようになった所ですね!
パソコンが2F、プリンターが1Fにある環境なのでとても楽になりました。
こうなってくると動作の様子が見たくなってくるので、USBカメラの接続にもチャレンジしたいなと思っています。
最後に
躓いた時に色々と助けて頂いている国内3Dプリンタコミュニティの皆さん、いつもありがとうございます。
普段から謎の単語が飛び交ってて異次元な雰囲気を感じますが、初歩的な質問でも快く助けて頂いてほんと助かってます。
今後ともどうぞよろしくお願いします🙏
3D Printing Japan Community(Discord)
klipper_jp(Discord)