ストリンジェント、15ドルのウォールプロッター
コンポーネントと消耗品
> |
| × | 1 | |||
| × | 2 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
必要なツールとマシン
> |
| |||
|
アプリとオンラインサービス
> |
|
このプロジェクトについて
背景
いつ始まったのかはよく覚えていませんが、1999年頃だと思います。私とロボット工学と電子工学のすべてに夢中になっている友人は、ホワイトボードに描画するためのロボットの構築について話し合っていました。もちろん、当時は深刻なことをする時間がありませんでした。趣味のマイクロコントローラーのエコシステムは、今日のようなものではありませんでした。
2002年に私の友人は私にJürgLehniとUliFranke-Hektorの素晴らしい作品を見せてくれました。私たちが夢見ていたものに似たものが実際に作られ、世界と共有されているのを見てとても嬉しかったです!私は平和でした。
しばらくして、Hektorプロジェクトのウェブサイトを誰かに見せて、それがどれほど素晴らしいと思ったかを紹介したことを覚えています。今回は、壁のプロッターが持っていると最初に想像していた1つのプロパティが不足していることに気づき、詳細を調べ始めました。私はそれが自己完結型であり、壁に接続するワイヤーだけですべてが1つのユニットになっていることを望んでいました。正しく思い出せば、この時点でステッピングモーターのウェイトを調べたところ、自分のアイデアがうまくいかないことに気づきました。
時間が経ち、趣味のロボット工学の空間で物事が起こりました。それは2014年で、さまざまなカメラ制御プロジェクトにArduinosとRC-servosを使用していました。私は、3D印刷にアクセスでき、実際には暇な時間もありました(!?!)。汚れの安い28BYJ-48ステッピングモーターに出くわした後、私は自分が何を作ろうとしているのかを正確に知っていました:
可能な限り安価なミニマルなウォールプロッタ。
最初の試み
中国から注文された部品を5週間ほど待った後、プロッターの製作に取り掛かりました。 Arduino Uno、ステッパー、サーボ、バッテリーに合うように、できるだけコンパクトなスケルトンを作成しようとしました。ペニーが落ちる前にOpenSCADで作成した愚かな、つまりあまり賢くないデザインの数を思い出せません。 文字列を交差させる必要があります!
<図>交差するジオメトリを持つことは、壁の正しい位置を維持する上で大きな利点があります。欠点は、垂直軸を中心に回転すると安定性が低下することです。これは、プロッタのコーナーにいくつかのジップタイを追加し、回転を防ぐように調整することで修正されました。
最初のプロッタ ハードウェアは下の写真のようになりました。可能な限り安価な部品を探すために、ナビゲーションと重力のキャンセルにミシン糸を使用することにしました。スレッドは、3Dプリントされたシャーシの上部で、プリントの小さな穴を通り抜けました。 (ほぼ)わかるように、ペンとワイヤーからスレッドをきれいに実行するのは難しいジオメトリです(Arduinoから右ステッパードライバーへのケーブルが写真にないため、以前よりも悪くはありません)。ペンは、プロッタ全体を壁から押し出すRCサーボによって描画面から持ち上げられます。
<図>この最初のプロッタには、Arduinoのプログラムでハードコードされたデザインが書かれていました。プロッタのセットアップは、両側に1メートルの糸を巻き、1メートル離して固定することによって行われました。この設定により、プロッタは電源投入時に座標系を認識し、メモリにパスの描画を開始できます。それはうまくいきましたが、使うのは面倒でした。デザインを変更するときにArduinoを再フラッシュする必要があるのは楽しいことではありませんでした。また、1メートルの視差設定に制限されることは苛立たしいことでした。
ただし、問題領域をよりよく理解するための優れたプラットフォームでした。いくつかの簡単な学習:
- ステッピングモーターはそれほど強力ではありません-スプールが大きすぎました 。
- 文字列の交差からのペンオフセットのヒント-邪悪なぐらつき
これらの問題の良いところは、合理的な加速とブレーキングを実装するために私にいくらかの努力を強いることでした...
進化
プロッタ番号2 (表紙の画像の白いもの)いくつかの改善がありました:
- 小さいスプール。
- スプールをペンの上に移動して、スレッドのルーティングを改善し、振り子の動きを減らしました。
- 電子機器へのアクセスが容易になります。
- プロットするものを保存するためのSDカード。
- アンカーポイント間の距離を可変にする新しいセットアッププロセス。
- すべてをリモートから制御できるIRレシーバー。
SDカードリーダーとIRレシーバーの追加は、私が最初に予想したよりもはるかに簡単でした。それはこれらの「なぜ私が最初からこれをしなかったのか」の1つでした-瞬間。新しいセットアッププロセスは非常にうまく機能し、大小両方を描画するための柔軟性が大幅に向上しました。これまでに行われた最大のプロットは、幅が約2.5メートルでした。
<図>セットアップは、リモコンでプロッタをナビゲートすることによって行われます。最初のマーキング位置 A 、次に位置 B に移動します そしてそれをマークします。手作業での測定を避けるため、左右のミシン糸に20cmのマーカーを付けました。距離 m A から移動しながら、左側のステッパーの歩数を数えるだけで表示されます B へ 。プロッタが d を知ったら 現在の場所は B です。 アンカーポイントの間と下のスペースで、好きな場所に移動してプロットできます。
プロッタ番号3 (下のビデオのオレンジ色のもの)は前任者と非常に似ていますが、いくつかの変更点があります:
- Arduinoのシールドとして構築されたすべての電子機器。
- バッテリーレベルのウォッチドッグ。「一時停止-バッテリーの交換-再開」が可能です。
これはすべて善意でしたが。ステッパードライバーIC:sをシールドに直接配置し、ステッパーに付属のドライバーをスキップすることで、LEDが点滅しなくなりました。見るのは悲しいです。超退屈。また、ArduinoのオンボードLEDはシールドの後ろに隠れており、IRレシーバーが受信しているときに得られる便利な点滅を隠しているため、そのキャリブレーションボタンを押したかどうかがわかりません。バッテリーレベルの測定は良い考えのように思えましたが、実際には、とにかくケーブル電源で長時間のプロットを行うことに常に頼りました。
プロッタ番号4 (素晴らしいものです!)私の兄への誕生日プレゼントとして建てられました。これは、シールドスタイルの電子機器で構築された最も見栄えの良いものですが、点滅しているドライバーがすべての栄光の中で見えるようになっています。見た目だけのためにケーブルが不必要に長く残されていることに注意してください!
<図>プロッタ番号5 (MacGyverエディション)は、実際には、このプロジェクトの説明の概念実証として作成されました。凝った道具がなくても、このようなプロッタを作成できることを示したかったのです。私は自分のガレージに腰を下ろし、それを何から構築できるかを見回しました。タイワイヤー(鉄筋の接続に使用される軟質金属ワイヤー)は、私の最初の明白な選択でした。それを探しているとき、私はダクトストラップのロールを見つけて、時間を節約し、より安定性を与えるだろうと考えました。結束バンドと布テープも私のリストにありましたが、必要ありませんでした。私が本当に理解できなかった唯一のことは、あまり多くの作業をせずにいくつかの良いスプールを作る方法でした。私はコーヒーを飲みに家に戻りました、そしてそこに、ミルク容器のキャップがありました!正直なところ、元のデザインを3D印刷するよりも、プロッタ5のフレームを作成するのにかかる時間は短くなりました。そして、それは私が構築した他のものと同じように(少なくとも)うまく機能します。
<図> <図> <図> <図> <図> <図>
プロッタ番号6
待って、何?どういうわけか私は別のものをたまたま作りました。それを助けることができませんでした。私を悩ませていたいくつかの事柄に対処する必要がありました。ここにいくつかのコメントがあるので、改善もあります。
- プロッタの3Dプリントサイズが大きすぎて遅すぎました。
- プロッタ全体ではなくペンを動かすことは、少なくとも試してみる価値があるように思われました。
- サーボとIRレシーバーを「アナログ」ピンに移動すると、シリアルデバッグが可能になります。 (私ができることを指摘してくれたjrcTexasに感謝します!)
したがって、結果は次のとおりです。
<図> <図> <図> <図> <図>
それで、この新しいものはどれくらいうまく機能しますか?良いことも悪いことも。変化は全体的に良い感じですが、1つの問題があります。ペンはフレームに固定されていないため、プロット時に少し揺れます。これにより、前世代よりも精度が低下します。大きな利点は、デジタルIOピン0-1をクリアして、デバッグに使用できるようにすることです。これは人生をとても楽にします!
また、ステップを逃さない方法を見つけるために、ステッパーでいくつかのストレステストを開始しました:
ストレステストからわかったことは、十分なトルクを得るために少し減速する必要があるということでした。また、プロッターが壁のどこにあるかに応じて、弦の実際の引っ張りを計算しました:
<図>ストレステストをフォローアップして、さまざまなステップシーケンスと電圧がどのように機能するかを把握することもできます。いつか。
プロッタの使用
セットアップとプロットが実際の生活とリアルタイムでどのように機能するかを示すビデオを作成します。
ビデオからわかるように、セットアップは非常に簡単で、ほとんど時間がかかりません。設定の典型的な課題は、適切なアンカーポイントを見つけることです。ホワイトボードの場合、私は主に小さな吸盤を使用し、それに縫い糸のループなどを接着してから、プロッターをペーパークリップで吊るしました。アンカーポイントの重要な側面の1つは、糸を壁にできるだけ近づけて、ペンから壁への圧力を高めることです。
もう1つの注意点は、広いプロットの高い位置にプロットすることです。スレッドを引っ張るのに必要なトルクが大きすぎると、ステッパーがステップを失い始めます。そのため、役立つエンコーダーがないため、プロッターは正確な位置を追跡できなくなります。したがって、一般的なアドバイスは次のとおりです。高く吊るし、低く印刷します。
<図> <図> <図> <図> <図> <図>
プロッタハードウェア
プロッタの構築は非常に簡単で、他のほとんどのArduinoプロジェクトとよく似ています。 Arduino Uno、使用したいコンポーネント、すべてを接続するためのケーブルがあります。
回路図に見られるように、ほとんどすべてのデジタルピンを使用し、次にアナログを使用する場合があります。バッテリーレベルを監視したい。これに関する1つの注意点は、TX / RXを兼ねるピン0-1を使用することになるということです。 揚げ物を避ける 接続したものはすべて切断する必要があります Arduinoをプログラムするとそこにあります!これが、プログラミング時に取り外し可能なシールド上にすべての電子機器を備えた最近のプロッタを構築した理由です。
RCサーボは、あらゆる寸法のほぼすべてのサーボである可能性があります。プロッタを壁から押しのける(または押し出さない)ように、創造性を発揮してマウントする必要があります。
ステッピングモーターとドライバーは他の種類に切り替える可能性がありますが、小さな28BYJ-48のものはとても便利です。ただし、それほど強力ではないので、いつかもっと高速なプロッタを作成したいと思います。モーターの定格は5Vですが、私はこれを喜んで無視し、5〜9Vのすべてを問題なく提供しました。熱くなりますが、まだ揚げていません。
micro-sd-cardモジュールは、SPIインターフェースピンまたはデジタルピン10〜13のいずれかを介してArduinoに接続するのが簡単です。
IRレシーバーTSOP4838も、Arduinoに直接接続してうまく機能します。
私の3番目と4番目のプロッターには、アナログ入力に追加された抵抗分圧器によるバッテリーレベルウォッチドッグがありました。同様の方法でステッパーの温度監視も追加するつもりでした。私のアドバイス、それをスキップしてください。
<図>一度に1つのものをビルドしてテストすることを強くお勧めします。すべてを組み立てるのではなく、グラフィックをSDに配置して、すぐにプロットしたいと考えています。次のことをお勧めします:
- IRレシーバーをテストすることから始めます。 IRRemoteライブラリに付属しているIRRecvDumpの例を使用してください。とにかくリモートキーのコードを記録するためにこれが必要になります。
- サーボをテストします。たとえば、ServoライブラリのSweepの例を使用します。
- SDカードをテストします。 SDライブラリの例を試してみてください。
- ステッパーの制御をテストします。ステッパーライブラリのサンプルを試してみてください。
- 上記の部分に慣れたら、プロッタプログラムをArduinoにフラッシュしてから、すべてのコンポーネントを接続します。 (まだ組み立ててきれいにしないでください)
- Arduinoの電源を入れて、何が起こるかを確認します。すべてが機能する場合、サーボは電源投入直後に少しスイープする必要があります。
- リモートからステッパーを制御してみてください。どのステッパーが残っていて、どれが正しいかを確認してください。 「REEL_IN」ボタンが実際に文字列を引き込み、その逆ではないように、それらが配線されていることを確認してください。ソフトウェアまたはハードウェアのいずれかでピンの順序を逆にする必要がある可能性が50%あります。 (あまり気にする価値はありません。コネクタを回すだけで簡単です。信頼しますが、確認してください!
- 上記のすべての作業に自信が持てたら、すべてをプロッターのような形に組み立てて、壁にぶら下げてみる準備ができています!
ここでは、部品の組み立てに関する非常に詳細な手順は説明しません。ハードウェアを調べて、自分に合ったソリューションを見つけることをお勧めします。上記の「MacGyver」プロッタからインスピレーションを得て、シンプルに保ちましょう。あなたはいつでも後で空想と完璧に行くことができます。以下は、ハードウェアについて話している私の非常に一貫性のないビデオです。また、ソフトウェアに精通し、プロット用のファイルを作成する必要があります。以下を参照してください。
プロッタソフトウェア
すべてのソフトウェアは、GitHubで入手できます。コードの状態についてお詫び申し上げます。これは本当にハックです。時間をかけて片付けをするかもしれませんが、それが起こる前にあなたがそれを見る可能性が非常に高いです。申し訳ありません。
プロッタのソフトウェアは、ほとんど2つのことを行います。
- リモートからのナビゲーションとセットアップを許可する
- SDカードに保存されている.svgファイルの内容を描画します。
Arduino Unoのプログラムメモリは非常に限られているため、コードをメモリに収めるために多くの醜いショートカットが使用されてきました。これは、SDカードがない最初のプロッターに特に当てはまり、グラフィックもArduinoに直接プログラムする必要がありました。 .svgの解析は非常に制限されており、線のあるパス(曲線なし)のみを処理でき、INKSCAPEを使用して出力した.svgの特定の方言である必要があります。
.svgファイルは、SDカードの最上位フォルダーに1.svg、2.svgなどとして保存されます。描画するファイルは、リモコンの対応するボタンを押すことで選択されます。これにより、プロッターにいくつかのお気に入りを用意して、人々のホワイトボードをすばやく充実させることができます。
Arduino IDEは、コントローラーの構築とプログラミングに使用されています。使用される唯一の追加ライブラリは、IRRemote(shirriffによる)です。
プロット可能なファイルの作成
プロットする.svgファイルを作成する方法はおそらく何百もありますが、ここでは1つだけ説明します:
- INKSCAPEを使用する
- 必要なものを描画して、パス「パス->オブジェクトからパス」に変換します
- [ノードによるパスの編集(F2)]を選択します
- すべての個別のパスとノードを選択します。 Ctrl- 2つ 時間
- 「Extensions-> ModifyPath-> FlattenBeziers」で行に変換します
- 「InkscapeSVG」として保存
- シミュレータで実行します。以下を参照してください
シミュレーター
もう一つ!シミュレーターがあります。印刷する前に、シミュレーターで実行したいプロットを実行することが多かれ少なかれ必須です。 .svg-parsingが非常に悪いため、プロッタによって何かが適切に解釈されない可能性が高いため、これは主に必要です。
シミュレーターは、osxまたはlinuxのプロッターコードをコンパイルし、「digitalWrite」呼び出しをstdout(タイムスタンプ、ピン、状態)への出力に置き換えて、視覚化UIにパイプすることで機能します。
シミュレーターは、95%程度で2時間の印刷が無残に台無しになるバグがあった後に作成されました。私は何が起こったのか完全に途方に暮れ、それをデバッグする何らかの方法が必要であることに気づきました。これは、.svg内の1つの数値の小数点以下の桁数がばかげているために発生したfloat解析のバグであることが判明しました。 (ライブラリ関数がメモリに収まらないため、独自の解析を行いました)。シミュレーターを作らざるを得なかったので、それは大きなバグでした。
開発中にシミュレーターを使用すると、非常に役立ちます。リアルタイムよりもはるかに高速に実行できるため、非常に便利です。また、リアルタイムで実行したときにプロットが実際にかかる時間を出力します。シミュレータコードの横に、その使用方法に関するreadmeがあります。
将来の改善
これが私の頭の中で改善できることのリストです:
- プロッタでparsing.svgを停止し、コンピュータに実際のパーサーをインストールして、代わりにプロッタに適した形式を作成します。
- より良いブレーキング、現在のソフトウェアは1行のセグメントのみを先読みしますが、わずかな回転が鋭いものに変わると少なすぎる場合があります。
- ステップを逃したときに迷子にならないようにするためのエンコーダーまたはある種のフィードバック..
- 適切なクリーンなソフトウェアを作成します。
- WiFi対応のコントローラーを使用し、リモートの代わりに電話を使用します。
最後の言葉
ご存知かもしれませんが、私はこのプロジェクトにかなりの時間を費やしましたが、ほとんどはずっと前のことです。遊んでみるのは今でも楽しいと思います。何を改善するか、新しいバリエーション、新しい壁を飾るなど、たくさんのアイデアがあります。しかし、私には時間がありません。家族や仕事など、他にもたくさんのプロジェクトがあります。
私が本当に望んでいるのは、インターネット上の優秀な人々の何人かがこれを読んで何かを得て、あなた自身のプロジェクトのインスピレーションを得ればです。また、独自のプロッタを作成して機能させることができれば幸いです。
ミニマルなプロッターを作ることに成功したと思いますが、自分の目標として設定していたので、なんとか10ドル以下のコストを出すことができませんでした。しかし、部品が安くなり続けるにつれて、おそらく1年かそこらでそこにあるでしょう...
ああ、もう一つ。スパゲッティコードで私を殺さないでください。共有するために書かれたことは一度もありませんでした。当時、私は壁に絵を描くのに忙しく、コードについてあまり気にすることができませんでした。とにかく共有することにしたので、代わりにそれを喜んでください。
ボンボヤージュ、
フレドリク
コード
厳しい
ウォールプロッタStringentのコード、ドキュメント、CAD図面。https://github.com/snebragd/stringent カスタムパーツとエンクロージャー
ベースの新しいstlをアップロードしましたが、古いものはどういうわけか壊れていました。プロッタの新しいベース。フットプリントが小さい->印刷する量が少ない。サーボアクションは、プロッタを壁から押し出すのではなく、ペンを移動することです。 回路図
シンプルな電子回路図 製造プロセス