fbpx
22 de maio de 2022

Do bit Ao Byte

Embarcados, Linux e programação

Laboratório Maker 12: Analisador lógico com a RP Pico

analisador lógico

Eletrônica digital é um mundo fantástico e inclusivo! Nesse artigo veremos como fazer um analisador lógico com a RP Pico, de baixo custo e altíssima qualidade!

O que é um analisador lógico?

Se não tem acompanhado a série Laboratório Maker, então pode ser que não conheça ainda um analisador lógico, ou pode ser que não conheça as ferramentas disponíveis. Já escrevi sobre um analisador genérico baseado no Saleae, como transformar um BluePill em debugger, detalhei o analisador lógico usando o software da Saleae, e mais algumas coisas interessantes nos 11 artigos anteriores do Laboratório Maker. Dessa vez vamos fazer o nosso analisador de baixo custo usando a RP Pico, que oferecerá vantagens como:

  • Ter 21 canais para análise!
  • Ter até 120MHz de velocidade de captura de dados!
  • Ter 3 canais ADC com até 500KHz de velocidade!

É muita vantagem, por bem menos do que um clone do Saleae! E o melhor, você mesmo fará o seu!

Mas resumindo, o analisador lógico nos permite medir sinais e ler protocolos. Leia os artigos supracitados para detalhes. Se quiser ver em ação veja o vídeo de uma análise usando um clone do Saleae.

Preparando o ambiente

Temos 2 pontos principais; o firmware para a RP Pico e o programa analisador – no caso, o Pulseview Porém, o projeto não está na mainline do Pulseview e aí você tem duas opções para instalá-lo no Windows.

Nativo

Para instalar uma versão compatível, a maneira não é lá algo que eu recomendo fazer com qualquer arquivo executável. O desenvolvedor disponibilizou um binário compilado, indicado nesse repositório. Devido ao tamanho excedente, não é possível hospedá-lo diretamente no github, por isso há um link para o Dropbox. Ao clicar no link para o dropbox, feche a janela que sugere a criação de uma conta e do lado superior esquerdo haverá o link de download.

O segundo ponto nessa abordagem é que “pode” ser necessário instalar a biblioteca msvcr100.dll no Windows, cujo link está também dentro da referência acima. Eu instalei o programa e executei sem problemas (nem precisei da tal biblioteca).

WSL2

Utilizando o Windows Subsystem Linux, podemos instalar a versão para Linux e acessá-la através do menu do Windows, como se fosse um programa nativo. Claro, em um Linux nativo também funcionará, portanto esse tutorial é multiplataforma.

A partir do Windows 10 versão 2004 Build 19041 (ou superior) e Windows 11, o procedimento é simples e direto. Clique no menu e digite PowerShell. Clique com o botão direito sobre ele e então clique em Executar como Administrador. Abrir-se-á um terminal, no qual devemos digitar:

wsl  --install

O processo será guiado, portanto não preciso descrever o restante.

Assim que concluir essa etapa, você poderá digitar Ubuntu no menu do Windows e o terminal do Linux aparecerá. Daí segue-se o processo baseado em CMakefile. Cara, estou ansioso demais para fazer o processo em dois sistemas. Não estou “traindo” o Linux, vamos fazer umas brincadeiras com ele também, mas em outro artigo.

Instalar o firmware no RP Pico

Se já instalou e abriu o PulseView para conferir que está funcionando, hora de instalar o firmware na RP Pico. No link do repositório disposto mais acima, dentro do diretório sigrok-pico / pico_sdk_sigrok / build estará o firmware cujo nome no momento desse artigo é pico_sdk_sigrok.uf2. Se está sendo ousado em usar pela primeira vez a RP Pico e ainda não gravou nada, o procedimento é simples:

1 – Mantenha pressionado o botão BOOTSEL antes de conectar o dispositivo à porta USB.

2 – Após conectar, solte o botão

3 – A RP Pico aparecerá no sistema como um dispositivo de massa (um pendrive, por exemplo). Abra-o e copie o firmware para dentro dele. Imediatamente após a cópia o dispositivo reiniciará com o firmware novo. Simples de tudo.

Conectando à RP Pico

O menu inicial do PulseView tem um combobox cujo valor inicial é Demo device. Clique nele e então “escolher dispositivo”. Nessa versão modificada e mantida pelo autor do firmware, teremos a opção RaspberryPi PICO (raspberrypi-pico). Obviamente, deve ser selecionado. Na opção 2, escolha a porta serial, porque o dispositivo se comunica por USB-serial. Finalmente, clique em “Scan for devices using driver above”. Deverá aparecer a RP Pico, como na imagem a seguir:

PulseView - select device

Clique em Ok e então no canto superior esquerdo clique em Run. Repare também no número de amostras coletadas e na frequência, que são variáveis importantes.

Primeiro teste

Há diversas possibilidade para fazer testes. Dentre elas, optei por escrever uma rotina no ESP8266, colocando um pino em HIGH por 25ms e em LOW por 75m. Isso dever gerar uma onda quadrada constante com um ciclo de 100ms, de modo que possamos aferir através do analisador lógico. Também gostaria de salientar que não é apenas nível lógico que pode ser medido, uma vez que podemos decodificar protocolos, como exemplificado nesse vídeo. Nesse momento estou apenas testando o dispositivo, veremos mais sobre sua utilização no vídeo que estará disponível em nosso canal DobitaobyteBrasil no youtube.

Sobre o ESP8266, utilizei e utilizarei sempre o módulo de desenvolvimento da Saravati, com botão de liga/desliga, feita para encaixar MCUs. Isso reduz o custo de desenvolvimento e para quem quer ter diferentes programas para diferentes propósitos, colecionar MCUs de ESP8266 pode se tornar um hobbie incontrolável! O módulo da imagem de destaque foi referenciado nesse artigo sobre gravadores para ESPRESSIF.

Não adquiri para os 24 canais, mas precisava de pelo menos 10 desses jumpers descritos no artigo anterior. Esse dispositivo merece. Esse jumper com ponta de prova tipo garra você encontra na Mekanus.

O código utilizado no ESP32 para fazer o teste é esse:

void setup() {
  pinMode(15,OUTPUT);

}

void loop() {
  digitalWrite(15,HIGH);
  delay(25);
  digitalWrite(15,LOW);
  delay(75);

}

Depois, um jumper (partindo do RP Pico) vai ao GND e o outro ao IO15. O resultado de uma leitura:

analisador lógico PulseVview

Lá nos ícones de menu tem um medidor de espaço. Clique nele, selecione a área a medir o tempo e compare. Aqui bateu certíssimo:

medição precisa

Pena que não zera em um ponto “x”, mas 926-901=25ms. Fiz o mesmo para o intervalo de 75ms, mas não vou ficar colocando print de tudo porque a preguiça é maior que a vontade. Olhando do lado da frequência, temos o ícone amarelo e verde, onde podemos escolher o protocolo de decodificação. Estão disponíveis montes deles!

No vídeo demonstro um pouco mais os resultados e interação com o PulseView, mas ainda preciso editar antes de subir o vídeo. Se não é inscrito no canal ainda, inscreva-se em DobitaobyteBrasil no Youtube e clique no sininho para ser notificado assim que o vídeo sair. E quando os temas de vídeo não estiverem lhe satisfazendo, fique à vontade para pedir o que deseja assistir, ainda que seja algo de seu conhecimento, mas que deseje comparar outros pontos de vista ou queira ver o quão igual pensamos.