NanoPi NEO用ケースを設計してみました(2)

引き続きNanoPi NEO用ケースの続きです。

昨日のデータを0.1mmピッチで夜間に出力してみると・・・・

という衝撃的な結果になっていました。やはり、PRILINEの黒のPLAフィラメントは脆いようで、造形中にあちこち折れてしまったようです。で、放熱用のスリットの部分の柱などを太くして再度出力していたのですが・・・・

・・・・よく見ると、フィラメントが送られていない時があります。さらによく観察すると、フィラメントを巻いてあるスプールの回転がかなり渋いのと、フィラメント自体の表面に光沢があって滑りやすいようです。そのため、フィラメントが送られておらず、結果として樹脂の供給不良で層間で割れやすく(脆く)なっているのかもしれません。
スプールをよく見ると、成形品質が今ひとつのような感じで、ヒケによる歪みがあります。そのため、Ender 3のような簡易なスプールのホルダーではスプールの回転の抵抗になっているように思えます。とりあえず、スプールのホルダーを移設して様子を見ながら出力しました。

で、今度は修正したものを0.2mmで出力してみましたが、

というような感じでした。だいぶいい感じにはなってきたのですが、LANとUSBの間の柱が太ってしまって、かなりきついことになってしまい、無理に挿入するとまたスナップフィットが写真の通り、折れてしまいました。

再度修正して、以下のようにして改めて0.1mmピッチで夜間に出力してみます。

NanoPi NEO用ケースを設計してみました

手元に使っていないNanoPi NEO(NEO2ではない)があるのですが、これにあわせたケースを設計してみました。(NanoPi NEO2用のケースのデータはThingiverseにあるんですが、NEO用のケースのデータってみつからないんですよね・・・)

前回、秋月電子のドップラーセンサー用ケースを設計した際には、基板図面だけ見て何もないところからFusion360で設計しましたが、今回はGrabCADにあったNanoPi NEO自体のIGS形式のデータをFusion360に取り込んで、これに合わせて設計してみました。

で、設計したのがこちらです。

NanoPi NEO2用のケースとかだと、ネジで締結するのが一般的ですが、今回もスナップフィットでいけないか狙ってみています。1回目に出力した際には、積層ピッチが0.2mmで荒かったからか、何箇所か折れてしまいました。

上記のデータは折れてしまったところ、実物と寸法がずれているところなどを修正した2回目出力中のものです。今回は積層ピッチ0.1mmにしたので、出力に4時間半もかかってしまいます。

余談ですが、今回は新たに入手したPRILINE製の黒のPLAで出力してみています。Ender 3を買ったときに一緒に買ったサインスマートブランドの黒のPLAフィラメント(3,500円位ですが、本体とセットだと半額になった)と比べると価格が半分くらいの1,800円位です。まず、サインスマートブランドの黒のPLAフィラメントと比べると、やはり多少扱いにくい感じがします。0.2mmピッチで出力したときの強度が弱いことと、細部の造形が何故かイマイチ(パラメータ詰めればいいのかもですが)なところはありますが、普段使いには十分かなと言う気がします。(普段使いだけに0.2mmに難があるのがつらいですが)
難点はプラットフォームシートにガッツリとついてしまって剥がすのが大変なことです。このくらいガッツリついてしまうのであれば、耐熱ガラスにして何も付けなくても定着するのかもしれません。

あと、PRILINEのグレーとの比較ですが、自分はグレーの方が扱いやすいと感じました。上記のケースもグレーだったら問題なく0.2mmピッチで出力されるのではないかと思っています。

3Dプリンタでボルト&ナットを作ってみました

3Dプリンタでボルトとナットを作ってみました。

データはFusion360だとネジを作る機能があるので、あっさりできてしまいます。サイズはM10で作っています。

クリアランスも勝手に取ってくれるようで、特に何も調整せずとも、M10くらいだと上の画面キャプチャくらいの感じになりました。計測してみると半径方向で0.4mmくらいのクリアランスになっています。

4つずつ並べて出力してみました。材料はPLAで、積層ピッチは0.1mm、infillは20%です。

実際に組み合わせてみると、 驚くほどスムーズに入っていきます。普通のネジと変わらない感触です。ただ、材質がプラスチックな上に、infillが20%なので中空なこともあって、異常に軽いのが不思議な感覚です。

M10くらいだと強度はともかくとしても、第一印象としては十分なボルトとナットが作れるようです。
ただ、この後、積層ピッチ0.2mmで出力してみましたが、0.2mmだとさすがに荒いのか、すんなりとは締結できず、また強度的にもちょっと引っ張ると折れてしまいました。

ROCK64リモートデスクトップ環境

1年位前に買ったROCK64 4GBにArmbian Ubuntu18.04を入れてみました。別の端末からリモートデスクトップで接続できる環境が容易に構築できました。RAMが4GBあるので、目的によっては非常に便利に使えそうです。

1.Armbian Bionic for ROCK64のダウンロードとMicroSDへの書き込み

Armbianからダウンロードします。MicroSDへの書き込みはいつものようにディスクイメージライタで行いました。

2.初回電源投入

MicroSDを取り付け、LANに接続します。
接続先のIPアドレス確認のため電源投入の前に、fping でセグメント内で現在使われているIPアドレスを確認します。

$ fping -g 192.168.1.0/24

ROCK64の電源を投入し、しばらく待って、再度fpingコマンドを実行、差分のところがROCK64のIPアドレスなので、そのアドレスに対して

$ ssh root@192.168.1.x

としてログインします。初期パスワードは 1234 です。

※どうも、avahi-daemonが初めから動いているっぽいので、

$ ssh root@rock64.local

で行けそうな気がします。

ログインに成功すると、現在のパスワード、新しいパスワードを確認してくるので入力します。
さらに、通常ユーザーの作成に移るので、適当に通常ユーザーを作成します。

一旦ログアウトして、再度作成したユーザーでログインし直します。

3.初期設定

$ sudo armbian-config

で適当に初期設定を行います。

Systemの項目から以下のソフトウェアをインストールします。

  • Minimal Desktop
  • Default(ブラウザその他のインストール)
  • Lightdm(ログインマネージャ)

引き続きPersonalの項目から以下の項目を設定します。

  • TimezoneをAsia/Tokyoに設定
  • Languageはja_JP(UTF-8)

さらに、Softwareの項目からRDPを設定します。

4.リモートデスクトップクライアントから接続する

設定が終わると、別のマシンから Remmina(RDPクライアント)で接続するとリモートアクセスが可能となっています。すでに部分的ですが日本語化もされています。

「アプリケーション」⇒「Settings」⇒「言語サポート」で言語の設定を行いますが、この状態では英語のみインストールされていますので、「言語のインストールと削除」から日本語にチェックを入れて適用、キーボード入力に使うIMシステムにfcitxを選択します。その後、メニューとウインドウの言語で日本語を一番上に持ってきてから、「システム全体に適用」をクリックします。

地域フォーマットも同様に日本語を選択し、システム全体に適用します。

一旦ログアウトして、再度ログインして概ね完了です。
初めから Chromium ブラウザも入っているので、

5.ルートファイルシステムをUSBメモリに移動する

USBメモリを挿入した状態でarmbian-configを起動して、System settings で Install(Install on SATA, eMMC, NAND or USB)を選択、Boot from SDを実行すると、USBメモリにルートファイルシステムを移動してくれます。(実行する際にUSBメモリのパーティションを削除しておくと、自動でパーティション作成ツールが起動します)

USBメモリはこの記事で使ったSandisk UltraFit 3.1を使いましたが、システム移動後に

$ dd if=/dev/zero of=aaa.tmp bs=1M count=1024

として1GBのファイルを作成してみたところ、所要時間は約10秒、107MB/sの速度が出ました。
まだ挙動がよくわからないところもありますが、速度面でも優位なのではないかと思います。

※Boot from SPIを実行するとSPIフラッシュにブートローダを書き込んで、SDカード無しで起動できるようになるのだと思いますが、戻し方を確認していないのでとりあえずbootはSDカードのままとしました。また、この作業は今回は最後にやりましたが、本来は最初にやっておいたほうがトータルの構築時間は短くて済むような気がします。

PRILINE TPUフィラメント(BLACK)

いろいろ試した結果、PLAフィラメントも製品はもちろん色によっても癖がかなりあることがわかってきました。で、PLAフィラメントだけでは面白くないので、TPUフィラメントも買ってみたのですが、これがなかなかうまく行きません。

今後の利用のためにメモを残しておくことにします。(今後、条件を詰めていくと修正する場合があります)

1.機器等の条件

2.Curaスライス条件設定

  • ノズル設定温度 215℃
  • ビルドプレートの温度50℃(初期レイヤー時のみ70℃)
  • リトラクション距離5mm、リトラクション速度20mm/s
    (注: プリンタ設定を CR-10ベースで行っていると、リトラクションの設定を行ってもリトラクションが行われない。Cura 3.5.0での出力時は問題なくリトラクションが行われていた)

 

Raspberry Piにつないでドップラーセンサをテスト

LinuxMintにつないで(たぶんFT234Xのせいで)うまくいかなかった秋月のドップラーセンサーキット。こんどはRaspberry Piにつないでテストしてみました。

Raspberry Piにつないで電源投入後、SSHで接続。dialoutグループにユーザー pi がいるのを確認して、screenをインストール。おもむろに、

$ screen /dev/ttyUSB0 9600,cs8,parenb,parodd,-cstob,-crtscts

としてみた。
センサーに手を近づけると反応するので、何か送ってきているのだけど、附属のマニュアルとは異なり、文字化けしているように見える。うーむ。

・・・・まじめにシリアルの波形見るか・・・。

秋月ドップラーセンサキットをテストしました

3Dプリンタでケースを作った秋月ドップラーキットですが、テストしてみました。

環境はLinuxMint19です。

1.準備

  • システム管理の「ユーザーとグループ」でdialoutグループに自分のユーザーを追加
  • synapticでmoserialをインストール
  • 一旦再起動(実際にはログアウト/再ログインでいいはず)

2.通信ソフトのセットアップ

  • アクセサリの下のmoserialを起動
  • 「ポートの設定」で、デバイスを/dev/ttyUSB0(環境による)、ボーレートを9600、データのビットを8、ストップビットを1、パリティをodd、ハンドシェイクは両方共チェックなし、アクセスモードはRead and Write、ローカルエコーはチェックありに設定

3.接続

で、「接続」を押して接続・・・・すると、そこは USB-UARTチップがFT234Xなので、見事にデスクトップがハングアップしました。正確には、moserialは動いていて、@ERと@EOが繰り返し送られてきて表示されるのですが、何も操作できません。で、一旦、USBケーブルを抜いて、再度刺したらデスクトップが復活しました。

うーむ、相変わらずですね、FT234X。どうにかならないんですかねー??
でも、ぐぐっても、FT234XとLinuxの組み合わせでダメという情報は少ない。うまくいったという情報も少ないのだけど。(もっと正確に書くと、うまくいったという情報はポツポツあるのだけど、本当にFT234Xのままでうまく行っているのか、他のFT232R系のものに変えてうまく行っているのか曖昧なものが多いような気がする)

うまく行かないのは自分だけなんだろうか??

秋月ドップラセンサキット用ケースを作成

ずっと前に秋月で購入したNJR4265J1を使用したドップラーセンサキットがあったのですが、基板を裸で動かすのもイマイチかと思い、放置してありました。
で、部屋を整理していたら出てきたので、Fusion360の練習を兼ねて3Dプリンタでケースを作ってみました。

できるだけネジなどを使わずに作れないかということで、基板の固定は取り付け穴に嵌まる凸の形状を作り、そこに嵌めた基板を反対側からも棒で抑える形状としました。分割したケース同士はスナップフィットを使って結合することにしました。

出力はPLAを使って、Infillは100%としました。スナップフィットの柱が薄かったせいか、Infill率が低いと柱が折れてしまいます。

で、最終的な形態がこちら。USB端子しかないのでシンプルです。発熱がよくわかりませんが、とりあえず放熱用の穴は付けていません。(ソフトウェアでの制御はまだしていませんが、熱くなる気配はなさそうなので)
基板上についているLEDがかなり明るく、出力に使用したグレーのPLAだと中のLEDが光っているのが透けて見える状況です。状況によっては黒のPLAで出力し直したいと思いますが、とりあえず思った以上にうまくいきました。

スタンドアローン出力とOctoPrint比較

Ender-3改良(?)の施策として、Thingiverseで見つけたケーブルチェーンを付けてみようと思い、OctoPrintからパーツを数個出力してみたのですが、観察していると、造形の細かいところで動作が遅くなっています。結果として、細かい関節部分の造形がイマイチで、その結果、動きもイマイチな感じでした。そこで、部品作成はOctoPrintではなく、MicroSDにGcodeデータをコピーして、スタンドアローンで出力してみました。

上の写真はスタンドアローンで出力中の写真です。こちらの方は関節部分もよりきれいに出力されました。この後、他の部品も出力して無事に組み立てはできて、非常にいい感じです。動作上も問題なさそうなので、余った部品を見比べてみました。

左の写真は、一番上がOctoPrintで出力したもの。真ん中と下がスタンドアローンで出力したものです。

材料はPLA、積層厚はどちらも0.2mm、Infillは20%(あまり関係ないですが)、ノズル温度200度、ベッド温度60度で、Curaでスライスした際の条件は同じです。(ファイル自体は数個出力か、35個出力かという違いがあります)

真ん中のものが積層割れっぽいのがあるのは置いといて、回転軸となる穴の周囲が違うのがわかりますでしょうか?

右の写真も一番上がOctoPrint、真ん中と下がスタンドアローンで出力したものです。

やはり回転軸となる穴の内側に差がみられます。この部分はOctoPrintでのプリント時にはノズルの移動速度が落ちていて、同じところにノズルが滞留する時間が長くなっています。

そのため、樹脂が余分に出てきてしまっているのか、あるいは、加わる熱量が大きくなって周囲を融かしているのかわかりませんが、影響を与えていそうな感じがします。なにか良い対策があればいいのですが・・。

OctoPrint(OctPi)をセットアップしてみた

Ender3はスタンドアローンでMicroSDに格納したgcodeデータを出力できるのですが、あちこちググっているとOctoPrintというソフトウェアでネットワークに接続して遠隔で状態を監視したりしている人が多いことに気が付きます。

そこで、このOctoPrintを導入してみました。

用意したものは以下の通りです。

  • Raspberry Pi Model B+(公式サイトではRaspberry Pi3推奨という表現もありましたが、手持ちの関係で・・・。WiFiで接続する場合には、Pi Zero Wだとパフォーマンス上かなり問題があるようですので、今回は有線LANでの接続としています。)
  • MicroSDカード8GB
  • 電源供給用のACアダプタと、USBタイプA-MicroBケーブル
  • Raspberry PiとEnder3を接続するためのUSBタイプA-MiniBケーブル
  • 余っていたUVC接続可能なUSBカメラ
  • 適当なLANケーブル

セットアップの手順は以下の通りでした。

  1. OctoPrintのサイトからOctoPi(OctoPrint組込済のRaspbianイメージ)をダウンロード。MD5SUMをチェックして、ファイルを展開します。
  2. ホストのWindows10のUDPポート5353(mDNS)を解放。通常はWindowsファイアウォールの設定ですが、自分はカスペルスキーインターネットセキュリティを導入しているので、カスペルスキーで設定します。
  3. USBイメージライタ(LinuxMintの場合)で展開したイメージファイルをMicroSDカードに書き込み。書き込み完了後、Raspberry Piに取り付け。その他のケーブル、カメラも適宜取り付けます。
  4. Raspberry PiとEnder3の電源を投入します。電源は連動して投入できるよう工夫するのがいいようです。Edner3の電源(+24V)から+5Vを得るような改造を結構見かけますが、今回はスイッチ付きのテーブルタップで連動するにとどめます。
    電源投入後、Raspberry Piが起動している様子は見えないですが、初回はディスク領域の拡張等を行うはずなので、10分くらい適当に放置します。
  5. Webブラウザ(自分はChromeを利用)にて、アドレスバーに「octopi.local」と入れて、しばらく待つと・・・OctoPrintの画面にアクセスできるはず・・・なのですが、アクセスできず。しかし、そのまま10分くらい、放置して置いたら画面が更新されてSetup Wizardとなっていました。
  6. Wizardに従って初期設定を行います。
    Access Controlのところで、OctoPrintにアクセスするためのユーザー名とパスワードを入力して、Keep Access Control Enabledをクリックした後、Nextをクリックします。パスワードを設定しておかないと、誰かが勝手にプリンタの温度を変えたりして火災などの原因になるかもしれません。
  7. Online Connectivity Checkはインターネットへの接続性をGoogleのDNSサーバ(8.8.8.8)にアクセスして確認するようです。Test host & port をクリックしてテストした後、Enable Connectivity Checkをクリック、さらにNextをクリック。
  8. Configure plugin blacklist processingはそのままEnable Plugin Blacklist Processingをクリックして、Nextをクリック。
  9. CureEngineのところは、Profileをインポートするスライス処理をRaspberry Pi側で行えるようですが、ググってもあまり情報が見つかりません。よくわからないので、そのままNextをクリック。
  10. Default Printer Profileはプリンタが1台の場合は名前は気にしなくても大丈夫そう。Print bed & build volumeのところは、Form FactorはRectangular、OrigineはLower Left、Heated Bedはチェックが入ったまま、Print volumeはXとYは220、Zは250を入力、Axesは軸の移動速度ですが、マニュアルでの移動速度にのみ関係するので放置、Hotend & extruder もそのままで、Nextをクリック。
  11. 最後に注意事項を読んで、Finishをクリック。
  12. しばらく(1分くらい)放置すると画面が変わりますが、さらに少しすると、Updateがあるという表示が出ましたので、Update Nowをクリックすると警告が表示されるのでProceedをクリックして先に進めます。アップデートの経過がゆっくり表示されるのを眺めながら待ちます。5分か10分か経過してアップデートが終わると、勝手に再起動しました。再起動後、勝手に画面が更新される旨、表示されているのですが、5分くらい待っても一向に変わらないので、Reloadを押してみましたが、更新されず。そのまま待ちます。
  13. その間に、TeraTermでsshでログインして、デフォルトユーザー(ユーザー名pi/パスワードraspberry)のパスワードを変更しておきます。
  14. しばらくすると、画面が更新されました。

完了すると、以下のような画面となりました。

引き続き、プリンタに接続しますが、特に設定することなく、左上のConnectを押すとしばらくして接続されました。現在の状況(ベッドやノズルの温度)が表示されるのですが、Controlをクリックするとグラフの部分がUSBカメラの画像に切り替わります。TimelapseをクリックするとTimelapse録画のパラメータが設定できるようです。

温度の画面でTargerのところのチェックマークをクリックすると、PLAやABSにあわせたプレヒートができます。

プレヒートしたら、gcodeファイルをWeb画面上の左半分にドロップするとファイルをアップロードできます。(右半分にドロップするとSDカードにアップロードできようなのですが、きわめて遅いです)
アップロードすると、左下のFileの部分にアップロードしたファイルが表示されるので、プリンタのアイコンをクリックすると、出力が始まります。

使用したのがRaspberry Pi(2でも3でもなく)のためか、全体に動きがもっさりです。

実際にgcodeファイルを出力してみると、Curaでスライスした際には12分と出たデータが30分以上かかるケースもあります。どうやら、内部でのArduinoベースのコントローラとのUART接続がボトルネックになっている気がします。Ender3単体で出力した時よりも細かい動きがある(≒大量のgcodeデータのやり取りがある)ところでテーブルの動きが遅くなっていて、出力品質にも現れています。