ESP32 điều khiển máy CNC, máy laser với FluidNC: Wi-Fi, file cấu hình và giao diện web
Dùng ESP32 DevKit V1 chạy FluidNC điều khiển máy khắc laser 2 trục: sơ đồ nối hai A4988, cài firmware từ trình duyệt, file config.yaml mẫu giải thích từng dòng, lệnh hay dùng, Wi-Fi.
FluidNC là firmware điều khiển máy CNC mã nguồn mở chạy trên ESP32, phát triển tiếp từ dự án GRBL cho ESP32. FluidNC nói chuyện giống GRBL nên LaserGRBL, LightBurn, Candle, Universal Gcode Sender vẫn dùng được, nhưng có thêm những thứ Arduino không làm được: cấu hình bằng một file văn bản config.yaml thay vì biên dịch lại, điều khiển qua Wi-Fi bằng trình duyệt, chạy file G-code từ bộ nhớ trong hoặc thẻ nhớ, tới 6 trục.
Bài này hướng dẫn dùng một ESP32 DevKit V1 và hai driver A4988 để điều khiển máy khắc laser 2 trục bằng FluidNC: sơ đồ nối, cách cài firmware từ trình duyệt, file cấu hình mẫu giải thích từng dòng, các lệnh hay dùng và lỗi thường gặp.
1. FluidNC khác GRBL trên Arduino thế nào

- Cấu hình bằng file: chân nào làm gì, steps/mm, tốc độ, kiểu driver, laser hay spindle đều khai báo trong
config.yaml. Sửa file, tải lên, khởi động lại là xong. - Wi-Fi: ESP32 tự phát Wi-Fi hoặc nối vào Wi-Fi nhà; mở giao diện web trên điện thoại, máy tính để điều khiển máy, tải file G-code lên và chạy.
- Mức logic 3,3 V: A4988, DRV8825, TMC2209 nhận được 3,3 V ở chân STEP, DIR, EN. Một số module laser hoặc driver rời cần 5 V thì phải có mạch chuyển mức.
2. Linh kiện cần chuẩn bị
- ESP32 DevKit V1 30 chân và dây USB có dây dữ liệu.
- Hai driver A4988 (hoặc DRV8825, TMC2209 kiểu StepStick), hai động cơ bước NEMA 17.
- Hai công tắc hành trình (đầu âm của trục X, Y), module laser diode có chân PWM.
- Nguồn 12–24 V cho driver và laser; mạch hạ áp LM2596 lấy 5 V cấp cho ESP32 khi máy chạy không cắm máy tính.
- Breadboard và dây cắm để thử trước khi hàn cố định.
3. Sơ đồ nối

| Chân ESP32 (nhãn in trên mạch) | GPIO | Nối tới |
|---|---|---|
| D13 | 13 | EN của cả hai A4988 |
| D26 | 26 | STEP driver X |
| RX2 | 16 | DIR driver X |
| D27 | 27 | STEP driver Y |
| TX2 | 17 | DIR driver Y |
| D21 | 21 | công tắc X (chân NO), COM về GND |
| D22 | 22 | công tắc Y (chân NO), COM về GND |
| D25 | 25 | PWM (TTL) của module laser |
| GND | – | GND driver, GND nguồn 24 V, GND laser |
- Các chân trên tránh GPIO 0, 2, 5, 12, 15 (chân quyết định chế độ khởi động của ESP32) để mạch nối ngoài không làm ESP32 không khởi động được.
- A4988: RST nối SLP, VDD lấy 3V3 của ESP32, VMOT lấy 12–24 V có tụ lọc, chỉnh VREF trước khi chạy (bài 7 của loạt).
- Không cấp 12–24 V vào chân của ESP32. Chỉ nối GND chung.
4. Cài FluidNC lên ESP32

- Trên máy tính, mở trình cài đặt web của FluidNC (tìm theo tên "FluidNC Web Installer" trên trang dự án FluidNC) bằng Chrome hoặc Edge; các trình duyệt này cho phép trang web nạp firmware qua cổng USB.
- Cắm ESP32, bấm nút kết nối và chọn cổng COM của ESP32. Không thấy cổng thì cài driver cho chip USB (CP2102 hoặc CH340) của mạch.
- Chọn bản firmware có Wi-Fi rồi cài. Việc cài xóa chương trình đang có trên ESP32.
- Cài xong, ESP32 phát Wi-Fi tên FluidNC. Nối điện thoại hoặc máy tính vào Wi-Fi này và mở địa chỉ 192.168.0.1. Mật khẩu và địa chỉ mặc định có thể khác giữa các phiên bản: mở Serial Monitor 115200 baud để đọc thông báo khi ESP32 khởi động.
- Trong giao diện web, tải file
config.yamlở mục 5 lên bộ nhớ trong của ESP32, rồi khởi động lại (lệnh$Bye).
5. File cấu hình config.yaml
# PYWORLD.VN - File cau hinh FluidNC cho may khac laser 2 truc dung ESP32 DevKit V1 va 2 driver A4988
# Day dai GT2, puly 20 rang, vi buoc 1/16: 80 buoc/mm. Cong tac ve goc o dau am cua X va Y (thuong mo, noi ve GND).
# Ten khoa theo file cau hinh mau cua FluidNC; doi chieu lai voi tai lieu cua phien ban dang dung.
name: "PYWORLD laser 2 truc ESP32"
board: "ESP32 DevKit V1 + 2 A4988"
stepping:
engine: RMT
idle_ms: 250
pulse_us: 4
dir_delay_us: 1
disable_delay_us: 0
axes:
shared_stepper_disable_pin: gpio.13:high
x:
steps_per_mm: 80.000
max_rate_mm_per_min: 6000.000
acceleration_mm_per_sec2: 500.000
max_travel_mm: 400.000
homing:
cycle: 1
positive_direction: false
mpos_mm: 0.000
feed_mm_per_min: 100.000
seek_mm_per_min: 2000.000
motor0:
limit_neg_pin: gpio.21:low:pu
pulloff_mm: 2.000
stepstick:
step_pin: gpio.26
direction_pin: gpio.16
y:
steps_per_mm: 80.000
max_rate_mm_per_min: 6000.000
acceleration_mm_per_sec2: 500.000
max_travel_mm: 300.000
homing:
cycle: 1
positive_direction: false
mpos_mm: 0.000
feed_mm_per_min: 100.000
seek_mm_per_min: 2000.000
motor0:
limit_neg_pin: gpio.22:low:pu
pulloff_mm: 2.000
stepstick:
step_pin: gpio.27
direction_pin: gpio.17
Laser:
pwm_hz: 5000
output_pin: gpio.25
enable_pin: NO_PIN
disable_with_s0: false
s0_with_disable: true
tool_num: 0
speed_map: 0=0.000% 1000=100.000%

- Thụt lề bằng dấu cách, không dùng phím Tab; mỗi cấp thụt 2 dấu cách. Sai thụt lề là lỗi hay gặp nhất.
gpio.13:high: chân EN chung ở mức cao thì tắt driver (đúng với A4988). Driver nào ngược lại thì đổi thành:low.gpio.21:low:pu: công tắc nối về GND nên chạm là mức thấp (:low), bật điện trở kéo lên trong ESP32 (:pu). Dùng công tắc thường đóng thì bỏ:low.steps_per_mm: 80: dây đai GT2, puly 20 răng, vi bước 1/16 (bài 8). Trục chạy ngược chiều mong muốn thì viếtdirection_pin: gpio.16:low.homing: về gốc ở đầu âm (positive_direction: false), tốc độ tìm 2000 mm/phút, tốc độ dò 100 mm/phút. Máy không có công tắc thì xóa khốihomingvà dònglimit_neg_pin.Laser: PWM 5 kHz ở GPIO25;speed_map: 0=0.000% 1000=100.000%nghĩa là lệnhS1000cho 100 % công suất, khớp với cài đặt mặc định của LaserGRBL, LightBurn. Một số module laser cần tần số PWM thấp hơn: xem tài liệu module.
Tên các khóa trong file đối chiếu theo file cấu hình mẫu chính thức của FluidNC cho máy dùng driver StepStick và máy laser. FluidNC còn phát triển: khi cài phiên bản mới, xem lại tài liệu cấu hình của phiên bản đó.
6. Các lệnh hay dùng

- Gõ lệnh trong Serial Monitor (115200 baud) hoặc ô lệnh của giao diện web.
- Nối vào Wi-Fi nhà: gửi
$Sta/SSID=TEN_WIFI,$Sta/Password=MAT_KHAU_WIFI(thay bằng tên và mật khẩu Wi-Fi thật),$WiFi/Mode=STA>AP, rồi$Bye. ESP32 sẽ nối Wi-Fi nhà; không nối được thì tự phát lại Wi-Fi FluidNC. Địa chỉ IP mới hiện trong thông báo khởi động ($SS). - Các lệnh GRBL quen thuộc như
$H(về gốc),$X(mở khóa),?(trạng thái) vẫn dùng như cũ.
7. Dùng với LaserGRBL, LightBurn
- Qua USB: chọn cổng COM của ESP32, tốc độ 115200, kiểu thiết bị GRBL. Dùng như một máy GRBL bình thường.
- Qua Wi-Fi: một số phần mềm kết nối được qua mạng (telnet hoặc WebSocket). Cách khác là tải file G-code lên ESP32 qua giao diện web rồi bấm chạy, không cần máy tính bên cạnh máy.
- Trong phần mềm, đặt S max = 1000 cho khớp với
speed_map.
8. Lỗi thường gặp

Cách tìm lỗi nhanh nhất là mở Serial Monitor 115200 baud, nhấn nút EN trên ESP32 để khởi động lại và đọc các dòng thông báo: FluidNC báo rõ dòng nào trong file cấu hình bị sai.
9. Xem thêm
- Bài trước trong loạt: Cấu hình GRBL. Bài sau: Phần mềm cho máy khắc laser. Bài 16: máy vẽ dùng chung sơ đồ nối này với chương trình ESP32 tự viết.
- Kết nối Wi-Fi trên ESP32: quét mạng, tự kết nối lại, IP tĩnh và phát Wi-Fi riêng.
- ESP32 điều khiển động cơ bước NEMA 17 với A4988.
Xem thêm