前置き
先日、待ちに待っていた家庭用卓上CNCが着弾しました。
このCNCを操作するためには、USBケーブルでPCと接続する必要がありますが、部屋の角に配置したい関係上、USBケーブルがPCまで届きません。そこで、このUSB接続を無線化できないものかと思い、実際に試してみたことのメモ書きです。
動作環境
-
卓上CNC
- Genmitsu Cubiko
-
ブリッジサーバー
- Arduino Yun Mini (Linino one)
- OpenWrt 24.10.1
- USBホストシールド取付済み
-
クライアントマシン
- Windows 11 24H2
システム構成
[CNC マシン] ←USB→ [Arduino Yun] ←WiFi→ [Windows PC]
動作フロー
1. CNC制御ソフト → COM31(仮想ポート)
2. hub4com → COM30(仮想ポート)
3. hub4com → TCP/IP → Arduino Yun
4. socat → /dev/ttyUSB0 → CNC
ブリッジサーバーの準備(Arduino Yun側)
1. USBシリアルドライバのインストール
まずは、CNCをArduino Yunに認識させる必要があるので、以下のモジュールをインストールします。
opkg update
opkg install kmod-usb-uhci kmod-usb-ohci kmod-usb2 kmod-usb-serial-ch341
インストール後、CNCを接続すると /dev/ttyUSB0
として認識されます。
2. シリアル通信のTCP/IP変換
socat
を使用してシリアル通信をTCP/IPネットワークにブリッジします。
opkg install socat
socat -d -d TCP-LISTEN:<PORT>,reuseaddr,fork,nodelay \
/dev/ttyUSB0,raw,b115200,echo=0 &
※ <PORT>
に使用するTCPポート番号を入力
動作確認
Windows PCからtelnetでArduino Yunに接続して ?
を送信してみると以下のように表示されます:
$ telnet <Arduino YunのIP> <PORT>
?
<Idle|MPos:10.000,30.000,0.000,0.000|Bf:35,254|FS:0,0>
ok
これでCNCのシリアル通信をTCP/IPネットワーク経由で利用できるようになりました。
クライアントマシンの準備(Windows側)
仮想COMポートの導入
TCP/IP接続を既存のCNC制御ソフトウェアで使用するため、仮想COMポートを作成してTCP接続をシリアルポートとして見せかけます。
今回は、com0comを使用します。
com0comとhub4comをダウンロードしておきます。
ドライバ署名の問題対応
Windows 11では署名なしドライバがインストールできないため、こちらの記事の「ドライバ警告回避方法 その2 → 記事の方法」に沿って署名済みドライバをインストールします。
仮想COMポートペアの作成
Setup for com0comを開いて仮想COMポートを設定します。
今回はCOM30とCOM31のペアを使用します。
TCP-COMブリッジの開始
hub4comディレクトリにある com2tcp-rfc2217.bat
を実行します:
.\com2tcp-rfc2217.bat \\.\COM30 <Arduino YunのIP> <TCPポート番号>
この状態で、CNC制御ソフトウェアからCOM31に接続すると、WiFi経由でCNCを制御できます。
まとめ
かなり複雑な構成ですが、無事CNCマシンの無線化に成功しました。
USBシリアルの無線化については、TCP/IPよりもBluetooth(SPP: Serial Port Profile)を使用する方が簡単かもしれません。次回があればBluetooth経由での実装も試してみたいと思います。
それでは(´・ω・`)ノシ