Arduino - Básico

O que você precisa saber antes de começar a meter a mão na massa

Se você conhece um pouco de computadores sabem que eles costumam ser grandes (como um mainframe) ou pequenos (como um laptop), costumam ser complexos que só com anos de estudo você poderá tirar o máximo de proveito do seu potencial, com muitos chips interligados e cada um fazendo uma parte do processamento.

No caso do Arduino a gente esta falando de microcontroladores, ou seja, de chips que se destinam a atividades mais básicas mas com potencial para fazer praticamente qualquer coisa que um computador maior faria. Literalmente um milagre da eletrônica colocando um 'computador' num único chip e não é nada fraquinho, como veremos adiante.

Microcontrolador ATmega328p : Com envólucro SMD ( o menor possível ):

Microcontrolador ATmega328p : Com envólucro DIP ( um que a gente consegue pelo menos pegar ):

No caso do arduino ele vem numa plaquinha singela, poucos componentes, parece bem simples mas você pode instalar expansões (shields), que são outras placas que se encaixam a placa original do arduino, agregando funcionalidades a placa original do Arduino. Veremos isso a seguir

Então vamos supor que você precise que o arduino trabalhe com grandes arquivos de dados... para isto existe uma expansão (veja arduino TF CARD) que permite acessar um cartão SD, abrir, ler, gravar arquivos de Giga-Bytes de tamanho.

Existe expansões para o arduino e a maioria delas já existe um software ou biblioteca pronta que, como um LEGO, basta montar, instalar e utilizar. Esse é o entuito do site arduino, proporcionar soluções prontas para funcinalidades que podem ser feitas por um microcontrolador.

Importante frisar que o objetivo deste site é mostrar como utilizar o arduino seja como for, só o arduino UNO, com expansões, com circuitos extras, etc.

Outra coisa que gostaria de mencionar é que o custo é proporcional ao que o chip consegue realizar.
Se você precisa fazer um projeto mais simples onde um arduino seria muito, use o PIC16F84 e sua familia.
Precisa de algo menor, veja o AtTiny. Eu montei projetos como medidores de temperatura, timer digitais programáveis com eles e funcionaram muito bem.
Você vai ouvir falar...mas tem um chip muito melhor para fazer isso...e com certeza tem mas o custo é diferente. Você vai ver pessoas indicando um ESP8266 para trabalhar com WIFI...é uma boa opção, um recomendando o raspberry PI porque ele é muito mais poderoso mas tenha em mente que isso tem um custo.

O projeto Arduino foi a iniciativa de uma empresa (que não é ligada aos produtores de chips) que viram o potencial do componente e resolveram preparar um leque de aplicações e soluções com esses componentes.
Escolheram um processador, fizeram uma placa bem simples, tanto por causa do custo quanto de sua utilização.


O Arduino - o hardware

Os arduinos são baseados num chip da ATMEL. O mais comum deles e será o modelo que utilizaremos é o Arduino UNO

Se você procurar no google por 'atmega328p pdf' encontrará o documento da ATMEL para o chip com mais de 400 páginas.
Por isso perder um pouco de tempo lendo o conteúdo deste site será muito útil.

O Arduino Uno utiliza o chip ATmega-328P da ATMEL. Aparentemente parece um chip simples mas dentro dele temos um Microcontrolador, Memória RAM, Memória EPROM, Osciladores, Timers, Conversores Análogo Digitais, Portas Digitais de entrada e Saída, portas para comunicação I2C, etc. Este simples chip contém tudo que um microcontrolador precisa para funcionar.

Alimentação : A placa do Arduino pode ser alimentada de 2 maneiras:
   •1-Pelo conector USB. Não é a que normalmente usamos porque precisaria ficar conectado sempre.
   •2-Pelo conector de energia P2. Alimentar com 9V.
O Arduino consome muito pouca energia mas se você conectar uma expansão a sua fonte terá que alimentar tanto o arduino quanto a expansão.
Tecnicamente regulador de tensão na placa do arduino pode fornecer até 100 mA de corrente. Caso seu circuito consuma mais energia que o regulador consegue suprir você deve fazer um circuito externo para fornecer essa corrente.
Se for usar uma fonte de 12V você pode mas não ligue nada mais na placa do Arduino. O chip regulador de tensão será sobrecarregado se você não seguir esta regra.

Conexões : O Arduino possui as seguintes conexões:
   •1-USB : Permite a conexão do arduino e um computador para troca de mensagens(texto).
   •2-Conector de energia : Alimentar com uma fonte de 9V @ 400 mA externa.
      Como na placa tem um circuito que pode alimentar o processador tanto com a fonte externa quanto com conector USB podemos não precisar de fonte externa.
   •3-Conectores com as portas do processador. São 14 portas digitais de entrada ou saída e 6 portas Digitais ou Analógicas de entrada ou saída.
   •4-ICSP : Conexão com o programador do Chip do processador. Recomendo o USBtiny pela sua praticidade. Cuidado para que não precise instalar drivers de terceiros para o funcionamento do ISP.
Nota : ICSP significa Programação no circuito que é a programação sem a necessidade de retirar o chip do circuito.

Na placa Arduino uno temos os seguintes componentes :
   •1-Processador ATmega 328.
   •2-Chips reguladores de voltagem para alimentar a energia que o processador precisa para funcionar.
   •3-Cristais para dar uma boa referencia de tempo.
   •4-Um chip para fazer a comunicação com a porta USB.


Caso deseje ver o esquema elétrico do Arduino UNO Clique aqui

Abaixo explico, por cima, cada um desses componentes visando uma abordagem prática de uso.

1-Processador ATmega 328. Ele é o Arduino, o resto é suporte.
   •01-É um microcontrolador com a tecnologia ARM com 16 MHZ de clock (e pode chegar a 20 MHZ).
   •02-Possuí 131 instruções que inclui instruções aritméticas, lógicas e não deve nada aos melhores.
      •A maioria das instruções é executada em apenas um ciclo de clock(Melhor que a Intel).
   •03-tem 32 registradores de 8 bits de trabalho. Dá um ótimo desempenho em operações matemáticas.
   •04-32 KB de memória FLASH para armazenar o programa. Mais que suficiente para maioria dos projetos.
   •05-1 KB de EEPROM. Muito útil para salvar dados que não queremos perder quando faltar energia.
      •Poderemos gravar até 10.000 vezes nesta memória...mas use com parcimonia.
      •A retenção da informação nesta memória é de aproximadamente 20 anos.
   •06-1 KB de SRAM ou static Ram...Essa é a memória que temos para trabalhar.
   •07-Podemos 'bloquear' o chip protegendo nosso programa e direitos autorais.
   •08-Os conversores Analógico-Digitais tem o tamanho de 10 bits.
   •09-Pode operar com tensões de 1,8V a 5,5V.
   •10-Baixo consumo - Dependendo do modo operacional pode consumir 0,1uA (Power-Down), 0,75uA(Power Save) e 0,2 mA no modo ativo.
   •11-Possui 14 Entradas ou Saídas Digitais (Conector superior).
   •12-Possui 6 Entradas ou Saídas Digitais ou Analógicas (Conector Inferior).

Nos conectores superiores e inferiores conectamos o que desejamos controlar ou até mesmo uma expansão.
Temos as expansões para:
1-Comunicação com rede local com fio : : 2-Data Logger - Cartão SD e Relógio RTC
3-GPS :
e são muitos...é só procurar por arduino shield no google e verá que tem muita coisa.


O ISP - Dicas de instalação

Você deve-se ter dado conta que você além da placa do arduino terá que comprar uma plaquinha para programar o Arduino. É chamado de Programação no circuito porque você não precisa remover o integrado para programá-lo.

O seu fornecedor da plaquinha ISP deve ter dado instruções de como instalar mas deixa eu dar umas dicas aqui porque temos muitas vezes problemas no processo de configuração como, por exemplo, descobrir qual é o nosso programador, que porta serial ele usa ( se é que usa ), etc.

O meu programador é o USBtiny e utilizarei ele como exemplo neste documento.

Antes de 'espetar' seu ISP no seu computador abra o Painel de controle, gerenciador de dispositivos. Note que ao 'espetar' o ISP um novo dispositivo será exibido no gerenciador de dispositivos :

Caso apareça uma exclamação amarela ou um x vermelho você precisará instalar um driver para acessar seu ISP.
Caso não consiga acertar o seu ISP não continue porque a IDE do Arduino usae esse recurso mas não tem qualquer suporte ou auxilio para ajudar a você a corrigir este problema. Este problema quem tem que resolver é você e seu fornecedor de ISP.

Importante : JAMAIS instale drivers não assinados no windows. Eu tenho um ISP chamado USBASP que tive que jogar fora porque o driver foi feito para o windows XP e o windows 10 não aceita instalar drivers não assinados. É um erro grave de segurança. Não instale drivers não assinados. Prefira os drivers de sites renomados que fornecem o seu ISP.

Alguns ISPs tem uma porta de comunicação serial de acesso. Caso o seu tenha anote que você precisará configurar a IDE do Arduino para acessar esse recurso.


O Arduino - a IDE

Até aqui você deve estar horrorizado pensando que vai ter programar em assembler e fazer muitos malabarismos.
Felizmente voce pode ir no site do arduino e baixar a IDE do Arduino Com esta IDE você irá programar numa variação da linguagem C feita para o Arduino.

Baixe e instale a IDE se você pretende programar o Arduino. A IDE permite que você crie, compile e programe o processador dentro de um ambiente integrado.

Abaixo veremos os detalhes de programação mas para compilar o programa você pode clicar no botão : .
Nota : Para escrever o programa e compilar você não precisa de um arduino nem do ISP. Estes processos são feitos internamente pela IDE.

Antes de você pedir para programar o arduino você precisa definir na IDE como pretende fazer isso.
Primeiramente defina o tipo de placa que deseja programar : No nosso caso é o Arduino UNO.
Clique no menu 'Ferramentas' e no item 'Placa' escolha 'Arduino Uno'.
Caso neste menu não apareça sua placa você pode clicar no primeiro item 'Gerenciador de Placas' que a IDE irá no site do Arduino pesquisar por novos modelos de placas.

O segundo recurso a ser definido é qual o seu ISP. Vá no menu 'Ferramentas' e selecione o item 'Programador'.
No meu caso o programador é o USBTinyISP mas o seu poderá ser diferente.

No USBTInyISP ele não define nenhuma porta serial para comunicar com o Arduino. Por este motivo para programar o arduino temos que clicar no menu 'Sketch' e em 'Carregar usando programador'.

Caso o seu ISP acrescente uma porta de comunicação (COMx), como eu disse no último item de 'Dicas de instalação', você precisará ir no menu 'Ferramentas' e selecionar a Porta de comunicação do seu ISP (COM5, COM6, etc.)

Para programar o chip você deve conectar o seu ISP no conector ICSP do arduino e clicar no botão compilar/programar :
ou clicar no menu SKETCH e selecinar 'Carregar Usando programador' se você usa o USBtiny.
Se tudo der certo você terá a seguinte tela :


Caso haja algum erro aparecerá uma linha laranja com uma mensagem e o número da linha com o erro ocorrido.


O Arduino - o software

Dica aos novatos :
Se você é iniciante nesta atividade sugiro que faça pequenas mudanças e compile com frequencia. É muito ruim fazer um monte de mudanças e descobrir no final que tá tudo errado e ter que perder tudo que fez voltando o código ao que era quando compilou corretamente pela última vez

Bibliotecas (Library) :
Como eu disse acima você dificilmente terá que inventar a roda para fazer seu arduino funcionar.
Muita gente já fez muita coisa com a plataforma e ao sentir dificuldade desenvolveu e disponibilizou para que qualquer um pudesse utilizar.

Vou citar um exemplo, se você for fazer um receptor de controle remoto com seu arduino vai ver que tem uma biblioteca que 'alguém' já fez e é só baixar, instalar e utilizar....e funciona.
Só aconselho a tomar cuidado para que a biblioteca seja realmente para o seu problema, não adianta baixar uma para depois fazer adaptações.


O Arduino - Software - Modelo Vazio

Se vamos começar o melhor é com o exemplo mais simples, um modelo básico vazio. É o que foi compilado e esta na imagem logo acima.

Podemos notar que o programa básico é simples e é composto por 2 funções : setup e loop.
Antes da função setup colocamos as bibliotecas que pretendemos utilizar no nosso projeto.

A função setup é executada uma única vez quando ligamos a energia no arduino.
Dentro desta função colocaremos as definições de quais são as portas de entrada, saída, se são digitais ou analógicas.
Colocaremos definições como qual a velocidade da porta serial, como nosso módulo de LCD está conectado ao arduino.

A outra função é chamada de loop e como o próprio nome diz, ela será executada eternamente ou, como costumamos dizer em programação, num loop infinito.
É na função loop que colocaremos todas as funcionalidades que desejamos que o arduino execute no decorrer do tempo.

Importante : Você deve estar achando que por ter uma função de loop que é executada eternamente nosso arduino é como um burro no moinho, dando voltas e voltas.
Nosso arduino pode fazer muito mais que isso, existem por exemplo rotinas de interrupções que podem ser acionadas, por exemplo, quando um pino recebe um sinal baixo e ai o arduino é capaz de acionar uma rotina externa ao loop eterno, executar o processo e, no final, retornar ao nosso loop eterno.

No momento tenho certeza que você tem mais dúvidas que respostas mas sugiro que você realize cada um dos projetos na ordem que eles são apresentados neste site, pois estão em ordem de dificuldade.


Recomendação

Sugiro utilizar o Proteus para emular os circuitos aqui apresentados. É muito mais fácil mudar um código no proteus que subir no arduino, descobrir que esta errado, corrigir, subir denovo...


Outros tipos de Arduino

Existe um tipo certo de arduino para seu projeto. Acho melhor lhe apresentar quais são

O arduino Nano que é o Arduino Uno só que numa placa bem menor. É muito util quando o espaço ocupado pela placa do arduino conta, como em instrumentos de medição por exemplo.

Outro arduino muito comum é o ATMega 2560 que é um arduino uno com esteróides, ou seja, tem muito mais tudo...memórias, pinos, recursos e portas e pinos pra dar com pau. Digamos que um pouco mais seria um raspberry PI.
Quando você for acrescentando coisas no seu arduino uno e de repente tá faltando um pino para instalar mais alguma cois o atmega 2560 é sua alternativa. Note que muito pouco muda ao mudar de uma placa para outra.

Dicas

1-Evite complicações. Muitas das placas de arduino que vem da china não tem identificação do pino 1 ou ela é tão pequena ou escondida que você perde tempo procurando.
Se você inverter o conector nada pifa mas vai ter que pensar no que deu errado e quando a coisa ficar complexa ( seus projetos ) vai ver que não é tão fácil chegar ao conector invertido.
Faça uma marcação de pino 1, tanto no conector da placa como no seu ISP com uma caneta tipo branquinho como na figura abaixo :


2-Teste inicial de funcionamento : Se você comprou tudo novo deve estar em dúvida se tudo esta funcionando, seu arduino e o ISP bem como todo processo de programação.
Aconselho a você carregar o programa 05-Pisca-Pisca no seu Arduino. É o mais simples e um bom teste. Se passar no teste pode prosseguir, senão resolva o problema primeiro.
Sem a certeza de funcionamento não tem como prosseguir.

3-Cuidado com produtos Chineses : Você vai encontrar arduinos 'compatíveis', ou seja, eles não são exatamente como os originais e possuem uma vantagem, são mais baratos, e outra desvantagem, pode ser que essa pequena diferença inviabilize seu projeto.

• 1-Clock : Uma vez eu comprei um arduino 'compatível' sem me atentar ao fato que o cristal ao invés de ser 16 MHZ era de 12 MHZ ( a foto era péssima e não dava pra ler o cristal). Se meu projeto precisasse de algum tipo de temporização este arduino seria inútil.

• 2-Conectores : Aconselho comprar arduinos com conectores grandes e fortes para o desenvolvimento de projetos. Eles tem uma resistência mecânica muito superior aos conectores mini-usb e não quebram facilmente.

• 3-Chip USBs : O melhor chip USB é o ATmega8 ou ATmega16 porque já vem com o driver para funcionamento gravado em seu firmware e é só espetar e funcionar. Como já lhes disse, quanto melhor mais caro.