62,704 total views, 20 views today
目次
- 1 Klipperファームウェアの導入
- 1.1 Raspberry Pi(ラズベリーパイ)
- 1.2 無線LAN接続可能なPC
- 1.3 Klipperファームウェアの導入方法
- 1.4 Mainsailの導入手順
Klipperファームウェアの導入
Klipperファームウェアの導入に際しては、Raspberry Piなどのシングルボードコンピュータが必須となるほか、無線LAN接続可能なPCも必要となる。
- Klipperファームウェアの導入に必要となるもの
- Raspberry Pi
- 無線LAN接続可能なPC
- ノートPCまたは無線LAN接続可能なデスクトップPC
Raspberry Pi(ラズベリーパイ)
もし今からRaspberry Piを調達しようとするのであれば、最新モデルのRaspberry Pi 4を選んでおくのが無難である。
Raspberry Pi 4とそれ以前のモデルでは性能やインターフェースに大きな違いがあるためである。
Raspberry PI 4 | Raspberry Pi 2 Raspberry Pi 3 | |
CPU | Cortex-A72 1.5 GHz (クアッドコア) | Cortex-A53 Pi 2 : 900 MHz (クアッドコア) Pi 3 model B : 1.2GHz (クアッドコア) Pi 3 model B+ : 1.4 GHz (クアッドコア) |
メモリ | 1/2/4/8GB (LPDDR4) | Pi 2 : 1GB (LPDDR2) Pi 3 : 1GB (LPDDR2) |
無線LAN | IEEE 802.11.b/g/n/ac (2.4Ghz/5Ghz) | Pi 2 : なし Pi 3 model B : IEEE 802.11.b/g/n (2.4Ghz) Pi 3 model B+ : IEEE 802.11.b/g/n/ac (2.4Ghz/5Ghz) |
USBポート | USB 3.0 x 2 USB 2.0 x 2 | USB 2.0 x 4 |
電源コネクタ | USB Type-C | MicroUSB |
HDMI端子 | マイクロ HDMI (4Kp60対応) x 2 | HDMI x 1 |
無線LAN接続可能なPC
ノートPCであれば、どんなに安いものでもほぼ間違いなく無線LAN接続可能であるし、デスクトップPCの場合でも、無線LAN子機を追加することにより無線LAN接続可能となる。
Klipperファームウェアの導入方法
Raspberry PiにKlipperを導入する方法には大きく分けて2つあり、①OctoPi+Klipperを導入する方法と②MainsailOSを導入する方法とがある。
これらの違いは簡単に言うと、OctoPi用のプラグインが使えるかどうかの違いとなる。
①の方法ではOctoPi用のプラグインが使えるが、②の方法ではOctoPi用のプラグインが使えない。
①の導入手順はすでに紹介済みなので、ここでは②の導入手順について紹介する。
Mainsailの導入手順
MainsailOSは以下の手順により導入することができる。
- MainsailOSのイメージファイルをダウンロード
- Raspberry PiにMainsailOSをインストール
- MainsailOSのネットワーク設定を編集
- PCからMainsailOSにSSH接続
- 各種ボードのMCUに対応したファームウェアファイルの作成
- 各種ボードのシリアルポートの名前を特定
- ボードへのファームウェア書き込み
- Klipperの各種設定を変更
MainsailOSの導入に際して必要となるソフトウェア
- Raspberry Pi imager – MainsailOSのイメージファイルをmicroSDカードに書き込む際に使用
- Tera Term – MainsailOSにPCからSSH接続する際に使用
- WinSCP – MainsailOSからファームウェアファイル(Klipper.bin)をダウンロードする際に使用
1.MainsailOSのイメージファイルをダウンロード
MainsailOSのリリースページからZIPファイルをダウンロードしたら、ZIPファイルを任意の場所に解凍する。
2.Raspberry PiにMainsailOSをインストール
手順1.で得られたイメージファイル(mainsailos-raspios-lite-latest.img)をSDカードに書き込みMainsailOSをインストールする。
MainsailOSのインストールには、Raspberry Pi imagerという便利なツールがあるので、これを使用する。
Raspberry Pi imagerの使い方は簡単で、以下のとおりである。
- 書き込みたいOSファイルを選択(CHOOSE OS) ※「Erase」を選択するとストレージのフォーマットができる
- 書き込み先のストレージを選択(CHOOSE STORAGE)
- 書き込む(WRITE)
書き込みたいOSのファイルを選択
「Use custom」を選択し、
MainsailOSのイメージファイルがある場所を指定する。
書き込み先のストレージを選択
USB接続のストレージが自動的に表示されるので、目的のストレージを選択する。
書き込み
WRITEボタンを押せば、選択したストレージにOSのイメージファイルの書き込みが始まる。
書き込みが終われば、MainsailOSのインストール作業は完了となる。
3.MainsailOSのネットワーク設定を編集
各自の無線LAN環境に応じて「mainsailos-wpa-supplicant.txt」のネットワーク設定の行頭にある「#」を消して
- SSID
- パスワード
を設定する。
具体的には、該当部分を
から
のように書き換える。
4.PCからMainsailOSにSSH接続
無線LAN接続可能なPCからMainsailOSをインストールしたRaspberry PiにSSHで接続する。
接続の設定は、
- ホスト:mainsailos.local
- ユーザー:pi
- パスフレーズ:raspberry
である。
途中、セキュリティ警告が表示されるが、かまわず「続行」を選択する。
ユーザー名とパスフレーズを入力して「OK」を押せば、SSH接続が完了する。
SSH接続が成功すれば、↓のような画面が表示される。
5.各種ボードのMCUに対応したファームウェアファイルの作成
SSH接続後の画面で
cd ~/klipper/
と入力してエンターキーを押した後、
make menuconfig
と入力してエンターキーを押す。
すると、ファームウェアの設定画面が表示される。
後は、各種ボードに対応した設定を行うのだが、ここでは「SKR Mini E3 V1.2」を例にとり説明する。
「Enable extra low-level configuration options」が選択されている状態で、スペースキーまたはエンターキーを押して、追加の設定項目を表示させる。
「Micro-controller Architecture」で「STMicroelectronics STM32」を選択。
「Processor model」で「STM32F103」を選択。
「Bootloader offset」で「28KiB bootloader」を選択。
「GPIO pins to set at micro-controller startup」を選択し、「!PC13」と入力。
最終的には、↓のように設定されていればよい。
「Q」を押して、「Y」を押したのち、
「make」と入力し、エンターキーを押す。
すると、ファームウェアファイル(klipper.bin)が作成される。
6.各種ボードのシリアルポートの名前を特定
通電した3Dプリンタのボード(ここでは、SKR Mini E3 V1.2)とRaspberry PiをUSB接続した状態で、
cd ~/klipper/
ls /dev/serial/by-id/*
というコマンドを入力する。
表示された内容を「printer.cfg」内にある[MCU]の部分に
serial:/dev/serial/by-id/usb-Klipper_stm32f103xe_33FFD9054242363231822357-if00
という形で書き込む。
7.ボードへのファームウェア書き込み
ボードとOctoPiをUSB経由で接続して直接ファームウェアを書き込む場合
下記のコマンドを実行してファームウェアをボードに書き込む。
cd ~/klipper/
sudo service klipper stop
make flash FLASH_DEVICE=/dev/serial/by-id/usb-Klipper_stm32f103xe_33FFD9054242363231822357-if00
※「make flash FLASH_DEVICE=」以下には、手順8.で調べたシリアルポートの名前が入る。
sudo service klipper start
ボードによっては、USB経由で直接ファームウェアを書き込むできないことがある。
そのような場合には、microSDカード経由でファームウェアを書き込むことになる。
microSDカード経由でファームウェアを書き込む場合
WinSCPを使ってRaspberry PI上にあるファームウェアファイル(Klipper.bin)をmicroSDカードにコピーする。
Tera TermでSSH接続したときと同様に接続設定を行い、
- ホスト名:mainsailos.local
- ユーザ名:pi
- パスワード:raspberry
↓のような画面を表示させる。
右画面のフォルダを「klipper」→「out」の順にたどり、「klipper.bin」をみつける。
「klipper.bin」をドラッグアンドドロップで右側から左側へ移動し、PC上にコピーする。
後は、「klipper.bin」を「firmware.bin」にリネームし、microSDカードへコピーする。
「firmware.bin」の入ったmicroSDカードを「SKR mini E3 V1.2」に差し込んだ状態で電源を入れ、ファームウェアを書き込む。
ファームウェアの書き込みが完了すると、Ender-3 Proのディスプレイには何も表示されない状態となる。
8.Klipperの各種設定を変更
ここで、MainsailのWebUI(http://mainsailos.localまたはhttp://MainsailOSのIPアドレス)にアクセスすると下の画像のようなエラーが表示されるので、プリンタの設定ファイル(printer.cfg)を用意する。
まずは、GithubのKlipperのページにある「↓ CODE」→「Download ZIP」と辿り、KlipperのZIPファイルをダウンロードする。
次にダウンロードしたZIPファイルを解凍してできたフォルダの中にある「config」フォルダ内から自分の環境に合ったプリンタの設定ファイル(拡張子がcfgのファイル)を探す。
その後、プリンタの設定ファイルをテキストエディタなどで開き、[MCU]の「serial:」以降の部分を手順8.で調べたシリアルポートの名前に変更する。
serial:/dev/serial/by-id/usb-Klipper_stm32f103xe_33FFD9054242363231822357-if00
保存して終了し、プリンタの設定ファイルをMainsailのWebUI上でアップロードする。
設定ファイルのアップロードが完了したら、アップロードしたファイルのファイル名上で右クリックし、
表示されるメニューから「Rename」を選択し、
ファイル名を「printer.cfg」に変更する。
設定に問題がなければ「FIRMWARE RESTART」を実行することで、MainsailOSとプリンタとの接続が確立しプリンタ温度のモニタリングが可能となるものの、まだ不足している設定があるため「Missing configuration」とエラーメッセージが表示される。
「printer.cfg」の内容はWebUI上で編集可能で、ファイル名をクリックすることで編集画面に入ることができる。
MainsailOSの公式ページを参考に、「Printer.cfg」に下記の内容を追記して「SAVE & RESTART」することで、エラーメッセージが消える。
[virtual_sdcard]
path: ~/gcode_files
[display_status]
[pause_resume]
[gcode_macro PAUSE]
rename_existing: BASE_PAUSE
default_parameter_X: 230 #edit to your park position
default_parameter_Y: 230 #edit to your park position
default_parameter_Z: 10 #edit to your park position
default_parameter_E: 1 #edit to your retract length
gcode:
SAVE_GCODE_STATE NAME=PAUSE_state
BASE_PAUSE
G91
G1 E-{E} F2100
G1 Z{Z}
G90
G1 X{X} Y{Y} F6000
[gcode_macro RESUME]
rename_existing: BASE_RESUME
default_parameter_E: 1 #edit to your retract length
gcode:
G91
G1 E{E} F2100
G90
RESTORE_GCODE_STATE NAME=PAUSE_state MOVE=1
BASE_RESUME
[gcode_macro CANCEL_PRINT]
rename_existing: BASE_CANCEL_PRINT
gcode:
TURN_OFF_HEATERS
CLEAR_PAUSE
SDCARD_RESET_FILE
BASE_CANCEL_PRINT
ここまでくれば、WebUI上からプリンタの操作が可能となり、MainsailOSの一通りの設定が完了となる。
あとは、各自の環境に合わせてオートレベリング(BLTOUCH)などの設定を追加していくことになる。
printer.cfg
最後に、参考として私の環境での「printer.cfg」の内容を掲載しておく。
- ノーマルEnder-3 Proと異なる点
- ボード:SKR Mini E3 V1.2
- Zプローブ:BLTOUCH
- エクストルーダー:BMGクローン
- モーター:ステップ角0.9°
- モーターの回転方向
# This file contains common pin mappings for the BIGTREETECH SKR mini # E3 v1.2. To use this config, the firmware should be compiled for the # STM32F103 with a "28KiB bootloader" and USB communication. Also, # select "Enable extra low-level configuration options" and configure # "GPIO pins to set at micro-controller startup" to "!PC13". # The "make flash" command does not work on the SKR mini E3. Instead, # after running "make", copy the generated "out/klipper.bin" file to a # file named "firmware.bin" on an SD card and then restart the SKR # mini E3 with that SD card. # See docs/Config_Reference.md for a description of parameters. # Note: This board has a design flaw in its thermistor circuits that # cause inaccurate temperatures (most noticeable at low temperatures). [virtual_sdcard] path: ~/gcode_files [display_status] [pause_resume] [gcode_macro PAUSE] rename_existing: BASE_PAUSE default_parameter_X: 230 #edit to your park position default_parameter_Y: 200 #edit to your park position default_parameter_Z: 10 #edit to your park position default_parameter_E: 1 #edit to your retract length gcode: SAVE_GCODE_STATE NAME=PAUSE_state BASE_PAUSE G91 G1 E-{E} F2100 G1 Z{Z} G90 G1 X{X} Y{Y} F6000 [gcode_macro RESUME] rename_existing: BASE_RESUME default_parameter_E: 1 #edit to your retract length gcode: G91 G1 E{E} F2100 G90 RESTORE_GCODE_STATE NAME=PAUSE_state MOVE=1 BASE_RESUME [gcode_macro CANCEL_PRINT] rename_existing: BASE_CANCEL_PRINT gcode: TURN_OFF_HEATERS CLEAR_PAUSE SDCARD_RESET_FILE BASE_CANCEL_PRINT [stepper_x] step_pin: PB13 dir_pin: PB12 enable_pin: !PB14 microsteps: 64 full_steps_per_rotation: 400 rotation_distance: 40 endstop_pin: ^PC0 position_endstop: 0 position_max: 230 homing_speed: 50 [tmc2209 stepper_x] uart_pin: PB15 run_current: 0.580 hold_current: 0.500 stealthchop_threshold: 999999 [stepper_y] step_pin: PB10 dir_pin: PB2 enable_pin: !PB11 microsteps: 64 full_steps_per_rotation: 400 rotation_distance: 40 endstop_pin: ^PC1 position_endstop: 0 position_max: 200 homing_speed: 50 [tmc2209 stepper_y] uart_pin: PC6 run_current: 0.580 hold_current: 0.500 stealthchop_threshold: 999999 [stepper_z] step_pin: PB0 dir_pin: !PC5 enable_pin: !PB1 microsteps: 64 full_steps_per_rotation: 400 rotation_distance: 8 endstop_pin: probe:z_virtual_endstop position_max: 230 position_min: -10 homing_speed: 10 homing_retract_dist: 5.0 [bltouch] sensor_pin = ^PC2 control_pin = PA1 x_offset = 1.0 y_offset = -30.25 z_offset = 1.00 [bed_mesh] speed = 150 horizontal_move_z = 6 mesh_min = 10, 10 mesh_max = 190, 190 probe_count = 5, 5 mesh_pps = 2,2 [safe_z_home] home_xy_position: 115,130.25 speed: 50 z_hop: 10 z_hop_speed: 15 [tmc2209 stepper_z] uart_pin: PC10 run_current: 0.280 hold_current: 0.280 stealthchop_threshold: 999999 [extruder] step_pin: PB3 dir_pin: !PB4 enable_pin: !PD2 microsteps: 64 full_steps_per_rotation: 400 gear_ratio: 50:17 rotation_distance: 22.15 #diameter:9.5 nozzle_diameter: 0.400 filament_diameter: 1.750 heater_pin: PC8 sensor_type: NTC 100K beta 3950 sensor_pin: PA0 control: pid pid_Kp: 21.527 pid_Ki: 1.063 pid_Kd: 108.982 min_temp: 0 max_temp: 250 [tmc2209 extruder] uart_pin: PC11 run_current: 0.280 hold_current: 0.280 stealthchop_threshold: 999999 [heater_bed] heater_pin: PC9 sensor_type: ATC Semitec 104GT-2 sensor_pin: PC3 control: pid pid_Kp: 54.027 pid_Ki: 0.770 pid_Kd: 948.182 min_temp: 0 max_temp: 130 [fan] pin: PA8 [mcu] serial:/dev/serial/by-id/usb-Klipper_stm32f103xe_33FFD9054242363231822357-if00 [printer] kinematics: cartesian max_velocity: 300 max_accel: 3000 max_z_velocity: 5 max_z_accel: 100 [static_digital_output usb_pullup_enable] pins: !PC13 [bltouch] sensor_pin: ^PC2 control_pin: PA1 pin_move_time: 0.680 #stow_on_each_sample: True #probe_with_touch_mode: False #pin_up_reports_not_triggered: True #pin_up_touch_mode_reports_triggered: True #set_output_mode: x_offset: 1.0 y_offset: 30.25 z_offset: 2.0 #speed: #samples: #sample_retract_dist: #samples_result: #samples_tolerance: #samples_tolerance_retries: # See the "probe" section for information on these parameters. [board_pins] aliases: # EXP1 header EXP1_1=PB5, EXP1_3=PA9, EXP1_5=PA10, EXP1_7=PB8, EXP1_9=<GND>, EXP1_2=PB6, EXP1_4=<RST>, EXP1_6=PB9, EXP1_8=PB7, EXP1_10=<5V> [display] lcd_type: st7920 cs_pin: EXP1_7 sclk_pin: EXP1_6 sid_pin: EXP1_8 encoder_pins: ^EXP1_5, ^EXP1_3 click_pin: ^!EXP1_2 #kill_pin: ^!EXP2_8 [output_pin beeper] pin: EXP1_1 # See the sample-lcd.cfg file for definitions of common LCD displays.