Se trata de una pantalla de solapa dividida DIY basada en ESP32, optimizada para un fácil montaje en casa en pequeñas cantidades, pero que se puede ampliar a pantallas grandes y asequibles.
Últimos artefactos generados automáticamente (¡no probados!)
Instrucciones: guía de montaje v2
Dimensiones del módulo:
Últimos artefactos generados automáticamente (¡no probados!)
Nota
Para pantallas pequeñas (hasta 3 módulos), puede omitir las placas de controlador personalizadas y usar módulos de controlador ULN2003A disponibles en el mercado conectados a un Arduino Uno. Esto está parcialmente documentado en la wiki, pero puede requerir algunos retoques adicionales para que funcione. Se busca ayuda: si desea ayudar a mejorar estas instrucciones, comuníquese con el servidor de Discord, ¡gracias!
El sistema electrónico "Chainlink" está diseñado para soportar largas cadenas de placas controladoras para controlar pantallas medianas/grandes (hasta más de 100 módulos de solapa dividida). También está diseñado para que sea fácil y económico pedirlo preensamblado o construirlo usted mismo, especialmente en grandes cantidades, debido a su lista de materiales simple y sus componentes de montaje en superficie.
Para construir una pantalla, necesitarás 3 componentes electrónicos diferentes:
Cada módulo necesita un sensor de efecto Hall para la calibración de inicio y el monitoreo de fallas.
Los sensores más antiguos para la versión 0.7 y el hardware cortado con láser más antiguo se pueden encontrar en la versión del sensor etiquetado.
Estos sensores más antiguos no son compatibles con el hardware cortado con láser v2.
Nuevos sensores para el hardware cortado con láser v2: utilizan componentes de montaje en superficie y están optimizados para el ensamblaje de PCB en JLCPCB. Estos nuevos sensores no son compatibles con la versión 0.7 y el hardware anterior cortado con láser.
Los paquetes de 6 sensores están disponibles en su mayoría ensamblados en la tienda de Bezek Labs y vienen con los imanes y los cabezales de clavija en ángulo recto que necesitará. Las compras respaldan el desarrollo continuo de este proyecto.
Últimos artefactos generados automáticamente (¡no probados!)
Características clave:
Las placas Chainlink Driver están disponibles en su mayoría ensambladas en la tienda de Bezek Labs y vienen con los conectores y cables planos adicionales que necesitará. Las compras respaldan el desarrollo continuo de este proyecto.
Más información sobre la creación y el uso de controladores Chainlink está disponible en la Guía del usuario del controlador Chainlink.
O si desea pedirlos directamente a una fábrica, este diseño está optimizado para su ensamblaje en JLCPCB, y los archivos se generan automáticamente para ordenar PCB ensamblados allí. O si desea ensamblar esta placa usted mismo en lugar de pagar por el ensamblaje, puede ver la lista de materiales interactiva/herramienta de colocación.
Dependiendo del stock disponible en JLCPCB, es posible que deba modificar manualmente el archivo BOM para usar componentes alternativos o regenerar los archivos usted mismo usando export_jlcpcb.py
y especificando uno o más nombres de campo LCSC_ALT_*
para usar un número de pieza alternativo preseleccionado. Consulte el esquema para conocer las alternativas preseleccionadas disponibles (verifique las propiedades/campos del símbolo).
Últimos artefactos generados automáticamente (¡no probados!)
Chainlink Buddy [T-Display] es una forma conveniente de conectar una placa T-Display ESP32 (microcontrolador recomendado) a una cadena de controladores Chainlink.
Características clave:
Las placas Chainlink Buddy [T-Display] están disponibles en la tienda de Bezek Labs y vienen con los conectores adicionales que necesitará. Las compras respaldan el desarrollo continuo de este proyecto.
Últimos artefactos generados automáticamente (¡no probados!)
Chainlink Buddy [Breadboard] facilita la conexión de un controlador Chainlink a una placa para crear prototipos. Podrías usar 5 cables Dupont y tener un nido de ratas desordenado, o podrías usar un solo cable plano y esta elegante placa de conexión.
Las placas Chainlink Buddy [Breadboard] están disponibles en la tienda de Bezek Labs y vienen con los conectores adicionales que necesitará. Las compras respaldan el desarrollo continuo de este proyecto.
Últimos artefactos generados automáticamente (¡no probados!)
Para pantallas más grandes, debe tener especial cuidado para que el hardware sea más resistente a posibles fallas. Chainlink Base es un diseño de controlador experimental (pero no compatible) que agrega algunas funciones adicionales. Esto ha sido probado y parece funcionar, pero no se recomienda para uso general.
El PCB Chainlink Base es una alternativa opcional a un Chainlink Buddy, diseñado para pantallas particularmente grandes. Alberga el ESP32 y agrega opciones de conectividad adicionales (terminales para serie UART y RS485) y distribución de energía (canales de energía monitoreados independientemente para múltiples "zonas" de placas de controlador).
Características clave:
Últimos artefactos generados automáticamente (¡no probados!)
La placa de controlador Classic está obsoleta y no es compatible.
La placa controladora Classic fue diseñada para conectarse a un Arduino como un escudo y podía controlar 4 motores paso a paso. Se pueden encadenar hasta 3 placas de controlador, para hasta 12 módulos controlados por un solo Arduino.
El controlador utiliza 2 controladores de registro de cambios del lado bajo MIC5842, con diodos de supresión de transitorios incorporados, para controlar los motores, y un registro de cambios 74HC165 para leer desde 4 sensores magnéticos de posición inicial de efecto Hall. Hay LED RGB WS2812B opcionales que se pueden utilizar para indicar el estado de cada uno de los 4 canales.
Si desea imprimir sus propias solapas o cortar pegatinas de letras de vinilo personalizadas, el proyecto incluye un script para generar archivos de diseño vectorial que es extremadamente configurable:
TODO: terminar de documentar esto y renderizar algunas imágenes de ejemplo...
Si desea compartir una única cara frontal entre varios módulos (en lugar de que cada módulo tenga su propia cara frontal), el repositorio incluye un script para generar un panel frontal combinado para corte por láser o fresado/enrutamiento CNC.
Puedes modificar:
Para el corte CNC, el script admite la renderización de un archivo vectorial optimizado para materiales más gruesos (por ejemplo, MDF de 6 mm) donde solo se cortarán los orificios para los pernos. En este modo, las ranuras para las piezas superior/inferior del gabinete se pueden cortar como bolsillos de ~4 mm para que no sean visibles desde la cara frontal. El script genera automáticamente formas de huesos de perro para estos cortes de bolsillo.
TODO: terminar de documentar esto y renderizar algunas imágenes de ejemplo...
El proyecto también incluye una serie de diseños impresos en 3D opcionales para facilitar el montaje. Estos incluyen:
Todos estos diseños son paramétricos y personalizables dentro de OpenSCAD. Para imprimirlos, abra el archivo relevante en OpenSCAD y use File -> Export -> Export as STL
para representar el diseño como un archivo STL para su cortadora.
Es probable que esto no sea útil a menos que planee fabricar de docenas a cientos de placas Chainlink Driver, pero el Chainlink Driver Tester es un banco de pruebas completo para las placas Chainlink Driver, ya que vienen ensambladas por el fabricante de PCBA.
Esto se encuentra actualmente bajo desarrollo muy activo.
Características clave:
Últimos artefactos generados automáticamente (¡no probados!)
El firmware del controlador está escrito utilizando PlatformIO con el marco Arduino y está disponible en firmware/
.
El firmware implementa un controlador de circuito cerrado que acepta letras como entrada a través de una serie USB y acciona los motores paso a paso mediante una rampa de aceleración precalculada para un control suave. El firmware calibra automáticamente la posición del carrete al inicio, utilizando el sensor magnético de efecto Hall, y se recalibrará automáticamente si alguna vez detecta que la posición del carrete no está sincronizada. Si se espera que una rotación ordenada lleve el carrete más allá de la posición "inicial", confirmará que el sensor no se activa ni demasiado pronto ni demasiado tarde; de lo contrario, buscará la posición "inicial" para sincronizarse antes de continuar con la letra deseada.
Para que una computadora se comunique con el splitflap, éste aparece como un dispositivo serie USB.
Sin embargo, el uso de Arduino Serial
está estrictamente prohibido y, en su lugar, se proporciona una abstracción logger
para enviar registros de depuración de texto básicos. Otros datos se transfieren de forma estructurada, como se describe a continuación.
Esto permite flexibilidad en el formato de los datos transferidos a través de serie y, de hecho, splitflap proporciona 2 modos de serie diferentes que sirven para diferentes propósitos.
De forma predeterminada, se inicia en modo "texto sin formato", que es fácil de usar para los desarrolladores y con el que probablemente esté familiarizado si abrió un monitor en serie con el splitflap conectado:
{"type":"init", "num_modules":6}
Sin embargo, esto no es excelente para configurar o recibir actualizaciones mediante programación desde splitflap, por lo que el firmware ofrece una interfaz programática que utiliza un protocolo binario basado en el estándar Protobuf de Google.
El modo serial binario basado en protobuf es una forma compacta y flexible de transferir datos estructurados desde la computadora host al splitflap y viceversa.
protobuf proporciona varios beneficios sobre otros mecanismos de codificación como JSON:
Es por eso que splitflap utiliza de forma predeterminada el modo de texto sin formato para facilitar la validación/depuración básica.
Los mensajes Protobuf están codificados en su formato de cable binario y se les adjunta una suma de verificación CRC32. Luego, toda esa cadena binaria se codifica COBS en un paquete y se delimita/enmarca por 0 (NULL) bytes cuando se envía a través de serie. Esto proporciona una interfaz básica basada en paquetes con comprobaciones de integridad (en lugar de la interfaz sin procesar basada en flujo de una conexión en serie).
El splitflap cambia automáticamente al modo protobuf binario cuando recibe un byte 0.
La pantalla se puede controlar mediante una computadora conectada al ESP32 a través de USB serial. Si ha creado una pantalla y desea probarla, consulte la demostración basada en web aquí que se conectará a su pantalla mediante USB, ¡sin necesidad de aplicaciones ni instalación!
El firmware admite un modo serie de texto sin formato (habilitado de forma predeterminada) para facilitar las pruebas y un modo binario basado en protobuf utilizado por las bibliotecas de software para mejorar el control y la retroalimentación programática.
Puede encontrar bibliotecas de ejemplo de Typecript y Python en la carpeta software/chainlink
.
¿Quiere hacer algunas modificaciones o jugar con el diseño en su máquina local? ¡Salta de inmediato! Tenga en cuenta que todos los scripts y la automatización están desarrollados para Ubuntu. La compatibilidad con Mac OS está planificada, pero no está implementada actualmente (¡pero no dudes en abrir un PR si quieres ayudar!).
El archivo de diseño principal es 3d/splitflap.scad
Necesitará una versión reciente de OpenSCAD (por ejemplo, 2015-03), que quizás deba instalarse a través del PPA: sudo add-apt-repository ppa:openscad/releases
En general, los objetos sólidos, como los lados del gabinete o los componentes del carrete, se construyen a partir de primitivas 2D y luego se extruyen al espesor apropiado para la renderización 3D, en lugar de usar primitivas 3D. Esto simplifica el diseño sin perder expresividad; De todos modos, el rayo de corte láser perpendicular no permite cortes que varíen en la dimensión Z.
Tenga en cuenta que, si bien el diseño está parametrizado y se pueden modificar muchos valores, actualmente no existe ninguna verificación de errores para parámetros o combinaciones de parámetros no válidos. Tenga cuidado de validar el diseño si cambia algún parámetro. Por ejemplo, si bien la mayor parte del diseño se ajustará a un valor num_modules
modificado, ciertos valores pueden hacer que algunos elementos se crucen con otros elementos o sobresalgan más allá de sus dimensiones esperadas.
El diseño se puede renderizar en 2D para corte por láser ejecutando 3d/scripts/generate_2d.py [--panelize <number>]
, que genera como resultado 3d/build/laser_parts/combined.svg
. El argumento opcional --panelize
permite renderizar un panel de módulos en un solo SVG, para corte láser masivo.
Internamente, el diseño utiliza un módulo projection_renderer
( 3d/projection_renderer.scad
), que toma una lista de elementos secundarios para renderizar y, dependiendo de render_index
representa un solo elemento secundario a la vez. También agrega material a cada forma para tener en cuenta el corte que cortará el láser.
El script generate_2d.py
interactúa con el módulo projection_renderer
usándolo primero para determinar la cantidad de subcomponentes a renderizar y luego ejecuta OpenSCAD para exportar cada componente a un archivo SVG. Realiza un posprocesamiento en la salida SVG (en particular, agrega "mm" a las dimensiones del documento) y luego combina todos los componentes en una única salida combined.svg
.
Una vez que se genera el archivo combined.svg
, querrás volver a verificar que no haya líneas de corte redundantes compartidas por varias piezas adyacentes, para ahorrar tiempo y costos al cortar. Deberían detectarse automáticamente (y resaltarse en rojo en la representación anterior), pero no está de más volver a verificar. En Inkscape, seleccione la herramienta "Editar rutas por nodos" y seleccione un borde para eliminar; los puntos finales deben volverse azules. Luego haga clic en "Eliminar segmento entre dos nodos que no sean puntos finales" y repita esto para todas las demás líneas de corte redundantes.
El diseño se puede representar en un gif animado en 3D giratorio (visto arriba) ejecutando 3d/scripts/generate_gif.py
, que genera como resultado 3d/build/animation/animation.gif
El script generate_gif.py
ejecuta varias instancias de OpenSCAD en paralelo para representar el diseño desde 360 grados hasta cuadros png individuales, que luego se combinan en la animación gif final. Como parte de la creación de la animación, generate_gif.py
representa el diseño con múltiples configuraciones (cerramiento opaco, recinto transparente, sin cerramiento y sin solapas) configurando las variables render_enclosure
y render_flaps
.
El diseño se puede representar en una serie de archivos STL (uno por color utilizado en el modelo) para mostrarlo en un visor 3D interactivo basado en web. De manera similar al projection_renderer
utilizado para representar componentes individuales para corte por láser, ColoredStlExporter detecta todos los colores utilizados en el modelo y los representa uno por uno para separar archivos STL, junto con un manifiesto que asigna cada archivo STL a su color RGB. . Los archivos STL y el manifiesto se cargan usando three.js para mostrar un modelo interactivo en un sitio web usando WebGL. Consulte esta publicación de blog para obtener más detalles sobre cómo funcionan la exportación y el renderizador three.js: Trucos de renderizado OpenSCAD, Parte 3: Visor web.
Toda la electrónica se desarrolla utilizando KiCad 5. La panelización la proporciona KiKit y la generación Gerber/BOM la proporciona KiBot.
Las representaciones y enlaces de diseño mecánico y eléctrico anteriores se actualizan automáticamente en cada confirmación con la última representación. Consulte esta publicación de blog para obtener más detalles sobre cómo funciona: KiCad automatizado, renderizado OpenSCAD usando Travis CI.
El diseño de PCB se puede representar en un archivo svg o png (visto arriba) ejecutando electronics/scripts/generate_svg.py file.kicad_pcb
. Esto utiliza la API de secuencias de comandos Python de KiCad para representar varias capas en archivos svg individuales, los manipula para aplicar configuraciones de color y opacidad y luego los fusiona en un solo svg. Para obtener detalles adicionales, consulte esta publicación de blog: Scripting KiCad Pcbnew exports.
Para revisar el diseño, se puede generar un paquete pdf con información sobre cobre, serigrafía y perforación ejecutando electronics/scripts/generate_pdf.py file.kicad_pcb
.
Los archivos Gerber para fabricación se pueden exportar ejecutando electronics/scripts/generate_gerber.py file.kicad_pcb
. Esto genera archivos Gerber y un archivo de exploración de Excellon con las convenciones de nomenclatura de Seeed Studio y produce un .zip
que se puede enviar para su fabricación.
EESchema no es fácil de programar, por lo que para exportar el esquema electronics/scripts/export_schematic.py
inicia un X Virtual Frame Buffer (Xvfb) y abre la GUI eeschema
dentro de esa pantalla virtual, y luego envía una serie de pulsaciones de teclas codificadas a través de xdotool
a interactúe con la GUI y haga clic en los cuadros de diálogo. Es muy frágil pero parece funcionar bien por ahora. Para obtener detalles adicionales, consulte esta publicación de blog: Uso de la automatización de la interfaz de usuario para exportar esquemas de KiCad.
¡Me encantaría escuchar tus opiniones y preguntas sobre este proyecto, y estaría feliz de incorporar cualquier comentario que puedas tener en estos diseños! Siéntase libre (y alentado) de abrir problemas de GitHub, enviarme un correo electrónico directamente, comunicarse en Twitter e involucrarse en el desarrollo de código abierto y ¡sigamos charlando y construyendo juntos!
Este proyecto tiene licencia Apache v2 (ver LICENCIA.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.