quinta-feira, 30 de outubro de 2014

Atualização do projeto de emulador de interface de disquete (#12) - Pagando pelos pecados.

Olá,

Após um longo período sem postar nada no blog sobre o meu projeto de emulador de interface de disquete para o MSX eu finalmente volto a escrever sobre o tema. O motivo para isto foi a grande quantidade de problemas que encontrei para retirar o projeto do protoboard e leva-lo para uma forma mais definitiva. Abaixo segue as agruras pelo qual passei para sair de um ponto ao outro. Eu trago este relato na esperança de que as minhas experiências descritas abaixo possam ser de utilidde para alguém para evitar que passem pelo mesmo processo sofrido pelo qual passei.

Pois bem, em Novembro de 2013, eu alcancei um estágio em que o circuito estava funcionando muito bem no protoboard e eu senti a necessidade e a vontade de projetar e produzir uma placa de circuito impresso para o projeto. Após umas duas semanas de trabalho eu alcancei o design de uma placa de circuito impresso que eu passei a chamar de revisão A. Boa parte do tempo gasto no design desta placa foi tentando criar um design que me fosse possível produzir a placa em casa mas eu cheguei a conclusão que, apesar de eu conseguir produzir PCIs com ótima qualidade ainda assim não era o suficiente para a produção desta placa em especifico. Ou seja, eu precisava contratar o serviço de uma empresa para fazer a placa para mim.

Meu objetivo era o de produzir 3 placas de circuito impresso. Eu me lembro que eu pedi o orçamento para três empresas especializadas e foi aí que começaram meus problemas. Este tipo de empresa te fornece uma quantidade mínima de placas de normalmente 10 ou 20 placas por pedido a um custo que estava girando na época em torno de R$ 650,00 à R$ 750,00. Eu realmente não estava interessado em ficar com um monte de placas de circuito impresso. Então eu comecei a procurar por alternativas e acabei encontrando o site OSHPark (https://www.oshpark.com/).

Este é um site americano voltado para ajudar quem está criando projetos de hardware open source a obter protótipos dos seus projetos. Este site requer que você compartilhe seu design com os usuários do site e após você publicar seu projeto no site qualquer um pode emitir pedidos para a criação de protótipos. Além disto há uma restrição no site que a quantidade de placas no pedido deve ser múltipla de 3, ou seja, você deve pedir 3 ou 6 ou 9 placas, etc. Para mim este site encaixou como uma luva, pois eu queria três placas e o meu projeto é open source. Então eu coloquei o pedido no site a um custo em torno de R$ 350,00 (U$ 118,55 + U$25,00 USPS Priority Mail) na época.

Eu realmente fiquei surpreso com a qualidade do atendimento do site. Após efetuar o pagamento e em cada etapa do processo o site foi atualizando o status do pedido me informando a cada passo o que estava ocorrendo. E, apesar do site informar que as placas são fabricadas sob demanda e que dependendo do volume de pedidos as placas para serem produzidas podem demorar mais ou menos tempo, as minhas placas demoraram um tempo que eu achei relativamente curto. Eu coloquei o pedido no dia 29/11/2013 e as placas foram despachadas no dia 09/12/2013. Obviamente que o problema após as placas terem sido despachadas foi a nossa querida e amada (Sic) EBCT que demorou mais de dois meses para entregar o produto.


Mas as placas chegaram e novamente fiquei positivamente surpreso com a qualidade da PCI conforme mostrado na foto acima. A máscara de solda púrpura é uma característica do site OSHPark. O site é todo construído nesta mesma cor.

Claro que eu fiquei bastante agitado com a chegada das placas. Eu tratei logo de soldar os componentes na placa e testar a minha plaquinha e... Não funcionou. :-(

Após algum tempo investigando o porque eu percebi que cometi um erro grave. O tempo todo que eu testei o circuito no protoboard eu usei o CPLD EPM3064 versão PLCC 44 pinos. Quando eu desenvolvi a placa eu resolvi usar a versão TQFP 44 pinos do mesmo chip. Sendo que, apesar de fisicamente a posição dos sinais em ambos os chips ser rigorosamente a mesma a forma como os pinos são contados em um encapsulamento e no outro são diferentes conforme podemos ver na imagem abaixo.


No Kicad eu desenvolvi para EESchema um componente EPM3064 levando em consideração a pinagem do PLCC 44 pinos mas na hora de associar o footprint eu associei o footprint do TQFP 44 pinos. Com isto os sinais ficaram deslocados em 6 posições na PCI e obviamente isto não poderia funcionar. Além deste problema eu cometi algumas falhas no diâmetro de furos dos componentes e dos furos de fixação da placa na caixa do Carchano o que dificultou bastante a fixação dos componentes e os furos de fixação eu tive que alargar um pouco para que a mesma encaixasse na caixa corretamente.

Triste mas resoluto eu parti para a criação do design da revisão B da placa corrigindo todos os erros que eu havia cometido na revisão A o que me tomou mais um par de semanas para concluir. Desta vez eu queria a placa em minhas mãos mais rapidamente e na época eu tomei conhecimento de um site nacional com o princípio de funcionamento mais ou menos parecido com o OSHPark. O site que eu estou me referindo é o http://pci.eletronica.org/ que no momento desta postagem está informando que o site está suspenso por tempo indeterminado.

O princípio de funcionamento deste site é mais ou menos o mesmo do site OSHPark. Você envia o design da placa em formato Gerber e o site calcula o preço da placa para você. Na PCI Eletrônica não havia a restrição de múltiplo de 3 placas mas mesmo assim eu pedi três placas porque é o que eu sempre quis: três placas que funcionassem. O custo final ficou em torno de R$ 550,00 na época, ou seja, mais caro que no site OSHPark e foi após pagar o valor que os problemas começaram.

Quando eu emiti a ordem no site o status do meu pedido ficou como (Aguardando aprovação de pagamento). Uma semana após eu ter pago pelo pedido continuava a mesma coisa. Eu mandei um e-mail no qual eu fui respondido informando que o site estava com problemas mas que eles haviam já detectado o meu pagamento e que "muito em breve" eles estariam produzindo a placa. Mais uma ou duas semanas (não me lembro mais o tempo exato) sem nenhum e-mail ou alteração do status do meu pedido eu mandei um e-mail reclamando da demora. Novamente fui respondido só que desta vez eu fui informando que os meus arquivos Gerber estavam com problema e que por isto eles ainda não haviam mandado a placa para produção.

A partir daí eu passei a trocar uma série de e-mails com a "área técnica" da empresa. Inicialmente eu fui informando que os arquivos não estavam abrindo e sugeriram que eu instalasse um programa chamado viewplot que era o programa que eles usavam para verificar os arquivos Gerber que eles recebiam. Instalei o software e não vi qualquer problema nos meus arquivos neste software. Então eles me pediram um par de vezes que eu mandasse os arquivos novamente e no final pediram que eu mudasse a unidade de medida de polegadas para milímetros e que mudasse o formato dos números para ponto fixo. Tudo feito ainda demorou mais umas duas semanas para eles me mandarem as placas e me entregarem o código de rastreamento. Mais umas 3 semanas por conta da nossa querida e amada EBCT (Sic) e finalmente a placa chegou conforme podemos ver na foto abaixo. O processo todo demorou mais de 3 meses entre colocar o pedido no site e efetivamente receber as placas na minha casa.


A PCI.Eletrônica me enviou o dobro de placas que eu havia pedido sem nenhum custo adicional para mim, o que foi um pequeno plus com relação ao que eu queria porque acabou que eu fiquei com uma quantidade de placas acima do que eu queria. Devo dizer que a qualidade da placa é muito boa e inclusive eles se deram ao trabalho de estanhar os contatos da placa, o que não aconteceu com as placas da OSHPark. Um problema com as placas foi que o corte do contorno da placa que eles fizeram ficou em torno de 1,5 mm maior do que eu havia especificado. Com isto eu tive que desbastar o excesso de placa nas laterais porque o design da placa que eu fiz ocupa todo o espaço da caixa do Carchano e com este excesso eu não estava conseguindo encaixar a placa na caixa.

Me pus novamente a soldar os componentes na placa. Desta vez tanto o PIC como o CPLD foram reconhecidos e aceitaram a programação dos seus respectivos programadores. Para fazer um teste inicial eu coloquei a placa sem o painel de controle no meu MSX e eu puder ver que o MSX estava mostrando as mensagens da EEPROM presente na placa - bom sinal. Então eu colouque o painel de controle e... Não funcionou. :-(

Pior, depois que eu coloquei o painel tanto o PIC, como o CPLD pararam de responder aos seus respectivos programadores. Sendo que acabaram-se os CPLD´s com encapsulamento TQFP 44 pinos em casa. Além disto claramente o display de LCD também ficou danificado e eu tive que trocar o display.

Novamente me pus a investigar o problema e percebi que eu inverti a pinagem da alimentação entre o painel de controle e a placa principal. Eu resolvi este problema simplesmente trocando a posição dos fios no cabo flat.

O problema agora era que se acabaram os CPLD´s. No site da Farnel Brasil não havia mais em estoque. Pedi para orçar. Esperei uma semana e nenhuma resposta da Farnell. Fui no Ebay e comprei os CPLD´s e mais alguns componentes no dia 15/08/2014 sendo que até o momento desta postagem estes componentes mantém o status no site do Correios conforme podemos ver abaixo:


Bem, no meio da minha frustação e após um mês eu ter pedido para orçar o componente eu recebi um e-mail da Farnell com o bendito orçamento. Aprovei e paguei o orçamento e por volta de meados de Outubro/2014 eu recebi os CPLDs em casa.

Soldei e programei o CPLD. Chequei vinte vezes tudo novamente só para ter certeza. Pluguei o cartucho no meu Expert e... FUNCIONOU!!!

Finalmente eu consegui colocar o meu "Emulador de Interface de Disco" para funcionar com a placa de circuito impresso revisão B. Depois de praticamente um ano, muito dinheiro gasto, muita espera e aborrecimentos finalmente a placa funcionou.

É óbvio que a primeira pergunta que vem a mente é: Será que realmente valeu a pena? E aí a resposta é: Depende. Se o objetivo fosse exclusivamente para usar os meus computadores MSX a resposta é um NÃO gigantesco. Eu teria poupado não somente aborrecimentos como muito dinheiro comprando uma das outras interfaces que já existem e funcionam muito bem.

Por outro lado este foi apenas uma pequena parte do meu objetivo. Pois o meu objetivo principal sempre foi o de aprender e se eu olhar por este lado apenas a resposta passa a ser um SIM igualmente gigantesco. Eu acredito que eu aprendi muito, tanto sobre microcontroladores, como sobre CPLDs, tal como interfaces de computador. Aprendi muito sobre a estrutura do sistema de arquivos FAT. Aprendi muito também sobre cartões SD. Aprendi inclusive que desenvolver hardware no Brasil é extremamente difícil e caro.

Há ainda um outro lado que é o da satisfação pessoal e do orgulho. Depois de anos de desenvolvimento - eu comecei a pensar e a estudar sobre como eu iria executar este projeto em 2011 - você conseguir êxito no seu projeto é muito gratificante. è uma sensação muito boa e ao mesmo tempo muito difícil de descrever. Eu acredito que só quem desenvolveu e criou algo do zero e obteve êxito no final sabe de verdade como é. E a resposta à pergunta inicial olhando por esta perspectiva é também um SIM gigantesco.

Ou seja, se você é daqueles que realmente não gosta de desenvolver hardware ou software e quer apenas usar o seu MSX então não inicie um projeto como este. Mesmo que você ache que você teve alguma ideia mirabolante que vai "revolucionar" o computador MSX. Por um outro lado eu recomendo que todos que gostam efetivamente de trabalhar com desenvolvimento de hardware e software que tentem, pelo menos uma vez, fazê-lo. Porque apesar de todos os aborrecimentos e gastos, caso você consiga concluir seu projeto a satisfação em fazê-lo supera qualquer dificuldade.

Eu ainda tenho muito a dizer sobre o funcionamento do circuito e muitas coisas aconteceram após a isto e por este motivo eu estou reservando posts futuros para descrever e mostrar em maiores detalhes a interface funcionando.

Um abraço,

José Paulo