Matando a cobra e mostrando o esqueleto da cobra

Não gosto de Python. É uma daquelas coisas de empatia à primeira vista, ou falta dela.

Quando era criança e ganhei um computador, tive que aprender BASIC: era programar ou esperar quinze minutos para carregar um jogo pirateado armazenado numa fita cassete. Por sorte, o saudoso HotBit veio com dois manuais explicando a linguagem, com exemplos para cada comando, consumindo (para usar um termo mais atualizado) todo meu tempo disponível.

Mas BASIC era mais ou menos como sarampo: a gente pegava quando era novo. Para os cientistas da computação, a linguagem tinha vários defeitos. Entre eles, era interpretada, o que não ajudava em nada o bom e velho Z80 rodando a 3,58MHz. Mas mesmo que o processador fosse muito mais potente, era um desperdício ter que reinterpretar a mesma linha de código dentro de um laço.

Outra característica que causava um olhar de incomensurável desprezo era o fato de ser possível modificar o programa e executá-lo novamente em poucos segundos, testando várias coisas até que algo funcionasse. Isso incentivava “a preguiça e falta de planejamento”.

Esse tipo de coisa traumatiza uma criança.

Avancemos alguns anos. Décadas. Enfim. Depois de várias linguagens da moda, eis que surge Python. E entre as várias vantagens apregoadas pelos fãs, eis que aparecem: “prototipagem rápida” e “interpretada”. Isso traumatiza um adulto.

Pelo menos, não estou sozinho na minha “birra”: o Dr. Neal Krawetz também tem oito razões para odiar Python.

A minha principal razão: o recuo (ou, em inglês: “indentation”). Espaços? Quatro espaços? Tabulação? Linha maior que a largura da página? Não vou entrar no mérito da coisa, mas o artigo vale a leitura, mesmo que você goste da cobra.

BlackMath e Hackaday

Certa vez me disseram que se eu quisesse ser lido, teria que escrever em inglês e isso é verdade. Apesar das belezas da Última Flor do Lácio, a verdade é que lemos pouco.

Por isso, o projeto “BlackMath” está hospedado agora no Hackaday.io. O código-fonte inicial já está disponível no GitHub, juntamente com a primeira versão da placa de circuito impresso. Ela tem alguns defeitos que já foram corrigidos na segunda versão que também estará disponível assim que um novo lote for fabricado.

Por hora, a solução é usar a inicialização pela UART. Mas os detalhes ficarão lá no Hackaday.




E chegaram as placas!

Depois de uma gestação complicada, eis que chegaram as placas de circuito impresso!

Depois de todo o atraso no projeto da PCI (eu sou fisicamente incapaz de rotear uma placa e precisei recorrer à ajuda dos amigos), procurei por um fornecedor capaz de entregar com a maior rapidez possível. Apesar de morar no “Vale da Eletrônica”, o valor cobrado por aqui era completamente inviável… vejam: estou falando de protótipos e não de uma produção em série.

Não foi difícil achar a AllPCB. No site dos chineses, foi possível fazer uma cotação rápida, sem necessidade de fornecer os arquivos Gerber, informando o tamanho, espessura, número de camadas, cor e por aí vai.

Ao final de tudo, dez placas saíram pela bagatela de US$ 40,00, mais US$ 12,00 de frete e US$ 2,14 de taxas. Não é barato (US$ 4,00 por placa, sem fretes nem impostos), mas bem melhor que por aqui.

Como não poderia deixar de ser, a Receita abocanhou mais R$ 305,73 em impostos… mas, afinal, as únicas certezas na vida são a morte e os impostos.

O pessoal da AllPCB foi muito prestativo, informando que havia uma pequena discrepância nos Gerbers, mas isso não alterou o prazo de dois dias (!) para o envio. E a DHL fez mais uma das suas entregas dentro do previsto.

Ou seja: tudo correu como deveria. E isso, se comparado com os Correios pós-nova-logomarca, já é estupendo!

 

 

Acabei montando as fontes de alimentação antes de soldar o CODEC e o Blackfin. Tudo parece funcionar bem e agora é hora de montar o restante para testar o software.

Usando o display OLED

Mais um dia de trabalho na “Black Math”… ainda não expliquei o que ela é exatamente, eu sei. Mas isso será remediado em breve. Por enquanto, criei o repositório e terminei de verificar o funcionamento do display OLED.

Sempre que o sujeito usa uma placa Arduino ou compatível, logo pensa na facilidade de usar as bibliotecas prontas… hardware pronto… e por aí vai. Isso quase sempre é verdade.

No meu caso, escolhi uma Wemos D1 R2, principalmente porque a sinalização é feita em 3,3V e não tínhamos à mão nenhum outro Arduino que não operasse a 5V. A rede Wi-Fi integrada do ESP8266 também é muito bem-vinda.

A Black Math poderá ser usada isoladamente ou como um “shield” para Arduinos, e é justamente aí que entra a Wemos D1. Mas como o fornecedor chinês ainda não entregou o primeiro lote, adiantei o projeto e testei a biblioteca do display OLED.

O modelo “128×32” é daqueles bem genéricos, comprados no AliExpress por U$ 2,00. DOIS DÓLARES! E como nada na vida é de graça, fiquei muito preocupado com o tempo que levaria para adaptar uma biblioteca qualquer.

O primeiro teste não foi dos mais promissores: a biblioteca u8glib, modificada para Arduino, simplesmente mostrou uma tela preta. E como a capacidade de depuração dessa plataforma é… digamos… err… minha mãe dizia que se não pudesse falar bem de uma pessoa, melhor não falar nada. Então, a capacidade de depuração dessa plataforma é nada. Continuando: na dúvida, baixei o i2c_scanner do autor desconhecido e, para meu alívio, havia um dispositivo no endereço 0x3C.

Próximo passo: procurar outra biblioteca. Dificilmente você é o primeiro a encontrar um problema, ainda mais em uma plataforma tão utilizada quanto o Arduino, mas não encontrei muitas fotos com displays parecidos, então, tive que apelar para similares.

A Sparkfun tem um modelo OLED de 64×48 pixels que parecia promissor, com o código-fonte da biblioteca está disponível no GitHub.

Para encurtar a história de uma longa tarde de depuração adivinhação trabalho no código, vejam o resultado:

WhatsApp Image 2018-09-23 at 22.44.48
Dá para ler “Black Math”?

Fotografar displays, especialmente OLED, não é tão fácil quanto apontar-e-apertar, infelizmente…

O código está disponível no repositório, assim como os arquivos da placa. Infelizmente, apenas no formato Altium Designer. A primeira versão foi feita no DesignSpark PCB, que, aliás, é uma ferramenta muito boa, se levarmos em consideração ser gratuita. Mas não havia ninguém que pudesse “rotear” a placa usando aquele programa…

 

Black Math

Para deixar registrado, como um “Diário do Capitão”: estamos projetando uma placa de baixo custo para desenvolvimento de processamento digital de sinais.

Para simplificar tudo, a ideia é que funcione tanto autonomamente quanto acoplada a uma placa do tipo “Arduino”, aparecendo como um “shield”.

Os detalhes virão depois, este artigo é apenas para testar as capacidades de visualização tridimensional do modelo exportado:

https://www.3dvieweronline.com/members/Ide85d66c6a4f01b134218e39c3bda435f/RqiJEoeqJmWUtMx

Hum… não funcionou como deveria:

pcb1

 

A new hope

Este artigo serve apenas para marcar essa nova “roupagem” do site.

Eu precisava, mesmo, apenas do domínio e do endereço de email. Daí fiz o registro no GoDaddy, pelo menor valor possível… e esqueci que não poderia redirecionar emails (ou mesmo recebê-los) sem pagar algo a mais. Como a ideia é economizar, saí à procura de algo mais em conta (leia-se: gratuito).

Um dos primeiros links que encontrei foi o improveMX. O site é extremamente simples, franciscano mesmo. Mostra as instruções de como redirecionar emails do seu domínio para uma outra conta, usando o registro “MX” do servidor de DNS.

Simples? Muito.

Funciona? Claro.

É seguro? Bem… quem procura pelo mais barato, não pode se dar ao luxo de ter uma segurança à prova da NSA. Mas, por via das dúvidas, não escreva nada muito comprometedor em um email que será redirecionado através de servidores desconhecidos.