いんくらyochさんの日記

興味あることの忘備録

FluidNCを試す

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が表示された。
尚、installシェル実行後に接続ポートを聞かれ、fluidtermが起動するので、その際以下の手順で既存のWiFi環境へ繋ぐこともできる。

$WiFi/Mode=STA
$Sta/SSID=<SSID名>
$Sta/Password=<SSIDパスワード>
$Bye
再起動後、DHCPでIP取得される様子がコンソール上で確認できる

また、再起動時ESP32のピン使用場所によっては、下記を延々と繰り返して起動しない場合がある。

rst:0x10 (RTCWDT_RTC_RESET),boot:0x33 (SPI_FAST_FLASH_BOOT)

この場合、起動時の電圧モードが1.8Vとなっているため、3.3Vに変えてやると解決する場合がある。

  1. pip install esptool
  2. espefuse.py --port /dev/ttyUSB0 summary
  3. espefuse.py --port /dev/ttyUSB0 set_flash_voltage 3.3V

最初の接続時は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%

github.com
wiki.fluidnc.com