2019年12月24日火曜日

OctoPrint-Slic3r プラグイン

OctoPrint に STLファイルを食わせて、gcode を吐かせるプラグイン。
もうちょっとだけ正確に言えば、スライサーである Slic3r へのフロントエンドというか、Web-UI のLauncher か?

プラグイン自体は、他のOctoPrint の、プラグインと同様にプラグインマネージャからインストールできる。
けど、肝心の Slic3r は自動ではインストールされないし、コンパイル済みのバイナリ配布とかも無さそうなので、自力でナントカしないといけない。

一応、OctoPrint-Slic3r の詳解ページ に、ビルド支援のシェルスクリプトが載っているのだけど、コレだと上手く動作しなくて困ったので、ここにメモを残しておく。

ズッコケる理由は主に3つ。(もっと他にもあるかも?)
  1)メモリが足りない
  2)gtkが古い
  3)コンパイラの指定が古い

とりあえず、RAM不足はスワップ大盛りにして誤魔化すしかない。
最初に root権限で
/etc/dphys-swapfile
を開いて
set CONF_SWAPSIZE=100
みたいな行を探す。
100 Mバイトとか全然足りてないので、一気に2048Mバイトまで増やすので
set CONF_SWAPSIZE=2048
に書き換える。
書き換えたら、reboot して free -h してホントに増えてるか確認する。
OctoPi にインストールを試みた訳だけど、Raspbian もどんどんバージョンが上がってるから、色々と新しくなってて、シェルスクリプトで指定されるパッケージがいくつか無くなってたりする。

次はコンパイラとかgtkの問題に対処する。
gcc-4.7 とかが、正にそれで、4.9ならあるから、それで賄う、みたいな泥縄な感じの対応で凌ぎたい。
gtk も2系がダメなら3系を使えばいいじゃないの作戦で…。

色々と試行錯誤したので、クチャクチャになってるけど
install.sh
SLIC3R_REPO="https://github.com/alexrj/Slic3r.git"
SLIC3R_VERSION="1.3.0"
SLIC3R_DIR=~/Slic3r
# sudo apt-get install build-essential gcc-4.7 g++-4.7
# sudo apt install -y libgtk2.0-dev libwxgtk2.8-dev
sudo apt install -y build-essential  gcc-4.9 g++-4.9
sudo apt install -y git git-core
sudo apt install -y libboost-all-dev libboost-geometry-utils-perl libboost-system-dev libboost-thread-dev
sudo apt install -y libwxgtk3.0-dev libgtk-3-dev libcurl4-openssl-dev
sudo apt install -y libwx-perl libmodule-build-perl libnet-dbus-perl libextutils-cbuilder-perl libperl-dev libextutils-cppguess-perl libeigen3-dev libglew-dev libglewmx-dev cpanminus
sudo cpan ExtUtils::CBuilder ExtUtils::CppGuess Alien::wxWidgets CPAN::Mini  ExtUtils::XSpp::Cmd  ExtUtils::Typemaps::Basic
sudo cpanm AAR/Boost-Geometry-Utils-0.06.tar.gz Math::Clipper Math::ConvexHull Math::ConvexHull::MonotoneChain Math::Geometry::Voronoi Math::PlanePath Moo IO::Scalar Class::XSAccessor Growl::GNTP XML::SAX::ExpatXS PAR::Packer
echo "Cloning Slic3r repository..."
git clone $SLIC3R_REPO
cd $SLIC3R_DIR
git checkout $SLIC3R_VERSION
echo "Building and testing Scli3r..."
sudo perl Build.PL
echo "If everything was installed properly,you should be able to run Slic3r with the command ./slic3r.pl"
ぐらいの感じでインストール出来たりしないだろうか?
うちでは、こんな感じで、なんとなくインストールできたよ、事例ってことで…。

あとは、OctoPrint のプラグインの設定に戻って、OctoPrint-Slic3r が使用する Slic3r の在り処を教えておけば、STLファイルをアップロードした時に
「ねぇ?スライスする?するよね?スライス!しないの??」みたいな感じのダイアログボックスが開いて、スライス出来るようになるみたいだが、私の環境には
スライス用のプロファイルが1個も無いのでテスト出来ていない。

お粗末様でした。









ファームウェア更新 - Marlin 2.0.0

Anycubic Kossel Linear Plus のファームウェアを更新した。

http://www.lpomykal.cz/3d-printers/kossel/kossel-marlin-firmware/
から、Marlin 2.0.0 を DL する。

ZIPを解いて、ino ファイルをコンパイルして書き込めば作業は完了。
の、ハズだったが
#define DELTA_PRINTABLE_RADIUS 130.0  // (mm)
って設定されてて、これだと造形エリアの直径が260mmになってしまう。
うちのKLPは、テーブルが240mmだから、ここの値は最大でも 120
余裕をみて 115 よりは小さめに収まってないと色々と拙い気がする。

あとは、ino ファイルをコンパイルして、ボードにアップロードするだけ。
KLPのコントローラ は、Arduino Mega 2560 + Ramps 1.4 相当って事になってるので、ボードの選択を間違えないことと、USBシリアル変換チップのドライバーが入っていれば、後は大して気にかけるべきことも無いと思う。

とりあえず、ファームウェアをアップロードして、一度 EEPROMをクリアした。

その後
http://www.lpomykal.cz/3d-printers/kossel/kossel-bed-calibration-marlin-fw/
に従って、ヘッドの移動に関する調整と
http://www.lpomykal.cz/3d-printers/kossel/kossel-pid-calibration/
に従って、ヘッドの温度制御に関する調整を行った。

以前、愚痴ったパラメーター調整の際のロータリーエンコーダの回転方向と値の増減の関係や、1クリックで4ステップの入力になってしまう問題が改善されているし、ヘッドの移動の最小値が以前の0.1mmステップから、0.025mmステップになっていて、設定を追い込める感じになっているので、これだけでも更新する価値は十分にあると思った。

2019年12月18日水曜日

Anycubic Kossel Linear Plus だった

Anycubic Kossel Plus って書いてしまってたのだけど、肝心なのは リニアガイドが使われてる、ってとこで、私が持ってるヤツは
Anycubic Kossel Linear Plus
と表記するのが正解らしい。
正解かどうかというよりは、正確だったり混乱する要素が少ないとか、紛れがない、というべきかも知れない。
もう今までの記事を掘り返して訂正するのも面倒なんで
「今後は気を付けます」
ぐらいで勘弁してください。

一応、蛇足とわかりつつ説明を加えると、リニアガイドのモデルの前にプーリーと称するゴム?のタイヤみたいなのを2020フレームの溝に沿わせて走らせるタイプのモデルが存在したので、区分としては、プーリーとリニアガイドに大別されて、造形ステージというかテーブルにヒーターが仕込まれてるかとか、テーブル(デルタなので丸型)の直径が何㎜かとかで、プラスとか無印とかに分かれるみたい。

買ったときは、そんな事気にしてなかったよ…。

で、ここからが本題。

Anycubic Kossel Linear Plus に関する、いくつかのリンク

Anycubic Kossel wiki
  Anycubic Kossel Linear Plus のエライ人 Lukas Pomikal さんのWebページ
  ここから
  Marlin 2.0 へのアップグレード
  とか
  ベッドのレベリング
  とか
  PID制御の補正
  とかの、とてもとても有用な情報に辿り着ける。

知ってる人には、「いまさら?」かもしれないけどね…。

以下は Thingiverse へのリンク

Kossel Marlin 2.0.0 - the newest firmware
  上で紹介した  Lukas Pomikal さんが Thingiverse にポストした
  Marlin 2.0 のページ
  同じものみたいだけど、一応…。

The most efficient Anycubic Kossel cooler
  成果物を冷やすノズルのアップグレード版
  標準のノズルはネジ4本で固定されている。
  ホットエンドのヒートシンクと、ノズルが干渉するので、ノズルを外さないとホットエンドが引き抜けない。
  このノズルはネジ2本で固定するように変更されている上に、ヒートシンクとの干渉が無いので、ホットエンドへのアクセスが容易になるメリットがある。
  もちろん、冷却性能の向上も期待できる。らしい。
  円形というか完全な環状のノズルでは見た目に反して冷却性能の向上には寄与しないか、または、冷却効率が下がるとされている。
  アルファベットの C の形になっているので、ベッドのレベリングに使用する
  Zプローブの脱着にも支障がない、と良いことづくめのようだ。

Anycubic Linear Plus Cura Profile
  Cura で使用するプロファイル
  他のスライサーでも参考にできるハズ。

Kossel Linear Delta Plus Corner Support
  ステッピングモーターのマウントの上に盛大に空いている穴のカバー
  兼
  柱どうしを繋ぎ留めて強度を増す
  一石二鳥のパーツ。
  とは言っても、今までのところ、強度が不足してると思った/感じた事はない。
  オサレパーツとかキヤスメパーツの類かも知れないし、もしかして、ヘッドの移動速度をゴリゴリに上げるために必要だったりするのかも知れない。
  少なくとも、ゴミの侵入をいくらかでも防ぐ効果は見込めそうではある。

Kossel Plus Frame 2020 Top Reinforcement
  前出のパーツが柱の根本に取り付けるものだったのに対して
  こちらは、柱の上の方に取り付けて、強度を(以下略
  上側のセクションの方が、ネジ留めの箇所が少ないので
  撚れ防止には、こちらの方が有用かも知れない、とも思うものの、撚れてる実感がないので効果が不明なのは同じ。

Anycubic Kossel Linear Plus carriage tensioner
  ベルトのテンションを調整可能にするキャリッジのアップグレード版
  柱の天辺に取り透けるプーリーの位置を調整するタイプよりもスマートな気がする。

Top and Footer Cap for AnyCubic Delta Linear Plus
  蓋
  柱のてっぺんに空いてる穴を隠す蓋
  あるいは
  柱の底に敷く足
  でも、足にするならクッション材とか滑り止めを張り付ける必要がありそう。

Anycubic Kossel E3D v6 hotend assembly
  文字通り、E3D の v6 ホットエンドを取り付けるためのパーツ
  v6は標準の v5 Jヘッド よりも短いので、スペーサーで調整したり
  マウント方法を変更する必要がある。
  エフェクターを変更すると、Zプローブが使えなくなる弊害があるが
  これは、エフェクターを標準のまま変更しないので、そういう問題が無い。
  v6で大型化されたヒートブロックも、利用できる模様。

  今のところ、v6ヘッドに変更する予定はないが、標準のマウント方式よりも
  このマウントの方がメンテナンス性が良さそうに思えるので一考の余地あり?

AnyCubic Kossel Linear Plus E3D V6 Mount
  上記のv6ヘッドマウント同様、標準エフェクター流用の別解
  見た目の印象が少し違う程度の差しか感じられない。
  冷却用のブロアファンを大型化する例が含まれているので参考までに…。

Anycubic Kossel basic effector
  標準のエフェクターと同じ形のモデルデータ
  カスタマイズのベースとして、あるいは鉄製の標準エフェクターの軽量化部品として。
  製作者は。プーリーエディションのエフェクターから採寸したので、リニアで使えるかどうかは分からない、としている。
  リニア向けと思われるタグも付けられているし、使えない、というコメントも付いていないので使える可能性はある。
  と、思いたい。

2019年12月15日日曜日

構造材、または、角材で「ウルァアァアアッッ!!」

 いきなり、アフィリエイトリンクで申し訳ないしカッコ悪いんだけども
中華キットものも意外と規格化されていて

こういう感じのアルミの角材みたいなのの組み合わせで出来ている事が多い。
手元にある3DプリンタもCNCミリングマシンも、以前使っていた借り物の直交式の3Dプリンタも、この手の構造材を使ってた。
これは、20mm角だけど、30mm角とか40㎜角のもある。
もちろん、太くなれば頑丈になるし、重くなるし、お高くもなる。

ここで紹介してるのは、Amazonで多分中華なお店の中華な材料だけど、確かモノタロウ?だと、国産の材料を好きな長さにカットして売ってくれてた気がする。
メーカーの直販サイトでも切り売りがあったかも知れない。
とても便利だけど、お値段も跳ね上がる。

あと、これを並べて連結したようなのもあって

こんな感じに板状になってる。
これは、4本分を束ねた2080だけど、2本分の2040とかもある。
多分、3本分の2060もあると思う。

で、このちょいとイカした角材を
こういうブラケットで固定する。

この手のブラケットの裏側に入れるナットの代わりに

 こういうのを挟み込むと、矩が出しやすいかもしれない。

あと、3Dプリンタがあるなら、ブラケットはプリントした方が良い場合もあるかと思う。
Corner Brackets For System20 2020 / 2040 Extrusion
だとか
T Slot Extrusion 2020 corner
なんかを、そのまま使うもよし、強度を増すようにアレンジして使うもよし。

という、分かりやすいが調べるとなると、ちょっとした手間がかかる事をメモ代わりにポストしてみました的エントリで御座いました。

貧乏人なので、こんなお高い材料ではなくホムセンで角材買ってきて、ノコとクギで解決したい所ではあるんですけど、反ったり捻じれたりしてない材を探すのは結構大変だし、切り貼りしてると思いのほか高くなったりするので、ここにお金をかけるのはアリだと思います。
レゴブロックみたく組んでバラシて組み直して無限に遊べますよ。

捨て板を調達しないと

CNC3018の加工テーブルに乗せる板を調達したい。

テーブルと同寸で厚みは10mmもあれば十分?
四隅に穴をあけてテーブルにネジ留めする。

捨て板にグリッドを描く/罫書く、または、彫り込んで作業ガイドにする。
貫通穴を掘って、裏面に爪付きナットを埋め込んで、クランプベースにしたい。

あと、ちっちゃいクイッククランプバイスも欲しい。

が、手持ちの定規よりも正確な定規を用意するのが先だな。
今はホームセンターで買ったノギスで0.1mmまでは読めるけど、0.01mmのデジタルノギスが欲しい。

2019年12月14日土曜日

OctoPrint / OctoPi

基本的にはGコードを送るためのソフト

ネットワーク越しに、Webブラウザから操作する。
単なるSender/Controllerではなく、USBカメラを使用して遠隔監視する機能なども追加されている。
プラグインをインストールして機能を追加することも出来る。

3Dプリンタで使用することを意図して開発されているが、プラグインでGRBLにも対応する。
Windows / MacOS / Linux に対応している。
RaspberryPiでも動作可能なので、PCを常時起動しておく必要がなくなるなどのメリットがある。



インストールに関して難しい事は「何もない」はず。
普通に Raspberry に OSをインストールするだけの簡単なお仕事です。
分からなければ、ググればスクショ付きで丁寧に解説されているWebページなりBlogなりが見つかるはず。
多少の英語を苦にしないのなら、公式サイトの説明に従えば良い。


RaspberryPi向けにOS丸ごとパッケージ化したものがOctoPi。

詳細は公式サイト ↓ で…。

プラグインリポジトリ
  https://plugins.octoprint.org/

Webcam Tab
  ウェブカメラの映像を独立したタブに表示させるプラグイン。
  私は一番最初に、このプラグインをインストールしたけど、ぶっちゃけ不要だった。
  このプラグインはコントロール画面からカメラ映像を切り離してしまうので、映像を見ながらヘッドを動かす事が出来なくなってしまう。
  まあ、カメラ映像を頼りに遠隔でヘッドを動かす、なんて機会は滅多にないとは思うけど…。

  後述するダッシュボードを追加すればカメラ映像と出力状況を同時に表示してくれる。

Multicam
  複数のカメラを取り扱えるようにするプラグイン。
  普通に2台めのUSBカメラを繋げばいいのかと思いきや、カメラのストリームを追加する事になるので、ストリームサーバーを持ったカメラのサポートツールが必要になる。
  motion とか、インストールしておけばおkなんだけど、motion の説明が大変なので、見なかった事にして下さい。



  カメラ/ストリーム とにかく映像ソースを追加すると、コントロール画面に切り替えボタンが追加される。
  つまり、2台以上のカメラ映像を同時に表示する事はできない。
  あと、この Multicam と 上述の Webcam Tab は相性が良くないというか、タブ表示は1台めのカメラ映像しか表示してくれないので、実質的に併用不可なので注意が必要。
  OctoPrint-Dashboard プラグインで、ダッシュボードにカメラ映像を追加する場合も2台め以降は無視されて、1台めのカメラ映像が自動的に採用される、
  やや残念な点もあるけど、これはこれでアリかも知れない。
  実用性はともかく、試してみると面白いとは思う。

OctoPrint-Dashboard
  現在のプリンターの状態をザックリと表示するページを追加してくれるプラグイン。
  ザックリと、というと聞こえが悪いので、一覧性が高い簡潔な表示、という事にしよう。


  このプラグインは DisplayLayerProgress という別のプラグインに依存しているので、そちらもインストールする必要がある。
  プラグインマネージャーは依存関係を自動的に解決してくれたりしないようだ。

Resource Monitor
  OctoPrint サーバーとなっているホストのリソースを表示するプラグイン。
  ディスクの使用量など、一部の情報は OctoPrint-Dashboard でダッシュボードに表示出来るし、出力中はリソースの変動状況よりもカメラ映像を見る事が多いので、思ったよりも出番が無い可哀想なプラグインでもある。
  正直、無ければ無いで、そんなに困らないと思う。




以下は、気になってるけどインストールしていないプラグイン。

OctoPrint-Enclosure
  GPIOにセンサーを接続して監視するプラグイン。
  これも IFTTT 対応らしいので、OctoPrint-IFTTT よりも、こちらを選ぶべき?

  https://plugins.octoprint.org/plugins/enclosure/

OctoPrint-IFTTT
  出力の終了時などに IFTTT をトリガーするプラグイン。

OctoPrint-Slic3r
  スライサー関係のプラグインもいくつかあるみたいだけど、良くわかっていないので要調査。

  非力なRaspberryPiでスライスするのもどうか、とか色々と思うところはあるが、プリンターに食わせるデータを集約する事には、相応に意味があると考えている。
  出力される成果物の品質は、スライス設定に大きく影響されるので、元の形状データとスライスの設定を併せて管理したい。



The system OctoPrint is running on is currently throttled. Due to that it's not possible to install new plugins in order to avoid possible issues caused by system instability.
とか出てプラグインがインストール出来なかったり、システムのアップデートが出来なくなる場合の対処

間違っていたので訂正(2019/12/23)
監視を止めてしまう事で、プラグインのインストールを抑止する仕掛けも動かなくなる(但し、これによって生じる不具合もある)だろうと考えていて、一時的に問題がなくなったと思ってたら、いつの間にか再現していた。

ちゃんと、根本から解決しないとダメだ。

電源の容量不足かCPUの加熱によって、システムが制限状態になっている、という事なのだけど、Webブラウザで見ると 雷のマーク(⚡みたいなの)が出ていたので、原因は電源の問題らしい。

容量は足りているはずなので、USBケーブルを 2A対応 ってのに換えてみたら、落ち着いた模様。
5V 4A のACアダプタでも、⚡が出たという話もあったので、USBケーブルの選定は意外と大事なのかも知れない。
因みに、私が使用したのは100均のケーブルなんだけど、いつ、何処で買ったものか分からない。
多分、一番近くにある、セリアだかミーツだかで買ったもののような気がする。
問題があったケーブルは、ダイソーで大昔に買ったやつで、USBケーブルに500mA以上流すという発送はなかった時代の商品だったと思う。

当たり前の話だけど電源は大事だ。

スパナマークのアイコンをクリックして設定画面を開く



This will regularly check with the Pi if something is amiss either with power regulation or CPU/GPU temperature.

のチェックを外す


そして再起動
というか、この手順は後で編集して別エントリにしておいた方が良さそうだねぇ。

とりあえず、おしまい。