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 A0..A3: Potenciômetro (entradas analógicas)
– 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. 
 #include <Servo.h>  

#define led1GND 2
#define led1VCC 3
#define led2GND 4
#define led2VCC 5
#define ledPWM 6
#define led3GND 7
#define led3VCC 8
#define botao 10

int lerBotao = 0;
int analogico0 = 0;
int analogico1 = 1;
int analogico2 = 2;
int analogico3 = 3;
int posServo = 0;
int subindo = 1;
int valorPWM = 0;

Servo meuServo;

void setup() {
meuServo.attach(9);
Serial.begin(9600);
pinMode(ledPWM, OUTPUT);
pinMode(led1VCC, OUTPUT);
pinMode(led1GND, OUTPUT);
pinMode(led2VCC, OUTPUT);
pinMode(led2GND, OUTPUT);
pinMode(led3VCC, OUTPUT);
pinMode(led3GND, OUTPUT);
pinMode(botao, INPUT);
}

void loop() {


lerBotao = digitalRead(botao);

if (lerBotao == HIGH) {
digitalWrite(led1VCC, HIGH);
digitalWrite(led1GND, LOW);
digitalWrite(led2VCC, HIGH);
digitalWrite(led2GND, HIGH);
digitalWrite(led3VCC, HIGH);
digitalWrite(led3GND, LOW);

} else {
digitalWrite(led1VCC, HIGH);
digitalWrite(led1GND, HIGH);
digitalWrite(led2VCC, HIGH);
digitalWrite(led2GND, LOW);
digitalWrite(led3VCC, HIGH);
digitalWrite(led3GND, HIGH);
}

delay(300);
analogico0 = analogRead(A0);
analogico1 = analogRead(A1);
analogico2 = analogRead(A2);
analogico3 = analogRead(A3);

Serial.print("A0= ");
Serial.println(analogico0);
Serial.print("A1= ");
Serial.println(analogico1);
Serial.print("A2= ");
Serial.println(analogico2);
Serial.print("A3= ");
Serial.println(analogico3);

if (subindo == 1){
posServo = posServo +18;
meuServo.write(posServo);
if (posServo >= 180){
subindo = 0;
}
delay(100);
}
if (subindo == 0){
posServo = posServo -18;
meuServo.write(posServo);
if (posServo <= 0){
subindo = 1;
}
delay(100);
}


valorPWM = map(posServo, 0, 180, 0, 175);
// change the analog out value:
analogWrite(ledPWM, valorPWM);
}

 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.
Hack do Fritzen [3] – Um Shield para testar Arduinos
Classificado como:                                        

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Solve : *
30 + 9 =