Como já foi mencionado nas aulas anteriores, o Arduino é uma placa que contem um microcontrolador. Em determinados casos, é interessante utilizar apenas microcontrolador fora da placa para economizar espaço ou deixar o projeto com um aspecto mais profissional. Portanto, vamos aprender como fazer isso.

Para entender melhor a ideia do post, é bom reler a aula 1 dessa série de Arduino para Iniciantes.

Na aula anterior, vimos como executar duas coisas ao mesmo tempo.


Informações importantes

É importante conhecer alguns detalhes antes de colocar a mão na massa. A placa mais conhecida do Arduino, é o Arduino UNO. Uma versão mais antiga dela (1ª imagem abaixo) possui o microcontrolador com encapsulamento PTH (versão grande que vem encaixada). E a mais nova (2ª imagem abaixo) possui o mesmo microcontrolador com encapsulamento SMD (versão pequena que não pode ser removida facilmente).

Placa Arduino antiga
Fonte: Wikipedia
Placa arduino SMD
Fonte: Snootlab

Nas versões PTH é muito simples usar o microcontrolador fora da plaquinha, porque basta remover o microcontrolador e usá-lo separadamente (com o circuito apropriado).

Porém, nas versões mais novas, é necessário usar a placa como um programador para programar o microcontrolador externamente. E na versão antiga também é possível utilizar a placa como um programador.


Como fazer

Versão antiga (microcontrolador removível)

Se o microcontrolador nunca foi programado e não possui o bootloader, este método não irá funcionar.

O procedimento é muito simples, basta fazer o upload da programação na placa como você está acostumado a fazer. Após isto, remova o microcontrolador com cuidado e insira em um outro circuito que deseja utilizar.

Em relação ao circuito externo, é necessário alimentar o microcontrolador: 1.8v-5.5v no Vcc e AVcc (pinos 7 e 20); e GND nos pinos 8 e 22. Você terá que utilizar um cristal externo se não alterar o bootloader. Veja a imagem do atmega328p abaixo para referência dos pinos.

Microcontrolador Arduino
Fonte: Wikipedia

O cristal deve ser ligado entre os pinos 9-10 (XTAL1 e XTAL2). E, para ele funcionar corretamente, você deve ligar dois capacitores (cerâmicos de 22pF), um em cada um desses pinos. Sendo que, uma ponta do capacitor liga em um pino XTAL e a outra no GND.

Além disso, é possível utilizar um capacitor em paralelo com a alimentação para estabilizar qualquer ruído da fonte. Esse capacitor pode receber o nome de capacitor de desacoplamento e um valor comum de utilizar é 100nF.

Botão reset

Para adicionar o botão reset, basta ligar um resistência de pull-up (valor de 10KΩ) no pino 1 (reset) e ligar também um botão conectado ao GND. A resistência de pull-up serve para garantir que o Arduino não fique resetando constantemente.

Circuito completo

O circuito completo fica como mostrado abaixo:

Circuito Arduino Standalone

Para saber qual pino do microcontrolador corresponde a qual do Arduino, basta observar a imagem lá em cima e ver as correspondências.

Versão nova (SMD)

O circuito externo apresentado acima é o mesmo, o que muda é a programação. Isso, porque vamos usar a placa do Arduino como uma programadora.

Bootloader (padrão)

Caso você utilize um microcontrolador novo que não veio no Arduino, será necessário instalar o bootloader nele. O bootloader é como se fosse um sistema operacional que define algumas configurações do microcontrolador, como o uso do clock (externo/interno). Então, microcontroladores que são comprados separadamente, não possuem o bootloader.

Antes de montar o circuito, é necessário fazer o upload, para o Arduino, da sketch ArduinoISP que se encontra em Exemplos>ArduinoISP. Feito isso, monte o circuito mostrado abaixo (o botão reset não é necessário).

Mesmo que você deseje utilizar o clock interno do Arduino, é necessário utilizar um cristal externo para essa parte. Salvo os casos onde o microcontrolador nunca foi alterado. E ele não precisa ser de 16MHz, com um de 4MHz também funcionará.

Instalando bootloader no atmega328p

Além das ligações mostradas anteriormente, será necessário ligar o Arduino ao microcontrolador. Sendo que os pinos 11-13 do Arduino são ligados nos pinos 17-19 do microcontrolador. Os pinos 17-19 são os correspondentes dos pinos 11-13. Além disso, é necessário ligar o pino 10 no pino Reset do microcontrolador.

No software do Arduino, vá em Ferramentas > Programador e selecione “Arduino as ISP”. Por fim, vá em Ferramentas > Gravar Bootloader. Alguns segundos depois, o procedimento deve estar concluído e o microcontrolador estará pronto para ser utilizado. Se acontecer algum erro, confira as ligações, a programação e não deixe de utilizar um cristal.

Bootloader clock interno

Para gravar um bootloader que utilize o clock interno do microcontrolador será necessário baixar um componente. Entre neste link e baixe os arquivos. Com o zip baixado, vá na pasta onde ficam localizados as suas sketchs do Arduino (no meu caso é na pasta “Documentos”). Feito isso, crie uma pasta chamada “hardware”, se já não existir. Dentro desta pasta extraia o arquivo baixado.

Reabra o Arduino, vá em Ferramentas>Placa e clique em ATMega328. Quando fizer isto, uma série de opções irão aparecer no menu Ferramentas. Se você não conhece o que são, altere apenas a opção clock para “8MHz Internal”. Por fim, seguindo os procedimentos do tópico anterior, clique em “Gravar Bootloader” no menu Ferramentas.

Se acontecer algum erro, confira as ligações, a programação e não deixe de utilizar um cristal.

Fazer upload

É a mesma configuração do bootloader: a placa tem que estar com a sketch ArduinoIsp e a configuração de “Programador” tem que ser “Arduino as ISP”. O circuito também é o mesmo. Se você gravou o bootloader para usar o clock interno, agora não é mais necessário usar o cristal externo.

A última etapa é criar o seu código para inserir no microcontrolador. E antes de clicar em upload segure SHIFT e você verá uma mensagem ao lado “Carregar usando programador”. Se a mensagem apareceu, é só clicar no botão.

Agora basta usar a imaginação e tornar seus projetos mais profissionais. Lembrando que, no caso de usar o clock interno, o cristal de 16MHz e os capacitores não são necessários. O que não pode faltar é a alimentação e o resistor de pull-up no pino RESET.

Interrupções com Arduino – Aula 11 – AI