ダヴィンチMini wの印刷精度を検証
ダヴィンチMini wで印刷したネジ穴の直径がちょっと小さい気がしたのでどの程度の正確に印刷できるのか検証してみました。
下は検証に使う3Dモデルで、左上が水平な穴が開いたモデル、左下が正方形の面を押し出したモデル、右が垂直な穴が開いたモデルです。
この3つのモデルを印刷してノギスで実寸を測ります。印刷設定は次の通りです。
項目 | 値 |
---|---|
品質 | 非常に良い |
材料 | PLA |
ラフト | なし |
底辺 | なし |
サポート | なし |
内部充填密度 | 中(30%) |
インフィルタイプ | 格子 |
シェル | 普通 |
レイヤの高さ | 0.1 |
印刷速度 | 普通 |
水平な穴のサイズ
印刷したものと各穴のモデル上のサイズです。
この穴の直径の実寸は次のようになりました。
モデルの直径(mm) | 直径の実寸(mm) | 誤差(mm) |
---|---|---|
0.5 | - | - |
1.0 | - | - |
1.5 | - | - |
2.0 | 1.7 | -0.3 |
2.5 | 2.2 | -0.3 |
3.0 | 2.7 | -0.3 |
3.5 | 3.2 | -0.3 |
4.0 | 3.8 | -0.2 |
4.5 | 4.2 | -0.3 |
5.0 | 4.8 | -0.2 |
5.5 | 5.1 | -0.4 |
6.0 | 5.7 | -0.3 |
6.5 | 6.2 | -0.3 |
7.0 | 6.8 | -0.2 |
7.5 | 7.3 | -0.2 |
水平な穴を空けるとだいたい0.2~0.3mmほど直径が小さくなるようです。0.5mmの穴は完全に埋まっています。1.0mmと1.5mmの穴はほぼ埋まっていて直径を計測できませんでしたが一応表から裏までの穴は開いていたので、ピンバイスで穴を空けることができます。また、穴は見た目真円ではなくちょっと歪です。
正方形のサイズ
印刷したものと各直方体のモデル上のサイズです。バリがあって真上からの写真だと小さいサイズが分かりにくいので斜めからの写真も載せます。
各直方体の縦と横の長さの実寸は次のようになりました。
モデルの1辺の長さ(mm) | 縦の実寸(mm) | 横の実寸(mm) | 縦の誤差(mm) | 横の誤差(mm) |
---|---|---|---|---|
0.5 | 0.8 | - | +0.3 | - |
1.0 | 1.1 | 1.1 | +0.1 | +0.1 |
1.5 | 1.5 | 1.5 | 0.0 | 0.0 |
2.0 | 2.1 | 2.2 | +0.1 | +0.2 |
2.5 | 2.6 | 2.6 | +0.1 | +0.1 |
3.0 | 3.0 | 3.0 | 0.0 | 0.0 |
3.5 | 3.5 | 3.6 | 0.0 | +0.1 |
4.0 | 4.0 | 4.0 | 0.0 | 0.0 |
4.5 | 4.5 | 4.6 | 0.0 | +0.1 |
5.0 | 5.0 | 5.1 | 0.0 | +0.1 |
5.5 | 5.5 | 5.5 | 0.0 | 0.0 |
6.0 | 6.1 | 6.1 | +0.1 | +0.1 |
6.5 | 6.5 | 6.6 | 0.0 | +0.1 |
7.0 | 7.0 | 7.1 | 0.0 | +0.1 |
7.5 | 7.4 | 7.5 | -0.1 | 0.0 |
誤差の範囲は-0.1mm~+0.3mmですがほぼ0.0mm~+0.1mmの範囲に収まっています。円よりも正確に印刷できるようです。0.5mm四方のものはバリと太さがほぼ一緒のためあまり正確に計測できません。一応直方体部分も印刷されているのでバリが出なければこのサイズでも印刷できそうです。
垂直な穴のサイズ
印刷したものと各直方体のモデル上のサイズです。印刷時は2枚目のように立てた状態になっています。
この穴の直径の実寸は次のようになりました。
モデルの直径(mm) | 水平方向の直径の実寸(mm) | 垂直方向の直径の実寸(mm) | 水平方向の直径の誤差(mm) | 垂直方向の直径の誤差(mm) |
---|---|---|---|---|
0.5 | - | - | - | - |
1.0 | - | - | - | - |
1.5 | 1.2 | 1.0 | -0.3 | -0.5 |
2.0 | 1.6 | 1.7 | -0.4 | -0.3 |
2.5 | 2.1 | 2.4 | -0.4 | -0.1 |
3.0 | 2.7 | 2.6 | -0.3 | -0.4 |
3.5 | 3.2 | 3.1 | -0.3 | -0.4 |
4.0 | 3.7 | 3.5 | -0.3 | -0.5 |
4.5 | 4.0 | 4.2 | -0.5 | -0.3 |
5.0 | 4.7 | 4.6 | -0.3 | -0.4 |
5.5 | 5.2 | 5.2 | -0.3 | -0.3 |
6.0 | 5.6 | 5.3 | -0.4 | -0.7 |
6.5 | 6.0 | 6.4 | -0.5 | -0.1 |
7.0 | 6.4 | 6.4 | -0.6 | -0.6 |
7.5 | 6.9 | 6.9 | -0.6 | -0.6 |
誤差は-0.7mm~-0.1mmと大きめでした。縦方向の穴をサポートなしで印刷しているので誤差が大きくなるのは当然ですが、意外なのは幅も誤差が大きいことです。高さは重力があるのでサポートがなければその影響を受けますが幅はサポートの有無や重力は影響しない(と思う)ので理由はよく分かりません。
ダヴィンチMini wを購入
Raspberry PiやArduinoで作ったデバイスを納めるケースを作るために3Dプリンタを買ってみました。
買ったのはXYZプリンティング社のダヴィンチMini wでAmazonで41,000円、合わせてブラックとホワイトのフィラメントも約3,200円と約44,000円で購入しました。
https://jp.xyzprinting.com/jp_ja/Product/da-Vinci-Minijp.xyzprinting.com
組み立て&テスト印刷
ほぼできた状態で来ますが少しだけ組み立てが必要です。
組み立てといっても最初に内部の固定材を取り、プリントモジュールとフィラメントを装着するだけですが、付属していた紙の組み立てマニュアルが白黒かつ粗い印刷で写真に何が写ってるか分からない状態だったので、少し苦労しつつ組み立てました。ただ後で気付いたんですが、XYZプリンティングのサイトからカラーのマニュアルをダウンロードできるので、先にダウンロードしておくといいと思います。一緒にXYZwareというアプリもダウンロードしてインストールしておきます。
組み立てが終わったら電源入れてUSBケーブルをPCに繋いでXYZwareを起動します。
起動したらマニュアルに印刷の手順が書いてある(画面が実際と違ったりしますが)のでその通りにやってみます。
が、左上の"↓"というアイコンをクリックするとダイアログが表示されてサンプルデータが6つ表示されますが全て別のダヴィンチシリーズのプリンタ用のファイルらしく、開けますがダヴィンチMini wで印刷できません。意味が分からない。
[2017/1/31 追記]
XYZwareのメニューの設定ボタンをクリックするとダイアログが開き、そこの"プリンター"というタブにある"サンプルファイルを開く"というボタンがあります。そのボタンをクリックするとちゃんと印刷可能なデータがありました。
幸いXYZプリンティングのサイトにたくさんデータが公開されているので小さめの物を選んでダウンロードします。私はこれを選びました。
サンプルデータを開いたらフィラメントのロードを行ってから印刷をします。最初なので品質は普通(3つの内一番低い品質)にしました。
印刷中はそこそこ音がします。
自分が持ってる掃除機よりは静かかな。
— loca (@locatw) 2017年1月19日
だいたい15分くらいで出来上がりました。
文字の輪郭部分が所々崩れてたり全体が反ってたりしますが印刷品質設定を普通にしたからなのかは分かりません。質感は硬いプラスチックで手で折れないくらい硬く、重さは軽い感じです。
次は印刷品質を非常に良い、レイヤの高さ(層の厚さ)を最も薄い0.1mmに設定して印刷してみます。
時間は約30分でさっきの倍の時間がかかりましたがさっきより文字の輪郭部分が崩れてます。層は確かに薄くなっていて、さらに全体的に角がしっかりしている(品質が普通のやつは角に少し丸みがある)ので、何か他の設定に原因があるのかもしれません。
Wifiの設定
ダヴィンチMini wにはWifi機能が付いているので設定してみましたが仕様がかなり不便です。
まずダヴィンチMini wのWifiの設定をするにはUSBケーブルをつなぐ必要があり、その状態でXYZwareからSSIDとパスワードを設定します。その後USBケーブルを抜ていもWifiで繋がっているので印刷ができます。
ただしWifiの設定はプリンタの電源を切ると消えてしまうようで、Wifi設定をした後に電源を抜いて移動させることができません。なのでPCとUSBケーブルがつながる範囲に設置することになります(もしかしたら別のノートPCでWifi設定をすれば離れた場所のPCから使えるかもしれませんが未検証です)。これが結構不便で、せめてスマホかUSBメモリを使ってプリンタのWifi設定ができればWifi機能が活きるんじゃないかと思いました。
最後に
思ってたほどうまく印刷できなかったので色々検証する必要がありそうでした。
廊下の電灯を自動でOn / OffするデバイスのプログラムをF#で書き直した
前にRaspberry Piで動くデバイスのプログラムをF#で書き直した。
ソースコードは上の記事にリンクがあるのでそこから見られる。
理由
自分はどうも動的型付け言語は苦手みたいで中々モチベーションが湧かなくて静的型付け言語で書き直したくなったのが理由で、F#を選んだのは関数型言語を勉強したかったのと、Visual Studioで開発ができるから。
.NETからGPIOを扱うためのライブラリもいくつかあるので要求は今のところ満たせてる。
GitHub - locatw/WiringPi.Net: A simple C# wrapper for Gordon's WiringPi library.
raspberry-sharp (Raspberry#) · GitHub
Raspberry#はオブジェクト指向な設計になっていてC#と馴染む感じだけれど開発があまり活発でないのが気になる。raspberry-sharp-ioはPWMをまだサポートしていない(将来される予定らしい)ので自分がやりたいことができるか確認してから使うのがいい。raspberry-sharp-systemはRaspberry Piのモデルの種類やファームウェアのバージョンなんかのシステム情報が取得できるので、ライブラリを作るときに便利なんじゃないかと思う。
自分が作ったデバイスはサーボを動かすのにPWMを使っているので今回はWiringPi.Netを使った。ただ、こっちも開発がほぼ止まっていて(最近のissueに返信はあったけど)ビルドエラーが出て使えない状態だったので、フォークして修正したものを公開した。
Qiitaに記事を書いたので詳しくはそっちを参照。
感想
GPIOなんかのRaspberry Piに依存する部分以外はWindowsで実行できるので、Intellisenseやデバッグが快適で気に入ってる。(PythonもVisual Studio用の拡張があって状況は同じはずなんだけど、いまいちうまく動かなくてあまり快適ではなかった。)
気になるのは、数あるセンサーを使うときに.NET用のライブラリが提供されるのは少なそうなところ。C言語用のライブラリがあればラッパーを書けるので.NETからでも使えるけど、ラッパーを書く分の手間はかかるので、そこはPythonとかの方が有利かなぁと思う。
あと、F#はまだ身についたわけではないから正しいか分からないけれど、デバイス用のプログラムを書くのに適しているかというと内容によるかなーという感じ。デバイスの状態を扱うならオブジェクト指向言語の方が適しているかもしれない。ただ、F#でも当然状態は扱える(クラスも書ける)し、関数型言語はロジックを書くのに適してる(と現時点では思ってる)ので、その比重が高くなれば特徴が生かせるんじゃないかと思う。
とはいえF#とC#だったらできないことの差はないので好きな方を使うのが一番快適だと思う。
それとPythonについては自分は使うのをやめることにしたけど、言語の優劣ではなく自分との相性と開発環境周りが理由なのでPython好きな人は気を悪くしないでほしい。自分でもこんなに相性や開発環境の影響があるとは思ってなかったのでびっくりしてる。
今後
F#で書き直したので今度はAzureのIoT Hubを使ってみようかと思って今勉強中&構成を考えてる。Azureなので.NET系言語との相性は良さそう。
廊下の電灯を自動でOn / OffするデバイスをRaspberry Piで作った(センサー側)
今回はこの記事のセンサー側について。今回のデバイスを作成した動機や全体の詳しい説明もこっちに書いてある。
設計
全体の構成を再掲。今回は左側の青い枠の部分の話。
ハードウェア
ハードウェアはシンプルで、Raspberry Piと人感センサー、Wifiアダプタという構成。人感センサーはParallax社のPIRセンサーを使った。人が動くとセンサーの信号線からHIGHが出力されるので簡単に使える。
Raspberry PiとPIRセンサーをそれぞれモールドケースに入れた。
使ったもの
- マイコン:Raspberry Pi Model A+
- PIRセンサー:PIR Sensor with LED Signal | 555-28027 | Parallax Inc
- Wifiアダプタ:BUFFALO 無線LAN子機 WLI-UC-GNM
- microSDカード:東芝 microSDHC 16GB(Class10 30MB/s UHS-I 防水 耐X線)
- ケース:テイシン モールドケース TB54B, TB56B
- フック:石膏ボード用固定金具フックSタイプ(4個入) / 壁美人.jp 壁掛け収納金具・壁面収納家具を工場直販
- その他:
- USBケーブル
- リード線
- Qiコネクタ
- ネジ
- ナット
- スペーサー
PIRセンサーとケース以外はスイッチ操作側と同じものを使って作った。
回路図
回路はこんな感じで作成した。PIRセンサーのVCCと3.3V、GND同士、信号線とGPIO17を繋いでいる。 信号線とGPIO17の間には220Ωの抵抗を挟んでいる。
(図のRaspberry PiはModel A+がなかったのでB+のものを使った。)
ソフトウェア
コードはスイッチ側と同じくPythonで書いた。
PIRセンサーの出力を一定間隔で読み込んで、LOW→HIGH(人の動きを検知した)になったらスイッチ操作側のRaspberry PiのREST API(スイッチ操作側参照)にアクセスして、廊下の電灯をOnにする。
Raspberry PiのGPIOへのアクセスはWiringPi2-Pythonを使った。
ソースコード
https://github.com/locatw/autonek-hamtor
設置
センサーを壁に取り付けた様子。壁美人っていう壁に開けた穴が目立たないフックがあったので、ケースの裏側に開けた穴に引っ掛ける形で取り付けた。リード線が見苦しいのでうまく隠す方法を探してるけど、まだ見つかっていないのでそのまま。
Raspberry Pi側は洗濯機がある所に洗剤と一緒に適当に置いてる。
実際に動作してる様子はこちら。(スイッチ操作側と同じ動画)
Intel Edison勉強会に参加してきた
2015年1月30日に行われたIntel Edison勉強会に参加してきた。
現時点で公開されている発表資料はこちら。
[2015/02/09追記]
勉強会のページで発表資料が公開されていました。
Intel Edison勉強会 - 資料一覧 - connpass
個人的に勉強になったことのまとめ
個人的に面白かったり気になったりしたことをまとめておこうと思う。自分は今Edisonを持ってなくて、今回はどんなものか知りたかったのが参加した目的。
※注意:当日のメモを元に書いているので内容はあまり正確ではないと思う。正確な情報は各自調べるようにしてください。
R2ファームウェア
Intelの中の人の発表によると、近いうちにR2というEdisonの新しいバージョンのファームウェアが出るようだ。
R2ではオーディオ再生やMCU用のSDK、Bluetoothのプロファイル追加などの機能追加があるみたい。
今までBluetooth対応だと聞いていたけど、まだ完璧ではなかったらしい。でも今回みたいに色々な機能が増えたり強化されたりするということは、今後のバージョンアップでも面白そうなことができるようになったりしそうで期待できそうだ。
EdisonにはAtomとQuarkの2つのプロセッサが載ってる
ずっとEdisonはデュアルコアのAtomが載ってるだけだと思ってたけど、それとは別にMCUとしてQuarkプロセッサが載ってるようだ。QuarkではリアルタイムOSが動作するらしい。
上で書いたようにR2ファームウェアにMCU用SDKが含まれる予定で、これを使ってQuarkプロセッサ用の処理が書けるようになるようだ。リアルタイム処理が書けるようになるみたいだけど、どの程度書けるかは実際に公開されたものを使ってみて検証する必要がありそう。
mBaaS
mBaaSはニフティさんのモバイルバックエンドサービス。
mBaasとEdisonなどのIoTデバイスを組み合わせたメリットの話が勉強になった。
IoTデバイスは常時電源を使えるとは限らないし、メモリーやストレージが小さいので常時全てのデータを保存しておくことはできないから、適宜データを捨てる必要がある。また、大量のデバイス1つ1つにスマホからアクセスするのは現実的じゃない。けれどmBaaSをデバイスとスマホの間に置けば、データの保存やアクセス処理が簡単にできるようになるし、デバイスの管理もできるよ、ということだった。
それと、M2M(Machine to Machine)ではデバイスが多種類あるとプロトコルを合わせるのが難しいけども、間にクラウドサービスを挟む(M2C2M(Machine to Cloud to Machine))とクラウドでプロトコル変換を行えるので楽になるという話だった。デバイス上でたくさんのプロトコルを実装するのはスペックの制約があるしデバイスのリソースも奪うので大変だったり難しいけども、間にmBaaSを挟むことで、mBaaSで対応しているプロトコルを使ったりリソースが豊富なサーバーでプロトコルを処理できるから楽になるってことだと理解した。
クラウドサービスに詳しくないので具体的な使い方が分かって勉強になった。mBaaSはある程度は無料で使えるみたいなので、試してみると面白そうだ。
Amazon SQSとEdisonを組み合わせたデモ
Amazon SQSとEdisonを組み合わせたデモが面白かった。Amazon SQS(調べたらスケーラブルで高可用なキューサービスらしい)にメッセージを送ると、3台のEdisonのどれか1台がそのメッセージを処理するというもので、Edisonに接続されたLEDを光らせたりブザーを鳴らしたりしていた(電気ショックもあった)。
普通はデバイス側がデータを送る方だけど、今回は逆にデバイスでデータを処理するという発想で、自分が思いつかなかった考え方なのもあって面白いなと思った。
こういうアイデアを出せるようになるには実際に色々作ってみる必要があるのかなと思ったので良い刺激になった。
Henry
今のところEdisonでUSBカメラを使うにはカーネルを自分でビルドし直さないといけないが、Henryという拡張ボードを使うとUSBコネクタにUSBカメラを繋げるだけですぐに使えるらしい。
FRISKケースに入るEdison用ベース基板 Henry - ランニングエレクトロニクス
フリスクケースに入る大きさで9軸モーションセンサーを載せているようだ。他にもEdisonの使い勝手を良くする機能が載ってるみたい。
日本語の情報が少ない
発表者の人がEdisonの日本語情報が少なくてすごく苦労したと言っていた。Edisonユーザー会が出来たのも、日本語の情報を集約したりして情報を共有するのが目的の1つだと言っていた。
その他
他にも色々話を聞いたので簡単に載せておく。
- 開発環境
- XDK:Javascript用IDE。エミュレータあり。
- Eclipse:CまたはC++用
- Wyliodrin:ビジュアルプログラミング環境
- ubilinuxというEdisonで動くDebianがある。
- Edisonにはinit.dはないのでsystemdを使う。
- configure_edisonという設定スクリプトがある。
- opkgというEdison用のパッケージマネージャがある。
- 初期状態だとリポジトリが少ないので追加すると良い。
- Intel Edison Kit for ArduinoのPWM Swizzlerは、EdisonのPWM出力(4本)を拡張ボードのPWM出力(6本)のどこに振り分けるかを決める。
- ピンマルチプレックス
- EdisonのGPIOは1.8Vで大抵のセンサーを繋げるには電圧の変換が必要だけど、変換はそんなに難しくないらしい。(後で調べたら変換する部品が数百円で売ってたので挑戦してもいいかも。)
- MRAAはEdisonだけでなくRaspberry Piなどにも対応しているので、勉強しておくと他のデバイスを使う時でも役立つ。
- MRAAは「ムラー」と発音するようだ。
- EdisonはIntelがフルカスタマイズで作ったものなので完成度が高い。
感想
Edisonのソフトウェア環境はまだまだ開発中らしくバグも多いけど、開発が活発にされてるのでアップデートも頻繁に行われていて楽しそうだ。
Intelの中の人や実際にEdisonを使って勉強してる方達の話だったので、実際に役立ちそうな情報がたくさんあったと思うし、Edisonに限らずサーバーとの組み合わせとかの勉強になったり開発のモチベーションも上がったりしてとても良い勉強会だった。
主催者の方と発表者の方々ありがとうございました。