這是一款基於 ESP32 的 DIY 分瓣式顯示器,經過優化,可輕鬆在家中小批量組裝,但能夠擴展到價格實惠的大型顯示器。
最新自動產生(未經測試!)的工件
說明:v2 組裝指南
模組尺寸:
最新自動產生(未經測試!)的工件
筆記
對於小型顯示器(最多 3 個模組),您可以跳過自訂控制器板並使用插入 Arduino Uno 的現成 ULN2003A 驅動程式模組。這在 wiki 中有部分記錄,但可能需要一些額外的修改才能使其正常工作。需要協助:如果您想協助改進這些說明,請在 Discord 伺服器中聯繫,謝謝!
「Chainlink」電子系統旨在支援長鏈驅動板,以控制中型/大型顯示器(最多 100 多個分瓣模組)。由於其簡單的 BOM 和表面貼裝組件,它的設計還可以輕鬆、廉價地訂購預組裝或自行組裝,尤其是大量生產。
要建立顯示器,您需要 3 種不同的電子設備:
每個模組都需要一個霍爾效應感測器來進行啟動校準和故障監控。
v0.7 的舊感測器和舊雷射切割硬體可以在標記的感測器版本中找到。
這些較舊的感測器與 v2 雷射切割硬體不相容。
適用於 v2 雷射切割硬體的新感測器 - 這些感測器使用表面貼裝元件,並針對 JLCPCB 的 PCB 組裝進行了最佳化。這些新感測器與 v0.7 和較舊的雷射切割硬體不相容。
6 個感應器套裝大部分在 Bezek Labs 商店中組裝,並配有您需要的直角排針和磁鐵。採購支持該項目的持續開發。
最新自動產生(未經測試!)的工件
主要特點:
Chainlink 驅動板大部分在 Bezek Labs 商店中組裝,並配有您需要的附加連接器和帶狀電纜。採購支持該項目的持續開發。
有關建立和使用 Chainlink 驅動程式的更多信息,請參閱 Chainlink 驅動程式使用者指南。
或者,如果您想直接從晶圓廠訂購這些產品,則該設計針對 JLCPCB 的組裝進行了最佳化,並且會自動產生用於訂購組裝PCB 的檔案。或者,如果您想自己組裝該板而不是支付組裝費用,您可以查看互動式 BOM/佈局工具
根據 JLCPCB 的可用庫存,您可能需要手動修改 BOM 檔案以使用替代元件,或使用export_jlcpcb.py
自行重新產生檔案並指定一個或多個LCSC_ALT_*
欄位名稱以使用預選的替代零件編號。請參閱示意圖以了解可用的預選替代方案(檢查符號的屬性/欄位)。
最新自動產生(未經測試!)的工件
Chainlink Buddy [T-Display] 是將 T-Display ESP32 板(推薦的微控制器)連接到 Chainlink 驅動程式鏈的便捷方式。
主要特點:
Chainlink Buddy [T-Display] 板可在 Bezek Labs 商店購買,並附帶您需要的其他連接器。採購支持該項目的持續開發。
最新自動產生(未經測試!)的工件
Chainlink Buddy [麵包板] 可以輕鬆地將 Chainlink 驅動程式連接到麵包板以進行原型設計。您可以使用 5 根杜邦線並有一個凌亂的老鼠巢,或者您可以使用單條帶狀電纜和這個光滑的分線板。
Chainlink Buddy [麵包板] 板可在 Bezek Labs 商店購買,並附帶您需要的其他連接器。採購支持該項目的持續開發。
最新自動產生(未經測試!)的工件
對於較大的顯示器,您應該格外小心,以使硬體對潛在故障更加穩健。 Chainlink Base 是一種實驗性(但不受支援)控制器設計,增加了一些附加功能。這已經過測試並且似乎可以工作,但不建議一般使用。
Chainlink Base PCB 是 Chainlink Buddy 的可選替代品,專為特別大的顯示器而設計。它託管 ESP32,並添加了額外的連接選項(UART 和 RS485 串行終端)和配電(驅動板多個「區域」的獨立監控電源通道)。
主要特點:
最新自動產生(未經測試!)的工件
經典驅動板已棄用且不受支援。
Classic 控制器板設計為像擴充板一樣插入 Arduino,並且可以控制 4 個步進馬達。最多 3 個驅動板可以連結在一起,由單一 Arduino 控制最多 12 個模組。
此驅動器使用 2 個 MIC5842 低側移位暫存器驅動器(內建瞬態抑制二極體)來控制電機,並使用 74HC165 移位暫存器來讀取 4 個霍爾效應磁性原位感測器的資料。有可選的 WS2812B RGB LED,可用於指示 4 個通道中每個通道的狀態。
如果您想列印自己的襟翼,或切割自訂乙烯基字母貼紙,該專案包含一個腳本來產生高度可配置的向量設計檔案:
TODO:完成記錄並渲染一些範例影像...
如果您想在多個模組之間共享一個正面(而不是每個模組都有自己的正面),則該儲存庫包含一個腳本來產生用於雷射切割或 CNC 銑削/銑削的組合前面板。
您可以修改:
對於 CNC 切割,該腳本支援渲染針對較厚材料(例如 6mm MDF)優化的向量文件,其中只有螺栓孔將貫穿切割。在此模式下,頂部/底部外殼部件的插槽可以切割為約 4 毫米的口袋,因此從正面看不到它們。此腳本會自動為這些口袋切口產生狗骨形狀。
TODO:完成記錄並渲染一些範例影像...
該項目還包括許多可選的 3D 列印設計,以使組裝更容易。這些包括:
所有這些設計都是參數化的,並且可以在 OpenSCAD 中進行自訂。要列印它們,請在 OpenSCAD 中開啟相關文件,然後使用File -> Export -> Export as STL
將設計渲染為切片器的 STL 檔案。
除非您計劃製造數十到數百個 Chainlink 驅動器板,否則這不太可能有用,但 Chainlink 驅動器測試儀是 Chainlink 驅動器板的完整測試台,因為它們是由 PCBA 製造商組裝的。
目前該項目正在積極開發中。
主要特點:
最新自動產生(未經測試!)的工件
驅動程式韌體是使用 PlatformIO 和 Arduino 框架編寫的,可從firmware/
取得。
該韌體實現了一個閉環控制器,該控制器接受透過 USB 串行輸入的字母,並使用預先計算的加速斜坡驅動步進馬達以實現平穩控制。韌體會在啟動時使用霍爾效應磁性感測器自動校準閥芯位置,並且如果檢測到閥芯位置不同步,則會自動重新校準。如果預計命令旋轉將使閥芯經過「原位」位置,則它將確認感測器觸發既不太早也不太晚;否則,它將搜尋“起始”位置以保持同步,然後再繼續尋找所需的字母。
為了讓電腦與 splitflap 進行通信,它顯示為 USB 串行設備。
但是,嚴格禁止使用 Arduino 的Serial
,而是提供了logger
抽象來發送基本文字偵錯日誌。其他資料以結構化方式傳輸,如下所述。
這使得透過串列傳輸的資料格式具有靈活性,事實上 splitflap 提供了 2 種不同的串列模式,用於不同的目的。
預設情況下,它以“純文字”模式啟動,這是開發人員友好的,如果您打開了連接了 splitflap 的串行監視器,您可能會熟悉:
{"type":"init", "num_modules":6}
然而,這對於以程式設計方式配置或從 splitflap 接收更新來說並不是很好,因此韌體提供了一個使用基於 Google 的 Protobuf 標準的二進位協定的程式介面。
基於 protobuf 的二進位串列模式是一種緊湊且靈活的方式,可將結構化資料從主機傳輸到 splitflap,反之亦然。
與 JSON 等其他編碼機制相比,protobuf 具有多種優勢:
這就是 splitflap 預設為純文字模式的原因,以使基本驗證/調試更容易。
Protobuf 訊息被編碼為其二進位有線格式並附加 CRC32 校驗和。然後,整個二進位字串被 COBS 編碼到資料包中,並在透過串列發送時由 0 (NULL) 位元組分隔/成幀。這提供了一個帶有完整性檢查的基於資料包的基本介面(而不是串行連接的原始的、基於流的介面)。
splitflap 在收到 0 位元組時會自動切換到二進位 protobuf 模式。
顯示器可以由透過 USB 串列連接到 ESP32 的電腦控制。如果您已經建立了顯示器並想要對其進行測試,請查看此處基於網路的演示,它將使用 USB 連接到您的顯示器 - 無需應用程式/安裝!
此韌體支援明文串列模式(預設為啟用)以方便測試,以及軟體庫使用的基於 protobuf 的二進位模式以增強程式控制和回饋。
您可以在software/chainlink
資料夾中找到範例 Typescript 和 Python 程式庫。
希望在本地計算機上進行一些修改或嘗試該設計?直接跳進去!請注意,所有腳本和自動化都是為 Ubuntu 開發的。 Mac OS 支援已計劃,但目前尚未實現(但如果您想提供協助,請隨時開啟 PR!)。
主要設計文件為3d/splitflap.scad
您需要最新版本的 OpenSCAD(例如 2015-03),可能需要透過 PPA 安裝: sudo add-apt-repository ppa:openscad/releases
一般來說,諸如外殼側面或線軸組件之類的實體物件是根據 2D 圖元構建的,然後擠壓到適當的厚度以進行 3D 渲染,而不是使用 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
一次渲染子元素。它還向每個形狀添加材料,以解決將被雷射切除的切口。
generate_2d.py
腳本與projection_renderer
模組進行交互,首先使用它來確定要渲染的子元件的數量,然後執行OpenSCAD 將每個元件匯出到SVG 檔案。它對 SVG 輸出進行一些後處理(特別是在文件尺寸中添加“mm”),然後將所有組件合併到單個combined.svg
輸出中。
產生combined.svg
檔案後,您需要仔細檢查是否存在由多個相鄰部件共享的任何冗餘切割線,以節省切割時的時間/成本。它們應該會自動檢測到(並在上面的渲染中以紅色突出顯示),但仔細檢查也沒什麼壞處。在 Inkscape 中,選擇「按節點編輯路徑」工具並選擇要刪除的邊 - 端點應變為藍色。然後點擊“刪除兩個非端點節點之間的線段”,並對所有其他冗餘切割線重複此操作。
透過執行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
變量,以多種配置(不透明外殼、透明外殼、無外殼和無襟翼)渲染設計。
此設計可以渲染為一系列 STL 檔案(模型中使用的每種顏色一個),以便在基於 Web 的互動式 3D 檢視器中顯示。與用於渲染雷射切割各個組件的projection_renderer
類似,ColoredStlExporter檢測模型中使用的所有顏色並將它們一一渲染為單獨的STL文件,以及將每個STL文件映射到其RGB顏色的清單。使用 Three.js 載入 STL 檔案和清單,以使用 WebGL 在網站上顯示互動式模型。有關導出和 Three.js 渲染器如何工作的更多詳細信息,請參閱此部落格文章:OpenSCAD 渲染技巧,第 3 部分:Web 檢視器。
所有電子產品均使用 KiCad 5 開發。
上面的機械和電氣設計渲染圖和連結會在每次提交時自動更新為最新渲染圖。有關其工作原理的更多詳細信息,請參閱此部落格文章:使用 Travis CI 進行自動化 KiCad、OpenSCAD 渲染。
透過執行electronics/scripts/generate_svg.py file.kicad_pcb
,可以將 PCB 佈局渲染為 svg 或 png(如上所示)。它使用 KiCad 的 Python 腳本 API 將多個圖層渲染到各個 svg 文件,操作它們以應用顏色和不透明度設置,然後將它們合併到單個 svg。有關更多詳細信息,請參閱此部落格文章:編寫 KiCad Pcbnew 匯出腳本。
為了審查設計,可以透過執行electronics/scripts/generate_pdf.py file.kicad_pcb
來產生包含銅、網版印刷和鑽孔資訊的 pdf 封包。
可以透過執行electronics/scripts/generate_gerber.py file.kicad_pcb
匯出用於製造的 Gerber 檔案。這會產生具有 Seeed Studio 命名約定的 gerber 檔案和 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.