Como contaba en el post anterior, estaba terminando de colocar unas lamparitas que harían de mi setup de cine en casa un 3% más inmersivo, pero me di cuenta de que cada cierto tiempo y de forma aparentemente aleatoria tendían a parpadear, tal como se puede apreciar aquí abajo:

Mi primera idea fue que había cometido algún error al momento de configurar WLED, aunque me pareció un poco raro porque no era la primera instalación del estilo que hacía, aún así me metí a los foros y encontré que el flickering en WLED (y con varios otros software de controlador para LEDs) es bastante común si no se tiene en cuenta ciertas cosas al momento de hacer las conexiones eléctricas entre el controlador y las luces.
Cosas como el voltaje al que funcionan los LEDs, la longitud de los cables, si los mismos están acompañados o no por otros cables, qué tipo de señal llevan los cables que acompañan y varias otras cosas pueden afectar el funcionamiento de una instalación.

Por supuesto, yo no había tenido en cuenta ninguna de estas cosas, así que sí era un error de configuración de mi lado, y me puse a mejorar todos los aspectos de mi proyecto que podrían contribuir a un funcionamiento más estable.

El diagrama eléctrico inicial era más o menos así:

Diagrama básico WLED
Básico de básicos

Y ya, sólo eso. Nada de resistencias, condensadores o diodos. Ninguna forma de compensar los cerca de 10 metros de cable que habría entre el controlador (un NodeMCU ESP8266 en este caso), eso sin tener en cuenta que los cables durante una parte no despreciable de su recorrido están acompañados muy de cerca de varios otros que llevan señales como Ethernet y HDMI y durante otra parte, menos despreciable aún, lo están de cables de flujo eléctrico alterno a 220V y 60Hz, lo cual casi definitivamente estaba causando algún tipo de crosstalk, o sea que las señales se contaminaban unas a otras.
Me parece que la señal que envía el pequeño microcontrolador iba a pasar un mal momento realmente.

¿por qué no cambiar el cableado? Bueno, no es mala idea, pero la configuración eléctrica actual de la habitación en donde desplegué estas lámparas hace complicado llevarla a cabo. Además, me interesa ocultar los cables tanto como se pueda y eso significa en muchos casos utilizar tuberías dentro de las paredes que, en un principio, sólo tenían como tarea servir como canal para cables de alta tensión (bueno, alta con respecto a los voltajes que requiere el proyecto en cuestión, ustedes entienden).

Además, aún sin tanto cable al lado, pretender que una señal de varios megahercios y 3.3V (el voltaje al que funcionan las terminales del microcontrolador) mantenga su integridad a través de un cable de 20AWG y sin protección a lo largo de más de 10 metros es, como mínimo, iluso y como máximo mejor no lo digo.

El tercermundismo contraataca

La solución más a la mano parecía ser conseguir algún controlador ya construido para sólo conectarle los cables necesarios y disfrutar. De hecho, hay varios proyectos que apuntan precisamente a eso, algunas personas han dedicado su tiempo a diseñar circuitos plug and play para WLED para los que no tenemos demasiada idea de cómo conectar bien un par de LEDs. Seguramente el más notable sea QuinLED, que tiene varios productos interesantes pero, como de costumbre, una de dos opciones: el envío hacia este rincón olvidado del mundo es inexistente o cuesta el triple de lo que cuesta el producto.

Además, eso no es divertido.

Una vez más, tenía que hacerlo yo mismo, bien punk.

Fine, I’ll do it myself

Junté algunas resistencias, condensadores, elevadores lógicos de voltaje y otras cositas que tenía por ahí en la mesa como cualquier persona y volví a armar el circuito.

Diagrama no tan básico WLED
Aaaah, otra cosita

En el mundo real se veía más o menos así:

Prototipo
Si lo miras con atención por suficiente tiempo empieza a tener sentido

Siempre me causó gran curiosidad qué causaba esos destellos y cómo se verían reflejados en una gráfica de la señal. Era momento de sacar las armas pesadas.

Con ayuda de un RIGOL DHO804 me puse a husmear en las señales que enviaba el microcontrolador, o las que recibían las tiras LED 10 metros más allá, mejor dicho.

Circuito básico
Circuito básico
Circuito no tan básico
Circuito no tan básico

Para ser justos, ninguna de las dos es una señal perfectamente cuadrada, tampoco están particularmente cerca de serlo, aunque creo que sí es apreciable la reducción de ringing en el circuito no tan básico, pero lo más importante, por lo menos a simple vista, es que en el segundo circuito la señal alcanza picos de voltage más altos, producto de usar un elevador lógico de voltage como el SN74AHCT125N de Texas Instruments, lo cual permite que viaje por más distancia manteniendo un poco mejor su integridad.

Las mediciones en los circuitos mismos (es decir, sin tomar en cuenta la longitud del cable que lleva la señal) son bastante más parecidas en cuanto ringing. Y es de esperar, la verdadera diferencia debería ser aparente una vez la señal haya recorrido que generaba el problema en primer lugar.

But first, a word from today’s sponsor, JLCPCB

Comprobado el funcionamiento del nuevo circuito, era hora de mejorar la implementación. No podía dejar esa maraña de cables ahí. Incluso si pudiera ponerlo dentro de una caja para un mejor resultado estético, internamente no sería muy confiable, los cables DuPont y los breadboards son excelentes para la fase de prototipado pero no para una solución a largo plazo, aunque muchas veces lo temporal se vuelve permanente, lamentablemente.

Pensé en usar una placa universal y soldar ahí los componentes necesarios pero parecía una idea un tanto incompleta. Incompleta porque es un paso intermedio entre un breadboard y un circuito impreso, como los que se encuentran normalmente dentro de los aparatos electrónicos estos días. No me sentía muy cómodo sabiendo que se vería, en mi opinión, tan poco profesional. No es que yo suela solucionar mis problemas electrónicos de la forma más profesional posible pero también es cierto que si ya iba a ponerme a soldar componentes en una placa, no veía un gran motivo por el cual no poner todas las fichas en el proyecto y diseñar un circuito integrado yo mismo.
Bueno, ese fue el razonamiento inicial, resulta que el gran motivo era la considerable inversión de tiempo necesaria para poder diseñar un PCB, silly me.

Hace un buen tiempo que quería aprender a hacer este tipo de cositas, siempre creí que era muy complicado pero esta era la oportunidad ideal, era un circuito bastante simple, yo tenía algo de tiempo para disponer y, bueno, tenía ganas.
Un par de posts de Reddit después llegué a EasyEDA, me gustó que era lo suficientemente simple de usar para un novato como yo y, también, su integración con JLCPCB. Más sobre esto último un poco más abajo.

Luego de un poco (un montón, en realidad) de prueba y error, llegué a esto:

Circuito impreso final (diseño, parte delantera)
Circuito impreso final (parte delantera)
Circuito impreso final (diseño, parte delantera)
Circuito impreso final (parte trasera)
Circuito impreso final y componentes (modelo 3D)

Como decía píxeles más arriba, algo que me gustó mucho de EasyEDA fue su integración con JLCPCB. Yo sólo conocía a esta compañía debido a la constante publicidad que hacen en canales de YouTube de tecnología y electrónica que suelo seguir (junto con PCBWay, las dos más conocidas en este rubro gracias a sus prominentes campañas de mercadotecnia), pero no tenía idea de que era un distribuidor de componentes electrónicos también. Bueno, no ellos, si no su empresa hermana LCSC.

La ventaja es que, al momento de diseñar tanto el esquema como el circuito en sí, se puede buscar componentes en su catálogo y usarlos sin tener que definir características manualmente, ahorrando así un montón de tiempo. Sirve mucho, además, para obtener los planos 2D y los modelos 3D de las partes involucradas, es un verdadero golazo.

Hubiera sido muy difícil para mí generar el modelo en 3D de todo el circuito terminado. Me siento cómodo haciendo algunas cosas en 3D pero no a ese nivel ni con ese nivel de precisión.

JLCPCB, claramente, no sólo vende piecitas electrónicas, también se dedica a lo que me interesaba en ese momento, la fabricación de circuitos impresos. Gracias, nuevamente, a la integración con EasyEDA (es su programa de asistencia de diseño de PCBs después de todo), una vez terminado mi diseño pude simplemente subirlo a sus servidores y obtener una cotización en un par de minutos. Los precios para la fabricación de un circuito básico de dos capas como este son bastante asequibles, el problema, como de costumbre suele ser el envío.

Para un mejor detalle, este es el desglose del total que tuve que pagar para tener mis ansiadas placas finalmente en mis manos:

Orden detallada de JLCPCB

Un poco más de 6 dólares por 10 placas, aunque pequeñas y básicas, me parece un gran precio. Como dije, el problema es el envío. No quería estar esperando 3 meses para finalizar el proyecto ni tratar con el servicio nacional de correos de este país, lo cual le hubiera agregado cantidades industriales de incertidumbre a la ecuación, así que opté por FedEx. Quizás no sea el envío más cómodo del mundo, sobre todo si se hace desde China, pero con un cupón de descuento por ser la primera vez que uso el servicio creo que llegué a un precio con el que me sentía relativamente bien, así que el precio final fue de unos 25 dólares. Nada asombroso pero pudo haber sido mucho peor.

Electronic components, assemble!

Finalmente, PCBs impresos
Finalmente, PCBs impresos (banana for scale)

El color azul parecía apropiado. 😺

El PCB negro no es realmente uno, es una maqueta impresa en 3D para propósitos demostrativos y como reemplazo de los verdaderos mientras llegaban, sobre todo para el siguiente paso: una caja para el circuito. Era lo más lógico para cuando ya estuviera todo casi listo, no quisiera que la habitación tenga circuitos expuestos que, además de ponerlos en cierto riesgo, desentonan con el resto de la decoración. Felizmente, en Fusion 360 no es muy complicado diseñar algo medianamente decente para poder imprimir luego.

Aprendí a usar sketches a la mitad del diseño, por eso tanto cilindro suelto por ahí

Con ayuda del PCB falso podía validar si las tolerancias de mi diseño eran apropiadas. Menos mal no tuve que hacer demasiadas modificaciones una vez listo el modelo final, salvo los agujeros en la tapa en donde van los tornillos.
La idea es la siguiente: la tapa se imprime “boca arriba” para evitar usar innumerables soportes en toda su extensión, ya que no es uniforme por la parte baja, mientras que sí lo es por arriba. El problema con eso es que, al tener un tope los agujeros para los tornillos, son estos topes los que necesitarían soportes para no ser impresos, literalmente, en el aire. A este tipo de agujeros se les conoce en inglés como counterbores y en español se le conoce como avellanado al proceso de creación del tope para que los tornillos queden al ras de la superficie.

Al ser la tapa una pieza cuya parte inferior no toca la cama de la impresora en su gran mayoría, es más fácil, económico y rápido imprimirla rotada 180 grados o “boca arriba”
Al ser la tapa una pieza cuya parte inferior no toca la cama de la impresora en su gran mayoría, es más fácil, económico y rápido imprimirla rotada 180 grados o “boca arriba”

Normalmente son agujeros fáciles de hacer con otro tipo de procesos de fabricación, pero no siempre es así con la impresión aditiva, menos aún si se imprime al revés, así que hay que encontrar alternativas.

Con el tope impreso en el aire
Impreso con el tope en el aire

Hasta ahí todo bien, pero yo no quería imprimir soportes, ya que demora un poco más y sentía que alguna manera de hacerlo de forma “limpia” debía existir.

Tras mucha prueba y error, encontré en el canal Maker’s Muse una técnica para imprimir este tipo orificios llamada sequential bridging, aparentemente inventada por nophead como consta en su blog.

Así se ve el modelo usando <em>sequential bridging</em> en la parte del agujero
Así se ve el modelo usando sequential bridging en la parte del agujero
Usando <em>sequential bridging</em>
Impreso usando sequential bridging

Básicamente, la estrategia consta en no dejar que la máquina imprima círculos enteros sin un punto de apoyo, si no en cubrir el mismo espacio en pasos, dos o tres, con cuerdas que tienen puntos de apoyo al inicio y al final y atraviesan distancias cortas, lo cual los vuelve fácilmente imprimibles.

Aquí se aprecia un poco mejor la nueva forma de imprimir esta clase de agujeros

Y así luce un tornillo al ras de la superficie superior de la tapa. El método funciona.

Tornillo al ras de la superficie superior de la tapa

* * *

Volviendo al circuito, ahora sí tenía todo listo para soldar y ensamblar.

Componentes pegados con silicona caliente, prefijados para soldar
Componentes pegados con silicona caliente, prefijados para soldar

Una vez todos los componentes estuvieron en su respectivo lugar, utilicé silicona caliente para fijarlos temporalmente, así sería más fácil poder soldarlos por la parte posterior. Como nota, no aplicar tanta silicona como se ve en la fotografía, luego es un poco difícil quitarla, así que mejor mientras menos se haya aplicado. Fuera de eso parece una alternativa decente, sobre todo si se trabaja en solitario.

Después de un buen rato soldando, este fue el resultado:

Ez

Ahora sí puedo morir en paz. Para ser sincero, aún hay, muy ocasionalmente, algunos destellos por aquí y por allá, pero estoy convencido de que la causa es el compresor de aire del mini refrigerador que está en esta habitación. Por ahora lo voy a dejar así, no es algo que sea molesto, pero quizás deba empezar a pensar en una suerte de supresor de picos para ese electrodoméstico.

Lo importante, sin embargo, es que funciona, que aprendí muchas cosas en el camino y que me divertí.

Ahora hasta funciona de forma sincronizada con las luces estilo Ambilight del televisor. Quizás algún día escriba sobre mi setup televisivo luminoso.

Y, para coronar, los Warriors ganando, realmente hermoso