Navegar é preciso… Com o Bus Pirate! 2

Se você é um entusiasta de sistemas embarcados, sabe que nem só de pisca-led viverá o Arduino! Brincadeiras à parte… O desenvolvimento de projetos em sistemas embarcados nos leva a situações diversas, em que serão necessárias a interação de mais elementos além do próprio microcontrolador. Como exemplo: interfaces com acelerômetros via I2C, controle de displays LCD usando SPI, interface com computador via RS232/UART, análise de frequência de sinais e até mesmo análise de um dado sinal analógico, dentre outros casos mais comuns. Normalmente as coisas podem funcionar de primeira: programou, conectou, rodou! E às vezes não… Então, para analisar, conferir, estudar e garantir o bom e correto funcionamento de dispositivos embarcados é que o Bus Pirate foi pensado.

Um Canivete Suíço Embarcado

O termo “canivete suíço” tornou-se um jargão popular para itens/elementos que servem de utilidade para mais mais de uma aplicação. Assim como o próprio canivete suíço em si possui abridor de lata, faca/canivete, saca-rolha, lupa, cortador de unha, tesoura, dentre outros, o Bus Pirate torna-se um equivalente em termos de sistemas embarcados. Ele é capaz de analisar protocolos de comunicação, gerar formas de onda, captar sinais analógicos, servir de ponte USB-Serial, dentre várias outras funções, incluindo a de ser capaz de atuar como gravador de microcontroladores também.

A placa é pequena em tamanho mas grande em possibilidades. Com seus poucos pinos de interface, o Bus Pirate é capaz de assustar. A versão disponível no MakerHero é a v3.6, uma das mais consagradas atualmente no mercado. A Figura 1 mostra a vista superior da Bus Pirate, onde todas as informações e elementos úteis para o posterior manuseio já são expostos. À esquerda, temos o conector mini-USB. À direita, temos os sinais de interface usados nos recursos do Bus Pirate. Parecem poucos? Todavia, são multifunções. Mais adiante explicarei melhor as interfaces do Bus Pirate.

No topo da placa, 4 leds indicadores  que informam que a placa está alimentada (PWR), atividade via USB (USB), modo de operação (MODE) e o controle de tensão de alimentação (VREG).

 

Bus Pirate
Figura 1 – Pirate Bus – Vista superior

Vocês devem ter observado uns 5 furos para solda de pinos na parte de baixo da placa, nesta foto da Figura 1. São os pinos para gravação direta do microcontrolador usado no Bus Pirate, que seguem o formato ICSP.

A parte inferior é simples, e como mostrado na Figura 2, tem um  maior destaque ao grande logo do DangerousPrototypes no centro da placa.

Figura 2 – Pirate Bus – Vista inferior.

O Pirata de Barramentos

O cérebro desse pirata é um microcontrolador Microchip PIC24FJ64, somado a um conversor USB-Serial FT232RL. Tais escolhas não foram por acaso: O PIC24 é um microcontrolador poderoso  para seletivamente executar cada uma das funcionalidades embutidas no Bus Pirate, cada qual com sua complexidade. E o FT232 é um conversor USB-Serial tranquilamente compatível com Windows, Linux e Mac, de forma que o usuário não terá dor de cabeça para simplesmente ligar e usar o Pirabus.

Figura 3 – Componentes do Bus Pirate.

Para vocês terem noção da quantidade de funções que esse canivete suíco possui, sem mais delongas, veja a listagem abaixo:

  • Interface USB para alimentação e comunicação
  • Pinos tolerantes a 5 Volts
  • Ponta de prova tolerante a 6 Volts
  • Medidor de frequências de 1 Hz a 40 MHz
  • Gerador de frequências e PWM de 1 kHz a 4 MHz
  • Resistores de pull-up onboard multi-tensão
  • Fonte de alimentação onboard de 3.3 Volts e 5 Volts com software reset
  • Macros para operações comuns
  • Sniffer para tráfego de dados em barramentos de comunicação:
    • 1-Wire
    • I2C
    • SPI
    • JTAG
    • Serial Assíncrona
    • MIDI
    • Teclado de Computador/PC
    • HD44780 LCD
    • Bibliotecas 2-wire e 3-wire com suporte a controle de pinos e sinais bit a bit
    • Modo bitbang binário com suporte a scripts para modos 1-Wire, I2C, SPI e UART
  • Modo de ponte USB-Serial transparente (uma das formas que eu mais uso, rsrsrs)
  • Analisador lógico de baixa velocidade – Frequências de 10 Hz a 1 MHz  – Suficiente para boa parte dos problemas.
  • Suporte como gravador nas ferramentas avrdude, flashrom e OpenOCD
  • Clone compatível do programador AVR STK500 v2
  • Execução em conjunto com scripts em Perl, Python, dentre outros – Bom para automatização de testes e análises
  • Bootloader para fácil atualização do firmware via USB
  • Usa padrão de layout PCB DP6037
  • Possui os fontes abertos – Ou seja, você pode fazer a sua Bus Pirate se quiser, tanto a placa, como estudar e/ou gravar o firmware também!

Pinagem do Bus Pirate

É muita função, né? E como devem ter reparado, o Bus Pirate não tem tantos pinos, nem seu tamanho é tão grande assim. Dessa forma, para suportar a execução de tantas funções diversas o Bus Pirate desempenha a multiplexação dos pinos para cada uma das funções que irá exercer.

Figura 4 – Conector do Bus Pirate

 

Para ter uma noção dos pinos e suas funções disponíveis, veja a tabela abaixo:

Pino Descrição (Bus Pirate é o mestre)
MOSI  Sinal Master Out, Slave In (SPI, JTAG), Sinal Serial data (1-Wire, I2C, KB), e Sinal TX (UART)
CLK  Sinal de Clock (I2C, SPI, JTAG, KB)
MISO  Sinal Master In, Slave Out (SPI, JTAG), Sinal RX (UART)
CS*  Chip Select (SPI), TMS (JTAG)
AUX  IO Auxiliar, Ponta de prova para medir frequência e gerar sinais PWM
ADC  Ponta de prova para sinal analógico (máximo de 6 Volts)
Vpu  Voltage input for on-board pull-up resistors (0-5volts).
+3.3v*  Fonte de alimentação +3.3 Volt controlável (liga/desliga)
+5.0v  Fonte de alimentação +5 Volt controlável (liga/desliga)
GND  Sinal de Terra – Precisa estar no mesmo terra que o circuito de teste

Analisador Lógico

Uma das funções que mais chama a atenção e “salta aos olhos”, pelo menos da minha parte, é a função de analisador lógico. Essa funcionalidade permite o desenvolvedor/projetista de sistemas embarcados a analisar as formas de onda de sinais envolvidos em processos diversos de comunicação. Por exemplo, por quê uma comunicação SPI não está funcionando? O sinal CS, Clock, etc, estão sendo apropriadamente controlados pelas partes? E além de observar as formas de onda, é possível compreender os comandos e dados transmitidos também.

E nem só protocolos podem ser amostrados, como também qualquer sinal digital (I/O) também. Essa funcionalidade é compatível com o protocolo SUMP, e as aplicações clientes podem ser baixadas aqui ou aqui. Não é preciso reprogramar o firmware do Bus Pirate. Ao executar o programa configurado com o Bus Pirate conectado à porta USB, ele irá comunicar com o Bus Pirate para colocá-lo em modo de analisador lógico, e a operação será feita em conjunto com a placa. Simples e prático! Veja um exemplo de análise I2C na figura adiante.

 

i2c-data-analyzed
Figura 5 – Exemplo do Logic Analyzer Client rodando com Bus Pirate.

Em Funcionamento

O funcionamento tradicional do Bus Pirate basicamente envolve você conectar a placa via USB no computador, e abrir um console terminal de serial na Porta USB que o seu computador irá alocar para o Bus Pirate A velocidade de comunicação serial é 115200 bps por padrão. Nos exemplos abaixo, meu Windows criou a porta COM27 (haja portas, né) para o Bus Pirate.

Ao começar, o Bus Pirate basicamente é um “terminal” que recebe comandos. Se você digitar simplesmente ? e der Enter, ele irá exibir as mensagens de ajuda mostradas na imagem adiante, que detalham cada um dos comandos suportados.

 

Figura 6 – Console de comandos – Exemplo com mensagem de ajuda geral.

Uma vez observado algum dos comandos desejados, por exemplo o de “modo de operação” por meio da letra m, basta você digitar m, apertar Enter, que o Bus Pirate irá mostrar as novas opções a seguir com relação a esse comando, como mostrado adiante.

Figura 7 – Exemplo de terminal para mudar modo de operação.

O modo padrão é HiZ (1), que é de alta impedância justamente para proteger tanto o Bus Pirate quanto quaisquer elementos sendo avaliados. E depois que o usuário escolhe um dos modos observados o terminal de comandos vai seguindo com novas opções, até por fim o Bus Pirate assumir a funcionalidade desejada com as opções também desejadas.

De início parece comum, mas quando você se habitua com os comandos e com os passos/sequência de parâmetros para operação, é bem rápido para colocar qualquer coisa pra funcionar.

Para os curiosos de plantão, aqui vai um guia de “colinhas” dos comandos e parâmetros suportados pelo Bus Pirate no Dangerous Prototypes.

Considerações Finais

O Bus Pirate é uma ferramenta fantástica, e sempre que posso estou carregando o meu comigo em meu “kit embarcados”, que basicamente é uma maletinha com sensores, adaptadores, protoboard e algumas plaquinhas. É um quebra-galho para toda ocasião, e já me ajudou em situações diversas esclarecendo se havia um problema de mal-contato, se o sensor/dispositivo estava operando normalmente, dentre outros exemplos. Como é um acessório literalmente de propósito geral, é algo que eu recomendo!

E então, o que achou? Deixe aqui seus comentários!

Faça seu comentário

Acesse sua conta e participe

2 Comentários

  1. Bela exposição André!
    Vlw!!!!
    Pena que nesse momento não há o item para comprar.

  2. Olá André, estou querendo usar a BUs Pirate como gravador de Arduino, queria saber qual pino uso para conectar o DTR e o CTS do Arduino ao Bus Pirate.
    Obrigado!!!