これは DIY ESP32 ベースのスプリット フラップ ディスプレイで、少量であれば家庭で簡単に組み立てられるように最適化されていますが、手頃な価格の大型ディスプレイにスケールアップできます。
最新の自動生成された (テストされていない) アーティファクト
手順: v2 組み立てガイド
モジュールの寸法:
最新の自動生成された (テストされていない) アーティファクト
注記
小型ディスプレイ (最大 3 モジュール) の場合は、カスタム コントローラー ボードをスキップして、Arduino Uno に接続された既製の ULN2003A ドライバー モジュールを使用できます。これは wiki に部分的に記載されていますが、機能させるには追加の工夫が必要になる場合があります。助けを求めています: これらの手順の改善に協力したい場合は、Discord サーバーに連絡してください。ありがとう!
「Chainlink」電子システムは、中型/大型ディスプレイ (最大 100 個以上のスプリット フラップ モジュール) を制御するドライバー ボードの長いチェーンをサポートするように設計されています。また、シンプルな BOM と表面実装コンポーネントにより、特に大量の場合、事前に組み立てられたものを注文したり、自分で組み立てたりすることが簡単かつ安価になるように設計されています。
ディスプレイを構築するには、3 つの異なる電子機器が必要です。
各モジュールには、起動時のキャリブレーションと障害監視のためにホール効果センサーが必要です。
v0.7 および古いレーザー カット ハードウェア用の古いセンサーは、タグ付きセンサー リリースで見つけることができます。
これらの古いセンサーは、v2 レーザー カット ハードウェアと互換性がありません。
v2 レーザーカット ハードウェア用の新しいセンサー - これらは表面実装コンポーネントを使用しており、JLCPCB での PCB アセンブリ用に最適化されています。これらの新しいセンサーは、v0.7 以前のレーザー カット ハードウェアと互換性がありません。
6 個のセンサーのパックはほとんど組み立てられた状態で Bezek Labs ストアで入手でき、必要な直角ピン ヘッダーと磁石が付属しています。購入すると、このプロジェクトの継続的な開発がサポートされます。
最新の自動生成された (テストされていない) アーティファクト
主な特徴:
Chainlink Driver ボードは、Bezek Labs ストアでほとんど組み立てられた状態で入手でき、必要な追加のコネクタとリボン ケーブルが付属しています。購入すると、このプロジェクトの継続的な開発がサポートされます。
Chainlink ドライバーの構築と使用の詳細については、Chainlink Driver User Guide を参照してください。
または、これらを工場に直接注文したい場合は、この設計は JLCPCB でのアセンブリ用に最適化されており、そこで組み立てられたPCB を注文するためのファイルが自動的に生成されます。または、組み立て費用を支払う代わりにこのボードを自分で組み立てたい場合は、インタラクティブな BOM/配置ツールを表示できます。
JLCPCB で利用可能な在庫に応じて、代替コンポーネントを使用するように BOM ファイルを手動で変更するか、 export_jlcpcb.py
使用して 1 つ以上のLCSC_ALT_*
フィールド名を指定して、事前に選択された代替部品番号を使用するようにファイルを自分で再生成する必要がある場合があります。利用可能な事前選択された代替案については、回路図を参照してください (シンボルのプロパティ/フィールドを確認してください)。
最新の自動生成された (テストされていない) アーティファクト
Chainlink Buddy [T-Display] は、T-Display ESP32 ボード (推奨マイクロコントローラー) を Chainlink ドライバーのチェーンに接続する便利な方法です。
主な特徴:
Chainlink Buddy [T-Display] ボードは Bezek Labs ストアで入手でき、必要な追加コネクタが付属しています。購入すると、このプロジェクトの継続的な開発がサポートされます。
最新の自動生成された (テストされていない) アーティファクト
Chainlink Buddy [ブレッドボード] を使用すると、プロトタイピング用にチェーンリンク ドライバーをブレッドボードに簡単に接続できます。 5 本のデュポン ワイヤーを使用して乱雑なネズミの巣を作ることもできますし、1 本のリボン ケーブルとこの滑らかなブレークアウト ボードを使用することもできます。
Chainlink Buddy [ブレッドボード] ボードは Bezek Labs ストアで入手でき、必要な追加コネクタが付属しています。購入すると、このプロジェクトの継続的な開発がサポートされます。
最新の自動生成された (テストされていない) アーティファクト
大型のディスプレイの場合は、潜在的な障害に対するハードウェアの堅牢性を高めるために、さらに注意を払う必要があります。 Chainlink Base は、追加機能を追加する実験的な (ただしサポートされていない) コントローラー設計です。これはテスト済みで動作するようですが、一般的な使用には推奨されません。
Chainlink Base PCB は、Chainlink Buddy のオプションの代替品で、特に大型ディスプレイ用に設計されています。 ESP32 をホストし、追加の接続オプション (UART および RS485 シリアル用の端子) と電力分配 (ドライバー ボードの複数の「ゾーン」で独立して監視される電力チャネル) を追加します。
主な特徴:
最新の自動生成された (テストされていない) アーティファクト
Classic ドライバー ボードは非推奨であり、サポートされていません。
Classic コントローラー ボードは、シールドのように Arduino に接続するように設計されており、4 つのステッピング モーターを制御できます。最大 3 つのドライバー ボードをチェーン接続して、単一の Arduino で最大 12 個のモジュールを制御できます。
このドライバーは、過渡現象抑制ダイオードを内蔵した 2 つの MIC5842 ローサイド シフト レジスタ ドライバーを使用してモーターを制御し、74HC165 シフト レジスタを使用して 4 つのホール効果磁気ホーム ポジション センサーから読み取ります。オプションの WS2812B RGB LED を使用して、4 つのチャネルそれぞれのステータスを表示できます。
独自のフラップを印刷したり、カスタムのビニール レター ステッカーをカットしたりする場合、プロジェクトには、非常に構成可能なベクター デザイン ファイルを生成するスクリプトが含まれています。
TODO: これを文書化して、いくつかのサンプル画像をレンダリングします...
(各モジュールが独自の前面を持つのではなく) 複数のモジュール間で 1 つの前面を共有したい場合、リポジトリには、レーザー切断または CNC フライス加工/ルーティング用に結合されたフロント パネルを生成するスクリプトが含まれています。
以下を変更できます。
CNC 切断の場合、スクリプトは、ボルト穴のみがスルーカットされる厚い材料 (6 mm MDF など) に最適化されたベクター ファイルのレンダリングをサポートします。このモードでは、上部/下部エンクロージャー部品のスロットを最大 4 mm のポケットとしてカットできるため、前面からは見えなくなります。スクリプトは、これらのポケット カットのドッグボーン形状を自動的に生成します。
TODO: これを文書化して、いくつかのサンプル画像をレンダリングします...
このプロジェクトには、組み立てを容易にするためのオプションの 3D プリント デザインも多数含まれています。これらには次のものが含まれます。
これらの設計はすべてパラメトリックであり、OpenSCAD 内でカスタマイズ可能です。印刷するには、OpenSCAD で関連ファイルを開き、 File -> Export -> Export as STL
を使用して、デザインをスライサー用の STL ファイルとしてレンダリングします。
数十から数百のチェーンリンク ドライバー ボードを製造する予定がない限り、これは役に立ちそうにありませんが、チェーンリンク ドライバー テスターは、PCBA 製造業者によって組み立てられた状態で提供されるチェーンリンク ドライバー ボードの完全なテストベッドです。
これは現在非常に活発に開発中です。
主な特徴:
最新の自動生成された (テストされていない) アーティファクト
ドライバー ファームウェアは、Arduino フレームワークで PlatformIO を使用して記述されており、 firmware/
で入手できます。
ファームウェアは、USB シリアル経由で文字を入力として受け入れ、スムーズな制御のために事前に計算された加速ランプを使用してステッピング モーターを駆動する閉ループ コントローラーを実装しています。ファームウェアは、ホール効果磁気センサーを使用して起動時にスプール位置を自動的に校正し、スプール位置が同期していないことを検出すると、自動的に再校正します。指令された回転によってスプールが「ホーム」位置を超えることが予想される場合、センサーが早すぎたり遅すぎたりしていないことが確認されます。それ以外の場合は、目的の文字に進む前に、同期するための「ホーム」位置が検索されます。
コンピュータがスプリットフラップと通信するために、コンピュータは USB シリアル デバイスとして表示されます。
ただし、Arduino のSerial
の使用は厳しく禁止されており、代わりに基本的なテキスト デバッグ ログを送信するためのlogger
抽象化が提供されています。他のデータは、以下で説明する構造化された方法で転送されます。
これにより、シリアル経由で転送されるデータのフォーマットに柔軟性が得られ、実際、スプリットフラップは、異なる目的に対応する 2 つの異なるシリアル モードを提供します。
デフォルトでは、「プレーンテキスト」モードで開始します。これは開発者にとって使いやすく、スプリットフラップが接続されたシリアル モニターを開いたことがある人ならおそらく馴染みがあるでしょう。
{"type":"init", "num_modules":6}
ただし、これはプログラムによる構成やスプリットフラップからのアップデートの受信には適していないため、代わりにファームウェアは Google の Protobuf 標準に基づくバイナリ プロトコルを使用したプログラム インターフェイスを提供します。
protobuf ベースのバイナリ シリアル モードは、構造化データをホスト コンピュータからスプリットフラップに、またはその逆に転送するためのコンパクトで柔軟な方法です。
protobuf には、JSON などの他のエンコード メカニズムに比べていくつかの利点があります。
これが、基本的な検証/デバッグを容易にするために、splitflap がデフォルトでプレーンテキスト モードになっている理由です。
Protobuf メッセージはバイナリ ワイヤ形式にエンコードされ、CRC32 チェックサムが追加されます。次に、そのバイナリ文字列全体が COBS エンコードされてパケットになり、シリアルで送信されるときに 0 (NULL) バイトで区切られ/フレーム化されます。これにより、(シリアル接続の生のストリームベースのインターフェイスではなく) 整合性チェックを備えた基本的なパケットベースのインターフェイスが提供されます。
スプリットフラップは、0 バイトを受信すると、自動的にバイナリ protobuf モードに切り替わります。
ディスプレイは、USB シリアル経由で ESP32 に接続されたコンピュータによって制御できます。ディスプレイを構築し、それをテストしたい場合は、ここで Web ベースのデモをチェックしてください。このデモは USB を使用してディスプレイに接続します。アプリケーションやインストールは必要ありません。
ファームウェアは、テストを容易にするためのプレーンテキスト シリアル モード (デフォルトで有効)、およびプログラムによる制御とフィードバックを強化するためにソフトウェア ライブラリによって使用される protobuf ベースのバイナリ モードをサポートしています。
Typescript ライブラリと Python ライブラリのサンプルは、 software/chainlink
フォルダーにあります。
ローカル マシン上でデザインを変更したり、試してみたりしたいですか?すぐに飛び込んでください!すべてのスクリプトと自動化は Ubuntu 用に開発されていることに注意してください。 Mac OS のサポートは計画されていますが、現時点では実装されていません (ただし、サポートしたい場合はお気軽に PR を開いてください!)。
メインのデザイン ファイルは3d/splitflap.scad
です。
OpenSCAD の最新バージョン (2015-03 など) が必要です。これは、PPA を通じてインストールする必要がある場合があります: sudo add-apt-repository ppa:openscad/releases
一般に、エンクロージャの側面やスプール コンポーネントなどのソリッド オブジェクトは、3D プリミティブを使用するのではなく、2D プリミティブから構築され、3D レンダリングに適切な厚さに押し出されます。これにより、表現力を損なうことなくデザインが簡素化されます。いずれにせよ、垂直レーザーカットビームでは、Z 寸法が変化するカットはできません。
設計はパラメータ化されており、多くの値を調整することができますが、現在、無効なパラメータまたはパラメータの組み合わせに対するエラー チェックは行われないことに注意してください。パラメータを変更した場合は、必ず設計を検証してください。たとえば、ほとんどのデザインは変更されたnum_modules
値に合わせて調整されますが、特定の値では、一部の要素が他の要素と交差したり、予想される寸法を超えてはみ出したりする可能性があります。
3d/scripts/generate_2d.py [--panelize <number>]
実行すると、設計をレーザー切断用に 2D にレンダリングでき、これは3d/build/laser_parts/combined.svg
に出力されます。オプションの--panelize
引数を使用すると、一括レーザー切断のために、単一の SVG でモジュールのパネルをレンダリングできます。
内部的には、デザインはprojection_renderer
モジュール ( 3d/projection_renderer.scad
) を使用します。これはレンダリングする子要素のリストを受け取り、 render_index
に応じて一度に 1 つの子をレンダリングします。また、レーザーで切り取られる切り溝を考慮して、各形状に材料を追加します。
generate_2d.py
スクリプトは、まずprojection_renderer
モジュールを使用してレンダリングするサブコンポーネントの数を決定し、次に OpenSCAD を実行して各コンポーネントを SVG ファイルにエクスポートします。 SVG 出力に対して後処理を実行し (特に、ドキュメントの寸法に「mm」を追加します)、すべてのコンポーネントを単一のcombined.svg
出力に結合します。
combined.svg
ファイルが生成されたら、切断時の時間とコストを節約するために、複数の隣接する部分で共有される冗長な切断線がないかを再確認する必要があります。これらは自動的に検出されるはずですが (上のレンダリングでは赤で強調表示されています)、再確認しても問題ありません。 Inkscape で、[ノードによるパスの編集] ツールを選択し、削除するエッジを選択します。エンドポイントは青色に変わります。次に、[2 つの非エンドポイント ノード間のセグメントを削除] をクリックし、他のすべての冗長カット ラインに対してこれを繰り返します。
3d/scripts/generate_gif.py
を実行すると、デザインを回転 3D アニメーション GIF (上記参照) にレンダリングでき、 3d/build/animation/animation.gif
に出力されます。
generate_gif.py
スクリプトは、複数の OpenSCAD インスタンスを並行して実行して、デザインを 360 度から個々の PNG フレームにレンダリングし、最終的な GIF アニメーションに結合します。アニメーションの構築の一環として、 generate_gif.py
render_enclosure
変数とrender_flaps
変数を設定することにより、複数の構成 (不透明な囲い、シースルーの囲い、囲いなし、フラップなし) でデザインをレンダリングします。
デザインは、インタラクティブな Web ベースの 3D ビューアで表示するために、一連の STL ファイル (モデルで使用されている色ごとに 1 つ) にレンダリングできます。レーザー切断用に個々のコンポーネントをレンダリングするために使用されるprojection_renderer
と同様に、ColoredStlExporter は、モデルで使用されているすべての色を検出し、各 STL ファイルをその RGB カラーにマップするマニフェストとともに、それらを 1 つずつ個別の STL ファイルにレンダリングします。 。 STL ファイルとマニフェストは、WebGL を使用して Web サイト上に対話型モデルを表示するために、three.js を使用してロードされます。エクスポートとthree.jsレンダラの動作の詳細については、このブログ投稿「OpenSCADレンダリングのコツ、パート3:Webビューア」を参照してください。
すべての電子機器は KiCad 5 を使用して開発されています。パネル化は KiKit によって提供され、ガーバー/BOM 生成は KiBot によって提供されます。
上記の機械設計および電気設計のレンダリングとリンクは、コミットごとに最新のレンダリングで自動的に更新されます。その仕組みの詳細については、次のブログ投稿「Travis CI を使用した自動化された KiCad、OpenSCAD レンダリング」を参照してください。
electronics/scripts/generate_svg.py file.kicad_pcb
を実行すると、PCB レイアウトを svg または png (上記を参照) にレンダリングできます。これは、KiCad の Python スクリプト API を使用して、複数のレイヤーを個別の svg ファイルにレンダリングし、それらを操作して色と不透明度の設定を適用し、それらを 1 つの svg にマージします。詳細については、ブログ投稿「KiCad Pcbnew エクスポートのスクリプト作成」を参照してください。
設計をレビューするには、 electronics/scripts/generate_pdf.py file.kicad_pcb
実行して、銅線、シルクスクリーン、およびドリル情報を含む PDF パケットを生成できます。
製造用のガーバー ファイルはelectronics/scripts/generate_gerber.py file.kicad_pcb
実行することでエクスポートできます。これにより、Seeed Studio の命名規則に従ってガーバー ファイルと Excellon ドリル ファイルが生成され、製造用に送信できる.zip
が生成されます。
EESchema は簡単にスクリプト化できないため、回路図electronics/scripts/export_schematic.py
をエクスポートするには、X 仮想フレーム バッファ (Xvfb) を開始し、その仮想ディスプレイ内でeeschema
GUI を開き、ハードコードされた一連のキー押下をxdotool
経由で送信します。 GUI を操作し、ダイアログをクリックして進みます。これは非常に壊れやすいですが、今のところ問題なく動作しているようです。詳細については、ブログ投稿「UI オートメーションを使用して KiCad 回路図をエクスポートする」を参照してください。
このプロジェクトに関するご意見やご質問をお待ちしております。また、フィードバックがあれば喜んでこれらのデザインに反映させていただきます。気軽に (そして奨励して) GitHub の問題を開いたり、私に直接メールしたり、Twitter で連絡したり、オープンソース開発に参加したりして、チャットを続けて一緒に構築しましょう!
このプロジェクトは、Apache v2 に基づいてライセンスされています (LICENSE.txt を参照)。
Copyright 2015-2024 Scott Bezek and the splitflap contributors
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.