https://www.thingiverse.com/thing:1809185 これをつかった。
今まで棚のうえで雑多においてたけど、一覧性があがったのと整然となったので良い
https://www.thingiverse.com/thing:1809185 これをつかった。
今まで棚のうえで雑多においてたけど、一覧性があがったのと整然となったので良い
ULTIMATE CF SLX 8.0 があたった……
アンケートに答えるともらえるキャンペーンしてたので応募しておいたんだけど当選したらしい。びっくり。アナウンスはされてるから確かに当選したんだろうけど、信じてられてない。発表日にはメールがきてたけど、詐欺メールっぽくて半信半疑だったので特に言及していなかった。
Canyon は他メーカーより同一スペックでも価格がかなり抑えられているところなんだけど、それでもこの値段なのでやばい。
せっかく貰えるなら乗りたいのでたのしみに待つことにします。クロスしか持っていないので、初ロードがこれだと他のを買えない気がする。ロード買うなら Canyon がいいなとは思っていたが (そうじゃなかったらアンケートに気付かなかっただろう)、こういう形で実現するとは思っていなかった。
ところで税関消費税はどうなんのかな?と思ったが、一般購入のような直配達ではなく、日本のサービスセンター経由で配送とのことなのでたぶん心配しなくてよさそう。組立は必要。
目下の最大問題は置き場の確保。クロスは普通に駐輪場に置いてるけど、ちょっとこれはそういう気にならない。玄関を整理するか、他のところに置くかを考えてる…… 床置はスペース的に無理なのでなんらかの形でバイクハンガを調達する必要がある。あと足弱いのをなんとかしないと恥かしい……
手元にいろいろごちゃごちゃ溜ってしまっているワイヤー・ケーブルをリールにまいたりする。
https://www.thingiverse.com/thing:2553062 これを使わせてもらった。
OpenSCAD は普通にインストールしているので、オンラインカスタマイザは使っていない。以下のように設定して出力
whole_length = 30; //Which part would you like to render? part = "both"; //[top:Top, bottom:Bottom, both:Both] //Radius of the outer guard for the spooler big_radius = 30; //[20:80] //Thickness of the flange of the outer guard flange_thick = 2; //[1:4] //Radius of the circle cutouts on outer guard cut_radius = 5; //[0:20] //Radius of the middle cylindrical cutout small_radius = 7.5; //[2:50] //Thickness of the winding area (where the cord will be) winding_thick = whole_length - flange_thick * 2; //[5:50] //Cutouts count cutouts_count = 9; //[0:30]
これで一応出力して組むことができる。ただしちょっと小さすぎるみたいで、PLA だとハメる途中でパーツが割れてしまうことがある。割れてしまった場合ははんだごてで修正して使ってる。
それと長さだけ倍にしたものも出力した。この場合はさらに割れやすいので素材かスクリプトを変えたほうがよさそう
クセが強いケーブルはリールに巻くだけだと緩んできてしまい、回転させながら引き出すことができない。このためリール全体を抑えこむようなホルダがあると、より便利に使える。
開口部は一度引き出してしまったワイヤを巻きなおすときや、内容量を確認するときに便利と思ってつけた。多少だがプラスチックの減量にもなる。
これは自分で Fusion360 でモデリングした。蓋はラグだけで支える軽めのスナップフィットにしてある。
部分的にパラメトリックにしてあり、倍の長さのホルダも出力してつかっている。
これの前に別のタイプのリールホルダも設計して作ったのだけど失敗だった。
前述のとおり、クセがつよいワイヤは戻りが起きてリールからはみだしてしまうので、これぐらい自由だとどうにもならない。スズメッキ線とかならオープン型でもいいと思うけど、あんまり汎用性がない感じなので失敗作とした。
部屋の部分的な模様替えをしつつ3DプリンタをメタルラックのCNCフライスの上段に置いた。普通に机に置くよりなぜか静かになった。机の表面と共振していた音が消えた感じ。
(移動する前からだけど) 洗濯機用ゴム足と、プリントした振動ダンパをつけている。
そしてこれと同時に2011年ごろに買った 2D のプリンタ (A3ノビが出せるもの) を捨てることにした。
本当にまるっきり印刷しくなってしまっている。プリントするメリットが昨今では本当にぜんぜんなくて、画質でいえば4Kディスプレイのほうが綺麗だし、画面の大きさでいっても 24インチモニタでさえA3表示はできる (ノビには足りない)。当然プリントコストは高いし、プリンタ自体の保有コスト(場所をとるということ)も高い。
写真は店頭プリントで充実しているし、書類もコンビニプリントがある。もはや個人で持つ必要がないデバイスでしょう。
買うまえからやりたかったことの一つとして、砂場で使える前方後円墳の型をつくるというのがあるのでやった。
子供と一緒に公園にいってやるべきたった一つのこと | photo - 氾濫原 とか書いてるけど、砂場にいって前方後円墳をつくるのが好きなんだけど、量産したいよなと思った。
おおむね上手くはいったが、下の辺が周期的に盛りあがってしまいノズルにあたることでプリントが汚なくなってしまった。いまいち原因がわからない。送出量が多すぎる・オーバーヒート・冷却不足のどれかだと思うが……
子どものゼッケンに名前を書くみたいなクエストが度々発生します。これまではクリアファイルをカッターで切ってステンシルプレートを自作していましたが、3D プリンタを利用してつくってみました。(というか前につくったやつがどっかいって見つからなかった)
これをゼッケンにおいて上からマジックでなぞるという使いかたをします。
クリアファイルだとあまりに柔らかすぎて実際に使ったときにはみだしてしまうことがあったが、PLA だと結構硬いので大丈夫で、利便性が向上した。
最低でも2層は出力したほうがいいと思い 0.4mm にしたが、0.2mm でもよかったかも
先週から特に進捗がない感じがする。リハビリは継続してる。あいかわらず腫れてるように思う。
またの名をエクストルーダーのキャリブレーション方法
フィラメントごとにやる必要がある。手元の Prusa i3 MK2S 付属のPLAフィラメント(Silver) を使った場合、自分の環境だと 0.88 で適切だった。
あいかわらず骨折部の一部が腫れているが、考えてみると一部癒着が剥れて炎症が強まったような気がしている。
現状では指を曲げる場合は自力でかなり力を入れて握れるが、伸ばすほうは自力でほとんど曲げられない。一方で、他力だと曲げる方向には最大まで曲がらず、伸ばすほうならかなり曲げることができる。
基本的には曲げるほうに集中してリハビリをしてたけど、伸ばすほうを意識しはじめたら腫れてきたように思う。というか指先を持って伸ばすほうに動かしたらビリビリと剥れるような感覚はあったんだよな……
通院でレントゲン。診察で動きも問題ないのでもう通院しなくて良いとのこと。
指が完全に伸びない (骨折部もそうだけど、骨折部の先の関節が伸びきらない) のは多少骨折部で腱が癒着してるからだろうとのこと。動かしてると改善していくという話だった。
指を伸ばしたときに、特定の部分にでっぱりが発生するが、これはまだ腫れてるせいとのこと。
だいたい日常生活では問題ないぐらいには使えるようになったけど、可動域はあいかわらず狭い。手のひらをついたりすると痛いので部分的に動作に制限がある。
macOS 用にウェブカメラからjpgを取得するコマンドラインツールにimagesnapというのがある。単発で使うには問題ないんだけど、インターバル撮影を数時間続けたところメモリを食いつくして死んだため代替を書く気概になった。
毎回プロセスを立ちあげればメモリリークが起きないが、カメラデバイスを初期化する処理が数秒あって遅いので、できればちゃんとデバイスを開きっぱなしで動かしたい。
やりたいことはウェブカメラ経由のタイムラプスの撮影で、撮影したファイルはffmpegで読みこませる。そのためファイル名にも要件がある
xcrun swift で動かせるとスクリプト的に使えて便利なので、そのようにした。特に難しいことはしてないんだけど、やりかたをググっても API がのきなみ古いとかでやる気がなくなる。現時点では最新の方法だが、iOS だと既に deprecated になっているAPIが macOS だと生きていたりするのでややこしい。
#!/usr/bin/xcrun swift
import Darwin
import Cocoa
import AVFoundation
struct ProgramOption {
var deviceName: String? = nil
var list: Bool = false
var help: Bool = false
var interval: Double = 10
var format: String = "snapshot-%05d.jpg"
var sequence: Int = 1
}
var option = ProgramOption()
var args = CommandLine.arguments
while (!args.isEmpty) {
let arg = args.removeFirst()
switch arg {
case "-h", "--help":
option.help = true
case "-l", "--list":
option.list = true
case "-d", "--device":
let val = args.removeFirst()
option.deviceName = val
case "-i", "--interval":
let val = args.removeFirst()
option.interval = Double(val)!
case "-f", "--format":
let val = args.removeFirst()
option.format = val
case "--start":
let val = args.removeFirst()
option.sequence = Int(val)!
default:
break
}
}
if option.help {
print("Usage: $0 [options]")
print(" -h --help show help")
print(" -l --list list devices")
print(" -d [name] --device [name] specify camera device name (default: system default device)")
print(" -i [num] --interval [num] specify snapshot interval (default: 10)")
print(" -f [format] --format [format] specify filename format (default: snapshot-%05d.jpg)")
print(" --start [num] specify start number of sequence")
exit(0)
}
if option.list {
let devices = AVCaptureDevice.devices(withMediaType: AVMediaTypeVideo)! as! [AVCaptureDevice]
for var device in devices {
print(String(format: "'%@' (%@ %@)", device.localizedName, device.manufacturer, device.modelID))
}
exit(0)
}
print("opening capture device")
let device: AVCaptureDevice
if option.deviceName != nil {
let devices = AVCaptureDevice.devices(withMediaType: AVMediaTypeVideo)! as! [AVCaptureDevice]
device = devices.first(where: { (i) in i.localizedName == option.deviceName })!
print(device)
} else {
print("using default capture device")
device = AVCaptureDevice.defaultDevice(withMediaType: AVMediaTypeVideo)!
}
let input = try! AVCaptureDeviceInput.init(device: device)
let output = AVCaptureStillImageOutput()
let session = AVCaptureSession()
session.sessionPreset = AVCaptureSessionPresetPhoto
session.addInput(input)
session.addOutput(output)
session.startRunning()
let connection = output.connection(withMediaType: AVMediaTypeVideo)!
let semaphore = DispatchSemaphore(value : 0)
var seq = option.sequence
while (true) {
output.captureStillImageAsynchronously(
from: connection,
completionHandler: { (imageDataBuffer, error) in
print("captured")
semaphore.signal()
if let e = error {
print(e.localizedDescription)
return
}
if let buffer = imageDataBuffer {
if let imageData = AVCaptureStillImageOutput.jpegStillImageNSDataRepresentation(buffer) {
do {
let filename = String(format: option.format, seq)
try imageData.write(to: URL.init(fileURLWithPath: filename), options: [])
seq += 1
print("wrote to file \(filename)")
} catch {
print("failed to write file...")
exit(1)
}
}
} else {
print("buffer is empty")
}
}
)
// output.isCapturingStillImage
semaphore.wait()
print("sleep \(option.interval) sec")
Thread.sleep(forTimeInterval: option.interval)
} デスクを部屋の中に向けて配置しているけど、必然的に部屋の中側にケーブルが煩雑に這うようになるので、これの見た目を多少でも良くしようと覆いをかぶせている。(わかりにくいと思うけど)
これまで微妙な固定方法をとっていたが、3D プリンタでうまい具合の部品を出せた。覆い自体はプラスチックダンボールに木目シートを貼ったもので、軽いので、単にクリップで止められるようにした。2つプリントしてつけてる。
ケーブルをある程度束ねておけるようなスペースもつけた。
M15 なら Fusion360 で直接ネジをモデリングしてプリントしても締めることができた。
表題のようなものは thingverse とかで検索するといろいろあるんだけど、だいたいベッドを固定しているビスと共締めするものになっている。あんまり共締めしたくなかったのでベッドのフレームを挟みこんで固定するようなものをモデリングした。
3つのパーツで、ベッドに近いところは PETG でプリントしている。
https://www.thingiverse.com/thing:714475 をベースにして、ピント調節リングだけhttps://www.thingiverse.com/thing:1406879 に変えたものをプリントした。
製品もともとのピント調節だとどうしてもレンズに指がかぶってしまってあわせるのが難しかったのでめっちゃ便利。
https://www.thingiverse.com/thing:2086804
一回エクストルーダーが詰まって定量でなくなったことがあったのでつけてみた。埃をふきとると同時に油をつけている。これをつけてからは一回も詰まってないので効果があるっぽい。
https://www.thingiverse.com/thing:2523236
これ。0.1mm で出力しないとハニカム部分が薄くなりすぎるので罠
ファンカバーはいらないと思っていたけど、糸状になったプラスチックが噛みこむことがあって、そうするとかなり悪い状況になるので多少でも緩和できるかと思ってつけることにした。
https://www.thingiverse.com/thing:2076234
これのうち FrontFanCover_RoundV2.STL だけ出力した
https://www.thingiverse.com/thing:2276997
デフォルトだと横からノズルに風があたるようになっていて、あまり出力レイヤーには風があたらない。PLA だとできるだけ出力したものを急冷させるのが反りを軽減するのに大事らしいので、効果を期待してかえてみた。PETG で出力。
特に急ぐ買いものではなかったので UPS Expedited で頼んだ。頼んでトラッキングを見るまで US の会社だと思っていたのだけど、チェコの会社で、プラハからの発送だった。ドイツとシェンツェン経由で成田にきて、通関後はヤマト運輸に委託で届いた。消費税が4000円弱ぐらいだった。
トータルで8時間ぐらい。公式組立マニュアルのセクションごとにパーツが袋わけされていたり、部品の実寸ラベルが貼ってあったり、各セクションごとにほとんど過不足なくビスが梱包されていたりとめっちゃ丁寧だった。あと公式マニュアルは手順ごとにコメントが書けるようになってて、これの数で「ハマりそうな手順やな」と気付ける。
簡単に組み立てできるかっていうと簡単ではないよなという感想を持った。工具はついてるが、別途200mmぐらい測れるノギスが必要。普通は持ってないだろう (150mm しかないので買った)。マニュアルも完璧とは思わなくて、最初のほうにつけるナットがなんのためにつけるナットなのかとかの説明がないので、どのぐらいの精度でつければいいかわかりにくいことがある (精度が必要なところは必要と書いてあるので気にしなければいいんだが)
あとリニアベアリングのすべりが単体でシャフトに入れてもいまいちよくなくて不安だったけど、ある程度ひっかかっても大丈夫みたい? 神経質にならなくても脱調するほどではなかった。このへんの肌感覚みたいなのがわからないので、YouTube で組立動画を見たりした。
構造的に M10 と M8 のネジ + プリントパーツで構成される一番下の部分は、剛性があまりなくて歪みがでやすくて難しい。歪みをなおすときは逆の力を加えるというゴリラ的手法なので、組み立てたあともうっかり力をかけると歪みそうなので気をつかう。逆に考えると、組立済みを買うとこのへんの構造に対する理解が不足してトラブルシューティングが難しくなるわけだから、やっぱ自分で組み立てたほうがいいと思う。
添付の 3D Printing Handbook (オンライン版はドライバページにある http://www.prusa3d.com/drivers/ ) のフローチャートにしたがって初回キャリブレーションを行う。
これもよくできてて、Selftest で各所のパーツが正しく繋がれているか確認してくれる。安心。Calibrate XYZ はかなり時間がかかったが XYZ calibration all right. X/Y axes are slightly skewed. Good job. みたいなことを言われて成功した。X/Y の直角が完全には出ていないみたいだが、多少ならソフトウェアで補正するので良いらしい。直角だすのはかなりくたびれると思うが、多少ずれてても Good Job って言われるのはうれしい。
ここまでやるといよいよテストプリントになるが、キャリブレーション用のパターンをプリントしても、素人目だとさっぱりわからなくてむずい。大きくずれてはいなそうだったので、Prusa ロゴをプリントしながら Z 軸調整した。
キャリブレーション用のパターンは1レイヤーで密にプリントする形式のほうが、隙間のあるなしを判定できるので結果がわかりやすいんじゃないかなあ。
やっぱり段取りが少ないのは良い。設計から出力開始までが短くて、小さいものなら1時間ぐらいで終わる。
切削加工だと、ワーク選定・ワーク固定・エンドミル固定・原点出し・空切削と実切削までの手順が多く、特に固定と切削条件出しが難しいので大変。加工できない形状が多いので設計時にもかなり頭を使う。そのぶん精度と信頼性高いし金属加工できるんだけど、そこまでやらなくてもいいような立体を出したいことも結構あるんだよなあと思う。
「XYZ calibration all right. X/Y axes are slightly skewed. Good job. 」なのはいいんだけど、簡単にアライメントなおす方法を思いついたのでやってみた。単に直角定規をX軸のリニアシャフトにあてながらベッドの線と平行を確認するというだけだけど、これで劇的にわかりやすくなった。取説だと上から見ろって書いてあるけど、なんでもいいから板をあてればよさそう。
これでキャリブレーションをやりなおして、「XYZ calibration ok. X/Y axes are perpendicular. Congratulations!」となった。
ちなみにプリントクオリティは見ても特に変わらなかったので、ソフト補正が普通に優秀っぽい。
今年は買うつもりがなかったんだけど、あまりにもひどいことが続くので楽しいことに金を使いまくろうと散財。最大の問題は、家の中に既にこのようなものを置くスペースが全くないことで、現実に今も困っている。デスクの上に置いたままなのでPCがぜんぜん使えない。アホだな!
使ってみた感想はまた後日
通院でレントゲン。シーネはもう基本的には外してもよい (心配ならつけてもよい)、ということになった。
長い間固定されていたので、かなり関節が固まっている。骨折部位だけじゃないので結構リハビリに骨が折れそう (比喩表現)。「こんぐらい曲げてください」と曲げられたけどかなり痛い。
ところで「関節が固まっている」のがどういう状態なのかよくわかってなかったけど、ググったところ固定期間によって変わるらしい。30日以内だと関節を動かす筋肉が柔軟性を失なっている状態で、関節が固まっているわけではないらしい。その後さらに動かさずに放っておくと実際に関節が融着していくらしい。ということで30日前後からのリハビリで可動域を回復するのが大事とのこと。
しばらく小指を使わないでタイピングしていたのと、力が入りにくいのもあって、右端のキーをうつのが難しい。C-[ Enter Shift あたりが多様キーだがだいぶ忘れてる。C-[ なんか C-] と押してしまう。
週イチのレントゲンで問題ないといわれる。シーネはぶつけたりしないならはずして少しなら動かしていいとのこと。一緒に固定されていた薬指の関節が固まっていてすこし痛い。薬指は骨折してないので動かしまくる。
骨折部の小指もほとんど痛いことはなくて、ゆっくりならある程度曲げれる。握るところまでやるのは怖くてやってない。しかし微妙に内側に曲がってくっついているみたいで、自然に手を閉じようとすると薬指にぶつかる気がする。が、左手も脱力して閉じてると小指は薬指にぶつかって多少干渉するので、気にしなければ気にならない程度かもしれない。シーネはずしてしばらく経過しないと評価できなそう。