ksp gửi vào
- 47304 lượt xem
I. Giới thiệu
Như ở bài viết trước trong chuỗi bài viết về máy cắt laser của mình. Chúng ta đã cùng nhau tìm cách dựng một máy cắt bằng chính khả năng sáng tạo của riêng bản thân mỗi người. Hôm nay, mình xin giới thiệu về cách mà mình đã biến chiếc máy cắt của mình thành một thiết bị IOT. Hay ở chỗ, qua bài viết này, bạn có thể biến bất kỳ chiếc máy cắt laser nào (đã được nạp firmware) trở thành một chiếc bị IOT. Thật hay phải không nào? Còn chần chờ gì nữa, hãy bắt nay vào làm thôi.
- "In" máy cắt của chính bạn (tầm 2 triệu).
- Biến chiếc máy cắt laser thành một thiết bị IOT với Intel Galileo Gen 1 hoặc Gen 2 (+ tầm 3 triệu).
II. Chuẩn bị
1. Phần cứng
Con số tổng cộng này có thể chênh lệch một tí tùy vào chỗ bạn mua
2. Công cụ bổ trợ
- 01 Máy khoan hoặc 01 mô tơ khoan (với đầu giữ mũi khoan 3li)
- 01 Mũi khoan 3li
- 01 kềm tán đinh tán.
- 01 cây keo nến (và súng bắn keo nến nếu có thể)
- Ốc 3li 12mm (10 con + tán); Ốc 3li 18mm (20con + tán)
- Dây LAN (ethernet)
3. Phần mềm
III. Các mạch điện tử và chức năng của nó
Lưu ý: Các bạn có thể giữ lại mạch điều khiển laser như trong bài viết trước. Tuy nhiên mạch điều khiển động cơ bước nên thay đổi lại một tí để chế độ tiết kiệm năng lượng có thể hoạt động được.
1. Mạch điều khiển động cơ bước sử dụng module Easy Driver Stepper motor v4.4
Chúng ta sẽ sử dụng một module điều khiển động cơ bước giá cực rẻ trên thị trường (chỉ 70.000 đồng) và hoạt động cực kỳ tốt theo thời gian.
Thường thì động cơ bước trong máy scan có 96 bước / vòng đời (steps/rev), như vậy là không nhiều nên khi ta cắt các chi tiết nhỏ sẽ không được đẹp. Thật may mắn, module easy driver có thể hỗ trợ chúng ta “tăng” số bước của động cơ bước trong máy scan lên gấp 8 lần. Module này hỗ trợ chế độ vi bước mức 1 / 8 (chia nhỏ số bước thành 8 phần) ==> số bước thực được tăng gấp 8.
Ngoài ra, chúng ta có thể thay thế module Easy Driver Stepper bằng module A4988 với khả năng hỗ trợ vi bước 1 / 16. Tức là tăng số bước của động cơ bước lên đến 16 lần, gấp đôi khả năng của module Easy driver stepper. Giá của nó cũng chỉ chênh lệch 10.000 đồng với module Easy driver stepper. Với mạch A4988, chúng ta cần gắn tản nhiệt và gắn chân MS3 vào cực dương để mạch hỗ trợ vi bước 1 / 16.
Sau đây là sơ đồ mạch của module Easy Driver Stepper với Arduino Promini:
Tùy vào màu của dây nối stepper mà chúng ta lựa chọn bảng màu nối cho phù hợp
Các chân STEP, DIR của stepper X và stepper Y lần lượt được gán vào chân digital 2, 5, 3 và 6.
Vì sao mình lại sử dụng Intel Galileo kết nối với relay để điều khiển module này ?
Đây là một thủ thuật nhỏ để tiết kiệm điện, khi máy cắt laser không hoạt động trong một khoảng thời gian chờ nhất định, nó sẽ được chuyển sang chế độ ngủ và chờ. Lúc này, toàn bộ phần cơ cấu chuyển động sẽ được tắt để tránh tình trạng giữ góc quay của máy cắt laser. Nếu để tình trạng giữ góc quay của Intel Galileo, các động cơ bước sẽ rất nóng và sẽ giảm tuổi thọ của Intel Galileo. Nói một cách khác, chính nhờ vào module relay này, chỉ khi nào bạn cắt thì phần cơ mới hoạt động, tiết kiệm rất nhiều năng lượng trong thời gian ngưng hoạt động.
2. Module quạt tản nhiệt điều khiển bằng Relay thông qua Intel Galileo
Vì Intel Galileo được đặt trong hộp kín, ngoài ra vi xử lý của Intel Galileo rất dễ nóng và dễ dàng leo đến 85 độ C chỉ trong vài phút hoạt động. mình đã thử sử dụng tản nhiệt đồng, nhưng vẫn không hiệu quả trong thời gian dài. Vì vậy, mình đã sử dụng quạt 12 V để quạt tản nhiệt cho Intel Galileo khi nhiệt độ của vi xử lý nóng đến 89 độ C và chỉ dừng khi đạt được nhiệt độ 69 độ C.
Ngoài ra, khi Intel Galileo đạt đến nhiệt độ 92 – 93 độ C, thì nó sẽ tự động ngắt điện để bảo vệ hệ thống. Vì vậy, module này được sinh ra cũng là để tránh tình trạng tự ngắt của Intel Galileo khi nhiệt độ quá cao.
Chúng ta sử dụng chân digital 7 (của Intel Galileo) nối với chân điều khiển relay để điều khiển quạt. Trong thiết kế 3D, chúng ta sử dụng quạt máy tính 50mm. bạn có thể tự mình điều chỉnh kích thước quạt cho phù hợp. Tuy nhiên, độ sâu của quạt không nên vượt quá 20mm.
3. Module LCD điều khiển bằng giao thức I2C bằng module I2C LCD PCF8574
Module này được dùng để hiển thị các thông tin như địa chỉ IP trong mạng hay địa chỉ IP ở lớp VPN,… Ngoài ra, máy cắt laser kLaserCutter cũng sẽ thông báo các trạng thái, tọa độ của đầu laser,… thông qua chiếc LCD này.
Trong hình trên, vì không có mô hình module I2C LCD nên mình dùng tạm các chân của LCD để mô tả (thực tế các chân nối đó lấy từ module I2C LCD)
bạn có thể tự thay thế kích thước màn hình cho phù hợp với bản thân (nhớ là điều chỉnh trong file cắt laser nữa nhé).
4. Kết nối promini với Intel Galileo
Bạn sẽ nối cổng RX ở Promini với TX của Intel Galileo và ngược lại. Ngoài ra, bạn sẽ cấp nguồn cho Arduino Promini thông qua chân 5V (vào VCC) và GND nối chúng với nhau. Như vậy, là Intel Galileo đã có thể giao tiếp được với Arduino Promini thông qua giao thức Serial.
bạn cần đặc biệt chú ý đến module này, nếu bạn làm hở kết nối RX và TX giữa Arduino Promini và Intel Galileo, sẽ gây ra hiện tượng truyền dữ liệu không chính xác. Nói một cách nôm na dễ hiểu, đó là hiện tượng “rơi” dữ liệu. Hãy tưởng tượng, bạn muốn điều khiển trục X đi đến vị trí 123.32132 trên hệ trục tọa độ, nhưng qua quá trình truyền dữ liệu, dấu “chấm” đã bị rơi mất ==> grbl hiểu rằng bạn truyền đến tọa độ 12332132 ==> máy hoạt động không chính xác và có thể bị hư nữa!
Để tránh tình trạng bị “rơi” dữ liệu, chúng ta nên dùng mạch đồng 2 mặt như hình dưới để gắn Arduino Promini vào với Intel Galileo.
5. Module nút bấm quản lý máy cắt kLaserCutter
Vì trong thực tế, bạn đôi lúc muốn dừng máy cắt của mình ngay lập tức, nhưng lại không thể mở điện thoại hay laptop,… và chỉ còn một giải pháp duy nhất là cúp điện toàn bộ hệ thống. Như vậy sẽ gây hư hỏng cho Intel Galileo. Thấy được khả năng đó, mình đã đưa vào module nút bấm gồm 02 nút bấm công nghiệp loại nhỏ có đường kính 16mm để dừng máy cắt trong các trường hợp khẩn cấp. Ngoài ra, tùy vào ngữ cảnh khác nhau mà nó sẽ dừng / chạy lại máy cắt, hay tắt luôn máy cắt và xem địa chỉ IP trong mạng và địa chỉ IP trong lớp VPN.
Nút bấm công nghiệp
Bởi vì chỗ đặt button hơi xa với độ Intel Galileo, vì vậy bạn nên dùng dây dài tầm 40cm để nối dây button.
LƯU Ý: Nút màu xanh nối vô chân số 9, nút màu đỏ nối vô chân số 8.
IV. Bản vẽ 2D của hộp đựng Intel Galileo
Trong phần này, chúng ta sẽ không còn các vấn đề với việc in 3D nữa, thay vào đó, mình sẽ đề cập sâu hơn vào file layout để cắt mica bằng laser (ở tiệm quảng cáo).
Vì hộp đựng Intel Galileo không bị phụ thuộc quá nhiều vào thiết kế phần cứng và mình đã thu hẹp phạm vi và đề xuất những phần cứng mình đã và đang dùng. Vì vậy, các bạn có thể trực tiếp cắt file mà mình đang dùng và không sợ trường hợp không "vừa" nhé.
Các bạn có thể tải miễn phí bản vẽ tại đây, bản vẽ mình lưu trong thư mục layout/galileo and electronic box đó nhé. Trong thư mục đó gồm có 6 file quan trọng đó là front, back, top, bottom, left, right lần lượt là các mặt trước, sau, trên, dưới, trái, phải của kLaserCutter. Để mở được những file này, bạn cần dùng phần mềm Google Layout (một trong 3 sản phẩm của Google Skecth Up).
Sau đây là một vài hình ảnh về mặt cắt của hộp đựng Intel Galileo.
Mặt cắt trước
Ô tròn chính là nơi đặt chiếc quạt tản nhiệt, và phí dưới nó chính là nơi bạn đặt mạch Intel Galileo. Bạn có thể dùng keo nến để dán quạt tản nhiệt lên khung đó, nhớ là gắn sao cho quạt nó thổi vào để tản nhiệt nhanh nhé . Ô chữ nhật chính là nơi đặt LCD 1602, mình thiết kế vừa khít òi, bạn chỉ cần nhét vào là cứng ngay, nhưng lỡ nó không vừa thì sao? Lúc nào keo nén chính là phải pháp giành cho bạn.
2 hình tròn bên phải chính là nơi đặt 2 nút nhấn công nghiệp đó bạn hiền. Còn cái ô tròn đè lên ô vuông trái trái chính là nơi bạn luồng dây vào đó!
Mặt cắt phải
Mặt cắt trái
Mặt cắt dưới
Bạn có để ý đến 4 ô tròn nhỏ nhỏ có đường kính 3li ở mỗi góc không? Đó chính là nơi bạn gắn ốc vào để cố định lên máy cắt đó. Gợi ý, hãy dùng mặt cắt dưới này đèn lên bên hông máy cắt của bạn và dùng bút lông hay lấy đồ vặn vít đánh dấu lại, cuối cùng dùng khoan khoan 1 lỗ ở đó!
Mặt cắt sau
Phía sau hình cữ nhật to bạn hãy đặt intel galileo của mình sao cho khớp vào nhé, bởi vì từ chính chỗ đó sẽ là nơi các thiệt bị khác sau này mình phát triển thêm sẽ gắn vào đó đấy. Hiện tại mình chế nó ra để có chỗ gắn dây LAN vào cài đặt ban đầu và có chỗ để gắn camera vào hehe.
Mặt cắt trước
Lưu ý: Các bạn cần chuyển file layout thành file dxf để có thể đưa ra tiệm cắt laser hoặc cắt cnc. Tỉ lệ chuyển đổi là 1:1 và cắt trên vật liệu mica / phíp có độ dày từ 2.5 đến 3 mili mét nhé.
Nếu ở tiệm họ không mở file được thì mình khuyên các bạn download sẵn phần mềm corel về rồi dùng corel mở file dxf lên rồi lưu lại dưới dạng file corel. Sau đó đem file corel ra chỗ cắt laser / khắc cnc.
Nãy giờ các bạn có để ý đến cái cơ cấu chữ T mà mình thiết kế không vậy, hehe. Đó chính là cơ cấu mình học hỏi từ máy in 3d của mình và cơ cấu đó được thiết kế ra để gép các mặt lại với nhau đó! Thành ra bạn không cần phải sử dụng co L để kết nối các mặt lại với nhau nữa rồi hehe
V. Cài đặt phần mềm cho kLaserCutter
1. Cài đặt hệ điều hành IOT Devkit cho Intel Galileo
Để cài đặt hệ điều hành IOT Devkit cho kLaserCutter, chúng ta cần chuẩn bị 2 thứ, đó là:
- 01 thẻ nhớ micro SD (tối thiểu 2GB, tối đa 32GB).
- 01 áo thẻ SD (5.000 đồng) hoặc 01 đầu đọc thẻ micro SD (10.000 đồng).
Vì khi cài hệ điều hành cho thẻ SD, thẻ SD sẽ được định dạng lại các phân vùng, nên bạn nên lưu trữ nội dung trên thẻ nhớ của mình trước khi tiến hành các bước tiếp theo.
Sau đó, ta sẽ tải hệ điều hành IOT Dev Kit của Intel phát triển trên nền hệ điều hành Yocto dành cho các board mạch Intel Galileo và Intel Edison tại địa chỉ https://software.intel.com/sites/landingpage/iotdk/board-boot-image.html. Ngoài ra, bạn cần tải thêm phần mềm Rawrite32 tại địa chỉ để tiến hành cài đặt hệ điều hành IOT Dev Kit lên board Intel Galileo tại địa chỉ http://www.netbsd.org/~martin/rawrite32/download.html.
Sau khi tải hệ điều hành Intel Galileo ta được một file tên là iot-devkit-1.5-i586-galileo.bz2. Ta sẽ dùng phần mềm Rawrite và mở file đó lên.
Đang đọc file
Đọc file xong
Sau đó bạn chọn thẻ SD mà bạn mới gắn vào
Như vậy là chúng ta đã cài đặt hệ điều hành IOT Dev Kit thành công
Công việc cuối cùng của bạn, đó là đặt thẻ nhớ và khe thẻ nhớ của mạch Intel Galileo. Sau đó cắm nguồn, thế là chạy.
2. Truy cập SSH vào Intel Galileo và cập nhập hệ điều hành
Để truy cập vào SSH của Intel Galileo, chúng ta có rất nhiều cách. Trong đó, tác giả đã lựa chọn cách đơn giản nhất để mọi bạn đều có thể làm được. Đó là sử dụng một dây mạng LAN, gắn một đầu vào cổng LAN của Intel Galileo, đầu còn lại gắn vào router Wifi hoặc modem Internet wifi.
Để có thể truy cập vào SSH của Intel Galileo, bạn cần cài đặt cho mình phần mềm SSH Client hoặc telnet, và đơn giản nhất là PuTTY tại địa chỉ http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html.
Tiếp theo, để truy cập vào SSH của Intel Galileo, ta cần biết Intel Galileo trong mạng có IP là bao nhiêu. Để làm được điều này, chúng ta cần truy cập vào trang quản lý modem hoặc router của mình.
Bạn thử truy cập vào địa chỉ http://192.168.0.1 hoặc http://192.168.1.1 để truy cập vào địa chỉ trang quản lý modem của mình. Nếu đều không được thì hãy nhấn tổ phím Windows + R, và gõ vào hộp thoại dòng chữ “cmd” rồi ấn enter.
Sau đó gõ lệnh “tracert arduino.vn” trong giao diện dòng lệnh. Để ý đến dòng chứa đoạn 192.168., đó chính là địa chỉ trang quản lý modem.
Tuy nhiên, trong một số trường hợp khác, ví dụ như mạng ở ký túc xá hay mạng công ty, bạn cần hỏi người quản lý mạng để biết địa chỉ của galileo, như vậy rất phức tạp. Bạn có thể xem về cách truy cập vào Linux Console trong bài viết http://arduino.vn/bai-viet/457-intel-galileo-vai-meo-voi-intel-galileo-va-he-dieu-hanh-linux-yocto-iot-devkit để đơn giản hóa khi rơi vào trường hợp này.
Trong ví dụ này, địa chỉ IP trang quản lý modem là 192.168.1.1
Chúng ta truy cập vào địa chỉ trang quản lý modem và nhập mật khẩu quản lý. Thường là “admin / admin” hoặc “MegaVNN / MegaVNN”. Mỗi nhà mạng đều có trang quản lý riêng. Tuy nhiên, những năm gần đây, tác giả thấy hai nhà mạng VNPT và FPT đều sử dụng giao diện này, nên sẽ dùng nó để hướng dẫn bạn xem địa chỉ IP của Intel Galileo trong mạng. Nếu bạn sử dụng giao diện khác, thì hãy đọc kĩ hướng dẫn sử dụng model / router wifi và tìm mục “DHCP List” hoặc “Danh sách máy khách” là được.
Bạn click vào mục “Interface Setup” chọn “LAN” và tìm địa chỉ IP của Intel Galileo trong DHCP Table (host name galileo)
Như vậy, khi đã có được địa chỉ IP của Intel Galileo, bạn chỉ việc gõ các thông tin như sau vào PuTTY là được.
Sau đó, click vào nút Open
Khi màn hình dòng lệnh hiện ra, nó sẽ yêu cầu đăng nhập. Chúng ta sử dụng tên đăng nhập là root (không có mật khẩu)
Tiếp đó, ta sẽ thay đổi mật khẩu đăng nhập cho user root (user tối cao – ông trùm – trong thế giới hệ điều hành Linux) bằng câu lệnh passwd (gõ lại lệnh hoặc copy lệnh sau đó nhấn chuột phải vào putty).
Cuối cùng, chúng ta sẽ cập nhật hệ thống phần mềm cho Intel Galileo bằng câu lệnh opkg update && opkg upgrade. Quá trình cập nhật sẽ mất tầm 20 – 30 phút, tùy thuộc vào tốc độ mạng và lớp thẻ mà bạn sử dụng cho Intel Galileo.
3. Cài đặt kLaserCutter
Việc cài đặt kLaserCutter vô cùng đơn giản, chỉ cần thực hiện vài dòng lệnh (sau khi đã truy cập vào SSH với user root).
git clone https://github.com/ngohuynhngockhanh/kLaserCutter.git cd kLaserCutter && ./setup.sh
Như vậy quá trình cài đặt đã hoàn tất, rất đơn giản phải không nào.
Tuy nhiên, nếu bạn có một card wifi thì chúng ta cần cài đặt mạng wifi. Xem thêm tại bài viết Kết nối wifi cho Intel galileo bằng card wifi (cổng mini PCI). Một khi đã cài đặt xong, bạn chỉ cần nhấn giữ vào nút màu xanh là nó sẽ hiện ra địa chỉ IP trong lớp mạng của mình, không cần phải mất công ở bước 2 nữa.
VI. Cài đặt kLaserCutterCotnroller – Phần mềm điều khiển máy cắt kLaserCutter
Để điều khiển máy cắt kLaserCutter, bạn có 02 lựa chọn, đó là: sử dụng trình duyệt Web của máy tính, laptop, điện thoại để đều khiển, hoặc sử dụng thiết bị thông minh sử dụng hệ điều hành Android như điện thoại thông minh và máy tính bảng.
1. Điều khiển trên máy tính (desktop / laptop) hay bất cứ thiết bị nào hỗ trợ trình duyệt web
Với kLaserCutterController phiên bản web, chúng ta có thể điều khiển máy cắt kLaserCutter ở mọi nơi bằng bất cứ thiết bị nào.
Để có thể sử dụng phần mềm, bạn cần chuẩn bị một trong ba trình duyệt sau: Cốc cốc, Mozilla Firefox và Google Chrome. Trong đó, tác giả khuyên dùng Mozilla Firefox.
Có 02 cách để sử dụng máy kLaserCutter bằng phần mềm kLaserCutterController phiên bản web.
- Cách 1: Sử dụng miễn phí tại http://klasercutter.app.arduino.vn/#/tab/dash
- Cách 2: Tải về và dùng miễn phí (cả offline và online) tại http://klasercutter.app.arduino.vn/kLaserCutterController.zip
- Khi tải về, bạn chỉ cần giải nén ra ở bất kỳ thư mục nào và click đúp chuột vào file index.html (hoặc chuột phải ==> Open with… ==> Google Chrome / FireFox / Cốc cốc).
Giao diện diện chính của chương trình lúc chưa cài địa chỉ IP kLaserCutter
Bạn sẽ thiết đặt lại địa chỉ máy cắt IP với port 9090 (mặc định)
Sau đó quay lại bảng điều khiển và kirigami (SVG), và…
2. Điều khiển trên thiết bị thông minh dùng hệ điều hành Android
Để cài đặt kLaserCutterController, bạn nên sử dụng phần mềm quét QR code trên thiết bị và quét mã trên hoặc truy cập vào địa chỉ sau https://play.google.com/store/apps/details?id=com.ionicframework.k574783 để cài đặt phần mềm.
Với phần mềm trên điện thoại, ngoài những chức năng được hỗ trợ của phiên bản Web, bạn còn được hỗ trợ thêm một chức năng đặc biệt: đó là, cập nhập trạng thái mà không cần trực tiếp mở phần mềm (tiết kiệm băng thông 3G). Nói nôm na, đó là, khi bạn truy cập vào một mạng Internet (bất kỳ), điện thoại của bạn sẽ được cập nhật trạng thái mới nhất của máy kLaserCutter. Điều đó, giúp cho bạn không phải tốn thời gian bật phần mềm, không phải tốn băng thông xem giả lập và camera. Chỉ cần truy cập vào Internet thì mọi trạng thái sẽ cập nhật tức thì trong thời gian thực. Và, đặc biệt hơn nữa, đó là trong cả 2 phiên bản (trình duyệt và Android), tất cả trạng thái của thiết bị này sẽ được đồng bộ với thiết bị khác trong mạng (Internet) đang kết nối với máy cắt. Điều đó đã giúp máy cắt kLaserCutter tránh được các xung đột điều khiển (ví dụ người A dùng thiết bị A đang cắt, người B dùng thiết bị B thấy thế nên không cắt và đợi thông báo kết thúc thì người B vào).
Và đây là giao diện điều khiển của kLaserCutterController phiên bản dành cho hệ điều hành Android.
3. Tư tưởng thiết kế giao diện của kLaserCutterController
Giao diện của kLaserCutter hướng đến sự đơn giản tuyệt đối, với chỉ 2 nút. Một nút là chọn file, và nút còn lại là tiến hành cắt. Bên cạnh đó, là sự hài hòa với những thiết kế logic kéo theo, đem lại trải nghiệm tốt nhất cho bạn. Ngoài ra, bạn có thể “đi sâu hơn” để thiết đặt và điều khiển bằng tay tọa độ của máy chủ phù hợp với bản thân của mình.
Với giao diện đơn giản nhưng gói gém đầy đủ thông tin, hứa hẹn sẽ đem lại những trải nghiệm mới lạ cho bạn. Hãy thử khám phá sâu hơn nhé. Tác giả sẽ hướng dẫn sử dụng chi tiết cách “đi sâu hơn” ở những phần sau.
VII. Hướng dẫn sử dụng và thiết đặt
1. Hướng dẫn sử dụng và thiết đặt kLaserCutterController
Vì sao, tác giả lại hướng dẫn sử dụng kLaserCutterController trước khi hướng dẫn sử dụng máy cắt kLaserCutter?
Bởi vì, nó đơn giản hơn và bạn thường chỉ cần biết cách sử dụng controller là đủ, vì kể từ phần sau, tác giả sẽ dần đi sâu vào từng phần trong hệ thống, bao gồm những khó khăn, giải pháp và quan trọng nhất là vì sao nó có mặt ở đó.
a. Làm quen với giao diện
Với kLaserCutterController, bạn sẽ được trải nghiệm cảm giác “đơn giản đến bất ngờ” như lúc mà bạn Mỹ nói về thế hệ Ipod đầu tiên của Apple. Tác giả chỉ sử dụng đúng tối đa 02 nút cho mỗi ngữ cảnh. Nói một cách nôm na, ở mỗi ngữ cảnh bạn sẽ có tối đa 02 lựa chọn, như vậy sẽ dễ dàng hơn rất nhiều – bởi vì bạn sẽ không bị rối bởi một giao diện với vô số các nút bấm. Và xuyên suốt trong quá trình sử dụng kLaserCutter, các câu hỏi mà máy hỏi lại bạn chỉ có 2 lựa chọn “Có” hoặc “Không”.
b. Chọn và cắt file svg đầu tiên
Sau khi nhấn vào nút chọn tệp vào chọn được tệp dumbbell.svg (dự phòng), chúng ta sẽ có thêm một nút mới tên là Bắt đầu, chỉ cần chọn nút đó là quá trình cắt sẽ diễn ra.
Giao diện đơn giản với 02 nút
Câu hỏi đặt ra là, nếu bạn nhấn giữ vào nút “Bắt đầu” thì chuyện gì sẽ xảy ra? Liệu nó chỉ đơn thuần xem hành động đó là một hành động click bình thường?
Tác giả đã thiết kế một chức năng “ẩn” ở đây, khi bạn nhấn giữ vào nút “Bắt đầu” thì sẽ có một bảng chọn hiện ra hỏi “số lượng lượt cắt”. Vì sao lại có chức năng ẩn này? Vì mỗi máy cắt khác nhau sẽ có đầu laser diode khác nhau, nghĩa là, có người có laserr diode mạnh vài W, nhưng có bạn chỉ sở hữu diode mạnh vài trăm mW. Nói một cách khác, nếu dùng laser diode công suất chỉ vài trăm mW nhưng muốn cắt giấy dày thì bạn phải cắt nhiều lần (nếu không muốn đổi laser diode). Vì nó không phổ biến trong thực tế (thường thì bạn sẽ đầu tư mua laser diode lớn hơn 500mW – có thể cắt được ngay trong lần đầu tiên) nên tác giả để nó là chức năng ẩn.
Bởi vì, bạn đã nhấn nút bắt đầu, nghĩa là họ muốn cắt, nhưng lại hiện ra biến này thì làm sao? Không sao cả, chỉ cần nhấn nút “Cancel” là quá trình cắt sẽ diễn ra bình thường (cắt 1 lượt).
c. Tiến hành cắt laser
Khi bạn nhấn vào nút “Bắt đầu”, quá trình cắt sẽ diễn ra. Trong quá trình đó, bạn chỉ có 02 sự lựa chọn (trên toàn bộ các thiết bị kết nối), đó là lệnh: “Tạm dừng” và lệnh “Hủy”.
Khi đang trong quá trình khắc ảnh (raster), nó cũng tương tự với quá trình cắt ảnh (vector), cũng chỉ có 2 nút. Nhưng đặc biệt với chế độ raster, bạn có thể xem chính xác ảnh mình đang cắt và xem qua camera, để tránh việc nhìn trực tiếp vào laser (vô cùng nguy hiểm)!
Khi nhấn nút “Tạm dừng”, nút “Tạm dừng” sẽ mất đi và thay thế vào đó là nút “Chạy tiếp”. Trong quá trình dừng, đèn laser sẽ tắt (nếu đang bật), động cơ bước sẽ được bật để giữ vị trí bàn cắt.
d. Hủy quá trình cắt
Để hủy quá trình cắt, bạn chỉ cần nút vào nút Hủy. Máy cắt kLaserCutter sẽ tự động làm những việc bên dưới như di chuyển bàn cắt lại vị trí ban đầu, tắt laser,…
Trước khi quá trình cắt dừng lại, máy sẽ có một thông báo bạn. Hỏi họ có thực sự muốn dừng quá trình cắt này hay không?
Khi hủy quá trình cắt, giao diện của chương trình sẽ quay lại giao diện tổng quan.
e. Thiết đặt nâng cao
Trong giao diện này, ngoài các ô thiết đặt địa chỉ của máy cắt laser như địa chỉ của kLaserCutter. Bạn có thể thay đổi tốc độ cắt, số lần cắt mặc định,… Trong đó có 3 tham số lựa chọn có-không đó là:
- Xem camera.
- Tùy chọn bật tắt việc xem video trên thiết bị mà bạn đang sử dụng.
- Render SVG.
- Thể hiện ảnh SVG sẽ cắt (nếu có thể).
- Ghi nhớ thiết bị.
- Tùy chọn việc nhận thông báo (chỉ hoạt động trên thiết bị Android).
Render SVG
Không render SVG
Ngoài ra, ở trang thiết đặt thông báo, bạn có thể xem tải máy chủ và nhiệt độ của Intel Galileo.
VIII. Hướng dẫn cài đặt sâu vào kLaserCutter
Bạn cần truy cập vào SSH PuTTY trước khi tiến hành tiến sâu vào hệ thống. Ngoài ra, bạn cần biết một ít về linux và ngôn ngữ C/C++ (biết thêm về Javascript là một lợi thế to lớn).
Trước tiên, bạn sẽ được tìm hiểu về các tham số dòng lệnh trong kLaserCutter. Từ đó, có thể lựa chọn cho mình những tham số phù hợp với máy của bản thân.
Tham số |
Chức năng |
Mặc định |
feedRate |
Tốc độ cắt (mm/s). Kiểu dữ liệu: Số tự nhiên. Nếu truyền vào số -1 thì hệ thống sẽ tự động đặt tốc độ cắt là 300mm/s hoặc sử dụng tốc độ đã được thiết đặt trước đó. |
-1 |
LCDcontroller |
Tên mã IC được dùng trong mạch I2C LCD. Kiểu dữ liệu: Chuỗi. Các mã có thể được sử dụng là một trong các mã sau: HD44780, JHD1313M1, LCM1602, LCD1602, LCM1602IIC, LCD2004, PCF8574A, PCF8574AT, PCF8574T, PCF8574. |
PCF8574 |
serverPort |
Cổng được dùng để điều khiển kLaserCutter Kiểu dữ liệu: Số tự nhiên |
9090 |
maxFileSize |
Kích thước file tối đa mà Intel Galileo có thể xử lý. Kiểu dữ liệu: Số tự nhiên (đơn vị byte) Mặc định: 1.5MB |
1572864 |
maxCPUTemp |
Ngưỡng nhiệt độ tối đa mà Intel Galileo phải chịu, sau đó quạt tản nhiệt sẽ được bật. Kiểu dữ liệu: Số tự nhiên (độ C) |
88 |
minCPUTemp |
Ngưõng nhiệt độ tối thiểu để tắt quạt tản nhiệt. Kiểu dữ liệu: Số tự nhiên (độ C) |
73 |
maxQueue |
Số lượng phần tử tối đa có thể có trong hàng đợi Gcode. Kiểu dữ liệu: Số tự nhiên. Khuyên dùng: Nên đặt trong khoảng 17 – 23 |
20 |
minQueue |
Số lượng phần tử tối thiểu phải có trong hàng đợi Gcode. Kiểu dữ liệu: Số tự nhiên. Khuyên dùng: Nên đặt trong khoảng từ 4 - 6 |
4 |
maxDistance |
Quãng đường tối đa mà các câu lệnh Gcode vẽ nên Khuyên dùng: Nên đặt trong khoảng từ 6 - 8 |
8 |
minDistance |
Quãng đường tối thiểu cho phép Intel Galileo gửi thêm câu lệnh Gcode đến Grbl Khuyên dùng: Nên đặt trong khoảng từ 5–7 |
6 |
mjpg |
Truyền tất tần tật các tham số liên quan đến mjpg streamer Kiểu dữ liệu: Chuỗi JSON Các tham số:
Chương trình sẽ tự động kiểm tra thông số của Camera và lựa chọn các thông số phù hợp cho format. Ví dụ: --mjpg='{"port":9090}' |
{"port":8080, "resolution" :"320x240", "fps" : "5", "quality":"50","format":"auto"} |
maxCoorX |
Độ dài hành trình tối đa của bàn cắt X. Kiểu dữ liệu: Số tự nhiên (đơn vị mm) |
320 |
maxCoorY |
Độ dài hành trình tối đa của bàn cắt Y. Kiểu dữ liệu: Số tự nhiên (đơn vị mm) |
315 |
resolution |
Tỉ lệ phân giải file ảnh thành tệp gcode để khắc ảnh. Kiểu dữ liệu: Số thực dương. Giới hạn: 0.1 – 5 |
3.543285714 |
intervalTime1 |
Khoảng thời gian giữa mỗi lần kiểm tra kết nối với mạch Arduino Promini (grbl). Kiểu dữ liệu: Số tự nhiên. Đơn vị: mili giây (ms) |
10000 |
intervalTime2 |
Khoảng thời gian giữa mỗi lần kiểm tra trạng thái của webcam. Mỗi lần kiểm tra, hệ thống sẽ tự tìm định dạng tốt và chất lượng hình ảnh và tốc độ cao nhất có thể được của webcam. Kiểu dữ liệu: Số tự nhiên. Đơn vị: mili giây (ms) |
10000 |
intervalTime3 |
Khoảng thời gian giữa mỗi lần kiểm tra tọa độ của đầu cắt laser theo thời gian thực. Kiểu dữ liệu: Số tự nhiên. Đơn vị: mili giây (ms) |
800 |
intervalTime4 |
Khoảng thời gian giữa mỗi lần kiểm tra server load và nhiệt độ CPU của Intel Galileo. Kiểu dữ liệu: Số tự nhiên. Đơn vị: mili giây (ms) |
30000 |
intervalTime5 |
Khoảng thời gian giữa mỗi lần kiểm tra sự nghỉ của máy, nếu máy đang dừng quá thời gian này thì sẽ đưa máy vào chế độ ngủ để tiết kiệm điện. Kiểu dữ liệu: Số tự nhiên Đơn vị: giây (s) |
60 |
intervalTime6 |
Khoảng thời gian giữa mỗi lần cập nhật trạng thái LCD. Mỗi lần cập nhật này có thể cập nhật server load hiện tại hay tọa độ của laser. Kiểu dữ liệu: Số tự nhiên Đơn vị: mili giây (ms) |
10000
|
ionicAppId |
[For dev] Đối với lập trình viên, muốn tự làm cho mình một phiên bản kLaserCutterController của riêng mình thì hãy điều chỉnh lại ionicAppId Kiểu dữ liệu: Chuỗi |
|
privateApiKey |
[For dev] Đối với lập trình viên, muốn tự làm cho mình một phiên bản kLaserCutterController của riêng mình thì hãy điều chỉnh lại privateApiKey Kiểu dữ liệu: Chuỗi |
|
Để truyền đạt những tham số mới, bạn nên thử nghiệm nó trước ở SSH để chắc chắn mọi thứ hoạt động đúng như ý của mình. Đồng thời, qua qua trình đó, bạn sẽ xem được các log hệ thống, từ đó hiểu hơn về những gì đang diễn ra trong máy cắt kLaserCutter của mình.
Vì kLaserCutter sẽ tự động khi khởi động và tự bật lại khi bị lỗi trong quá trình sử dụng. Nên trước khi debug và thử thay đổi các tham số, bạn cần tắt chế độ tự khởi động script kLaserCutter bằng cách chạy câu lệnh sau:
$ kill `ps | grep -v grep | grep SVG | awk '{print $1}'`
Sau đó, chạy câu lệnh bash shell sau để tắt chương trình kLaserCutter đang chạy trong hệ thống (nên của tiến trình là svg2gcode).
$ kill `ps | grep svg2gcode | grep -v grep | awk '{print $1}'`
Cuối cùng là di chuyển đến thư mục cài đặt kLaserCutter lúc cài đặt (thường thì bạn sẽ lưu ở ~/kLaserCutter/ hoặc /home/kLaserCutter), sau đó khởi chạy script svg2gcode.js với các tham số.
$ cd /home/kLaserCutter $ ./svg2gcode.js --maxCPUTemp 10 --minCPUTemp 10
Với câu lệnh trên thì quạt trong kLaserCutter sẽ bật liên tục và không bao giờ tắt.
Sau khi đã debug thỏa thích và thử từng tham số dòng lệnh và cảm thấy ưng ý, bạn sửa file ./bin/checkSVG2gcodealive.sh với những tham số dòng lệnh ở dòng chứa lệnh chạy ./svg2gcode.js, lấy ví dụ ở trên, ta sẽ sửa thành.
cd $DIR && cd ../ && ./svg2gcode.js --maxCPUTemp 10 --minCPUTemp 10 > /dev/null 2>&1 &
Cuối cùng, ta lưu file lại và khởi động lại kLaserCutter bằng lệnh
$ init 6
kLaserCutter sẽ khởi động lại và chạy đúng như những gì mà bạn yêu cầu.
IX. Mô hình hệ thống kLaserCutter và điều khiển qua mạng
1. Vì sao lựa chọn Intel Galileo Gen 1 / 2 và Arduino Promini
Trên thị trường có rất nhiều board mạch hệ thống nhúng như Raspberry Pi, Beagle board, Arduino Yún,… với giả rẻ hơn Intel Galileo khá nhiều, nhiều board chỉ có giá bằng ½ giá của Intel Galileo (tại thị trường Việt Nam). Vậy tại sao tác giả lại sử dụng Intel Galileo làm board mạch hỗ trợ chính cho kLaserCutter?
- Thứ nhất, Intel Galileo là board mạch duy nhất trên thị trường máy tính nhúng hỗ trợ cổng mini PCI full sized. Đây là một lợi thế cho các dự án IOT (kLaserCutter là một dự án như thế). Bởi vì nó cho phép giảm chi phí đầu tư cho hệ thống và hơn hết đó chính là vấn đề nguồn điện. Khi sử dụng một router thu wifi riêng rồi truyền dữ liệu qua cổng LAN, có một vấn đề cực kỳ ngán, đó là lọc nhiễu nguồn điện cho nó. Bởi vì, khi điều khiển động cơ bước từ chế độ tiết kiệm điện sang chế độ hoạt động. Có sự điều động điện lớn và có thể gây nhiễu tín hiệu, khiến phần mềm điều khiển hoạt động không chính xác. Nhưng thật may mắn, với cổng mini PCI và một card wifi từ xác laptop đã chết từ lâu đã khiến mọi thứ với kLaserCutter sống dậy và hoạt động tốt và không hề bị nhiễu vì Intel Galieo đã làm rất tốt việc này, và chúng ta có thể gắn ăng-ten âm tường vào khung nhôm của kLaserCutter. Đặc biệt hơn nữa, với card wifi driver, tác giả không cần phải lo nghĩ đến vấn đề diện tích khi dùng wifi router nữa!
- Thứ hai, Intel Galieo giao tiếp IO ở mức 5V, rất tiện trong việc giao tiếp với các thiết bị ngoại vi phổ biến trên thị trường như mạch Arduino Promini 5V, LCD, I2C LCD, điều khiển laser,… Điều này đã rút ngắn rất nhiều thời gian cho tác giả, trước đây, trong dự án kBOT với board mạch Raspberry Pi, tác giả rất ngán vấn đề 3.3V và 5V này. Nó làm mọi thứ trông thật “phù nề”.
- Thứ ba, Intel Galileo chạy NodeJS rất mượt (không như trên Raspberry Pi 2 dev B) và hỗ trợ thư viện điều khiển các cổng GPIO thông qua NodeJS. Đó là môi trường mà tác giả thích nhất khi thiết kế phần mềm trên hệ thống nhúng.
Vậy còn Arduino Promini? Tại sao tác giả không sử dụng các board mạch Arduino khác, hay một vi điều khiển khác?
- Thứ nhất, Arduino là môi trường lập trình điện tử miễn phí và phổ biến nhất trong giới nghệ sĩ điện tử.
- Thứ hai, thư viện grbl là một thư viện điều khiển máy CNC miễn phí cực kì mạnh mẽ và đã được phát triển bởi cộng đồng nguồn mở được hơn 6 năm nay (từ năm 2009). Và thư viện này được phát triển dành riêng cho Arduino.
- Thứ ba, Arduino Promini cực kì nhỏ gọn, giao tiếp ở mức 5V hỗ trợ đầy đủ mọi tính năng của dòng Arduino Classic và điều khiển máy CNC cực kì mượt theo đánh giá của cộng đồng Arduino quốc tế.
2. Mô hình hệ thống kLaserCutter
Hãy tưởng tượng kLaserCutter như là một người nghệ sĩ cắt giấy làm thuê cho chúng ta. Là một người nghệ sĩ cắt giấy, hắn phải biết cắt thật nét,cũng phải biết sáng tạo và hơn thế nữa, hắn phải biết nghe lời. Khi hắn nhận được lệnh phải cắt một tấm ảnh đã được thiết kế sẵn, hắn phải sáng tạo, xem cắt như thế nào cho hợp lý, cắt như thế nào cho nhanh để chủ nhân có được món hàng ngon nhất. Khi đã nghĩ xong, hắn đợi lệnh và sẽ cắt chính xác đến từng mili mét theo những gì người chủ muốn. Và tuyệt nhiên, hắn phải nghe lời, từng li từng tí và tự động làm hài lòng chủ nhân nhất có thể bằng cách tự làm việc độc lập.
Thật vậy, với thuật toán sắp xếp vị trí nào cắt trước, vị trí nào cắt sau, giúp cho kLaserCutter tiết kiệm rất nhiều thời gian thay vì phải di chuyển liên tục cắt rời rạc nhau. Ngoài ra, kLaserCutter cắt cực kỳ chính xác nhờ vào cơ cấu truyền động, giữ trục và cơ cấu điều khiển. Một điểm tuyệt vời hơn bao giờ hết, đó là khả năng nghe lời của bạn. Bạn có thể ở mọi nơi và ra lệnh cho kLaserCutter thông qua Internet bằng các thiết bị điện tử hỗ trợ trình duyệt web hay thiết bị thông minh.
Khái quát hóa hơn nữa, kLaserCutter gồm có 3 phần chính:
- Hệ thống “não” (vi xử lý trung tâm) là Intel Galileo, đại diện cho trí thông minh – thuật toán – nghe lệnh.
- Hệ thống “tay và dao” (Arduino, cơ cấu truyền động, laser,…), đại diện cho sự khéo tay – sắc nét – nghệ sĩ.
- Hệ thống “tai, mắt” (wifi – internet, camera,…), đại diện cho sự giao tiếp giữa người với máy – sự trung thành.
Với sự thống nhất về mô hình đó, cho chúng ta một chiếc kiềng 3 chân vững chắc, và chỉ cần thiếu ít nhất 1 trong 3 “chân” này, kLaserCutter sẽ chỉ là một đống nhôm, nhựa vô tri vô giác.
Mô hình hệ thống gồm 3 mảng lớn (Controller, Intel Galileo và Arduino)
3. kLaserCutter là một thiết bị IOT
Vì kLaserCutter là một thiết bị điện tử được kết nối vào Internet để phục vụ và hỗ trợ nhu cầu cắt nghệ thuật của mình. Nên kLaserCutter là một thiết bị IOT.
Vậy làm thế nào để có thể điều khiển kLaserCutter thông qua mạng Internet?
Trong những phần trước, tác giả chỉ nói đến việc điều khiển máy cắt thông qua mạng Wifi nội bộ trong nhà. Vậy chưa thế là IOT được. Để trở thành một thiết bị IOT, kLaserCutter cần được nối mạng Internet. Và bây giờ, bạn sẽ được hướng dẫn đưa kLaserCutter ra ngoài thế giới ảo!
Trước tiên, tác giả sẽ giới thiệu các port mà kLaserCutter đang sử dụng (mặc định).
- 8080: Port stream hình ảnh từ Camera. Nó giúp cho các phần mềm điều khiển khác như OpenRemote / OpenHAB có thể xem kLaserCutter thông qua API của họ.
- 9090: Port server kLaserCutter. Nó được mở ra để đón nhận và truyền dữ liệu giữa máy chủ (kLaserCutter) và máy khách (kLaserController).
Để có thể đưa kLaserCutter nối vào mạng Internet, bạn chỉ cần cho phép modem / wifi router bật chế độ Port Fordwarding với địa chỉ IP trang mạng LAN của kLaserCutter cùng với 2 port trên.
Tùy vào modem internet / router wifi mà bạn sẽ tìm trong hướng dẫn sử dụng cách mở Port Fordwarding. Trong ví dụ tới đây, tác giả đã thử nghiệm mở Port Fordwarding trên modem Internet của hai nhà mạng VNPT và FPT.
Bạn sẽ truy cập vào trang quản lý modem / router của mình. Trong ví dụ này là: 192.168.1.1 (thường là 192.168.0.1). Sau đó chọn tab Advanced Setup ==> NAT ==> chọn Virtual Server như hình dưới.
Sau đó, bạn sẽ lần lượt thêm các port vào danh sách này. Thay địa chỉ IP 192.168.1.105 bằng địa chỉ IP của kLaserCutter trong mạng Wifi. Vì bạn chỉ cần mở các port là 9090 và 8080, tức là 2 port riêng lẻ và không liền kề nhau, nên bạn cần thêm vào 2 lần như hình trên. Ngoài ra, ta có thể thay giá trị tại Start Port Number bằng 8080 để mở một dải port từ 8080 ==> 9090. Tuy nhiên, cách này không an toàn về bảo mật mạng, vì khi làm như vậy, chính chúng ta tạo ra một lỗ hổng để hacker có thể lợi dụng truy cập vào mạng.
Như vậy, ta đã có thể truy cập đến kLaserCutter bằng địa chỉ IP của mình ở lớp Internet. Bạn có thể xem địa chỉ IP Internet của mình tại http://whatismyip.com. Sau đó dùng địa chỉ IP đó như là địa chỉ của kLaserCutter thay cho địa chỉ trong lớp mạng 192.168.
Nhưng khỗ nổi, địa chỉ IP ngoài Internet liên tục được các nhà mạng làm mới (để chúng ta phải đăng ký thêm dịch vụ IP tĩnh thì mới làm những việc như vầy được). Nhưng thật may mắn, hiện này, hầu hết các modem Internet đều hỗ trợ dịch vụ Dynamic DNS, một dịch vụ cho phép chúng ta cấu hình một DNS từ bên thứ 3 cập nhập địa chỉ IP của modem. Nói một cái nôm na, thay vì sử dụng một địa chỉ IP dài ngoằn, khó nhớ, ta sẽ dùng một tên miền miễn phí được trỏ DNS tới địa chỉ IP dài ngoằn ấy – bằng một dịch vụ miễn phí tên DDNS (Dynamic DNS).
Để làm được điều đó, bạn cần đăng ký một tài khoản miễn phí tại địa chỉ http://noip.com. Cách thức đăng ký thực sự rất dễ dàng nên tác giả sẽ không đề cập đến ở đây và đi tiếp đến vấn đề “tạo một tên miền và giải pháp trỏ tự động DNS cho tên miền ấy đến địa chỉ IP ở nhà”.
Bạn chọn mục Hosts / Redirects ==> Manage Hosts ==> Add A Host để tiến hành tạo cho kLaserCutter một tên miền.
Cài đặt tham số Hostname là tên subdomain của tên domain noip.me phía sau. Và cuối cùng, bạn chọn Host Type là DNS Host (A) và nhấn nút Add Host là xong.
Tiếp theo, công việc cuối cùng, đó là bật dịch vụ DDNS trong modem Internet để nó tự động cập nhật lại DNS của địa chỉ tên miền ta vừa lập.
Bạn di chuyển vào trang quản lý modem Internet và truy cập vào tab Access Management à DDNS và cập nhật thông tin được yêu cầu.
Ví dụ về những thông số cần nhập
Một tài khoản ở no-ip.org có thể tạo miễn phí được 3 host (3 subdomain), như vậy, bạn có thể điều khiển được 3 máy kLaserCutter ở 3 mạng khác nhau. Còn nếu chung một mạng thì ta chỉ cần chỉnh các thông số port mjpg và server port là có thể tạo một máy mới rồi.
$ ./svg2gcode.js --serverPort 9091 --mjpg='{"port":8081}'
Với câu lệnh trên được thiết đặt trong tệp ./bin/checkSVG2gcodealive.sh sẽ giúp kLaserCutter khởi động máy chủ điều khiển ở port 8081 và máy chủ phát mjpg (máy chủ phát camera) ở port 9091.
X. Kết luận
Mình đã hoàn thành và chia sẻ cho các bạn cách làm ra máy kLaserCutter và cách mình biến nó thành một thiết bị IOT. Đây cũng là bài viết cuối cùng trong chuỗi hướng dẫn xây dựng máy cắt kLaserCutter của mình. Trong tương lai, sẽ có những bài hướng dẫn mới mở rộng ra hoặc đơn giản là giảm chi phí đi vài lần, mong các bạn đón đọc.
Bonus