12 - Arduino no protoboard com conversor TTL-USB

O microcontrolador que está inserido na placa Arduino pode ser retirado de seu soquete e instalado num protoboard ou mesmo num circuito impresso. Para isso, é necessário alimentá-lo com 5V, conectar um cristal de 16MHz e 2 capacitores de 22pF, conforme esquema abaixo que se refere a um microcontrolador de encapsulamento DIP28, como o ATMEGA8, ATMEGA168 ou ATMEGA328.


A correspondência de pinagem entre o microcontrolador e aquela utilizada no ambiente de programação é exibida na figura abaixo:



Se, por exemplo, no ambiente de desenvolvimento fosse elaborado um programa que alternasse o nível de tensão do pino digital 13 entre alto e baixo, conforme exemplificado no item 7 deste tutorial, tal efeito seria notado no pino 19 do microcontrolador.

As placas Arduino normalmente contêm um chip conversor de sinais de USB para TTL, pois o computador se comunica pela USB com o ambiente externo e o microcontrolador por meio de níveis lógicos TTL. Assim, este conversor funciona como um tradutor entre o computador e o microcontrolador, o que permite a comunicação entre ambos.

Um microcontrolador com bootloader Arduino pode ser programado diretamente num circuito impresso ou num protoboard utilizando um conversor USB-TTL, sem a necessidade de uma placa Arduino completa.

O conversor deve dispor de 2 pinos:
  • RXD para recepção de dados
  • TXD para recepção de dados
O pino RXD do conversor deve estar conectado ao pino TXD do microcontrolador e o pino TXD do conversor, ao pino RXD do microcontrolador. Nos microcontroladores ATMEGA8, ATMEGA168 ou ATMEGA328 com encapsulamento DIP28, o RXD é o pino 2 e o TXD é o pino 3. (vide figura acima)

A conexão do microcontrolador ao conversor deve ser feita preferencialmente utilizando-se resistores entre 1k~10k ohm, conforme figura:
Uma vez que o conversor TTL-USB está conectado ao computador pela porta USB e ao microcontrolador conforme figura acima, é possível programar o chip a partir do ambiente de desenvolvimento Arduino.

Uma fez que um programa foi compilado, deve-se seguir os passos abaixo para enviá-lo ao chip:
  • clicar em:

  • pressionar rapidamente o botão do circuito e liberá-lo em seguida

É importante observar que o conversor TTL-USB pode não ser prontamente visível ao computador, pois pode haver a necessidade de que seja instalado um driver que permita tal comunicação. Os fabricantes, via de regra, disponibilizam livremente para download o driver necessário.

A título de exemplo, o conversor exibido na figura abaixo (vide datasheet) funciona diretamente no sistema operacional Ubuntu, enquando que no Windows há necessidade de instalar este driver fornecido pelo fabricante.

11 - Eagle - Diagramação de circuitos eletrônicos

Há uma série de softwares para a confecção de diagramas de circuitos eletrônicos, sendo encontrados tanto os que são pagos como os gratuitos. Neste tutorial será abordado o software Eagle que se tornou bastante popular e pode ser obtido aqui.
O Eagle em sua versão gratuita restringe a área de trabalho em 10 x 8 cm e 2 camadas, no entanto, estas limitações ainda permitem a confecção de circuitos de significativa complexidade, o que tem garantindo a sua popularização entre hobistas.

Assim que o Eagle é iniciado, surge a tela abaixo:


Neste ponto, é necessário iniciar um novo projeto o que pode ser feito em:

File-->New-->Project

Assim que criado o projeto, o próximo passo é criar o esquemático a partir de:

File-->New-->Schematic

Neste ponto deve surgir uma tela similar à exibida logo abaixo:


Para adicionar um componente ao diagrama basta clicar no botão Add que se encontra na barra lateral esquerda. Neste momento surge a tela:


Se for inserido mega8* no campo de pesquisa de componentes, surgirão todos os componentes cadastrados e cujos nomes se iniciam por "mega8". Se, por outro lado, for inserido mega8-P no campo de pesquisa, apenas o componentes com este nome específico é que será localizado.
Para visualizar toda a biblioteca de componentes sem a aplicação de filtros, basta deixar vazio o campo de pesquisa e pressionar ENTER.
Uma vez escolhido o componente desejado, basta pressionar OK e inseri-lo no diagrama.

Há diversos tutoriais do EAGLE na internet, assim, para aqueles que querem se aprofundar no assunto, segue abaixo uma série de links interessantes:
  • http://www.scribd.com/doc/7230019/Tutorial-Eagle-Portugues
  • http://www.handmades.com.br/index.php?option=com_content&task=view&id=77&Itemid=46
  • http://www.eletronica.org/arq_apostilas/apostila_eagle_4x.pdf

Outro programa bastante interessante e que permite elaborar circuitos como se estivessem no protoboard é o Fritizing. Na figura abaixo está um exemplo de circuito em que uma placa Arduino é conectada a outros componentes do protoboard.


10 - Fonte de 5V

Como pode ser observado no item 9 deste tutorial, o microcontrolador foi alimentado com 5V de tensão contínua ou 5VDC. No entanto, pode ser difícil encontrar uma fonte que forneça exatamente 5V. Isso acontece porque as fontes geralmente apresentam saídas múltiplas de 1,5VDC, simulando a tensão fornecida pelas pilhas comuns. Para contornar este problema, pode-se recorrer a um regulador de tensão.
Os reguladores de tensão exibidos na figura abaixo apresentam um pino de entrada, um de saída e outro conectado ao terra. Aplicando-se um intervalo de tensões em seu pino de entrada, é obtido uma tensão fixa no pino de saída. Assim, pode-se utilizar a saída de um regulador de 5V para alimentar o microcontrolador, valendo observar que a tensão de entrada do regulador deverá sempre ser superior à de saída e inferior a um limite definido em seu datasheet.
Nas figuras podem-se observar 2 encapsulamentos para o regulador de tensão. A primeiro deles é o TO220 e é utilizado para circuitos que consomem correntes mais elevadas de até 1,5A e o segundo é o TO92 para correntes de 100mA, sendo o mais comumente utilizado.

Um regulador de 5V bastante empregado é o LM7805 e no circuito abaixo tem-se um exemplo de como utilizá-lo. Como pode ser observado, há necessidade de se adotar capacitores para garantir a estabilidade da tensão de saída.

9 - Arduino no protoboard

O microcontrolador que está inserido na placa Arduino pode ser retirado de seu soquete e instalado num protoboard ou mesmo num circuito impresso. Para isso, é necessário alimentá-lo com 5V, conectar um cristal de 16MHz e 2 capacitores de 22pF, conforme esquema abaixo que se refere a um microcontrolador de encapsulamento DIP28, como o ATMEGA8, ATMEGA168 ou ATMEGA328.


A correspondência de pinagem entre o microcontrolador e aquela utilizada no ambiente de programação é exibida na figura abaixo:

Se, por exemplo, no ambiente de desenvolvimento fosse elaborado um programa que alternasse o nível de tensão do pino digital 13 entre alto e baixo, conforme exemplificado no item 7 deste tutorial, tal efeito seria notado no pino 19 do microcontrolador.

8 - Pinagem

A placa mãe do Arduino apresenta uma série de marcações que identificam seus pinos conforme detalhado abaixo:
  • GND terra ou 0 Volts
  • 5V tensão de 5 Volts
  • 3v3 tensão de 3,3 Volts
  • Vin tensão da fonte de alimentação externa
  • Digital pinos digitais de 0 a 13, podendo ser entrada ou saída
  • Analog pinos analógicos de 0 a 6
  • AREF pino de referência
  • RESET pino de reinicio
É muito comum montar circuitos em protoboards ou matriz de contatos e depois conectá-los à placa do Arduino. Neste caso é fundamental utilizar um terra comum para o protoboard e a referida placa, o que é feito a partir do pino GND. Os pinos 5V e 3.3V fornecem esta tensão e podem também ser utilizados na protoboard.

O pino Vin disponibiliza a tensão de alimentação fornecida por uma fonte externa, a qual opcionalmente pode estar conectada à placa do Arduino. Esta pino pode ser útil quando há uma maior exigência de corrente para o circuito que está sendo alimentado a partir da placa do Arduino.

Os pinos digitais podem processar apenas sinais com níveis de tensão alto (HIGH) e baixo (LOW) que correspondem respectivamente a 0 e 5V. Estes podem ser de saída (OUTPUT), forneçendo tais níveis de tensão, ou de entrada (INPUT), capturando o nível de tensão aplicado em determinado pino. Vale observar que os pinos analógicos também podem ser configurados como digitais, sendo identificados como pinos digitais de 14 a 19 os pinos analógicos de 0 a 5.

Os pinos analógicos convertem proporcionalmente um sinal de 0 a 5V num valor entre 0 e 1023, ou seja, realizam a função de um conversor A/D de 10 bits. Se, por exemplo, for aplicada uma tensão T num pino analógico, o valor V lido internamente pelo Arduino será dado por:

V=1023T/5

O pino AREF fornece outra referência de tensão para os pinos analógicos ao invés de 5V. Se, por exemplo, for inserida uma tensão de referência de 2V em AREF, a fórmula acima teria que ser reescrita para:

V=1023T/2

7 - Programas de exemplo

O ambiente de desenvolvimento do Arduino disponibiliza uma série de programas de exemplo, os quais são categorizados de forma a trazer uma melhor visibilidade às diferentes formas de utilização da plataforma. Para ter acesso a estes programas basta ir em File-->Examples.

A título de exemplo, carregando-se o programa que se encontra em File-->Examples-->Digital-->Blink é obtido o código abaixo:

int ledPin = 13;


void setup() {
pinMode(ledPin, OUTPUT);
}

void loop()
{
digitalWrite(ledPin, HIGH);
delay(1000);
digitalWrite(ledPin, LOW);

delay(1000);
}


Neste programa, é definida a variável ledPin em:

int ledPin = 13;

Em seguida é iniciada a função setup onde o pino digital 13, ou ledPin, é definido como de saída, ou seja, OUTPUT. Isso quer dizer que o microcontrolador pode alterar o nível de tensão neste pino como sendo baixo ou alto, o que normalmente corresponde a 0 e 5V respectivamente.

void setup() {
pinMode(ledPin, OUTPUT);
}


Após o setup, dá-se início a rotina de loop que se repete continuamente.

void loop()
{
digitalWrite(ledPin, HIGH);
delay(1000);
digitalWrite(ledPin, LOW);
delay(1000);
}

A função digitalWrite(pino,nivel) faz com que o pino especificado se mantenha em nível alto, HIGH, ou baixo, LOW. A função delay(x) faz com que um programa fique paralisado por um periódo de x milisegundos, sendo que 1000 milisegundos corresponde a 1 segundo.

Após o programa ser transferido ao Arduino, é possível testá-lo adicionando-se um led ao pino digital 13, conforme o circuito abaixo. Este led irá se acender e apagar a cada segundo.

6 - Primeiro programa

Todo programa para o Arduino deve seguir a estrutura abaixo:

void setup() {
}

void loop() {
}



A função setup roda uma única vez assim que o programa se inicia e nela são definidas configurações iniciais. A função loop, como o próprio nome sugere, roda indefinidamente e se inicia assim que concluída a função setup. A partir da função loop é estruturada a maior parte do programa que rodará no Arduino.

Para compilar o programa supracitado basta pressionar o botão:


Se não foram detectados problemas de compilação, surgirá a mensagem "Done compiling", conforme a tela abaixo.


Uma vez que o programa foi compilado, é possível transferi-lo ao Arduino pressionando-se a tecla:
Caso não surjam mensagens em vermelho no quadro negro da IDE, o processo foi realizado com êxito.

5 - Definindo a porta serial

Uma vez definida a placa, é necessário configurar a porta serial através da qual o Arduino se comunica com o computador. Isso é feito em Tools-->Serial Port.
Para saber qual é a porta correta, uma vez que pode aparecer mais de uma opção no referido menu, basta desconectar a placa do Arduino e marcar quais portas estão disponíveis. Em seguida a placa deve ser reconectada, o que fará com com que surja uma nova opção, ou seja, justamente aquela que deve ser escolhida.

4 - Definindo a placa

A programação do Arduino é feita a partir de um ambiente de desenvolvimento (IDE) que pode ser obtido livremente aqui. Um vez instalado este IDE, deve-se configurá-lo informando a placa mãe utilizada, o que é feito em Tools-->Board:



É importante observar que se o usuário adquiriu uma placa Arduino Duemilove, que vem com o microcontrolador ATMEGA328, e resolveu, por exemplo, substituir este microcontrolador pelo ATMEGA8, então será necessário apontar uma placa que contemple o ATMEGA8. Neste caso, uma escolha adequada seria Arduino NG or older w/ATmegaA8.

3 - Tipos de placas mãe

A placa mãe do Arduino é formada por:
  • microcontrolador
  • circuito de comunicação microcontrolador <--> computador (USB, porta serial)
  • conectores para permitir o acesso aos pinos do microcontrolador
De acordo com a disposição desses conectores é possível acoplar shields sobre a placa, os quais adicionam funcionalidades como a possibilidade de acesso a uma intranet, comunicação sem fio, tratamento de sinais de voz, entre outros.
Na figura abaixo temos uma placa Arduino com um microcontrolador da família ATMEGA de 28 pinos.
Como pode ser observado, estão identificados 13 pontos de conexão digital, 6 analógicos, 1 de reset e outros que fornecem tensões como 5V, 3.3V e terra. No conector USB de cor metálica é encaixado o cabo USB que permite a comunicação do Arduino com um computador. Ao lado desse conector, vemos um chip SMD que compatibiliza os sinais USB com aqueles utilizados pelo microcontrolador. O conector Jack, à esquerda e abaixo (negro), permite a alimentação da placa por uma fonte externa, valendo ressaltar que o seu uso é opcional, pois o conector USB já fornece a alimentação mínima necessária para o funcionamento da placa.

Na figura abaixo é possível observar um shield acoplado a uma placa Arduino.

Além do formato de placa que permite a adaptação de shields, existem outras mais compactas que podem ser utilizadas diretamente num protoboard, facilitando a prototipação. Abaixo vemos um exemplo da placa iDuino:



Há algumas placas que são conectadas ao computador por meio da porta serial ao invés da USB. Abaixo segue a placa Sanguino que apresenta característica.


Outras placas que contemplam algum hardware adicional também existem, facilitando a vida do usuário na confecção de seus protótipos.