A luz do espelho da minha casa de banho não tem interruptor, e isso levou-me a retomar um projeto com 2 anos. Como é que isso aconteceu?

A sequência que me trouxe até aqui é digna do King’s Quest, e faz todo o sentido se uma pessoa ignorar que tudo podia ser resolvido com um interruptor físico. Mas em vez disso, decidi colocar um Shelly. Para quem não sabe, a Shelly é uma marca que se dedica a dispositivos controlados por wifi, baseados nos microcontroladores ESP8266 e ESP32. Neste caso, a minha escolha recaiu no Shelly Plus 1, que tem o ESP32 e como tal é mais versátil. A diferença de preço também não era muito significativa.

Depois de colocado o shelly, decidi que não o queria a ligar a nenhuma cloud ou ter sequer acesso à Internet. A solução foi relativamente simples: utilizei um velhinho orange Pi (um clone chinês do raspberry) com um dongle wifi em soft access point mode sem bridge para a rede por fio. Adicionei o Mosquitto, um servidor MQTT open source, que escuta em ambas as redes locais. Assim, os dispositivos IOT ligam-se a uma rede sem fios que não tem acesso à internet, mas conectam-se ao servidor MQTT (devidamente autenticados). O servidor MQTT escuta também da rede local “normal”, por onde os telemóveis, PCs e outros podem enviar comandos.

Tudo isto despertou-me o interesse por ter um servidor mais potente, porque obviamente um projeto puxa outros projetos.

Na última semana estive a ver diferentes opções para montar um pequeno servidor. O raspberry pi 4 é uma boa opção, mas a extensibilidade é um problema e a performance é limitada. A dada altura também tive interesse em montar transcoding, para poder ter um servidor Jellyfin. Depois de ver diversas opções interessantes e relativamente baratas no ebay, lembrei-me (leia-se, a minha esposa lembrou-me) que seria interessante dedicar algum tempo aos projetos inacabados, particularmente se ajudassem a este fim e permitissem poupar uns euros.

Apesar de bastante anémico, o X453MA seria perfeito para começar. Então, abri o repositório do projeto, agora com 2 anos e…

… é possível que isto seja tão complexo? Ou é só mau código?

O problema de desenvolver sem refinar, é que acabei com um projeto que utiliza 2 unidades diferentes de medida: pixel e milímetro. Para os pixeis, utilizo uns fatores de conversão que os convertem em mm, mas no processo o código torna-se mais complexo do que o necessário. Se tivesse pensado no João do futuro, tinha feito todas as conversões a priori. No fim do ficheiro tinha um pedaço de código com o comentário de “testes”, que obviamente se transformou em algo que não se mexe.

Mas ainda assim, já tinha um esqueleto relativamente funcional. A entrada RJ45 estava demasiado larga e fazia mau contacto, portanto apertei-a um pouco, confiando que se fosse necessário podia limar a entrada para corrigir.

Desenhei as paredes, dando 1 cm de margem da motherboard e colocando colunas cilíndricas nos cantos, com espaços para brass inserts. Este tipo de roscas de embutir precisam de ser colocadas a quente, utilizando um ferro de soldar, por exemplo. Precisei de imprimir um teste com diferentes dimensões de recetáculos para as roscas. As medidas foram obtidas com um paquímetro e senso comum.

Que animação!

Com sorte, o espaço mais largo estava correto e passei o valor para o modelo final.

A barra de testes depois de usada.

Precisei de abrir uma entrada de ar da ventoinha, um cilindro negativo colocado mais ou menos no local correto. Guiei-me pelas colunas, onde assentam os parafusos. O posicionamento ficou razoável e como está na face inferior da caixa, o alinhamento imperfeito é irrelevante.

A impressão final demorou 12 horas e hoje recolhi o resultado. O resultado não foi bom.

No processo de desenho, acabei por não centrar convenientemente a motherboard e colocar uma coluna da caixa demasiado próxima. Quão próxima? O suficiente para não a deixar entrar. O problema foi não considerar o espaço ocupado pela coluna e não prestar atenção suficiente ao render final antes de imprimir.

Talvez com um martelo entre?

Decidido a verificar as restantes medidas e até a salvar a impressão, peguei na rotary tool, alicates e um ferro de soldar e comecei a cirurgia ortopédica de retirar o pedaço da coluna em causa.

Digno de um ortopedista com vontade de ir ter com a amante!

Obviamente que a integridade estrutural foi algo comprometida, mas não o suficiente para a caixa não funcionar, embora não seja boa ideia colocar peso em cima dela.

Depois desta operação bem sucedida, a motherboard deslizou, os parafusos foram todos apertados. A entrada de rede ficou suficientemente bem para fazer contacto sem problemas e o servidor está pronto para começar os testes.

De cima até parece perfeito!

A caixa ainda tem alguns problemas óbvios:

  • Há um espaço para o ar entrar mas nenhum para sair (estou a pensar adicionar isso à tampa)
  • Falta desenhar a tampa
  • Convém adicionar espaço para os parafusos entrarem abaixo da porca de embutir (permite usar parafusos de outros tamanhos e não estar tão limitado no seu comprimento)
  • Falta desenhar uns pés para ter espaço de entrada de ar em baixo

Isso ficará para a próxima iteração, que terá de esperar, para já. Se a máquina funcionar decentemente, estou a contemplar comprar um adaptador m.2 para rede com fios. A rede atual é 100Mbps, o que não é fantástico. Neste caso, a próxima iteração necessitará de espaço para adicionar esta placa. Mas este passo só fará sentido após a instalação de algum software e testes.

Para já, estou contente com a decisão de ter recuperado o projeto e ter chegado ao ponto em que basta adicionar uma tampa para ter um servidor ultra-low-power bastante utilizável.