quinta-feira, fevereiro 11, 2016

Arduino Due - Parte 1

O Arduino Due é uma placa relativamente antiga (foi lançada no final de 2012), mas que não conquistou muito espaço. O seu futuro é também um pouco incerto, dado que o lançamento mais recente da Arduino/Genuino é baseado em um microcontrolador Intel ao invés de Atmel. Mas finalmente eu comprei um e coloco aqui algumas informações sobre ele.

Arduino Uno (original, à esquerda), Mega 128 (falsificado, no alto) e Due (genérico, em baixo)

A proposta do Arduino Due é oferecer uma plataforma bem mais poderosa que os modelos então existentes (como o Uno e Mega), mantendo o mesmo ambiente de programação (IDE, C/C++, biblioteca Arduino).

Entradas e Saídas

O coração do Due é o microcontrolador AT91SAM3X8E da ATmel. Ele possui um core ARM Cortex M3, cercado de uma generosa quantidade de interfaces de entrada e saída. A exemplo do Uno e do Mega, a placa não contém muita coisa além do microcontrolador. O formato segue o do Mega, com os mesmos conectores com quase os mesmos sinais.

A primeira grande diferença é que a placa trabalha com 3,3 V ao invés de 5V. Mais importante ainda, os pinos não suportam tensões acima de 3,3V. Ou seja, se você for usar um shield ou conectar algo ao Due, é preciso garantir que as entradas deste hardware funcionam com sinal alto 3,3V e que nunca as saídas dele (conectadas ao Due) vão passar disto.

O segundo detalhe é que a capacidade de corrente dos pinos é bem menor que no Uno e Mega. Deve ser respeitado o máximo de 130mA para a soma das correntes de todas as saídas digitais, Dependendo do pino, o limite para gerar corrente é de 3 ou 15mA e o limite para receber corrente é de 6 ou 9mA. Os pinos que suportam mais corrente são os pinos 1, 3 a 12, 23 a 51 e SDA1. Ou seja, mesmo para aplicações simples você pode precisar colocar drivers externos.

Outra diferença é que a interface SPI está disponível apenas no conector de 6 pinos (usado para gravação do microcontrolador no Uno e Mega).

Por outro lado, temos vários recursos adicionais:
  • Quatro interfaces seriais assíncronas (UART)
  • Duas interfaces I2C
  • Uma interface CAN
  • Conversor analógico digital com resolução de até 12 bits
  • Conversor digital analógico (finalmente temos um analogWrite que gera realmente saída analógica)
  • O PWM pode operar com 12 bits de resolução e está disponível em 12 pinos (2 ao 13 - agora você pode controlar a intensidade do LED que está na placa)
  • DMA: transferência de dados automática entre memória e determinados periféricos
Um recurso do microcontrolador que (infelizmente) não foi aproveitado no Due é o suporte a Ethernet.

USB

Uma coisa que logo vai chamar a atenção - e confundir - é a presença de dois conectores mini USB.

Um deles está marcado (na parte de baixo da placa) como "Native". Este conector está ligado diretamente ao SAM3X8E. Através das bibliotecas apropriadas, esta interface pode operar com slave (simulando uma porta serial, mouse, teclado, etc) ou master (para conectar um mouse, teclado, etc).

O outro conector, como no Uno e Mega, está ligado a uma porta serial do microcontrolador principal através de um ATmega16U2. Além da comunicação serial rotineira, este conector possui recursos para simular o auto-reset do Arduino e para permitir a programação da Flash, como veremos na segunda parte.

Referências

https://www.arduino.cc/en/Main/ArduinoBoardDue
http://tronixstuff.com/2013/02/08/first-look-arduino-due/

Nenhum comentário: