Arduinoでレーザーカッターを自作してみる その1【ソフトウェア編】

Arduinoでレーザーカッターを自作してみる その1【ソフトウェア編】

こんにちはツボクラです。

ものづくりをやっているので、以前からレーザーカッターかCNC(切削加工機)が欲しいなぁと思っていました。
でも普通にちゃんとした業務用製品を買うと100万円以上…。

ですが、最近はもっと手軽に使えるSmart DIYsさんの「FABOOL Laser Mini」という小型のレーザーカッターが6万円ほどで出てきたりもしています。

・新しいモノづくりの世界へ。5万円台のレーザー加工機(カッター) FABOOL Laser Mini
fabool
http://www.smartdiys.com/fabool-laser-mini/

そして凄い事に、このFABOOL Laser Miniの元になったSmart Laser Miniという機種がオープンソース・ハードウェア&ソフトウェアとして、Arduino MEGA用のファームウェアから専用シールドのガーバーデータ(回路図・基板データ)からフレームやカバーの設計図に至るまで全てが公開されているのです!(すごい)
http://www.smartdiys.com/manual/smart-laser-mini-open-source-new/

普通に購入して組み立てるだけでも良いのですが、これだけ情報が公開されているのであればその恩恵を受けながら自分でも1からもっと大きいサイズのレーザーカッターでも作れちゃうのでは!?
と思ったので、あえてキットを買わずに1からレーザーカッターを自作していく様子を記録していこうかなと思います。

同じくレーザーカッター自作しようと考えている方の1つの参考になればと思います。

1.機器構成

基本の構成ですが、Smart Laser Miniの制御基板はArduino MEGAで構成されているのと、制御用PCはRaspberry Piを用意するのが良さそうなので以下のようにすることにしました。

  • レーザーカッター制御基板:Arduino MEGA
    ArduinoMega
    http://amzn.to/25n2tso
    家に転がってたので使ってますが、慣れてる方は互換基板でも大丈夫だと思います。
  • 制御用PC:Raspberry Pi B+
    raspi
    http://amzn.to/1NOwOs4
    こちらも家に転がってたやつ。今はPi 3 Model Bとかの方が性能が良いのでそちらがオススメ。
  • レールとか:OpenBuilds
    OpenBuilds_Belt_Drive_V_Slot__18723.1444071405.1280.1280
    http://openbuildspartstore.com/
    こちらも昔買って家にあったやつですね。よく考えたらMISUMIとかで買ったほうが安かったかも…。

PCはやっぱり普段使ってるのと分けて専用のPCを作ったほうが、他の作業が止まることが無いので効率的かなと思います。
Smart Laser MiniのアプリはWebサーバーとクライアントで構成されていますし、それほど高負荷な処理は走らないので、Webサーバーを構築しやすいLinuxは制御用の専用PCとして向いているんじゃないでしょうか。

2.Arduino MEGAにSmart Laser Miniのファームウェアを書き込む

さて、Arduinoにファームウェアを書き込みますが、普通のArduino IDEで書き込む方式ではなく、Pythonのスクリプトからインストールするようなので少しコツが要ります。

まずはPythonがインストールされていなければインストールが必要です。
基本はSmart Laser Miniのページに詳しく書いてあるので、これのRaspberry Pi用の部分にしたがって進めていきます。
http://www.smartdiys.com/manual/smart-laser-mini-install-software-new/

Pythonがインストール出来たら、次にArduino IDEを使わずにコマンドでインストールしますが、インストールにはArduinoの中に入っているavr-gccというコンパイラ等を使うので、Arduino IDEが予めインストールしてある必要があります。

入っていない場合は以下から最新版のIDEをダウンロード&インストールしておいて下さい。
・Arduino
https://www.arduino.cc/en/Main/Software

IDEの準備が終わったら、Smart Laser MiniのArduino MEGA用ファームウェアをダウンロードします。
ここの「ソースファイルのダウンロード」リンク。
http://www.smartdiys.com/manual/smart-laser-mini-open-source-new/

解凍してターミナルで解凍したディレクトリへ移動し、「Python flash.py」とすればファームウェアの書き込みがスタート…

するはずなんですが、私の環境(OSX)ではavr-gcc等のパスが見つからないというエラーがでて失敗してしまいました。
どうやらflash.py内のMac用のパスが間違っているようです。

ファイルパスを修正する。

flash.py 内の19行目辺り。ファイルパスを修正する。

/Resources となっている部分を削除して保存し、再度flash.pyを実行するとなにやらArduino MEGAのRX/TXが点滅して書き込みが成功しました。

SmartLaserMiniFirmware — bash — 118×60 2016-05-27 00-26-09

これでファームウェアのインストールが完了です。
それでは次にPC側のサーバーアプリの起動を試してみましょう。

3. Raspberry Piにサーバーアプリをインストールして起動する。

レーザーカッターを制御するためのサーバーにしたいPC(ここではRaspberry Pi)にSmart Laser Miniのサーバーアプリをインストールします。

http://www.smartdiys.com/manual/wp-content/uploads/2016/03/SmartLaserMiniLinuxJa.zip

他のOSの方はこちらから対応プラットフォームのをDLして下さい。
http://www.smartdiys.com/manual/wp-content/uploads/2016/03/

適当な場所に展開後、ちゃんとArduino MEGAがRaspberry Piに繋がっているか確認したら
展開したディレクトリの中で「sudo ./run.sh」します。

SmartLaserMiniServer

# LasaurGrbl XX.XX という風に表示されたらサーバー起動完了です。

早速テストしてみましょう。
Raspberry PiのWebブラウザから、表示されている
「http://127.0.0.1:4444/」
にアクセスしてみてください。

以下のようにコントロール画面が表示されたら成功です。

SmartLaserMiniClient

この時点ではArduino MEGAに何も接続していないので、画面左側に色々とエラーメッセージ出てきますが、今は特に気にしなくて良いと思います。
Smart Laser Miniアプリの良い所は、アプリがWebサーバーとして起動するので、起動さえしていればなんと同じネットワーク内の他のPCやタブレットでもブラウザからアクセスでき・・・

スクリーンショット 2016-05-27 1.19.41

・・・ない!?!?!?
なぜ・・・(汗)

※この後すげーどハマりして3時間位原因を探っていました…。

サーバーアプリがRaspberry Piの4444ポートを使用するようだったので、iptablesの設定で4444ポートを許可したり、ルーターのセキュリティ設定を見直したり色々試してみたんですが、どれも直接の原因ではなさそうでした。

その後Smart Laser Miniのサーバーアプリ内のソースコードを見ていると怪しい記述が…

 // 545行目辺り
argparser.add_argument('-p', '--public', dest='host_on_all_interfaces', action='store_true', default=False, help='bind to all network devices (default: bind to 127.0.0.1)')

え・・・?
これってもしかして、パブリックオプション(-p)付けないと他のPCからアクセス出来ないよってこと??

#!/bin/bash
python backend/app.py --raspberrypi -p

試しにrun.shでbackend/app.pyを呼んでいる所の最後に「-p」を付けて保存すると…

スクリーンショット 2016-05-27 5.39.10

動いた…!

んなもんわかるかぁぁぁぁ!
と言いたい。

ま、まぁ動いたので良しとして、これでファームウェアとサーバーアプリの準備が整いました。
ソフトウェア側の準備はおおよそ整ったことになります。

なので次はいよいよレールやステッピングモーター、そしてArduino MEGA用シールド等のハードウェアの準備をして行きましょう。
ちなみに実際に作りながらこの記事を備忘録として書いているので、ハードウェア側を作るのもこれからです。
続きを描くのは少し時間が空いてしまうかもしれませんが、興味がある方は次も見て頂けると幸いです。

それではまた次回〜!

↓次の記事

http://teruaki-tsubokura.com/Lab/arduino_lasercutter_02/