Básico - Projeto 00
Usando o Arduino pela primeira vez
Objetivo
Instruir os iniciantes no mundo da eletrônica e da prototipagem sobre como utilizar a plataforma do Arduino. O artigo apresentará uma visão geral da plataforma do Arduino e suas peculiaridades técnicas, ensinará como instalar o IDE do Arduino, mostrará a estrutura básica de programação do IDE e exemplificará sua utilização com um projeto simples, como o blink porta 13.
O objetivo final é incentivar os iniciantes a se interessarem pela plataforma Arduino e proporcionar uma base sólida para que possam explorar e criar seus próprios projetos no futuro.
Observação: é importante mencionar que existem várias placas de Arduino disponíveis no mercado, cada uma com suas especificidades e recursos. No entanto, para simplificar o artigo e ajudar os iniciantes a se familiarizarem com a plataforma, podemos nos concentrar em uma das placas mais populares e acessíveis, como a Arduino UNO. Dessa forma, os leitores podem se sentir mais confiantes ao seguir as instruções e exemplos apresentados no artigo.
Aplicação
Para fins didáticos e projetos gerais com Arduino.
Componentes necessários
Referência
|
Componente
|
Quantidade
|
Imagem
|
Observação
|
Arduino UNO R3 |
Arduino UNO |
1 |
|
Você poderá utilizar uma placa Arduino UNO original ou similar
|
Breve apresentação da plataforma Arduino
O que é Arduino?
Arduino é uma plataforma eletrônica de prototipagem baseada em hardware e software de código aberto (open source). Ela permite que os usuários criem dispositivos interativos e inteligentes usando componentes eletrônicos simples e uma linguagem de programação fácil de aprender.
O Arduino é amplamente utilizado por entusiastas, profissionais e estudantes de engenharia e programação em todo o mundo para criar projetos e sistemas eletrônicos de todos os tipos. Com o Arduino, é possível criar desde projetos simples, como um semáforo de trânsito, até projetos mais complexos, como robôs autônomos, sistemas de automação residencial e até mesmo instrumentos musicais.
O Arduino foi criado em 2005, na Itália, por um grupo de 5 pesquisadores: Massimo Banzi, David Cuartielles, Tom Igoe, Gianluca Martino e David Mellis, com o objetivo de desenvolver uma ferramenta adaptável e de baixo custo para servir como base em seus projetos educacionais interativos. (Wikipédia)
A facilidade de uso do Arduino, juntamente com sua flexibilidade e versatilidade, tornam-no uma ferramenta ideal para iniciantes que desejam aprender eletrônica e programação. Além disso, sua baixa complexidade permite que até mesmo crianças possam se envolver em projetos educacionais, despertando o interesse em áreas STEM (Ciência, Tecnologia, Engenharia e Matemática).
A plataforma é composta por uma placa controladora (hardware), que pode ser programada para realizar diversas funções, e um ambiente de desenvolvimento integrado (IDE) (Software) que permite a criação de programas para essa placa de forma simples e intuitiva.
Com a possibilidade de utilizar diversos tipos de sensores, atuadores e componentes eletrônicos, o Arduino pode ser utilizado para criar desde projetos simples, como um semáforo inteligente, até projetos complexos, como robôs autônomos, sistemas de controle e automação de processos, entre outros. Isso faz com que o Arduino seja uma plataforma de grande importância para a eletrônica e programação, tanto para profissionais quanto para amadores.
Características técnicas do Arduino UNO R3 (Hardware)
Placa Arduino UNO R3: O Arduino UNO R3 (terceira revisão) é uma placa microcontroladora baseada no microcontrolador ATmega 328. Ela tem 14 pinos I/O (Input/Output) digitais, 6 entradas analógicas, um oscilador de 16 MHz (cristal), uma conexão USB, uma entrada de alimentação (conector Jack), um header ICSP, e um botão de reset. Ela contém tudo o que é necessário para o suporte do microcontrolador, ligando-a simplesmente a um computador através de um cabo USB, ou alimentando-a com um adaptador AC/AD (ou bateria) para iniciar.
Características Gerais:
Microcontrolador |
ATmega328 |
Tensão Operacional |
5V |
Tensão de entrada (recomendada) |
7-12V |
Tensão de entrada (limites) |
6-20V |
Pinos E/S digitais |
14 (dos quais 6 podems ser saídas PWM) |
Pinos de entrada analógica |
6 |
Corrente Contínua (CC) por pino E/S |
40 mA |
Corrente Contínua (CC) para o pino 3,3V |
50 mA |
Flash Memory |
32 KB (ATmega328) dos quais 0,5KB são utilizados pelo bootloader |
SRAM |
2 KB (ATmega328) |
EEPROM |
1 KB (ATmega328) |
Velocidade de Clock |
16 MHz |
Alimentação:
Corrente Contínua (CC)
O Arduino UNO opera com corrente contínua (CC), pois a energia fornecida pelas portas USB ou pelo conector de alimentação é proveniente de fontes de corrente contínua, como baterias ou adaptadores de energia.
Ao contrário da corrente alternada (CA), que é comumente usada nas tomadas domésticas, a corrente contínua mantém uma direção constante. Isso é particularmente útil em muitas aplicações eletrônicas, pois muitos dos componentes eletrônicos, como LEDs e transistores, funcionam melhor com corrente contínua.
Essa característica facilita a integração do Arduino UNO em projetos eletrônicos, onde a estabilidade e da direção da corrente e tensão elétrica e é uma consideração importante.
Conexão USB (pelo computador)
O Arduino Uno pode ser alimentado pela conexão USB ou com uma fonte de alimentação externa. A conexão USB é responsável também pela para comunicação com o computador. É por meio da USB que você vai carregar um programa na memória do Arduino.
Quando você alimenta o Arduino através da conexão USB com o computador, a tensão de entrada no Arduino é de 5 volts (5V). A porta USB fornece essa tensão constante. É importante notar que a corrente da porta USB do computador é geralmente limitada a cerca de 500mA (0,5A). Se você precisar de mais corrente, considere uma fonte de alimentação externa.
Fonte de tensão externa
A alimentação externa é feita através do conector DC P4 (Jack), onde o valor de tensão da fonte externa deve estar entre os limites 6V a 20V, porém é altamente recomendada a utilização de uma tensão externa entre 7V e 12V. Tensões abaixo de 7V podem deixar o funcionamento da placa instável e acima de 12V podem sobreaquecer e até danificar a placa controladora.
A fonte de alimentação externa (não USB) pode ser tanto uma fonte chaveada de 7V a 12V, pilhas comuns ou baterias 9V, entre outras opções, por exemplo:
Observação: Qualquer que seja o tipo da fonte de alimentação externa escolhida, a mesma deverá contar com algum tipo de dispositivo ou suporte que inclua um conector DC P4. Isso permitirá uma conexão adequada com a placa do Arduino.
Pinos de alimentação da placa Arduino UNO:
Pinos de alimentação (pinos de tensão) são conectores da placa Arduino UNO que fornecem tensão (diferença de potencial elétrico) para alimentação dos circuitos e componentes eletrônicos externos. Para que esses pinos de alimentação possam fornecer energia, é necessário que a placa Arduino UNO esteja alimentada por meio de uma conexão USB ou por uma fonte de tensão externa.
São eles:
- Vin: Fornece tensão quando a placa Arduino é alimentada por uma fonte de alimentação externa. A tensão fornecida pelo pino Vin é a mesma da fonte de alimentação externa. Portanto, se a placa Arduino for alimentada por uma tensão de 12V, o pino Vin irá fornecer 12V também. É importante ter extrema atenção ao utilizar o pino Vin para alimentar outros circuitos ou componentes eletrônicos, a fim de evitar possíveis danos decorrentes de uma tensão inadequada.
- 5V: Fornece tensão contínua de 5V para alimentação dos circuitos externos, outros componentes eletrônicos e shilds (placas de expansão). Essa fonte de alimentação pode ser proveniente da conexão USB, de uma fonte externa ou mesmo do pino Vin, quando alimentamos a placa Arduino. Para manter essa tensão contínua de 5V, o Arduino utiliza um regulador de tensão interno.
- 3,3V: Fornece tensão contínua de 3,3V controlada pelo regulador de tensão interno da placa. A corrente máxima suportada é de 50mA.
- GND: Pinos terra ou "ground".
- RESET: Pino conectado a pino de RESET do microcontrolador. Pode ser utilizado para um reset externo da placa Arduino.
- IOREF: É uma espécie de "indicador" do nível de tensão de referência atual do Arduino UNO e é útil quando você está usando shields que precisam se ajustar automaticamente a diferentes níveis de tensão. Esse pino não fornece tensão, mas é usado para informar a outros dispositivos, principalmente shields (placas de expansão) conectados ao Arduino qual é o nível de tensão de referência da placa, ajustando-o automaticamente.
Memória do Arduino UNO
O componente principal da placa Arduino UNO é o microcontrolador ATMEL ATMEGA328. Ele conta 32 KB de memória flash para armazenar código (dos quais 2 KB são utilizados pelo bootloader), além de 2 KB de SRAM e 1 KB de EEPROM (Electrically-Erasable Programmable Read-Only Memory), que pode ser lida e escrita através da biblioteca EEPROM.
Obs.: No Arduino UNO, a memória Flash e a RAM (SRAM) são separadas por razões de arquitetura e eficiência, características típicas dos microcontroladores baseados na arquitetura Harvard, como o ATmega328P usado no Arduino UNO.
Esse microcontrolador possui, portanto, três tipos principais de memória: Flash, SRAM e EEPROM. Cada tipo de memória tem características e funções distintas, essenciais para o funcionamento do Arduino. Vamos detalhar cada um deles:
Memória Flash
A memória Flash no Arduino UNO é usada para armazenar o código do programa (o sketch) que você carrega na placa. Essa memória é não volátil, o que significa que os dados não são perdidos quando a energia é desligada.
Características:
- Capacidade: O Arduino UNO possui 32 KB de memória Flash, dos quais 2 KB são reservados para o "bootloader".
- Função: Armazena o código do programa carregado na placa que é executado pelo microcontrolador.
- Não volátil: Mantém os dados armazenados mesmo quando a energia é desligada.
- Escrita/Leitura: A memória Flash tem um número limitado de ciclos de escrever/apagar, em torno de 10.000 ciclos, o que é mais do que suficiente seus projetos.
O bootloader é um programa inicializador e fica armazenado em uma pequena parte da memória Flash (2KB). Seu objetivo é carregar novos sketches através da interaface USB sem a necessidade de um gravador externo. No caso do Arduino quando o ligamos a energia, ou pressionamos o botão de reset, o primeiro programa a ser executado é o bootloader.
Memória SRAM
A SRAM (Static Random Access Memory) é a memória de trabalho do microcontrolador, onde variáveis temporárias e dados de execução do programa são armazenados. Diferente da Flash, a SRAM é volátil, ou seja, os dados são perdidos quando a energia é desligada.
Características:
- Capacidade: O Arduino UNO possui 2 KB de SRAM.
- Função: Armazena variáveis temporárias, pilha de execução e buffers de dados.
- Volátil: Perde todos os dados armazenados quando a energia é desligada.
- Acesso Rápido: Acesso rápido para leitura e escrita, essencial para a execução do código.
Uso no Arduino:
- Variáveis: Todas as variáveis declaradas no seu código são armazenadas na SRAM.
- Pilha: A pilha de execução, que mantém o rastreamento das funções chamadas e variáveis locais, é armazenada na SRAM.
- Buffers: Buffers temporários de dados usados em operações como comunicação serial são armazenados na SRAM.
Memória EEPROM
A EEPROM (Electrically Erasable Programmable Read-Only Memory) é usada para armazenar dados que precisam ser preservados entre ciclos de energia. Assim como a Flash, a EEPROM é não volátil.
Características:
- Capacidade: O Arduino UNO possui 1 KB de EEPROM.
- Função: Armazena dados que precisam ser mantidos mesmo quando o microcontrolador é desligado.
- Não volátil: Mantém os dados armazenados mesmo quando a energia é desligada.
- Escrita/Leitura: Tem um número limitado de ciclos de escrita/eliminação, mas suficiente para a maioria dos projetos.
Uso no Arduino:
- Dados Persistentes: Dados como configurações do usuário, contadores ou qualquer informação que precisa ser preservada entre ciclos de energia são armazenados na EEPROM.
Estrutura de Memória do ATmega328P no Arduino UNO
Aqui está um resumo visual das diferentes memórias e suas capacidades:
Tipo de Memória |
Capacidade |
Função Principais |
Flash |
32 KB |
Armazenamento do código do programa (sketch) (30kb) / bootloader (2KB) |
SRAM |
2 KB |
Variáveis temporárias, pilha de execução, buffers. |
EEPROM |
1 KB |
Dados persistentes que precisam ser preservados. |
Entradas e Saídas do Arduino UNO
A placa Arduino UNO possui pinos de entrada e saídas digitais, assim como pinos de entradas e saídas analógicas, abaixo é exibido a "pinagem" conhecida como o padrão Arduino:
Entradas e saídas digitais
Cada um dos 14 pinos digitais (0 a 13) do Arduino pode ser configurado como entrada ou saída, o que é facilmente feito através das funções de programação pinMode(), digitalWrite(), e digitalRead(). Esses pinos operam com uma tensão de 5 volts e têm a capacidade de fornecer ou receber uma corrente máxima de 40 mA cada um. Além disso, eles possuem resistência de pull-up interna (que é desabilitada por padrão, sendo habilitada apenas por programação) com valores típicos na faixa de 50 kΩ.
Além de suas funções gerais, é importante notar que alguns pinos do Arduino têm funções específicas, incluindo:
- Serial: 0 (RX) e 1 (TX): são usados para receber (RX) e transmitir (TX) dados seriais. Eles podem ser utilizados para comunicação serial entre a placa Arduino e o computador. É importante observar que estes pinos são ligados ao microcontrolador que gerencia a comunicação USB com o computador e também são frequentemente utilizados para a comunicação com módulos externos, sensores e outros dispositivos que suportam comunicação serial.
- External Interrupts: 2 e 3: Estes pinos podem ser configurados para ativar uma interrupção quando ocorre uma mudança de valor, uma transição de baixa tensão para alta para baixa, ou seja, de 0 para 5V, denominada "rising", ou uma transição de alta para baixo (de 5V para 0V), denominada "falling". Isto será útil para usar em evnetos externos, como pulsos de sensores ou dispositivos que requerem interrupção imediata. A função attachInterrupt() pode ser usada para configurar esses pinos e definir os detalhes da interrupção, como qual função deve ser chamada quando a interrupção ocorre.
- PWM (Pulse Width Modulation): 3, 5, 6, 9, 10 e 11: Esses pinos (3, 5, 6, 9, 10 e 11) são capazes de fornecer saídas analógicas PWM de 8 bits. O PWM é uma técnica que permite controlar a intensidade luminosa de LEDs, a velocidade de motores e muitos outros dispositivos. A função analogWrite() é utilizada para controlar a largura do pulso PWM gerado por esses pinos. Essa funcionalidade é particularmente útil para criar efeitos de iluminação suave, controle de velocidade de motores, e outros cenários onde o controle analógico é necessário.
- SPI (Serial Peripheral Interface): 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK): Esses pinos são designados para suportar a comunicação SPI, uma interface serial de alta velocidade que é amplamente utilizada para a troca de dados entre o Arduino e dispositivos externos, como sensores, displays, cartões SD e outros microcontroladores.
- I2C (Inter-Integrated Circuit): 4 (SDA) e 5 (SCL): Esses pinos são projetados para suportar a comunicação I2C, também conhecida como TWI (Two-Wire Interface). A comunicação I2C é uma interface serial que permite que dispositivos se comuniquem entre si usando apenas dois fios: SDA (Serial Data) e SCL (Serial Clock). Ela é amplamente utilizada para conectar sensores, displays, módulos de expansão e outros dispositivos ao Arduino.
- LED (Light-Emitting Diode): 13: O pino digital 13 é notável por ter um LED já montado na placa e conectado de fábrica. Quando o pino está configurado com o valor HIGH, o LED acende, iluminando. Por outro lado, quando o valor está em LOW, o LED se apaga. Isso é útil para realizar testes rápidos e verificar a operação do seu Arduino, bem como para prototipar projetos simples que envolvem iluminação.
- AREF (Analog Reference): Este pino é uma referência de tensão para as entradas analógicas. Ele é usado em conjunto com a função analogReference() para definir a referência de tensão para as leituras analógicas feitas pelo Arduino. Ao conectar uma tensão externa a este pino, você pode calibrar as leituras analógicas para se adaptar às características específicas do seu projeto ou a sensores que operam em faixas de tensão diferentes. O pino AREF é uma ferramenta importante para obter medições precisas e personalizadas em projetos que envolvem sensores analógicos.
Entradas analógicas
O Arduino Uno oferece 6 entradas analógicas, identificadas de A0 a A5. Cada uma dessas entradas possui uma resolução de 10 bits, o que significa que elas são capazes de detectar 1024 valores diferentes. Por padrão, essas entradas estão configuradas para medir no intervalo de 0 a 5 volts (0-5V).
Por padrão elas medem de 0 a 5V, embora seja possível alterar o limite superior utilizando o pino AREF em conjunto com a função analogReference(). Essa capacidade de ajuste torna as entradas analógicas do Arduino Uno versáteis e ideais para a leitura precisa de sensores e medições personalizadas.
Observação:
Os pinos analógicos também podem ser usados como pinos digitais, e isso é uma característica útil que amplia a flexibilidade de sua placa. Para se referir a esses pinos no código, você pode usar números, tanto para as entradas digitais quanto analógicas. Por exemplo, o pino analógico A0 pode ser referenciado simplesmente como 14 quando usado como entrada digital. Da mesma forma, os pinos A0 a A5 podem ser usados como saídas digitais e referenciados de 14 a 19.
Essa capacidade de utilizar pinos analógicos como digitais é especialmente útil quando você precisa de mais pinos digitais para conectar sensores, atuadores ou outros dispositivos em seu projeto. Lembre-se de que ao usar pinos analógicos como digitais, a resolução analógica de 10 bits desses pinos não é aproveitada, mas eles podem realizar operações de entrada e saída digitais como os outros pinos digitais da placa.
ATENÇÃO: É ainda importante referir que a corrente máxima para cada pino analógico e digital é de 40 mA, com exceção da saída de 3,3 V, que permite correntes máximas de 50 mA.
Comunicação
O Arduino Uno oferece várias maneiras de se comunicar com outros dispositivos:
-
Comunicação Serial: O ATmega328 no Arduino Uno suporta comunicação serial UART TTL a 5V, que é acessível pelos pinos digitais 0 (RX) e 1 (TX). O Arduino também inclui um monitor serial para enviar e receber dados textuais da placa, com LEDs nos pinos RX e TX indicando a transmissão de dados.
-
Comunicação Serial em Outros Pinos: A biblioteca SoftwareSerial permite a comunicação serial em qualquer um dos pinos digitais do Arduino Uno, o que amplia as opções de comunicação.
-
Comunicação I2C (TWI) e SPI: O ATmega328 suporta comunicação I2C e SPI. O Arduino oferece bibliotecas, como a "Wire" para I2C e a "SPI" para SPI, que simplificam a implementação dessas interfaces para conectar sensores, dispositivos e outros microcontroladores.
Essas capacidades de comunicação tornam o Arduino Uno uma plataforma versátil para projetos que envolvem troca de dados com outros dispositivos, seja por meio de conexão serial, I2C ou SPI.
Leds de Sinalização
O Arduino Uno possui alguns LEDs de sinalização que desempenham funções importantes. Aqui está a descrição dos principais LEDs de sinalização no Arduino Uno: