Grbl_Esp32をメンテナンスしようとgithubを覗いたところ、後継バージョンとしてFluidNCがリリースされたことを知る。
試しにESP32-WROOM-32Dにスタンドアロンで導入してみた。
ESP32へのインストールは簡単であり、シェルを使ってデバイスを探してフラッシュしてくれる。
BT使用かWifi使用かなどでインストーラは分かれている。
$ ./erase.sh $ ./install-wifi.sh esptool.py --chip esp32 --baud 230400 dump_mem 0x3ff5a018 4 SecurityFuses.bin esptool.py v3.1 Serial port /dev/cu.usbserial-2230 Connecting.... Chip is ESP32-D0WD-V3 (revision 3) Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None Crystal is 40MHz Uploading stub... Running stub... Stub running... Changing baud rate to 230400 Changed. Configuring flash size... Auto-detected Flash size: 4MB Flash will be erased from 0x00001000 to 0x00005fff... Flash will be erased from 0x0000e000 to 0x0000ffff... Flash will be erased from 0x00010000 to 0x00172fff... Flash will be erased from 0x00008000 to 0x00008fff... Compressed 17120 bytes to 11841... Wrote 17120 bytes (11841 compressed) at 0x00001000 in 0.7 seconds (effective 188.9 kbit/s)... Hash of data verified. Compressed 8192 bytes to 47... Wrote 8192 bytes (47 compressed) at 0x0000e000 in 0.1 seconds (effective 801.6 kbit/s)... Hash of data verified. Compressed 1450384 bytes to 883446... Wrote 1450384 bytes (883446 compressed) at 0x00010000 in 39.7 seconds (effective 292.3 kbit/s)... Hash of data verified. Compressed 3072 bytes to 129... Wrote 3072 bytes (129 compressed) at 0x00008000 in 0.1 seconds (effective 307.4 kbit/s)... Hash of data verified. Leaving... Hard resetting via RTS pin... Starting fluidterm
Wifi使用でインストールするとFluidNCのSSIDが現れ、振られたIPにブラウザでアクセスするとWebUIが表示された。
最初の接続時はWebUIのファイルがインストールされていないのでindex.html.gzファイルを選択して、uploadする必要がある。
マシンの設定は別途yamlファイルを作成して、WebUIよりアップロードするが、直近のGrbl_Esp32を使っていた場合、machine.hファイルをyamlに変換してくれるサービスも利用できる。
【移行例】
name: "BlueLaser Engarver" board: "ESP32-DevKitC" stepping: engine: RMT idle_ms: 250 dir_delay_us: 0 pulse_us: 2 disable_delay_us: 0 axes: shared_stepper_disable_pin: gpio.13 x: steps_per_mm: 42.327 max_rate_mm_per_min: 60000.000 acceleration_mm_per_sec2: 9000.000 max_travel_mm: 500 soft_limits: true homing: cycle: 1 positive_direction: true mpos_mm: 500 seek_mm_per_min: 4000.000 feed_mm_per_min: 500.000 settle_ms: 250 seek_scaler: 1.2 feed_scaler: 1.2 motor0: limit_neg_pin: NO_PIN limit_pos_pin: gpio.2:pu limit_all_pin: NO_PIN hard_limits: false pulloff_mm: 1.500 stepstick: direction_pin: gpio.26 step_pin: gpio.12 motor1: null_motor: y: steps_per_mm: 44.444 max_rate_mm_per_min: 20000.000 acceleration_mm_per_sec2: 150.000 max_travel_mm: 450 soft_limits: true homing: cycle: 2 positive_direction: true mpos_mm: 450 seek_mm_per_min: 4000.000 feed_mm_per_min: 500.000 settle_ms: 250 seek_scaler: 1.2 feed_scaler: 1.2 motor0: limit_neg_pin: NO_PIN limit_pos_pin: gpio.4:pu limit_all_pin: NO_PIN hard_limits: false pulloff_mm: 1.500 stepstick: direction_pin: gpio.25:low step_pin: gpio.14 motor1: null_motor: spi: miso_pin: gpio.19 mosi_pin: gpio.23 sck_pin: gpio.18 coolant: mist_pin: gpio.16:low probe: pin: NO_PIN sdcard: cs_pin: gpio.5 card_detect_pin: NO_PIN control: safety_door_pin: gpio.35:low reset_pin: gpio.34:low feed_hold_pin: gpio.36:low cycle_start_pin: gpio.39:low Laser: pwm_hz: 20000 output_pin: gpio.17 enable_pin: gpio.22 disable_with_s0: false s0_with_disable: true tool_num: 100 speed_map: 0=0.000% 255=100.000%