Arduino UNO

segunda-feira, 9 de junho de 2014



Nossa primeira placa a ser (parcialmente) analisada será o conjunto de plataformas chamadas Arduino UNO. Primeiramente, o "UNO" vem do italiano uno, que quer dizer um em português. Em outras palavras, UNO servirá de referência para todas as placas baseadas no Arduino 1.0. Basicamente, Arduino 1.0 é a primeira versão do Arduino UNO. 


Atualmente, existem 4 tipos de placas Arduino UNO: Arduino UNO, Arduino UNO R2, Arduino UNO R3 e Arduino UNO SMD.

Falarei um pouco de cada uma dessas placas a seguir:


Arduino UNO
Lançado em 2010, a primeira placa fabricada para ser um marco para todas as plataformas referentes ao Arduino 1.0, Arduino UNO vem com algumas mudanças em relação aos seus antecessores (Arduino Duemilanove, Diecimila, NG, ...)

Segue a descrição dos principais componentes dessa placa:




Vamos à descrição:
  1. Conector fêmea padrão para comunicação USB (Arduino <---> Computador). Geralmente o cabo é vendido juntamente com o Arduino...
  2. Conector P4 fêmea para alimentação externa. No geral, serve como entrada de alimentação por pilhas, baterias e fontes DC (AC - DC / DC - DC).
  3. Local de Fabricação da Placa.
  4. Site oficial dos fabricantes da placa.
  5. Principal novidade em relação às outras placas antecessoras. Utilizou-se o ATMEGA 8u2 para comandar a  interface USB-Arduino.
  6. Microcontrolador ATMEGA 328P como unidade principal de processamento.
  7. Regulador de Tensão 5V.
  8. Regulador Tensão 3.3V.
  9. Furos para fixação da placa.
  10. Botão Reset (para resetar o microcontrolador manualmente... Ohhhhh!!)
  11. Conectores específicos para programação externa ICSP do ATMEGA 328P.
  12. Área para soldar conectores para programação externa ICSP do ATMEGA 8u2.
  13. Cristal oscilador 16MHz para o ATMEGA 8u2.
  14. Fusível para proteção extra da porta USB (contra correntes maiores que 500 mA).
  15. Oscilador para o ATMEGA 328P.
  16. Leds indicativos de transmissão (TX) e recebimento (RX) de dados via porta serial.
  17. Led indicativo se a placa está ligada ou não.
  18. Conectores para entrada analógica de dados.
  19. Entrada/Saída de alimentação DC.
  20. Terra (Ground) da placa.
  21. Saída para alimentação 5V regulados (corrente máxima de 40 mA).
  22. Saída para alimentação 3.3V regulados (corrente máxima de 50 mA).
  23. Conector para resetar o microcontrolador ATMEGA 328P.
  24. Pinos para entrada (RX) e transmissão (TX) de dados seriais.
  25. Conector para modificarmos a referência de níveis lógicos (5V = nível alto, por exemplo).
  26. Terra.
  27. Entradas/Saídas digitais. Pinos 9, 10 e 11 podem ser usados como PWM. Pino 13 possui um led conectado na própria placa (geralmente serve como debug).
  28. Entrada/Saída digital. Pinos 3, 5 e 6 podem ser utilizados como PWM.
Vamos à analise de algumas características básicas...


Características Físicas

Segue abaixo as dimensões básicas da placa:



Alimentação


A alimentação pode ser feita pela porta USB ou por outra fonte externa (baterias, adaptadores AC/DC, por exemplo). A escolha é feita internamente.

A alimentação USB é feita diretamente pelo conector USB (o mesmo utilizado para comunicação com o PC).

Já a alimentação externa pode ser feita de duas maneiras:
  1. Utilizando um conector P4 (com o centro positivo) de 2.1mm conectado ao jack fêmea de alimentação da placa (item 2 da lista de componentes).
  2. Ou então conectando os pinos da fonte diretamente na placa, no pino Vin (positivo da fonte) e no Gnd (negativo/ground). Sendo o Gnd apenas para que todas as referências sejam as mesmas
Os limites de tensão de entrada são 6 a 20 Volts. Contudo, para tensões menores que 7V, os pinos de 5V forneceram tensões abaixo de 5V. Já para tensões maiores que 12V, o regulador de voltagem esquentará demais, o que pode provocar a queima do mesmo. Sendo assim, o recomendado são tensões de 7 a 12V.



Entrada/Saída

Cada um dos 12 pinos (itens 27 e 28 da lista de componentes) pode ser usado tanto como entrada, tanto como saída de dados. Para configurarmos entre entrada ou saída, utilizamos a função pinMode(). Já para lermos e escrevermos dados usamos, respectivamente, as funções digitalRead() e digitalWrite() (ou ainda analogWrite() para PWM). Deixemos mais explanações sobre isso para novos capítulos...

Cada pino fornece/recebe até 40 mA de corrente DC. Além disso, cada um possui um resistor pull-up de 20 a 50 kΩ (desabilidade por padrão). Todos esses resistores podem ser configurados via software.

 Os pinos 10 (SS), 11 (MOSI), 12 (MISO) e 13 (SCK) são utilizados para comunicação SPI.

Os pinos A4 (SDA) e A5 (SCL) são utilizados para comunicação TWI (a.k.a. I2C para os mais íntimos...)

As entradas analógicas possuem resolução de 10 bits. Ou seja, possuem = 1024 valores diferentes.O que quer dizer que entre 0 e 5V, ler-se-ão 1024 valores distintos (valores entre 0 e 1023).

Já o ATMEGA 8u2 proporciona uma porta serial (COM) ao conectarmos (via USB) a placa a um computador. Deste modo, podemos trabalhar com o Arduino "como se" ele fosse um periférico comum (mouse, teclado, monitor...). O que pode resultar em projetos interessantíssimos. Esse chip foi a principal mudança em relação às placas anteriores (que continham um chip FTDI para realizar essa comunicação).

Já a memória depende diretamente do microcontrolador escolhido como central de processamento de dados. No caso do ATMEGA 328P, temos 32KB (com 0.5KB utilizado pelo bootloader, o OptiBoot), 2KB de SRAM e 1KB de EEPROM (ou simplesmente "é dois prom", ta ligado?).


Programação

  • A lagoa azul: sessões às 16:30, 1......
Ops, estragando a felicidade de muitos, não se trata da lagoa azul na sessão da tarde...

Para que a placa (e seus milhões de átomos de silício) possam ser úteis, devemos ser capazes de dizer à ela o que deve ser feito. E não adiantar esperar que ela seja suficientemente inteligente a ponto de aprender a nossa língua e comece a dialogar conosco... Temos sim que aprender (mesmo que superficialmente) a linguagem de programação (não necessariamente linguagem de máquina) . Isso mesmo, se você já ouviu falar em C, C++, Pascal, Fortran, Java, Ladder sabe do que se trata. Se tudo isso pra você é estranhamente pertubador, sugiro que você comece do começo... Tabuada, caligrafia e ditado é uma ótima escolha...

Falando sério, comece por lógica de programação. Isso é a base de tudo. No geral, cada linguagem difere da outra pela sintaxe (superficialmente falando, é claro). Então sabendo a lógica de programação [ e de solução de problemas] fica mais fácil migrar para uma linguagem específica.

Na plataforma Arduino, a linguagem padrão é baseada em Wiring. O IDE (ambiente) de programação [padrão] pode ser baixado aqui. Para programar sua placa, basta conecta-la a uma porta USB e instalar o driver (caso haja necessidade).

A comunicação se dá pelo protocolo STK500. Tal programação é possível porque o bootloader (e o chip ATMEGA 8u2) deixa todo o processo de baixo nível transparente ao programador menos experiente.

Também é possível programarmos o Arduino "burlando" o bootloader por meio dos pinos ICSP disponíveis na placa.

Uma outra melhoria está no upload (carregamento) do código no microcontrolador. Antes, se fazia necessário apertarmos o botão reset cada vez que fossemos inserir um novo código. Agora, o "resetamento" é feito automaticamente (deixando de fornecer energia à placa por um intervalo de tempo suficiente para que o microcontrolador reinicie)  ao pressionarmos o botão upload no próprio IDE.

Por fim, existe a possibilidade de utilizarmos outras linguagens para programação da plataforma (desde que possamos acessar a porta serial), tais como: Matlab, C, C++, Java, PHP, entre outras.


Arduino UNO R2



Lançado em 2011, pouca coisa mudou na segunda revisão (dai o nome R2, revision 2)... 

Melhorias na programação por gravador externo é a principal mudança.

De resto continuo o mesmo... UNO na veia!


Arduino UNO R3


Lançada também em 2011, a mais recente das "revisões" trouxe algumas melhorias em relação aos seus antecessores.

Trocou-se a ATMEGA 8u2 pelo ATMEGA 16u2. Dobrando a quantidade de memória flash (de 8k para 16k) disponível para comunicação USB.

O botão reset saiu de perto dos conectores ICSP próximos ao ATMEGA 328P e foram para o canto superior esquerdo, próximo ao conector USB. Isso facilita bastante na hora de resetarmos a placa quando temos um shield sobre a mesma. Melhorou-se também o circuito de "resetamento" via software da placa.

Agora os pinos para comunicação I2C (pinos A4 e A5) foram duplicados. O pino de referência (IOREF) também foi duplicado. Todas as duplicações não aumentaram as possibilidades ou a capacidade da placa. Elas foram feitas apenas para facilitar a leitura/escrita de dados (ou status), nesses pinos, feitas pelos shields.


Arduino UNO SMD




Por fim, temos a ovelha negra da família. Lançado no começo de 2011, o Arduino Uno SMD foi produzido com um microcontrolador ATMEGA 328 com um encapsulamento SMD. Não foi bem sucedido pela dificuldade em se trocar/retirar o chip SMD em comparação com o ATMEGA 328 com encapsulamento DIP (aquele com o famoso soquete... ).

Sendo assim, atualmente, da família UNO, apenas o UNO R3 é comercializado expressivamente. Vale ressaltar que pela facilidade de troca do ATMEGA 328P (no encapsulamento DIP, é óbvio) podemos ver por ai outros chips da família ATMEGA comandando essa versátil plataforma.


Na próxima semana, conheceremos o Arduino Leonardo...      Até lá o/ 





Para saber mais sobre a parte eletrônica da placa (R3) recomendo o post do Fábio: Arduino Uno 

Ou ainda, a página oficial: Arduino Board Uno

Nenhum comentário:

Postar um comentário