Nesta terceira postagem da série "Hack do Fritzen" vou mostrar para vocês o meu mais recente projeto: um shield para testar diversas funções do Arduino (entrada e saídas, etc). A ideia é montar um circuito completo utilizando apenas o espaço de um shield de Arduino UNO, que contenha todos os circuito necessários para ter certeza que o Arduino sob teste está funcionando perfeitamente.
Mas porque criar um shield para testar Arduinos, se eles já vem testados de fábrica? - Porque o autor deste blog está iniciando a produção (artesanal) de seus próprios compatíveis com Arduino, como vocês já viram neste artigo aqui. Como requisito de projeto defini que este shield deve ser capaz de testar a maior quantidade possível de funções do Arduino, fornecendo indicação visual de funcionamento dos seguintes circuitos:
- Entradas digitais (0-5V)
- Saídas digitais (0-5V)
- Entradas analógicas (0-5V0
- Saídas PWM
- Comunicação com protocolo i2C
- Comunicação Serial
Com este objetivo em mente eu parti para escolha dos componentes e pinos para sua conexão; fiz questão de montar no shield somente componentes de fácil obtenção e operação, conforme lista e imagem abaixo:
- Pinos 0 e 1: comunicação serial com um computador
- Pinos 2 e 3: um LED (saída digital)
- Pinos 4 e 5: um LED (saída digital)
- Pino 6: um LED (saída PWM)
- Pinos 7 e 8: um LED (saída digital)
- Pino 9: um servomotor (saída digital)
- Pino 10: um chave/botão (entrada digital)
- Pinos 11, 12 e 13: gravação de firmware no ATMEGA328 via ICSP, antes de iniciar o teste
- Pinos A4 e A5: sensor de umidade/temperatura Si7021, comunicando via protocolo i2C
E o resultado final, o shield montado (hora de testar!!):
Para efetuar o teste do Arduino utilizando este shield é necessário gravar um código no ATMEGA328 sob teste; escrevi um sketch que utiliza de forma simultânea todos os componentes do shield. O código se encontra abaixo, porém também pode ser baixado diretamente do meu Github, onde vou guardar qualquer alteração que fizer no mesmo.
Eu não disponho de um conversor USB-Serial no momento (FT232, PL2303, CH340) por isso estou utilizando um Arduino UNO sem o ATMEGA328 como conversor serial (imagem abaixo).
Conectando o shield sobre o Fritzem UM, o servo-motor no conector e a fonte externa (12V) no Arduino:
O funcionamento do teste pode ser visto no vídeo abaixo onde o Arduino sob teste é Fritzen UM, meu compatível de cor amarela!.
Dica: este é um trabalho em progresso, portanto novas versões e melhorias podem surgir; sugiro acompanhar a página deste projeto no hackaday.io (em Inglês) para saber dos detalhes mais atuais.