Il s'agit d'un écran à rabat divisé basé sur ESP32, optimisé pour un assemblage facile à la maison en petites quantités mais pouvant être étendu à de grands écrans abordables.
Derniers artefacts générés automatiquement (non testés !)
Instructions : guide d'assemblage v2
Dimensions des modules :
Derniers artefacts générés automatiquement (non testés !)
Note
Pour les petits écrans (jusqu'à 3 modules), vous pouvez ignorer les cartes contrôleur personnalisées et utiliser des modules de pilote ULN2003A disponibles dans le commerce branchés sur un Arduino Uno. Ceci est partiellement documenté dans le wiki mais peut nécessiter quelques ajustements supplémentaires pour que cela fonctionne. Aide recherchée : si vous souhaitez contribuer à améliorer ces instructions, veuillez nous contacter sur le serveur Discord, merci !
Le système électronique « Chainlink » est conçu pour prendre en charge de longues chaînes de cartes de commande afin de contrôler les écrans moyens/grands (jusqu'à 100+ modules à rabat divisé). Il est également conçu pour être facile et peu coûteux à commander pré-assemblé ou à construire soi-même, en particulier en grandes quantités, grâce à sa nomenclature simple et à ses composants montés en surface.
Pour construire un écran, vous aurez besoin de 3 appareils électroniques différents :
Chaque module nécessite un capteur à effet Hall pour l'étalonnage au démarrage et la surveillance des défauts.
Les anciens capteurs pour la version 0.7 et les anciens matériels découpés au laser peuvent être trouvés dans la version du capteur étiquetée.
Ces anciens capteurs ne sont pas compatibles avec le matériel découpé au laser v2.
Nouveaux capteurs pour le matériel découpé au laser v2 : ils utilisent des composants montés en surface et sont optimisés pour l'assemblage de PCB chez JLCPCB. Ces nouveaux capteurs ne sont pas compatibles avec la version 0.7 et les anciens matériels découpés au laser.
Des packs de 6 capteurs sont disponibles pour la plupart assemblés dans la boutique Bezek Labs et sont livrés avec les embases à broches à angle droit et les aimants dont vous aurez besoin. Les achats soutiennent le développement continu de ce projet.
Derniers artefacts générés automatiquement (non testés !)
Principales caractéristiques :
Les cartes Chainlink Driver sont disponibles pour la plupart assemblées dans la boutique Bezek Labs et sont livrées avec les connecteurs et câbles plats supplémentaires dont vous aurez besoin. Les achats soutiennent le développement continu de ce projet.
Plus d’informations sur la création et l’utilisation des pilotes Chainlink sont disponibles dans le guide de l’utilisateur du pilote Chainlink.
Ou si vous souhaitez les commander directement auprès d'une usine, cette conception est optimisée pour l'assemblage chez JLCPCB, et des fichiers sont automatiquement générés pour y commander des PCB assemblés . Ou si vous souhaitez assembler cette carte vous-même au lieu de payer pour l'assemblage, vous pouvez consulter l'outil interactif de nomenclature/placement.
En fonction du stock disponible chez JLCPCB, vous devrez peut-être modifier manuellement le fichier de nomenclature pour utiliser des composants alternatifs, ou régénérer les fichiers vous-même à l'aide export_jlcpcb.py
et en spécifiant un ou plusieurs noms de champs LCSC_ALT_*
pour utiliser un numéro de pièce alternatif présélectionné. Consultez le schéma pour connaître les alternatives présélectionnées disponibles (vérifiez les propriétés/champs du symbole).
Derniers artefacts générés automatiquement (non testés !)
Le Chainlink Buddy [T-Display] est un moyen pratique de connecter une carte T-Display ESP32 (microcontrôleur recommandé) à une chaîne de pilotes Chainlink.
Principales caractéristiques :
Les cartes Chainlink Buddy [T-Display] sont disponibles dans la boutique Bezek Labs et sont livrées avec les connecteurs supplémentaires dont vous aurez besoin. Les achats soutiennent le développement continu de ce projet.
Derniers artefacts générés automatiquement (non testés !)
Le Chainlink Buddy [Breadboard] facilite la connexion d'un pilote Chainlink à une planche à pain pour le prototypage. Vous pouvez utiliser 5 fils Dupont et créer un nid de rats en désordre, ou vous pouvez utiliser un seul câble plat et cette carte de dérivation astucieuse.
Les cartes Chainlink Buddy [Breadboard] sont disponibles dans la boutique Bezek Labs et sont livrées avec les connecteurs supplémentaires dont vous aurez besoin. Les achats soutiennent le développement continu de ce projet.
Derniers artefacts générés automatiquement (non testés !)
Pour les écrans plus grands, vous devez prendre des précautions supplémentaires pour rendre le matériel plus robuste aux pannes potentielles. La base Chainlink est une conception de contrôleur expérimentale (mais non prise en charge) qui ajoute des fonctionnalités supplémentaires. Cela a été testé et semble fonctionner, mais n'est pas recommandé pour un usage général.
Le PCB Chainlink Base est une alternative optionnelle à un Chainlink Buddy, conçu pour les écrans particulièrement grands. Il héberge l'ESP32 et ajoute des options de connectivité supplémentaires (terminaux pour série UART et RS485) et de distribution d'énergie (canaux d'alimentation surveillés indépendamment pour plusieurs « zones » de cartes de pilote).
Principales caractéristiques :
Derniers artefacts générés automatiquement (non testés !)
La carte pilote Classic est obsolète et non prise en charge.
La carte contrôleur Classic a été conçue pour se brancher sur un Arduino comme un bouclier et pouvait contrôler 4 moteurs pas à pas. Jusqu'à 3 cartes pilotes peuvent être chaînées ensemble, pour un maximum de 12 modules contrôlés par un seul Arduino.
Le pilote utilise 2 pilotes de registre à décalage côté bas MIC5842, avec des diodes de suppression des transitoires intégrées, pour contrôler les moteurs, et un registre à décalage 74HC165 pour lire à partir de 4 capteurs de position d'origine magnétiques à effet Hall. Il existe des LED RVB WS2812B en option qui peuvent être utilisées pour indiquer l'état de chacun des 4 canaux.
Si vous souhaitez imprimer vos propres rabats ou découper des autocollants de lettres en vinyle personnalisés, le projet comprend un script pour générer des fichiers de conception vectorielle extrêmement configurables :
À FAIRE : terminer la documentation et rendre quelques exemples d'images...
Si vous souhaitez partager une seule face avant sur plusieurs modules (plutôt que chaque module ayant sa propre face avant), le référentiel inclut un script pour générer une face avant combinée pour la découpe laser ou le fraisage/routage CNC.
Vous pouvez modifier :
Pour la découpe CNC, le script prend en charge le rendu d'un fichier vectoriel optimisé pour les matériaux plus épais (par exemple MDF de 6 mm) où seuls les trous de boulons seront découpés. Dans ce mode, les fentes pour les pièces supérieure/inférieure du boîtier peuvent être découpées sous forme de poches d'environ 4 mm afin qu'elles ne soient pas visibles depuis la face avant. Le script génère automatiquement des formes en os de chien pour ces coupes de poche.
À FAIRE : terminer la documentation et rendre quelques exemples d'images...
Le projet comprend également un certain nombre de modèles imprimés en 3D en option pour faciliter l'assemblage. Ceux-ci incluent :
Toutes ces conceptions sont paramétriques et personnalisables dans OpenSCAD. Pour les imprimer, ouvrez le fichier correspondant dans OpenSCAD et utilisez File -> Export -> Export as STL
pour restituer la conception sous forme de fichier STL pour votre slicer.
Cela ne sera probablement pas utile à moins que vous n'envisagiez de fabriquer des dizaines, voire des centaines de cartes de pilote Chainlink, mais le testeur de pilote Chainlink est un banc d'essai complet pour les cartes de pilote Chainlink telles qu'elles sont assemblées par le fabricant PCBA.
Ceci est actuellement en développement très actif.
Principales caractéristiques :
Derniers artefacts générés automatiquement (non testés !)
Le micrologiciel du pilote est écrit à l'aide de PlatformIO avec le framework Arduino et est disponible sur firmware/
.
Le micrologiciel implémente un contrôleur en boucle fermée qui accepte les lettres en entrée via USB série et pilote les moteurs pas à pas à l'aide d'une rampe d'accélération précalculée pour un contrôle fluide. Le micrologiciel calibre automatiquement la position de la bobine au démarrage, à l'aide du capteur magnétique à effet Hall, et se recalibre automatiquement s'il détecte que la position de la bobine est désynchronisée. Si une rotation commandée devrait amener le tiroir au-delà de la position « d'origine », cela confirmera que le capteur n'est déclenché ni trop tôt ni trop tard ; sinon, il recherchera la position « d'origine » pour se synchroniser avant de passer à la lettre souhaitée.
Pour qu'un ordinateur puisse communiquer avec le splitflap, celui-ci apparaît comme un périphérique série USB.
Cependant, l'utilisation du Serial
d'Arduino est strictement interdite et, à la place, une abstraction logger
est fournie pour envoyer des journaux de débogage de texte de base. D'autres données sont transférées de manière structurée, décrite ci-dessous.
Cela permet une flexibilité dans le format des données transférées en série et, en fait, le splitflap propose 2 modes série différents qui répondent à des objectifs différents.
Par défaut, il démarre en mode « texte brut », qui est convivial pour les développeurs et que vous connaissez probablement si vous avez ouvert un moniteur série avec le splitflap connecté :
{"type":"init", "num_modules":6}
Cependant, ce n'est pas idéal pour configurer par programme ou recevoir des mises à jour du splitflap. Le micrologiciel propose donc une interface de programmation utilisant un protocole binaire basé sur la norme Protobuf de Google.
Le mode série binaire basé sur Protobuf est un moyen compact et flexible de transférer des données structurées de l'ordinateur hôte vers le splitflap et vice versa.
protobuf offre plusieurs avantages par rapport à d'autres mécanismes de codage comme JSON :
C'est pourquoi le splitflap passe par défaut en mode texte brut pour faciliter la validation/débogage de base.
Les messages Protobuf sont codés dans leur format filaire binaire et une somme de contrôle CRC32 est ajoutée. Ensuite, toute cette chaîne binaire est codée COBS dans un paquet et délimitée/encadrée par 0 (NULL) octets lorsqu'elle est envoyée en série. Cela fournit une interface de base basée sur les paquets avec des contrôles d'intégrité (plutôt que l'interface brute basée sur le flux d'une connexion série).
Le splitflap passe automatiquement en mode protobuf binaire lorsqu'il reçoit un octet 0.
L'affichage peut être contrôlé par un ordinateur connecté à l'ESP32 via une série USB. Si vous avez construit un écran et souhaitez le tester, consultez la démo Web ici qui se connectera à votre écran via USB – aucune application/installation n'est nécessaire !
Le micrologiciel prend en charge un mode série en texte clair (activé par défaut) pour faciliter les tests, ainsi qu'un mode binaire basé sur protobuf utilisé par les bibliothèques de logiciels pour un contrôle et un retour programmatique améliorés.
Vous pouvez trouver des exemples de bibliothèques Typescript et Python dans le dossier software/chainlink
.
Vous souhaitez apporter des modifications ou jouer avec le design sur votre machine locale ? Lancez-vous directement ! Notez que tous les scripts et automatisations sont développés pour Ubuntu. La prise en charge de Mac OS est prévue, mais pas actuellement implémentée (mais n'hésitez pas à ouvrir un PR si vous souhaitez aider !).
Le fichier de conception principal est 3d/splitflap.scad
Vous aurez besoin d'une version récente d'OpenSCAD (par exemple 2015-03), qui devra peut-être être installée via le PPA : sudo add-apt-repository ppa:openscad/releases
En général, les objets solides tels que les côtés du boîtier ou les composants de la bobine sont construits à partir de primitives 2D, puis extrudés à l'épaisseur appropriée pour le rendu 3D, plutôt que d'utiliser des primitives 3D. Cela simplifie le design sans perdre en expressivité ; le faisceau découpé au laser perpendiculaire ne permet de toute façon pas des coupes qui varient dans la dimension Z.
Notez que même si la conception est paramétrée et que de nombreuses valeurs peuvent être modifiées, il n'existe actuellement aucune vérification des erreurs pour les paramètres ou combinaisons de paramètres non valides. Veuillez prendre soin de valider la conception si vous modifiez des paramètres. Par exemple, alors que la majeure partie de la conception s'ajustera à une valeur num_modules
modifiée, certaines valeurs peuvent provoquer l'intersection de certains éléments avec d'autres éléments ou dépasser au-delà de leurs dimensions attendues.
La conception peut être rendue en 2D pour la découpe laser en exécutant 3d/scripts/generate_2d.py [--panelize <number>]
, qui génère 3d/build/laser_parts/combined.svg
. L'argument facultatif --panelize
permet de restituer un panneau de modules dans un seul SVG, pour une découpe laser en masse.
En interne, la conception utilise un module projection_renderer
( 3d/projection_renderer.scad
), qui prend une liste d'éléments enfants à restituer et, en fonction du render_index
restitue un seul enfant à la fois. Il ajoute également de la matière à chaque forme pour tenir compte du trait de scie qui sera découpé par le laser.
Le script generate_2d.py
interagit avec le module projection_renderer
en l'utilisant d'abord pour déterminer le nombre de sous-composants à restituer, puis exécute OpenSCAD pour exporter chaque composant vers un fichier SVG. Il effectue un post-traitement sur la sortie SVG (ajoute notamment "mm" aux dimensions du document), puis combine tous les composants dans une seule sortie combined.svg
.
Une fois le fichier combined.svg
généré, vous souhaiterez vérifier qu'il n'y a pas de lignes de coupe redondantes partagées par plusieurs pièces adjacentes, afin d'économiser du temps et des coûts lors de la découpe. Ils devraient être détectés automatiquement (et surlignés en rouge dans le rendu ci-dessus), mais cela ne fait pas de mal de revérifier. Dans Inkscape, sélectionnez l'outil "Modifier les chemins par nœuds" et sélectionnez un bord à supprimer - les extrémités doivent devenir bleues. Cliquez ensuite sur "Supprimer le segment entre deux nœuds non terminaux" et répétez cette opération pour toutes les autres lignes de coupe redondantes.
La conception peut être rendue sous la forme d'un gif animé 3D rotatif (voir ci-dessus) en exécutant 3d/scripts/generate_gif.py
, qui génère 3d/build/animation/animation.gif
Le script generate_gif.py
exécute plusieurs instances OpenSCAD en parallèle pour restituer la conception à 360 degrés en images png individuelles, qui sont ensuite combinées dans l'animation gif finale. Dans le cadre de la création de l'animation, generate_gif.py
restitue la conception avec plusieurs configurations (enceinte opaque, enceinte transparente, sans enceinte et sans rabats) en définissant les variables render_enclosure
et render_flaps
.
La conception peut être rendue dans une série de fichiers STL (un par couleur utilisée dans le modèle) afin d'être affichée dans une visionneuse 3D interactive basée sur le Web. Semblable au projection_renderer
utilisé pour restituer des composants individuels pour la découpe laser, ColoredStlExporter détecte toutes les couleurs utilisées dans le modèle et les restitue une par une pour séparer les fichiers STL, ainsi qu'un manifeste qui mappe chaque fichier STL à sa couleur RVB. . Les fichiers STL et le manifeste sont chargés à l'aide de three.js pour afficher un modèle interactif sur un site Web à l'aide de WebGL. Consultez cet article de blog pour plus de détails sur le fonctionnement de l'exportation et du moteur de rendu three.js : Astuces de rendu OpenSCAD, Partie 3 : Visionneuse Web.
Toute l'électronique est développée à l'aide de KiCad 5. La panélisation est assurée par KiKit et la génération gerber/BOM est assurée par KiBot.
Les rendus de conception mécanique et électrique et les liens ci-dessus sont automatiquement mis à jour à chaque validation avec le dernier rendu. Consultez cet article de blog pour plus de détails sur la façon dont cela fonctionne : KiCad automatisé, rendu OpenSCAD à l'aide de Travis CI.
La disposition du PCB peut être rendue au format SVG ou PNG (voir ci-dessus) en exécutant electronics/scripts/generate_svg.py file.kicad_pcb
. Cela utilise l'API de script Python de KiCad pour restituer plusieurs calques dans des fichiers SVG individuels, les manipule pour appliquer les paramètres de couleur et d'opacité, puis les fusionne en un seul SVG. Pour plus de détails, consultez cet article de blog : Scripting des exportations KiCad Pcbnew.
Pour examiner la conception, un paquet PDF contenant des informations sur le cuivre, la sérigraphie et les forets peut être produit en exécutant electronics/scripts/generate_pdf.py file.kicad_pcb
.
Les fichiers Gerber pour la fabrication peuvent être exportés en exécutant electronics/scripts/generate_gerber.py file.kicad_pcb
. Cela génère des fichiers Gerber et un fichier de forage Excellon avec les conventions de dénomination de Seeed Studio et produit un .zip
qui peut être envoyé pour fabrication.
EESchema n'est pas facilement scriptable, donc pour exporter le schéma electronics/scripts/export_schematic.py
démarre un X Virtual Frame Buffer (Xvfb) et ouvre l'interface graphique eeschema
dans cet affichage virtuel, puis envoie une série de touches codées en dur via xdotool
à interagissez avec l’interface graphique et cliquez dans les boîtes de dialogue. C'est très fragile mais semble fonctionner correctement pour l'instant. Pour plus de détails, consultez cet article de blog : Utilisation de l'automatisation de l'interface utilisateur pour exporter des schémas KiCad.
J'aimerais entendre vos réflexions et vos questions sur ce projet, et je serais heureux d'intégrer tous vos commentaires dans ces conceptions ! N'hésitez pas (et encouragez) à ouvrir des problèmes GitHub, à m'envoyer un e-mail directement, à nous contacter sur Twitter et à vous impliquer dans le développement open source et continuons à discuter et à construire ensemble !
Ce projet est sous licence Apache v2 (voir 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.