Dies ist ein DIY-ESP32-basiertes Split-Flap-Display, das für den einfachen Zusammenbau zu Hause in kleinen Mengen optimiert ist, aber auf große, erschwingliche Displays skaliert werden kann.
Neueste automatisch generierte (ungetestete!) Artefakte
Anleitung: V2-Montageanleitung
Modulabmessungen:
Neueste automatisch generierte (ungetestete!) Artefakte
Notiz
Bei kleinen Displays (bis zu 3 Module) können Sie die benutzerdefinierten Controller-Boards überspringen und handelsübliche ULN2003A-Treibermodule verwenden, die an einen Arduino Uno angeschlossen sind. Dies ist teilweise im Wiki dokumentiert, erfordert jedoch möglicherweise einige zusätzliche Anpassungen, damit es funktioniert. Hilfe gesucht: Wenn Sie helfen möchten, diese Anweisungen zu verbessern, wenden Sie sich bitte an den Discord-Server, danke!
Das „Chainlink“-Elektroniksystem ist darauf ausgelegt, lange Ketten von Treiberplatinen zur Steuerung mittlerer/großer Displays (bis zu 100+ Split-Flap-Module) zu unterstützen. Aufgrund der einfachen Stückliste und der oberflächenmontierbaren Komponenten ist es außerdem so konzipiert, dass es einfach und kostengünstig vormontiert bestellt oder selbst gebaut werden kann, insbesondere bei größeren Stückzahlen.
Um ein Display zu bauen, benötigen Sie drei verschiedene Elektronikgeräte:
Jedes Modul benötigt einen Hall-Effekt-Sensor zur Startkalibrierung und Fehlerüberwachung.
Ältere Sensoren für Version 0.7 und ältere lasergeschnittene Hardware finden Sie in der getaggten Sensorversion.
Diese älteren Sensoren sind nicht mit lasergeschnittener Hardware der Version 2 kompatibel.
Neue Sensoren für die lasergeschnittene Hardware v2 – diese verwenden oberflächenmontierte Komponenten und sind für die Leiterplattenmontage bei JLCPCB optimiert. Diese neuen Sensoren sind nicht mit v0.7 und älterer lasergeschnittener Hardware kompatibel.
Packungen mit 6 Sensoren sind größtenteils fertig montiert im Bezek Labs Store erhältlich und werden mit den rechtwinkligen Stiftleisten und Magneten geliefert, die Sie benötigen. Käufe unterstützen die weitere Entwicklung dieses Projekts.
Neueste automatisch generierte (ungetestete!) Artefakte
Hauptmerkmale:
Chainlink-Treiberplatinen sind größtenteils vormontiert im Bezek Labs-Shop erhältlich und werden mit den zusätzlichen Anschlüssen und Flachbandkabeln geliefert, die Sie benötigen. Käufe unterstützen die weitere Entwicklung dieses Projekts.
Weitere Informationen zum Erstellen und Verwenden von Chainlink-Treibern finden Sie im Chainlink-Treiber-Benutzerhandbuch.
Wenn Sie diese direkt bei einer Fabrik bestellen möchten, ist dieses Design für die Montage bei JLCPCB optimiert und es werden automatisch Dateien für die Bestellung bestückter Leiterplatten dort generiert. Oder wenn Sie diese Platine selbst zusammenbauen möchten, anstatt für die Montage zu bezahlen, können Sie sich das interaktive Stücklisten-/Platzierungstool ansehen
Abhängig vom verfügbaren Lagerbestand bei JLCPCB müssen Sie möglicherweise die Stücklistendatei manuell ändern, um alternative Komponenten zu verwenden, oder die Dateien selbst neu generieren, indem Sie export_jlcpcb.py
verwenden und einen oder mehrere LCSC_ALT_*
Feldnamen angeben, um eine vorab ausgewählte alternative Teilenummer zu verwenden. Verfügbare vorab ausgewählte Alternativen finden Sie im Schaltplan (überprüfen Sie die Eigenschaften/Felder des Symbols).
Neueste automatisch generierte (ungetestete!) Artefakte
Der Chainlink Buddy [T-Display] ist eine praktische Möglichkeit, ein T-Display ESP32-Board (empfohlener Mikrocontroller) an eine Kette von Chainlink-Treibern anzuschließen.
Hauptmerkmale:
Chainlink Buddy [T-Display]-Boards sind im Bezek Labs Store erhältlich und werden mit den zusätzlichen Anschlüssen geliefert, die Sie benötigen. Käufe unterstützen die weitere Entwicklung dieses Projekts.
Neueste automatisch generierte (ungetestete!) Artefakte
Mit dem Chainlink Buddy [Breadboard] können Sie einen Chainlink-Treiber zum Prototyping ganz einfach an ein Breadboard anschließen. Sie könnten 5 Dupont-Drähte verwenden und ein unordentliches Rattennest haben, oder Sie könnten ein einzelnes Flachbandkabel und dieses glatte Breakout-Board verwenden.
Chainlink Buddy [Breadboard]-Boards sind im Bezek Labs Store erhältlich und werden mit den zusätzlichen Anschlüssen geliefert, die Sie benötigen. Käufe unterstützen die weitere Entwicklung dieses Projekts.
Neueste automatisch generierte (ungetestete!) Artefakte
Bei größeren Displays sollten Sie zusätzlich darauf achten, die Hardware robuster gegenüber möglichen Fehlern zu machen. Die Chainlink Base ist ein experimentelles (aber nicht unterstütztes) Controller-Design, das einige zusätzliche Funktionen hinzufügt. Dies wurde getestet und scheint zu funktionieren, wird jedoch nicht für den allgemeinen Gebrauch empfohlen.
Das Chainlink Base PCB ist eine optionale Alternative zu einem Chainlink Buddy, konzipiert für besonders große Displays. Es beherbergt den ESP32 und fügt zusätzliche Konnektivitätsoptionen (Terminals für UART und RS485 seriell) und Stromverteilung (unabhängig überwachte Stromkanäle für mehrere „Zonen“ von Treiberplatinen) hinzu.
Hauptmerkmale:
Neueste automatisch generierte (ungetestete!) Artefakte
Die Classic-Treiberplatine ist veraltet und wird nicht unterstützt.
Das Classic-Controller-Board wurde so konzipiert, dass es wie ein Schild in ein Arduino gesteckt werden kann und vier Schrittmotoren steuern kann. Bis zu 3 Treiberplatinen können miteinander verkettet werden, sodass bis zu 12 Module von einem einzigen Arduino gesteuert werden können.
Der Treiber verwendet zwei MIC5842-Low-Side-Schieberegistertreiber mit integrierten Transienten-Unterdrückungsdioden zur Steuerung der Motoren und ein 74HC165-Schieberegister zum Lesen von vier magnetischen Hall-Effekt-Ausgangspositionssensoren. Es gibt optionale WS2812B RGB-LEDs, mit denen der Status jedes der 4 Kanäle angezeigt werden kann.
Wenn Sie Ihre eigenen Klappen drucken oder benutzerdefinierte Vinyl-Buchstabenaufkleber ausschneiden möchten, enthält das Projekt ein Skript zum Generieren von Vektordesigndateien, das äußerst konfigurierbar ist:
TODO: Beenden Sie die Dokumentation und rendern Sie einige Beispielbilder ...
Wenn Sie eine einzelne Vorderseite über mehrere Module hinweg teilen möchten (anstatt dass jedes Modul eine eigene Vorderseite hat), enthält das Repo ein Skript zum Generieren einer kombinierten Frontplatte zum Laserschneiden oder CNC-Fräsen/Fräsen.
Sie können Folgendes ändern:
Für das CNC-Schneiden unterstützt das Skript das Rendern einer Vektordatei, die für dickeres Material (z. B. 6 mm MDF) optimiert ist, wobei nur die Schraubenlöcher durchgeschnitten werden. In diesem Modus können die Schlitze für die oberen/unteren Gehäuseteile als ca. 4 mm große Taschen ausgeschnitten werden, sodass sie von der Vorderseite aus nicht sichtbar sind. Das Skript generiert automatisch Hundeknochenformen für diese Taschenschnitte.
TODO: Beenden Sie die Dokumentation und rendern Sie einige Beispielbilder ...
Das Projekt umfasst auch eine Reihe optionaler 3D-gedruckter Designs, um die Montage zu erleichtern. Dazu gehören:
Alle diese Designs sind parametrisch und in OpenSCAD anpassbar. Um sie auszudrucken, öffnen Sie die entsprechende Datei in OpenSCAD und verwenden Sie File -> Export -> Export as STL
um das Design als STL-Datei für Ihren Slicer zu rendern.
Dies ist wahrscheinlich nicht sinnvoll, es sei denn, Sie planen die Herstellung von Dutzenden oder Hunderten von Chainlink-Treiberplatinen. Der Chainlink-Treibertester ist jedoch ein vollständiger Prüfstand für Chainlink-Treiberplatinen, da diese vom PCBA-Hersteller zusammengebaut werden.
Dies wird derzeit sehr aktiv weiterentwickelt.
Hauptmerkmale:
Neueste automatisch generierte (ungetestete!) Artefakte
Die Treiber-Firmware wird mit PlatformIO mit dem Arduino-Framework geschrieben und ist unter firmware/
verfügbar.
Die Firmware implementiert einen Closed-Loop-Controller, der Buchstaben als Eingabe über einen seriellen USB-Anschluss akzeptiert und die Schrittmotoren mithilfe einer vorberechneten Beschleunigungsrampe für eine reibungslose Steuerung antreibt. Die Firmware kalibriert die Spulenposition beim Start automatisch mithilfe des Hall-Effekt-Magnetsensors und kalibriert sich automatisch neu, wenn sie jemals erkennt, dass die Spulenposition nicht mehr synchron ist. Wenn erwartet wird, dass eine befohlene Drehung die Spule über die „Ausgangsposition“ hinaus bringt, wird bestätigt, dass der Sensor weder zu früh noch zu spät ausgelöst wird; andernfalls sucht es nach der „Home“-Position, um sich zu synchronisieren, bevor es mit dem gewünschten Buchstaben fortfährt.
Damit ein Computer mit dem Splitflap kommunizieren kann, erscheint es als serielles USB-Gerät.
Die Verwendung von Arduino Serial
ist jedoch strengstens untersagt. Stattdessen wird eine logger
Abstraktion zum Senden einfacher Text-Debug-Protokolle bereitgestellt. Andere Daten werden auf strukturierte Weise übertragen, wie im Folgenden beschrieben.
Dies ermöglicht Flexibilität beim Format der seriell übertragenen Daten, und tatsächlich bietet die Splitflap zwei verschiedene serielle Modi, die unterschiedlichen Zwecken dienen.
Standardmäßig startet es im „Klartext“-Modus, der entwicklerfreundlich ist und den Sie wahrscheinlich kennen, wenn Sie einen seriellen Monitor mit angeschlossener Splitflap geöffnet haben:
{"type":"init", "num_modules":6}
Dies eignet sich jedoch nicht für die programmgesteuerte Konfiguration oder den Empfang von Updates vom Splitflap. Stattdessen bietet die Firmware eine programmgesteuerte Schnittstelle mit einem Binärprotokoll, das auf dem Protobuf-Standard von Google basiert.
Der protobuf-basierte binäre serielle Modus ist eine kompakte und flexible Möglichkeit, strukturierte Daten vom Host-Computer zum Splitflap und umgekehrt zu übertragen.
protobuf bietet mehrere Vorteile gegenüber anderen Kodierungsmechanismen wie JSON:
Aus diesem Grund verwendet die Splitflap standardmäßig den Klartextmodus, um die grundlegende Validierung/Debugging zu vereinfachen.
Protobuf-Nachrichten werden im binären Wire-Format codiert und mit einer CRC32-Prüfsumme versehen. Anschließend wird die gesamte Binärzeichenfolge in ein Paket COBS-codiert und beim seriellen Senden durch 0 (NULL) Bytes begrenzt/gerahmt. Dies stellt eine einfache paketbasierte Schnittstelle mit Integritätsprüfungen bereit (anstelle der rohen, streambasierten Schnittstelle einer seriellen Verbindung).
Der Splitflap wechselt automatisch in den binären Protobuf-Modus, wenn er ein 0-Byte empfängt.
Das Display kann von einem Computer gesteuert werden, der über USB seriell mit dem ESP32 verbunden ist. Wenn Sie ein Display gebaut haben und es testen möchten, sehen Sie sich hier die webbasierte Demo an, die über USB eine Verbindung zu Ihrem Display herstellt – keine Anwendungen/Installation erforderlich!
Die Firmware unterstützt einen seriellen Klartextmodus (standardmäßig aktiviert) zur Vereinfachung des Testens und einen Protobuf-basierten Binärmodus, der von den Softwarebibliotheken für eine verbesserte Programmsteuerung und Rückmeldung verwendet wird.
Beispiel-Typescript- und Python-Bibliotheken finden Sie im Ordner software/chainlink
.
Möchten Sie einige Änderungen vornehmen oder mit dem Design auf Ihrem lokalen Computer herumspielen? Steigen Sie ein! Beachten Sie, dass alle Skripte und Automatisierungen für Ubuntu entwickelt wurden. Mac OS-Unterstützung ist geplant, aber derzeit nicht implementiert (Sie können aber gerne eine PR eröffnen, wenn Sie helfen möchten!).
Die Hauptdesigndatei ist 3d/splitflap.scad
Sie benötigen eine aktuelle Version von OpenSCAD (z. B. 2015-03), die möglicherweise über das PPA installiert werden muss: sudo add-apt-repository ppa:openscad/releases
Im Allgemeinen werden feste Objekte wie Gehäuseseiten oder Spulenkomponenten aus 2D-Primitiven erstellt und dann auf die entsprechende Dicke für das 3D-Rendering extrudiert, anstatt 3D-Primitive zu verwenden. Dadurch wird das Design vereinfacht, ohne an Ausdruckskraft einzubüßen; Der senkrechte Laserschnittstrahl ermöglicht ohnehin keine Schnitte, die in der Z-Dimension variieren.
Beachten Sie, dass das Design zwar parametrisiert ist und viele Werte angepasst werden können, derzeit jedoch keine Fehlerprüfung auf ungültige Parameter oder Parameterkombinationen erfolgt. Bitte achten Sie darauf, das Design zu validieren, wenn Sie Parameter ändern. Während sich beispielsweise der Großteil des Designs an einen geänderten num_modules
-Wert anpasst, können bestimmte Werte dazu führen, dass sich einige Elemente mit anderen Elementen überschneiden oder über ihre erwarteten Abmessungen hinausragen.
Das Design kann zum Laserschneiden in 2D gerendert werden, indem 3d/scripts/generate_2d.py [--panelize <number>]
ausgeführt wird, das an 3d/build/laser_parts/combined.svg
ausgegeben wird. Das optionale Argument --panelize
ermöglicht das Rendern einer Modulgruppe in einer einzigen SVG-Datei zum Massenlaserschneiden.
Intern verwendet das Design ein projection_renderer
Modul ( 3d/projection_renderer.scad
), das eine Liste der zu rendernden untergeordneten Elemente entgegennimmt und je nach render_index
jeweils ein einzelnes untergeordnetes Element rendert. Außerdem wird jeder Form Material hinzugefügt , um die Schnittfuge zu berücksichtigen, die vom Laser weggeschnitten wird.
Das Skript generate_2d.py
interagiert mit dem Modul projection_renderer
, indem es zunächst die Anzahl der zu rendernden Unterkomponenten bestimmt und dann OpenSCAD ausführt, um jede Komponente in eine SVG-Datei zu exportieren. Es führt eine Nachbearbeitung der SVG-Ausgabe durch (fügt insbesondere „mm“ zu den Dokumentabmessungen hinzu) und kombiniert dann alle Komponenten in der einzigen combined.svg
Ausgabe.
Sobald die Datei combined.svg
erstellt wurde, sollten Sie noch einmal überprüfen, ob es keine redundanten Schnittlinien gibt, die von mehreren benachbarten Teilen gemeinsam genutzt werden, um beim Schneiden Zeit und Kosten zu sparen. Sie sollten automatisch erkannt werden (und im obigen Rendering rot hervorgehoben werden), aber es kann nicht schaden, es noch einmal zu überprüfen. Wählen Sie in Inkscape das Werkzeug „Pfade nach Knoten bearbeiten“ und wählen Sie eine Kante zum Löschen aus – die Endpunkte sollten blau werden. Klicken Sie dann auf „Segment zwischen zwei Nicht-Endpunktknoten löschen“ und wiederholen Sie diesen Vorgang für alle anderen redundanten Schnittlinien.
Das Design kann in ein rotierendes animiertes 3D-GIF (siehe oben) gerendert werden, indem 3d/scripts/generate_gif.py
ausgeführt wird, das in 3d/build/animation/animation.gif
ausgegeben wird
Das Skript generate_gif.py
führt mehrere OpenSCAD-Instanzen parallel aus, um das Design von 360 Grad in einzelne PNG-Frames zu rendern, die dann zur endgültigen GIF-Animation kombiniert werden. Als Teil der Erstellung der Animation rendert generate_gif.py
das Design mit mehreren Konfigurationen (undurchsichtiges Gehäuse, durchsichtiges Gehäuse, ohne Gehäuse und ohne Klappen), indem es die Variablen render_enclosure
und render_flaps
festlegt.
Das Design kann in eine Reihe von STL-Dateien (eine pro im Modell verwendeter Farbe) gerendert werden, um in einem interaktiven webbasierten 3D-Viewer angezeigt zu werden. Ähnlich wie der projection_renderer
der zum Rendern einzelner Komponenten für das Laserschneiden verwendet wird, erkennt der ColoredStlExporter alle im Modell verwendeten Farben und rendert sie einzeln in separate STL-Dateien, zusammen mit einem Manifest, das jede STL-Datei ihrer RGB-Farbe zuordnet . Die STL-Dateien und das Manifest werden mit three.js geladen, um mithilfe von WebGL ein interaktives Modell auf einer Website anzuzeigen. Weitere Informationen zur Funktionsweise des Exports und des three.js-Renderers finden Sie in diesem Blogbeitrag: OpenSCAD Rendering Tricks, Teil 3: Web Viewer.
Die gesamte Elektronik wird mit KiCad 5 entwickelt. Die Panelisierung erfolgt durch KiKit und die Gerber-/Stücklistengenerierung erfolgt durch KiBot.
Die oben genannten mechanischen und elektrischen Design-Renderings und Links werden bei jedem Commit automatisch mit dem neuesten Rendering aktualisiert. Weitere Informationen zur Funktionsweise finden Sie in diesem Blogbeitrag: Automatisiertes KiCad, OpenSCAD-Rendering mit Travis CI.
Das PCB-Layout kann durch Ausführen electronics/scripts/generate_svg.py file.kicad_pcb
in ein SVG- oder PNG-Format (siehe oben) gerendert werden. Hierbei wird die Python-Skript-API von KiCad verwendet, um mehrere Ebenen in einzelne SVG-Dateien zu rendern, sie zu manipulieren, um Farb- und Deckkrafteinstellungen anzuwenden, und sie dann zu einer einzigen SVG-Datei zusammenzuführen. Weitere Details finden Sie in diesem Blogbeitrag: Skripterstellung für KiCad Pcbnew-Exporte.
Zur Überprüfung des Entwurfs kann ein PDF-Paket mit Kupfer-, Siebdruck- und Bohrinformationen erstellt werden, indem Sie electronics/scripts/generate_pdf.py file.kicad_pcb
ausführen.
Gerber-Dateien für die Fertigung können durch Ausführen von electronics/scripts/generate_gerber.py file.kicad_pcb
exportiert werden. Dadurch werden Gerberdateien und eine Excellon-Bohrdatei mit den Namenskonventionen von Seeed Studio generiert und eine .zip
erstellt, die zur Fertigung gesendet werden kann.
EESchema ist nicht einfach skriptfähig. Um den Schaltplan zu exportieren, wird electronics/scripts/export_schematic.py
ein X Virtual Frame Buffer (Xvfb) gestartet, die eeschema
GUI in dieser virtuellen Anzeige geöffnet und dann eine Reihe fest codierter Tastendrücke über xdotool
an gesendet Interagieren Sie mit der GUI und klicken Sie sich durch die Dialoge. Das ist sehr fragil, scheint aber im Moment gut zu funktionieren. Weitere Details finden Sie in diesem Blogbeitrag: Verwenden der UI-Automatisierung zum Exportieren von KiCad-Schaltplänen.
Ich würde gerne Ihre Gedanken und Fragen zu diesem Projekt hören und freue mich, Ihr Feedback in diese Designs einfließen zu lassen! Fühlen Sie sich bitte frei (und ermutigt), GitHub-Probleme zu öffnen, mir direkt eine E-Mail zu senden, Kontakt auf Twitter aufzunehmen und sich an der Open-Source-Entwicklung zu beteiligen. Lassen Sie uns weiter chatten und gemeinsam bauen!
Dieses Projekt ist unter Apache v2 lizenziert (siehe 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.