2.5 · YAPP Box
31 May 2026
- Por:
- Anton
- Sección:
- Módulo 2 · CAD y diseño paramétrico
- Lectura:
- 7 min
YAPP Box: carcasas paramétricas para electrónica. Standoffs, cutouts, ventilación
Modelar una carcasa de electrónica desde cero en OpenSCAD es posible, pero tedioso: standoffs para el PCB (la placa de circuito impreso, el soporte rígido donde van soldados los componentes; la sueldas en el módulo 4), paredes con borde de cierre, huecos para los conectores, ventilación… Es tanto trabajo repetitivo que alguien ya lo resolvió. YAPP_Box (Yet Another Parametric Projectbox) es una librería de OpenSCAD que genera cajas para proyectos electrónicos definiendo solo parámetros y unas tablas de elementos.
Qué es YAPP_Box y de dónde viene
YAPP_Box es un proyecto libre de Willem Aandewiel (mrWheel), disponible en su repositorio de GitHub mrWheel/YAPP_Box. La idea es declarativa: describes tu PCB y la caja con números, listas los standoffs (soportes del PCB) y los cutouts (huecos) en tablas, y la librería se encarga de generar la base, la tapa, el borde de cierre y los bordes redondeados (internamente usa minkowski).
Para usarla, descarga la librería y colócala junto a tu archivo. El archivo principal de la librería es YAPPgenerator_v3.scad, y se trae al principio del tuyo:
include <YAPPgenerator_v3.scad>
Se usa include (no use) porque la librería aporta también muchas constantes globales (yappRectangle, yappCoordPCB, etc.) que necesitas en tus tablas.
Los parámetros básicos
Empiezas definiendo las dimensiones de tu PCB y de la caja:
//-- PCB
pcbLength = 88; // largo del PCB (mm)
pcbWidth = 49; // ancho del PCB (mm)
pcbThickness = 1.5;
//-- paredes y planos
wallThickness = 1.8;
basePlaneThickness = 1.5;
lidPlaneThickness = 1.5;
//-- alturas
baseWallHeight = 12; // alto de la mitad inferior
lidWallHeight = 6; // alto de la tapa
//-- standoffs (soportes del PCB)
standoffHeight = 4.0; // separación PCB-base
standoffDiameter = 5.0;
standoffPinDiameter = 2.4;
standoffHoleSlack = 0.4;
//-- estética
ridgeHeight = 3.0; // borde de cierre base/tapa
roundRadius = 3.0; // radio de las aristas
Con esto, la caja ya conoce su tamaño exterior, que se calcula a partir del PCB más el espacio libre que dejes.
Standoffs: sujetar el PCB
Los standoffs (en YAPP, la tabla pcbStands) son los pilares que mantienen el PCB separado de la base. Cada fila describe una posición y, opcionalmente, sus dimensiones:
pcbStands =
[
// [ x, y ] + opciones
[ 5, 5, yappBoth, yappPin ],
[ 5, pcbWidth - 5, yappBoth, yappPin ],
[ pcbLength - 5, 5, yappBoth, yappPin ],
[ pcbLength - 5, pcbWidth - 5, yappBoth, yappPin ]
];
- Los dos primeros valores son la posición
x, y(por defecto, referida al PCB). yappBothindica que el standoff se genera tanto en la base como en la tapa.yappPincrea un pin que encaja en el agujero del PCB (alternativa:yappHolepara tornillo).
Como atajo, YAPP ofrece la opción yappAllCorners, que coloca un standoff en las cuatro esquinas automáticamente.
Cutouts: los huecos para conectores
Aquí está la parte más práctica. YAPP tiene una tabla de cutouts por cada cara: cutoutsBase, cutoutsLid, cutoutsFront, cutoutsBack, cutoutsLeft y cutoutsRight. Cada fila describe un hueco con esta estructura:
[ posX, posY, ancho, largo, radio, forma, ...opciones ]
Donde forma puede ser yappRectangle, yappCircle, yappRoundedRect, yappPolygon, entre otras. Un ejemplo: un hueco rectangular para un USB en la cara frontal y uno circular para un conector SMA en la trasera:
cutoutsFront =
[
// [ x, y, w, l, radio, forma ]
[ 30, 1, 12, 7, 0, yappRectangle ] // hueco USB
];
cutoutsBack =
[
[ 25, 6, 0, 0, 3.25, yappCircle ] // taladro SMA (radio 3.25)
];
Las posiciones se refieren por defecto al PCB (yappCoordPCB), lo cual es muy cómodo: mides dónde está el conector respecto al PCB y ese mismo número va a la tabla.
Ventilación
La ventilación no es más que una rejilla de cutouts. Puedes generarla a mano con un for, pero lo habitual es añadir varias ranuras yappRectangle o círculos en cutoutsLid o cutoutsBase:
cutoutsLid =
[
[ 20, 10, 30, 2, 0, yappRectangle ],
[ 20, 16, 30, 2, 0, yappRectangle ],
[ 20, 22, 30, 2, 0, yappRectangle ]
];
Tres ranuras paralelas de 30 x 2 mm para que el calor de la electrónica salga.
Generar la caja
Tras definir todas las tablas, una sola llamada genera la caja completa:
YAPPgenerate();
Para controlar qué se muestra, la librería tiene variables booleanas en su cabecera, como printBaseShell y printLidShell, que activas o desactivas para exportar la base y la tapa por separado (recuerda: se imprimen en piezas distintas).
Flujo de trabajo recomendado
- Mide tu PCB y la posición de cada conector respecto a una esquina.
- Rellena los parámetros de PCB, paredes y alturas.
- Coloca los standoffs en
pcbStands(empieza conyappAllCorners). - Activa la previsualización del PCB (
onPCBmounty opciones de debug que trae la librería) para ver si los huecos caen donde el conector real. - Añade los cutouts cara por cara, ajustando con F5 hasta que cuadren.
- Render (F6) y exporta base y tapa por separado.
Cuándo usar YAPP_Box y cuándo no
YAPP_Box brilla cuando tu proyecto es una placa rectangular dentro de una caja rectangular con conectores en los laterales, que es el 90% de los casos. Si tu carcasa tiene una forma orgánica, varias placas apiladas o una geometría rara, te saldrá mejor modelar a mano con las técnicas de los artículos anteriores. Pero para el típico proyecto de microcontrolador, sensores y conectores, te ahorra horas.
En el siguiente artículo lo pondremos en práctica con un caso real: una carcasa para la placa Heltec V3.
Del blog al libro Este post forma parte del temario de OpenSCAD para electrónica. El libro completo incluye la biblioteca completa de cutouts reutilizables y todos los archivos .scad descargables.
Ver el libroMás de Módulo 2 · CAD y diseño paramétrico
Geometría constructiva sólida: union, difference, intersection, hull, minkowski
Texto Anton
Lectura 7 min