リングスター スーパーピッチ クリア L300×W206×H39mm 仕切板20枚付 5個セット SP-3000D-5S cho45
リングスター スーパーピッチ SP-3000D というケースをねじの整理に使っている。おおむね良いんだけど、ワッシャーの類だけはどうしても仕切りを超えてややこしいことになることがある。
考えた結果、ワッシャーに関しては蓋つきのインナーケースを作ってハメこむことにしてみた。
リングスター スーパーピッチ クリア L300×W206×H39mm 仕切板20枚付 5個セット SP-3000D-5S cho45
リングスター スーパーピッチ SP-3000D というケースをねじの整理に使っている。おおむね良いんだけど、ワッシャーの類だけはどうしても仕切りを超えてややこしいことになることがある。
考えた結果、ワッシャーに関しては蓋つきのインナーケースを作ってハメこむことにしてみた。
GitHub Pull Request Builder Plugin の PR ブランチビルドの挙動は以下のような状態で実行する
表題の「手元ではテストが通るのに Jenkins では通らない場合」は表面上はコンフリクトはしないにも関わらず、ベース側に入った変更によってPRブランチ側が壊れることによって起こる。つまりコード上の意味がコンフリクトしているにも関わらず、表面的にマージされてテストされるため不可解な結果を生むことがある。
GitHub 上に表示されるテスト結果のインジケータには上記のように2つのケースがあり、Jenkins 側のログを見ないと厳密に判断することができない。
GitHub 上での Conflict 表示でもある程度判断できるが、CI を通ったあとにベースブランチに変更が入って Conflict した場合は PR ブランチで再テストが走るまで過去の結果が表示されるため正確ではない。
3D プリンタフィラメントの湿度管理をはじめた。
フィラメントは割と吸湿するらしく、できる限りドライな状態を保たないと、最悪印刷できなくなることもあるようだ。そういえば、と考えてみると PETG でも白っぽくプリントされて表面の状態がかなり悪くなることがあった。吸湿が原因かわからないが、可能性はある。
フィラメントをすぐ使いきるようなヘビーユーザーでもないので、できるだけ品質を長くたもちたい。
吸水率
ref. http://www.kayo-corp.co.jp/common/pdf/pla_propertylist01.pdf https://www.jstage.jst.go.jp/article/fiber/59/10/59_10_P_324/_pdf
吸湿 (吸水) が原因で起こりうる問題
食品保存用のアスベル キッチンボックス 17L 「ウィル」 NF-45というのを買ってみた。フィラメントを納めるにはちょうどいい。3リールほど入れることができる。蓋にパッキンがついていて、これで密閉度を高めるようになっている。パッキンはメーカーでスペアも販売している。
アスベルのこのボックスは完全密閉というわけではないみたいだが、後述するようにフィラメントを通す穴をあけるので、いずれにせよ完全ではなくなる。目的は水を漏らさないということではなく湿度を下げた状態をキープすることなので、乾燥剤が十分に延命できれば良い。
防湿しつつフィラメントをそのままプリンタに供給したいので、加工する。
フィラメントを出す部分のパーツは Angled Dry Box Feeder with Source を使った。ドリルするときのガイドパーツまであって親切。これに以下の PC4-M6 ワンタッチ継手と、OD=4mm ID=2mm の PTFEチューブを使っている。
フィラメントホルダーは Universal Filament Holder を使っている。これだと残念ながら3つのリールを入れることはできず、2つアクティブ+1つスタンバイという感じになる。
ひとまず塩化力ルシウムのものを1つ入れている。これは使い捨てだが元の体積以上に吸湿できる。
坂本石灰工業所 なんでも除湿シリカゲル 1kg cho45
またシリカゲルをリール近くにおいている。これはフライパンで炒れば再利用可能。
今一緒に入れている湿度計は20%未満になると湿度の表示を止めてしまうので、どのぐらいまで湿度が下げらているかよくわからないが、室内湿度が55%程度でもずっと20%未満なので割といいんじゃないでしょうか。
Original Prusa MK3 のプラットフォーム(磁石でつけるシート型)には両面PEIフィルムが貼ってあるのだが、片方のフィルムが破れて剥れるようになってしまった。一度破れてしまうと、そこからどんどん破れが広がってしまう。
ということでこのPEIフィルムを剥して別のを貼りなおすことにした。
交換方法のマニュアルがある。シートを剥すまではいいんだけど、接着剤を剥すのがとてつもなく大変だった。リモネンはいまいち買えないので市販のシール剥し剤を使うのが良さそう。今回はアセトンとアルコールでやってみたけどかなり時間がかかったのでこれはおすすめしない。
公式の代替PEIフィルムは$8.96とそれほど高価なわけではないが、送料が$20以上と高いのと、一度貼ると剥すのがとてつもなく大変なのがわかったため、気がすすまなかった。
磁石にくっつくことからして、普通の鉄のシートっぽいので露出して放置すると錆が心配になる。
3M 3Dプリンタープラットフォームシート3099AB(3枚入り) 330mmx270mm ABS/PLA対応 cho45
3M の 3D プリンタ用プラットフォームシートを試してみることにした。一枚あたり1500円とあまり安いとはいえない。
貼るのは難しくない。ぴったりサイズではないので結構余りがでる。もったいないけどカットして捨てている。
貼ったあとに保護シートを剥すと、すべり止めがきいたような表面材質がでてくる。このため、保護シートを剥したあとにスキージで貼りつけなおすみたいなことはできないので注意。必ず保護シートを剥すまえに密着させる必要がある。
表面は白っぽくほぼ不透明なため、元のスチールプレートの文字や印刷範囲の表示はほぼ見えなくなる。
数回 PETG でプリントしてみたが、今のところはとてもいい感じ。ちなみに最初のレイヤーも 0.2mm でプリントしている。このシートの説明では 0.1mm でベストと書いてあるので推奨設定ではない。
食いつきはよく最初のレイヤーが失敗することはまずない。PETG は PEI フィルムだとくっつきすぎることがあったけど、このシートだとそこそこ広い設置面のオブジェクトでも剥すに苦労しなかった。
ただ表面がつるつるではないのでスキージはちょっと入れにくいように感じる。あんまり強力に貼りついた場合剥せなくなるかもしれない。
耐久性はまだわからない。プリントして剥すとシートの表面の何かが少しくっついて剥れていくようにも見える。
急に思うところあってワイヤーワークをメインとしたUVレジン工作をやってみることにした。
ワイヤーは手元にあったスズメッキ銅線φ0.6mmとUEW線φ0.3mm あたり。UV LED については以前書いた
筒状のものにワイヤーを巻き付けて環をつくり、ペンチで形を適当に成形してUVレジンにひたして表面張力でできた膜を即座に硬化させて花弁をつくってみた。表面張力の膜を硬化できるのは硬化タイミングをコントロールできるUVレジンならではといえそう。ただしあまり大きいものは作れない。
花弁をまとめる方法とかで細かく悩んだ。特に教科書的なものがないので (買えばよかっただけだけど) 勘でやっている。たぶんちゃんとセオリーがあるはずだが調べずにやってしまった。
これは蝶の練習。大きさを揃えて四隅のカドをしっかり出すと比較的優雅な蝶っぽいものが作れた。なかなかうまくつくれなくて挫折しそうだったがなんとか自分でもできそうなやりかたを見いだせたと思う。
キキョウ(キキョウの花弁は明確に分離してないけど)をイメージした5枚花びらと蝶をモチーフにした。特に型紙などはなく、練習に従ってフリーハンドで成形した。
花弁も蝶も練習より少しサイズが大きいため、表面張力を利用することが難しい。なので手間が少し増えるが、一旦マスキングテープをワイヤーに貼ってレジンを入れ、軽く硬化させてから剥してマスキングテープを貼っていた部分に再度コーティングするような方法をとった。
一度すべて透明でベースをつくってから、色を混ぜたレジンを乗せていった。また、濃い色にすると硬化させても表面がべとつきが残るため、さらにその上から透明を乗せて硬化させている。
基本的にワイヤー金属部分も保護のため表面を樹脂でコートしている。
つくったモチーフにネックレス用のチェーンをつけて完成。チェーン・カニカン・マルカン・アジャスタが必要だった。アジャスタは売ってなかったので、アジャスタつきの安いネックレスチェーンを買って分解し、アジャスタ部分だけ利用した (直接そのネックレスチェーンを使うこともできたが、チェーンを別途選びたかったので)。
花と蝶もチェーンで連結した。イメージとしては花のまわりを蝶が飛んでいるという感じだが技術的にこれ以上の表現ができなかった。
ワイヤー以外のものはおおむね東急ハンズで手に入れた。勝手がわからない分野だと、商品が集約されているリアル店舗はやはり便利。ただ、ハンズはあんまりアクセサリ手芸用品の品揃えが良いとはいえない。最近はアクセサリ手芸専門店みたいなのが各所にあるので、そこに行ったほうが良さそう。新宿を歩いてたら偶然発見したのでそこで買ったものも使っている (花の中央部)。
3日、のべ深夜9時間ぐらいでなんとか形になったか。
一般電子工作向けのラジオペンチでやったけど、先が太すぎだったので、手芸用ペンチが欲しかった。
透明で一旦ベースを作ったけど、この方法だとあまり濃い色を出すことができない。濃い目にしたい場合は最初から濃い色で硬化せて、その表面に透明をコーティングするほうが良さそうだと思った。
できれば両面綺麗になるように作ったほうがいい。というのも結構くるくる裏表逆になってしまうから。片面だけ見せる場合は立体の重心をある程度ちゃんと考える必要がある。
作業中 UV LED らへんから煙がでてあせったが、よく見たらレジンから出ていた。硬化熱が思いのほか激しいようだ。ワイヤーを指で持ったまま硬化させると持っていられないほど熱くなる。
500 Can't connect to lowreal.net:443 (certificate verify failed) で買ったもの
着色剤。シアンとパープルだけ買った。割と高い。
「無反射ガラス」って名前がかっこいいんだけど「ノングレアガラス」というともうすこし実体がわかりやすい。すりガラスの目の細かいもののことで、つまり表面が細かくざらついており光を散乱させるので反射が少なくみえる (全体としての反射の量には変化がないが、散乱させるので特定方向へ反射させる量は減る)
ガラスは割れる・切れるで若干扱いにくいので、あまり使いたくはない。ということでアクリルで似たようなものはないか?と探してみると、東急ハンズで普通にノングレア・つや消し加工されたアクリル板が売っていた。カナセライトの「クリア(つや消し)」というもの。
t=2mm のものを買ったけど、270x320mm でも思ったよりもたわむので 3mm ぐらいはあったほうが良さそう。
調べてみるとカナセライトはマット以外にノングレアというおそらくもっと細かい目のタイプも作ってるようだ。アクリル板マット板、アクリル加工専門販売アクリルショップはざいや 通販をやってる切板屋さんもあった。
ノングレアよりはすりガラスに近いのでほぼ透けないが、背景白だとあんまり変わらないでしょう。物撮り自体 (というか写真が……) 下手なのでもうちょい練習したさはある……
今回の写真は全部スマフォ (Huawei P20)。まじでコンデジはいらないですね……
KiCAD のフットプリントエディタはちょっと貧弱なので、ピン・パッドの設定をするだけのツールとして捉えたほうが良さそう。
自分は KiCAD のフットプリントエディタで作った結果、ピン配置がうまくできていなくて失敗した経験が2度や3度ではない。IC のパッケージで「四角とピンしかないじゃん」と思っても失敗するのでやめたほうが良い。LAN コネクタとかだともっと難しい。
基本的に、外形やピン位置などは外部のCADツール、ここでは Fusion 360 を使って書いて、DXF ファイルにしてインポートするようにする。
フットプリントエディタで Import DXF File をするとき、カーソルを動かしてしまうと、なぜか変なポイントがスナップされてしまってどうしよもうなくなる。
User Defined で 0, 0 に設定すると DXF の原点と footprint editor の原点があった状態で表示されるので、そのままクリックして位置を確定する。
Fusion360 のスケッチを書くとき、原点を外形ではなくピンの位置にしたほうが KiCAD で配置しやすい。(誤差0にしなくても、拡大して移動してだいたいあわせれば十分だけど)
footprint editor では不可能っぽい。諦めよう
下書き用のスケッチと、エクスポート用のスケッチをわけて、エクスポート用のスケッチでプロジェクションするとよい
エクストルーダーまわりがR3になり新モデルが提供されるようになったのをうけて、これを試してみることにした。主に冷却が強化されるというものになっている。ちょうど最近冷却不足と思われるフィラメント詰まり (ほぼ密閉状態でしばらくプリントすると詰まる) が頻発したので、もしかすると改善するかもしれないという期待がある。
PETG で新しいエクストルーダーを自分でプリントしたのち、ちゃんとマニュアルがあるのでこれの通りやっただけ。https://manual.prusa3d.com/Guide/Upgrading+extruder+R2+to+R3+on+MK3-MK2.5+(self-printed+parts)/782?lang=en
もともと初代 Raspberry Pi 用に買ったものだけれど、初代 Raspberry Pi をいよいよ捨てたので、ついでにいろいろ調べながら再度使ってみる。
LCD-show-180817.tar.gz の中の ./LCD32-show がやっていることは以下の通り。
しかし fbcp のインストールは失敗してた。まぁとりあえず使える。
なお、どういったコントローラが使われているかスペックに書いてないが、以下の通り。
frame buffer をコピーするアプリケーションなのは名前から明らかだけれど、何のために?と思った。結論をいうと GPU でレンダリングした結果を SPI 接続の液晶へ表示させるためのハックのようだ。GPU を使わないなら入れなくても動かすことはできる。
dtb ファイル (コンパイル済みのデバイスツリーブロブ) が含まれているけど、ソースファイルがない。以下のようにするとソースにディスアセンブルできる。
dtc -I dtb -O dts -o waveshare32b-overlay.dts waveshare32b-overlay.dtb
以下のような感じのデバイスツリーとなっていた。
/dts-v1/;
/ {
compatible = "brcm,bcm2835", "brcm,bcm2708", "brcm,bcm2709";
fragment@0 {
target = <0xdeadbeef>;
__overlay__ {
status = "okay";
spidev@0 {
status = "disabled";
};
spidev@1 {
status = "disabled";
};
};
};
fragment@1 {
target = <0xdeadbeef>;
__overlay__ {
waveshare32b_pins {
brcm,pins = <0x11 0x1b 0x16>;
brcm,function = <0x0 0x0 0x0>;
linux,phandle = <0x1>;
phandle = <0x1>;
};
};
};
fragment@2 {
target = <0xdeadbeef>;
__overlay__ {
#address-cells = <0x1>;
#size-cells = <0x0>;
waveshare32b@0 {
compatible = "ilitek,ili9340";
reg = <0x0>;
pinctrl-names = "default";
pinctrl-0 = <0x1>;
spi-max-frequency = <0xf42400>;
rotate = <0x5a>;
fps = <0x19>;
bgr;
buswidth = <0x8>;
reset-gpios = <0xdeadbeef 0x1b 0x0>;
dc-gpios = <0xdeadbeef 0x16 0x0>;
debug = <0x0>;
linux,phandle = <0x2>;
phandle = <0x2>;
};
waveshare35a-ts@1 {
compatible = "ti,ads7846";
reg = <0x1>;
};
waveshare32b_ts@1 {
compatible = "ti,ads7846";
reg = <0x1>;
spi-max-frequency = <0x1e8480>;
interrupts = <0x11 0x2>;
interrupt-parent = <0xdeadbeef>;
pendown-gpio = <0xdeadbeef 0x11 0x0>;
ti,x-plate-ohms = [00 3c];
ti,pressure-max = [00 ff];
};
};
};
__overrides__ {
speed = <0x2 0x7370692d 0x6d61782d 0x66726571 0x75656e63 0x793a3000>;
rotate = [00 00 00 02 72 6f 74 61 74 65 3a 30 00];
fps = [00 00 00 02 66 70 73 3a 30 00];
debug = <0x2 0x64656275 0x673a3000>;
};
__symbols__ {
waveshare32b_pins = "/fragment@1/__overlay__/waveshare32b_pins";
waveshare32b = "/fragment@2/__overlay__/waveshare32b@0";
};
__fixups__ {
spi0 = "/fragment@0:target:0", "/fragment@2:target:0";
gpio = "/fragment@1:target:0", "/fragment@2/__overlay__/waveshare32b@0:reset-gpios:0", "/fragment@2/__overlay__/waveshare32b@0:dc-gpios:0", "/fragment@2/__overlay__/waveshare32b_ts@1:interrupt-parent:0", "/fragment@2/__overlay__/waveshare32b_ts@1:pendown-gpio:0";
};
__local_fixups__ {
fixup = "/fragment@2/__overlay__/waveshare32b@0:pinctrl-0:0", "/__overrides__:speed:0", "/__overrides__:rotate:0", "/__overrides__:fps:0", "/__overrides__:debug:0";
};
};
簡単にいうとそのハードウェアのドライバの用の設定ファイル。ほぼ同じ制御方法をするハードウェアであっても、細かい制御アドレスの違い・使用バス・接続されているGPIOピンの違いが存在する。これらをいちいちカーネルにハードコードしてコンパイルするのは面倒なので、設定ファイルとして分離してある。ARM Linux だと標準的に使われている。
DTS ファイルの書きかた https://elinux.org/Device_Tree_Usage
正直読むのに苦労する。完全に理解してない。
$ DISPLAY=:0 xinput_calibrator
...
Section "InputClass"
Identifier "calibration"
MatchProduct "ADS7846 Touchscreen"
Option "Calibration" "195 3780 3881 252"
Option "SwapAxes" "1"
EndSection $ sudo vi /usr/share/X11/xorg.conf.d/99-calibration.conf # copy calibration from above
Chromium (Chrome の OSS版) を Raspberry Pi で Kiosk モード (全画面単一アプリケーションモード) で起動して、UI を作れると便利そうなのでやってみた。たとえば動画のように、3.2inch LCD 上のUIを Web 技術で完結させることができる。
raspi-config で起動モードを Desktop (autologin) に設定する。
sudo raspi-config
マウスカーソルを自動で消すやつをいれる。
$ sudo apt-get install unclutter
不正終了で残るファイルを reboot 時に消しておく。
$ crontab -e @reboot rm -rf ~/.config/chromium/Singleton*
Raspberry Pi は Desktop の場合 LXDE が使われる。これの起動時に必要なものを自動起動するように設定する。
chromium-browser の引数は重要。とりあえずこのあたりを指定しておくと良い。
$ vi ~/.config/lxsession/LXDE-pi/autostart #@lxpanel --profile LXDE-pi #@pcmanfm --desktop --profile LXDE-pi #@xscreensaver -no-splash #@point-rpi @xset s off @xset -dpms @xset s noblank @unclutter @chromium-browser --remote-debugging-port=9222 --no-default-browser-check --noerrdialogs --kiosk --incognito https://example.com
ssh -L 9223:127.0.0.1:9222 pi@192.168.0.23
これで、ログインしたコンピュータで http://localhost:9223/ するとデバッグコンソールを出せる (タブ一覧が出るので選択すれば良い)。JS が実行できるので、raspi 上で操作しなくとも特定 URL に移動したり、リロードしたりできる。もちろんエレメントインスペクタも使うことができる。
P&G のプロモーションの「企業にあわせて自分を偽ったことがある」かってやつ面白いというか思うところがあった。
面接とかってなんとか良く見せなければならないという固定観念があって、なんでそう思っていたかはわからないけど、とにかくそういう気持ちがあって気が重かった。自分の場合は恵まれていて、最初ITでバイトしようと思ったとき、紹介してくれた人に面接で何言えばいいかわからないと話したら「金が欲しいんだったら金が欲しいと言えばいい」と答えていて、なるほどと思ってその通り面接で言ったのだった (それで採用された)。
これはそれまで複雑に考えすぎてたので、急にすっきりしたという感じがしたので印象に残っている。とにかく正直に話して、マッチングしないならそれでおしまいという単純な話に気付いたのがそれだったからだ。
ツールの使いかたで時間をとられるのは非常にもったいないので、おおむね最近のコードは Chrome をメインに「モダンブラウザで書ける新しい ECMAScript の新記法・いざとなればポリフィル可能なAPIはすべて使っても良い」が「それ以上のことはなし」というルール。専業でずっと同じプロダクトだけ触ってメンテできるならいいけど、いろんなことをやって半年後に戻ってきたら動かない・コンパイルできない・修正できない、というのは全くありえない話。
触る人間 (ユーザ) が決まっているプロジェクト、例えば管理ツールならこのぐらいでちょうど良いと思う。
依存するものが増えることと、それで得られるメリットは常に天秤にのっていると考えないといけない。当たり前だ。余計なことはしないのが一番良い。バカにされるとしても、複雑なものより簡単なもののほうが常に優れている。自分の理解力を誇示するために成果物を複雑にしようとするな。