Quando se tem um hardware poderoso fica fácil construir um equipamento de medida para tirar o "bugs" de projetos mais complexos. O contrário - um hardware simples - requer um software poderoso. O ideal é uma combinação dos dois fatores positivos: hardware e software poderosos. Essa última alternativa custa muitos preciosos e suados reais, às vezes várias vezes o preço do projeto que queremos ver funcionando.
Há uns dois anos a equipe do Solucionática investiu em um equipamento de teste, invariavelmente de concepção chinesa. Trata-se de um "osciloscópio" via usb. As palavras que constavam na propaganda faziam crer que o dispositivo era de uso fácil e que atendia as expectativas. O baixo custo chamou a atenção, mas na hora fazer funcionar enfrentamos os seguintes desafios:
1. Os equipamentos são clones não autorizados de produtos comerciais cujos desenvolvedores investiram dinheiro no desenvolvimento de hardware e software.
2. Os softwares são para Windows e nós usamos Linux.
Não é justo, muito menps legal - mesmo que pelo bem da ciência - usar software não licenciado. Por esse motivo usamos Linux. Quanto ao hardware, a nossa filosofia é de usar prioritariamente "Open Hardware", como o Arduino. Mas, no caso do "osciloscopio" a arquitetura usada é baseada no venerável 8051, tão antiga que podemos considerar que já está em domínio público. Em resumo: compramos um clone de algum equipamento que na verdade é um microcontrolador da família 8051. Reprogramamos o firmware de acordo com a solução desenvolvida por Sigrok e instalamos um pacote no Linux (Ubuntu) para controlar o equipamento e visualizar os dados obtidos. O tal "osciloscópio" transformou-se em um analisador lógico de 8-bits. Um dia, os responsáveis pelo projeto Sigrok irão lançar a parte osciloscópio.
A instalação dos pacotes necessários é de um grau de dificuldade alto para quem não tem familiaridade com o Linux. Alternativamente, há soluções semelhantes para OsX e Windows. Não tes pipe é nativo do Unix e, assim, está também disponível no Linux. Pipe? De que se trata? Podemos direcionar as aquisições de dados para um arquivo (comando -o <caminho/nomedoarquivo> da biblioteca sigro-cli). Criando um pipe para esse arquivo é possível visualizar as formas de onda e com um bom analisador de protocolo, decodificar as variadas informações que trafegam entre o equipamento em teste, o analisador lógico e o seu computador.
Resultados:
1. Modificamos o firmware.
2. Conseguimos obter arquivos com os dados adquiridos (no caso os dados que trafegam nos pinos 13 e 10 do Arduino (sketch link modificado para fazer piscar um led no pino 12.
3. Não conseguimos fazer o pacote Pulseview funcionar.O Pulseview é a parte "osciloscópio" da solução Sigrok.
Observação importante: Um programa que vai ajudar bastante nos nossos projetos com o Analisador Lógico é o socat, Vejamos esse exemplo:
sudo socat /dev/ttyUSB0,raw,echo=0,crnl /dev/ttyS0,raw,echo=0,crnl
4. Em 01/07/2015 conseguimos instalar o Pulseview com resultados excelentes, como podemos ver abaixo:
O analisador lógico está quase completamente funcional. Pudemos fazer a aquisição de dados por meio de linha de comando (sigrok-cli) e diretamente no Pulseview. As aquisições com a extensão .sr podem ser visualizadas no Pulseview. O gráfico abaixo é de um sketch do Arduino que aciona um bargraph em função do valor na porta analógica 0:
5. Acrescentamos a funcionalidade "protocol decoder". Nas figuras abaixo, temos as leituras dos sinais de um módulo RTC v1.0 da Catalex. Quem observar bem vai notar os dados enviados pelo RTC (06,07, 15) que é a data contida no relógio e enviada "embrulhada" no protocolo I2C. O decoder desembrulha e marca os eventos de um modo visualmente mais fácil de enxergar. A variação dos sinais de controle e os dados trocados entre um Arduino e o módulo RTC ficam evidenciados, com cores distitas e símbolos padronizados. Essa padronização é feita em Python. Logo é possível implementar a decodificação de qualquer protocolo.
6. Para que possamos obter esses dados é preciso entrar com esses comandos:
$ sigrok-cli --driver fx2lafw --config samplerate=250k --time 20s --channels 6-7 -o test.sr
$ sigrok-cli -i test.sr -P i2c:sda=7:scl=6
Ou usar o Pulseview diretamente. Funciona uito bem com vários protocolos já portados via Python para o Sigrok.
7. Links de interesse:
http://majek.mamy.to/en/logic-analyzer/
http://sigrok.org/wiki/Sigrok-cli
http://www.sigrok.org/blog/blogs/joel-holdsworth
8. A "porção" Analisador de Protocolo do Pulseview está completamente funcional. Pode ser usada para verificar os projetos e identificar possíveis falhas. Nota 10 para a equipe de Reengenharia Aplicada do Solucionática. Não desistiram e já estão estudando como acrescentar um protocolo de nosso interesse: