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).
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.
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.
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.
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.
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.
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.
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!
Bela exposição André!
Vlw!!!!
Pena que nesse momento não há o item para comprar.
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!!!