Circuito Principal - GuilhermeLaurente/DebreixDigital GitHub Wiki
Protótipo inicial
O primeiro protótipo desenvolvido para o projeto usa como vetor de interação dois potenciômetros, também conhecidos como resistor variável, ou seja, trata-se de um botão rotativo que altera sua resistência interna de 0 a 10000 ohms aproximadamente. Essa alteração gera sinais analógicos que variam de 0 a 1023 unidades e são interpretados pelo Arduino UNO que envia estas informações para o computador via comunicação serial.
Componentes:
- Arduino UNO
- Protoboard
- 2x Potenciômetro rotativo de 10k ohm
- Jumpers
Se por um lado a leitura analógica tem uma resposta instantânea devido a alteração física da resistência do componente, por outro lado isto gera instabilidade no sinal recebido pelo Arduino. Mesmo mapeadas, ou seja, com seus intervalos ajustados ao código, as variáveis relacionadas aos potenciômetros continuam oscilando resultando em tremores nas imagens.
( ver Código Arduino UNO - Leitura Analógica )
Raspberry Pi
Afim de solucionar os problemas gerados pela instabilidade do sinal analógico, optou-se por trocar os potenciômetros por encoders rotativos tendo em vista o melhor controle e estabilidade proporcionado pelo sinal digital. Além disso, diferente dos componentes anteriores, os encoders não possuem limite de giro e por isso não ficam limitados a um intervalo de atuação, assim como um push button acoplado.
Sendo assim, optou-se por trocar também o microcontrolador (Arduino) pelo microprocessador Raspberry Pi 3 model B+ além dos componentes de interação. Com essa troca pretendia-se eliminar a necessidade do sistema ser conectado a um computador, ou seja, o Raspberry teria a função de processar os dados fazendo o papel do computador e unificando o sistema em um único aparelho.
Além disso, foi acrescentado um LED Branco com a intenção de que a interface física possua um feedback visual com relação ao funcionamento do sistema.
Componentes:
- Raspberry Pi 3 model B+
- 2x Encoder rotativo
- LED Branco alto brilho
- Resistor 220 Ohms
- Jumpers
Este circuito resolveu o problema relativo a instabilidade do sistema anterior, principalmente devido ao encoder rotativo, porém trouxe outras problemáticas consigo:
-
Temperatura interna do processador:
A temperatura ideal recomendada pelo fabricante para obter-se o melhor desempenho do Raspberry é de 48°C. O sistema operacional Raspbian, uma das principais distribuições Linux para o microprocessador em questão, permite, via prompt, verificar a temperatura interna do processador. Após alguns testes, mesmo com refrigeração forçada através de um cooler, verificou-se que dentro da caixa de marchetaria o processador atingia picos de até 70°C, colocando em risco a integridade da placa. -
Lentidão no processamento dos dados:
Logo nos primeiros testes de interação com imagens ficou claro a dificuldade do Raspberry em interpretar os sinais de entradas da GPIO e executar os comandos no Processing, resultando em lentidão e travamento na renderização das imagens na tela.
Circuito Final
Com o objetivo de sanar os problemas citados no circuito anterior decidiu-se por voltar ao Arduino UNO R3 porém mantendo os rotary encoders, ao invés dos potenciômetros. Dessa forma pode-se garantir a precisão do sinal digital dos encoders, a eficiência no recebimento de sinais de entrada (INPUT) do Arduino e a velocidade de processamento de dados e renderização das imagens proporcionada pelo computador.
Além disso, o LED Branco de altro brilho foi trocado por um LED RGB com o objetivo de aumentar os feedbacks possíveis, por exemplo o incremento e decremento de variáveis geram respostas luminosas diferentes.
Componentes:
- Arduino UNO
- 2x Mini Protoboard
- 2x Encoder rotativo
- 2x Capacitor 100nF
- 2x Diodo 1N4148
- 1x LED RGB
- 3x Resistor 220 Ohms
- 4x Resistor 10k Ohms
- Jumpers
