A placa Arduino UNO é equipada com mais de 20 pinos que podem ser usados em uma variedade de aplicações. Neste tutorial, vamos explorar o Pinout do Arduino UNO, discutindo cada seção de pinos, suas funcionalidades e aprofundando nos usos de aplicação. Você aprenderá a aplicar os pinos do Arduino em seu projeto, adquirindo um entendimento sólido de muitos princípios básicos do Arduino.
Além disso, você também terá acesso ao diagrama de pinos do Arduino UNO e o diagrama esquemático do Arduino R3, que podem ser utilizados para criar sua própria placa PCB de Arduino com quaisquer modificações personalizadas necessárias para o seu projeto. Vamos direto ao ponto!
Veja também: Arduino nano pinout
O que é Arduino Uno?
O Arduino UNO é uma placa de desenvolvimento popular, ideal para iniciantes em eletrônica. Possui o microcontrolador ATmega328P, que permite executar códigos e interagir com o ambiente através de 14 pinos digitais e 6 entradas analógicas. A placa se conecta a um computador via USB para alimentação e carregamento de código usando a IDE do Arduino, que é amigável para iniciantes. Pode ser alimentada externamente para projetos autônomos. O design open source permite personalizações, fomentando uma comunidade ativa de desenvolvedores que compartilham melhorias e projetos inovadores.
Arduino Uno Pinout – Diagrama
Este diagrama detalhado do Arduino Uno Pinout vem com rótulos coloridos e legendas para ajudar na identificação das funcionalidades de cada pino. Ele também inclui o diagrama de pinagem do microcontrolador Atmega328p AVR, facilitando o mapeamento dos pinos numerados do Arduino para os pinos reais do microcontrolador.
Figura 1: “Pinout of ARDUINO Board and ATMega328PU” por pighixxx é licenciada por Creative Commons Attribution-Share Alike 4.0 International
Na sequência vamos explicar todos os pinos do Arduino Uno, separando em seções para facilitar o entendimento.
Arduino Uno Pinout – Pinos de Energia
A placa Arduino UNO possui dois reguladores de tensão LDO que fornecem uma tensão DC regulada de +5V e +3.3V para alimentar o microcontrolador principal Atmega328p. Esses reguladores não apenas alimentam o próprio Arduino, mas também podem ser usados para fornecer energia a módulos externos e sensores que você queira integrar ao seu projeto.
Existem várias opções para alimentar a sua placa Arduino UNO, que discutiremos em detalhes a seguir. A seguir, apresentamos uma figura da seção de alimentação na sua placa Arduino UNO, com um pinout detalhado de cada pino de alimentação e sua funcionalidade. Isso permitirá que você entenda como utilizar cada pino de maneira eficaz para suas necessidades energéticas e de conectividade em projetos diversos.
Arduino Uno Pinos Terra – GND
A placa Arduino UNO possui três pinos de terra que podem ser utilizados ao conectar dispositivos externos como LEDs, sensores e módulos.
Importância do Terra Comum
É essencial conectar todos os pinos de terra dos seus circuitos à mesma linha de terra (terra comum), especialmente quando esses circuitos precisam se comunicar entre si. Sensores e módulos externos não apenas requerem o fornecimento de tensão de 5V ou 3.3V, mas também devem compartilhar a mesma linha de terra do Arduino para garantir uma comunicação adequada.
Fornecimento de +5V
Este é um regulador de tensão DC de +5V que pode ser usado para alimentar sensores e módulos externos a partir da sua placa Arduino. Evite sobrecarregá-lo com cargas pesadas para prevenir danos.
Fornecimento de +3.3V
Outro regulador fornece +3.3V, ideal para alimentar sensores e módulos que não toleram 5V. Alguns dispositivos exigem 3.3V DC, e pode ser necessário um conversor de nível para as entradas/saídas do Arduino, que operam em 5V.
Pino VIN do Arduino Uno
Existem algumas opções para alimentar sua placa Arduino UNO. A primeira é usar o cabo USB, que não apenas fornece energia, mas também permite atualizar o firmware do microcontrolador via comunicação USB. Outra alternativa é usar a entrada Jack DC, que aceita uma tensão DC entre 6V e 12V, com a recomendação de não ultrapassar 9V. Tensões mais altas podem causar superaquecimento dos reguladores LDO, resultando em possíveis danos. A última opção é o pino VIN, que permite conectar uma fonte de tensão externa na mesma faixa de 6V a 12V, como a entrada Jack DC. É crucial não conectar múltiplas fontes de energia ao mesmo tempo; escolha apenas uma das opções mencionadas para evitar danos.
Pino IOREF do Arduino Uno
O pino IOREF fornece uma referência de tensão lógica de 5V, necessária para shields Arduino que utilizam essa referência para funcionar corretamente. Isso garante que os shields possam operar com a tensão lógica correta fornecida pela placa.
Tabela Arduino Pinos Energia
Nome Pino | Descrição |
---|---|
5v | Fonte regulada de +5v DC |
3.3v | Fonte regulada de +3,3v DC |
GND | Terra (Ground) |
RESET | Reinicialização |
Vin | Tensão CC de entrada (6v-12v). Tente não exceder 9v |
IOREF | Fornece referência lógica de tensão de 5 V para shields |
Arduino UNO Pinout – Pinos Digitais
Os pinos GPIO (General-Purpose Input Output) do Arduino são os pinos de entrada e saída digital da placa Arduino UNO.
A placa Arduino UNO possui um total de 14 pinos GPIO, conforme ilustrado na figura abaixo.
Pinos IO
Os pinos numerados de 0 a 13 na placa Arduino UNO são utilizados como entradas ou saídas digitais.
O pino 13, em particular, é usado para controlar o LED integrado na placa.
No modo saída (output), os pinos digitais do Arduino Uno possuem:
- 5v (quando o pino digital está configurado em HIGH)
- 0v (quando o pino digital está configurado em LOW)
No modo entrada (input), o pino de entrada digital do Arduino Uno irá ler 0 ou 1 dependendo da tensão aplicada no pino:
- 0v–0.8v: lê como 0 (lógica 0 ou LOW)
- 2v–5v: lê como 1 (lógica 1 ou HIGH)
Qualquer nível de tensão entre 0.8v-2v é considerado entrada indefinida para os pinos digitais IO.
Importante
Os pinos de entrada e saída (IO) do Arduino podem fornecer ou absorver até 40mA de corrente por pino individualmente, que é o limite máximo absoluto para cada um deles. No total, todos os pinos IO combinados podem fornecer ou absorver até 200mA. Portanto, é importante garantir que você não exceda essas limitações em sua aplicação para evitar danos aos pinos ou à placa.
Cada pino IO do Arduino possui dois diodos de proteção que ajudam a limitar tensões excessivamente altas ou baixas, evitando danos aos pinos. No entanto, é essencial ter cautela com os níveis de tensão dos diversos componentes do seu sistema. Se necessário, use circuitos de ajuste de nível de tensão (level-shifting) para garantir que as tensões estejam dentro dos limites seguros para o Arduino.
Pinos PWM
Os pinos indicados pelo símbolo “~” na placa Arduino são os pinos de saída PWM (Pulse Width Modulation). Na placa Arduino UNO, existem 6 pinos de saída PWM: 3, 5, 6, 9, 10 e 11. Esses pinos permitem a geração de sinais analógicos a partir de saídas digitais, sendo bastante úteis para controlar a velocidade de motores, ajustar o brilho de LEDs, entre outras aplicações que requerem controle de potência variável.
Se sua aplicação requer mais de 6 saídas PWM, você pode considerar usar uma placa diferente do Arduino UNO ou buscar um circuito integrado (CI) controlador de PWM externo para aumentar o número de saídas PWM disponíveis. Também existe a opção de criar sinais PWM por meio de software, mas isso pode aumentar significativamente a carga de trabalho do processador.
Pinos de Interrupção
Os pinos de interrupção são pinos de entrada e saída digitais que podem ser configurados para funcionar no modo de entrada. Eles enviam um sinal de interrupção diretamente para a CPU sempre que o estado do pino é alterado. Quando isso acontece, a CPU interrompe a operação atual e executa uma função de tratamento de interrupção predefinida até que seja concluída, depois retoma a execução da função loop() principal do programa.
Esses pinos permitem uma resposta quase imediata a eventos externos, como mudanças de estado de um pino de entrada, sendo muito úteis em diversas aplicações, incluindo, mas não se limitando a:
- Medição de Velocidade de Motor com Encoder Óptico
- Interface com Sensores de Proximidade
- Varredura de Matriz de Teclado
- Interface com Sensores Ultrassônicos
- E muitos outros
No microcontrolador Arduino (Atmega328p), existem dois tipos de pinos de interrupção:
Pinos de Interrupção Externa Dedicados: Esses pinos são específicos para tratar interrupções externas diretamente (INT0 e INT1, que correspondem aos pinos 2 e 3).
Interrupções por Mudança de Estado de Pino: Permitem que qualquer alteração no estado de um pino digital específico dispare uma interrupção, oferecendo maior flexibilidade no design do sistema, ou seja, qualquer pino pode ser esta função.
Pinos temporizador e contador
Há dois pinos (T0 e T1) que podem ser utilizados como fontes de clock externas para o Timer0 e Timer1, respectivamente. Isso pode ser extremamente útil em diversas aplicações, dependendo do modo de operação do módulo Timer. (T0 corresponde ao Arduino Pino 4 e T1 ao Arduino Pino 5)
No Modo Contador, os pinos T0/T1 podem ser usados como uma fonte de clock externa, permitindo que o módulo contador receba pulsos externos e continue contando esses pulsos recebidos. Existem várias utilizações para aproveitar essa funcionalidade de hardware, tais como:
- Construir um Medidor de Frequência usando o Módulo Timer no Modo Contador
- Medir a Velocidade de um Motor usando um Encoder Óptico + Timer no Modo Contador
- e muito mais
Ao contar os pulsos recebidos durante um intervalo de tempo fixo, podemos determinar a frequência (ou período) do sinal de entrada. Como mencionado anteriormente, isso pode ser muito útil para ler sensores como encoders ópticos, sensores de proximidade para contagem de objetos, entre outros.
No Modo Timer, os pinos T0/T1 podem ser usados como uma fonte de clock externa, permitindo que o módulo timer receba um clock base de tempo externo gerado por qualquer outro dispositivo (ou circuito) fora do microcontrolador Arduino (Atmega328). Uma aplicação para essa funcionalidade de hardware é o clock RTC (Relógio de Tempo Real).
Um cristal RTC externo (32.768kHz) pode alimentar sua forma de onda de saída para o pino T0 ou T1, que será selecionado como fonte de clock. Defina o prescaler para 32. E considerando que Timer0/Timer1 são ambos de 10 bits, agora você obterá uma interrupção de timer de 1 segundo perfeita que pode ser usada como base de tempo para sua aplicação de relógio de tempo real. TOUT = 2ⁿ x (Prescaler/FCLK), que resulta em TOUT = 2¹⁰ x (32/32768) = 1 segundo.
Pinos ICP (captura de entrada)
O Arduino UNO (Atmega328p) possui um pino de captura de entrada, o ICP1, que corresponde ao pino 8 do Arduino. Este pino é utilizado com o módulo timer no modo timer enquanto está em operação contínua. Quando o estado do pino ICP muda, o valor atual do registrador do timer é capturado e armazenado no registrador de captura de entrada, também conhecido como ICU (Unidade de Captura de Entrada).
Isso pode ser extremamente útil em diversas aplicações, incluindo:
- Medição de largura de pulso de sinal de entrada externo
- Medição de RPM de motor com Encoder Óptico + ICU
- Interfacing de Sensor de Distância Ultrassônico com ICU
- Aplicações de Contador de Frequência
- Display de Tiras de LED com Ponto de Visão (POV)
- e muito mais
Pinos da porta ICSP
O cabeçalho ICSP (In-Circuit Serial Programming) oferece uma maneira adicional de gravar (programar) o microcontrolador Atmega328p na placa Arduino UNO através do SPI. No entanto, você raramente precisará usá-lo enquanto a porta USB estiver funcionando corretamente.
O bootloader do Arduino é gravado apenas uma vez no CI do microcontrolador, e a programação via USB é o método utilizado a partir de então. A menos que algo de errado aconteça com seu chip ou se você substituir o microcontrolador Atmega328p por um novo que não tenha o bootloader gravado. Nesse caso, a porta ICSP será a solução.
Tabela Arduino Pinos Digitais
Pino Arduino | Pino Atmega328p | PWM? | Função Especial | Descrição |
---|---|---|---|---|
D0 | PD0 | RX | Pino UART RX | |
D1 | PD1 | TX | Pino UART TX | |
D2 | PD2 | INT0 | Interrupção externa Pin0 | |
D3 | PD3 | ✓ | INT1 | Interrupção externa Pin1 |
D4 | PD4 | T0 | Pino entrada clock externo Timer0 | |
D5 | PD5 | ✓ | T1 | Pino entrada clock externo Timer1 |
D6 | PD6 | ✓ | ||
D7 | PD7 | |||
D8 | PB0 | ICP1 | Pino da unidade de captura de entrada | |
D9 | PB1 | ✓ | ||
D10 | PB2 | ✓ | SS | SPI Slave Select Pin |
D11 | PB3 | ✓ | MOSI | SPI Master-Out Slave-In |
D12 | PB4 | MISO | SPI Master-In Slave-Out | |
D13 | PB5 | SCK | SPI Serial Clock Pin |
Arduino UNO Pinout – Pinos Analógicos
O Arduino UNO possui 6 pinos de entrada analógica, rotulados de A0 a A5, conforme mostrado na figura abaixo. Esses pinos podem ser utilizados com periféricos analógicos no microcontrolador Arduino, como o ADC (Conversor A/D) e o Comparador Analógico.
Os pinos de entrada analógica também podem ser usados como pinos de E/S digitais de uso geral, como veremos adiante nesta seção.
ADC (Conversor A/D)
O conversor ADC (Conversor Analógico para Digital) no Arduino é utilizado para ler a entrada de tensão analógica e convertê-la para sua representação digital. Dado que o ADC do Arduino tem uma resolução de 10 bits, o intervalo de saída digital vai de 0 a 1023. O intervalo de entrada analógica é de 0 V a 5 V (sendo 5 V a tensão de referência analógica, VREF).
Você pode usar a ferramenta interativa abaixo para definir uma tensão de entrada analógica e observar o valor de saída digital do ADC que corresponde à tensão de entrada analógica. A equação de saída para o ADC é a seguinte:
Onde VREF é 5 V e n é a resolução do ADC, que é de 10 bits.
Comparador Analógico
Os pinos de entrada analógica podem ser usados com o comparador analógico interno do microcontrolador do Arduino (Atmega328p) em vez do ADC. O comparador analógico é um periférico realmente interessante e pode ser uma alternativa poderosa ao ADC em muitas aplicações.
Imagine que você precise monitorar uma tensão de entrada analógica e verificar se ela cai abaixo de um determinado valor de limiar. Você pode usar o ADC e continuar amostrando o pino de entrada milhares de vezes por segundo, sobrecarregando a CPU com essa tarefa intensa. No entanto, você poderia usar o comparador analógico e definir um limiar para a tensão de entrada. Quando ocorre uma queda de tensão, o comparador analógico dispara uma interrupção e a CPU responde imediatamente, sem sobrecarregar a CPU com conversões do ADC e verificações constantes da tensão de entrada analógica.
Existem muitas aplicações em que pode ser necessário usar o comparador analógico, incluindo, mas não se limitando a:
- Monitoramento de tensão de limiar
- Aplicações de carga de baterias
- Deteção de passagem por zero (ZCD)
- Tacômetros
- e muito mais
Pino AREF (referência analógica)
O pino AREF (Referência Analógica) pode ser utilizado para fornecer uma tensão de referência externa para a conversão analógico-digital das entradas nos pinos analógicos (A0-A5). A tensão de referência específica essencialmente a tensão máxima de entrada analógica, após a qual a saída do ADC se saturará em 1023 bits.
Vamos relembrar a equação de saída do ADC:
onde a VREF “padrão” é 5 V e n é a resolução do ADC, que é de 10 bits.
Ao usar o pino AREF, podemos alterar a tensão VREF padrão e ajustá-la para qualquer nível de tensão desejado, permitindo conversões A/D mais precisas. Se conectarmos o pino AREF a uma fonte externa de 2,5 V DC, teremos o dobro da resolução da referência analógica padrão de 5 V.
Isso ocorre porque, em vez de dividir o intervalo de 0 V a 5 V em 1024 níveis digitais discretos, agora dividiremos o intervalo de 0 V a 2,5 V em 1024 níveis digitais discretos, o que resulta exatamente no dobro da resolução padrão. No entanto, é essencial garantir que a tensão de entrada analógica não exceda 2,5 V após definir o AREF para 2,5 V. Caso contrário, o ADC se saturará em 1023 se a tensão de entrada analógica exceder a nova AREF de 2,5 V.
Usando pinos analógicos como IO digital
O Arduino Uno dispõe de um total de 14 pinos de GPIO digitais, dos quais 6 pinos (de A0 a A5) são analógicos. A questão é: podemos utilizar os pinos analógicos do Arduino como pinos de saída digital? A resposta é SIM, e aqui está o procedimento para fazê-lo.
Em primeiro lugar, o ADC é um recurso importante em qualquer microcontrolador. Em certas situações, você pode optar por sacrificar os canais de entrada analógica para obter pinos de IO digitais adicionais. Em alguns casos, utilizar um expansor de IO externo poderia ser uma solução mais adequada em vez de comprometer os canais de entrada analógica do ADC.
Mas suponha que você decidiu que precisa de um ou dois pinos digitais adicionais. E os pinos de entrada analógica são a sua única opção. Aqui está como proceder.
Trate os pinos de entrada analógica (A0 – A5) como pinos de IO digitais comuns. Isto significa que você deve primeiro usar a função pinMode() para definir o modo do pino como OUTPUT. Depois, utilize a função digitalWrite() para ajustar o estado do pino para HIGH ou LOW. Veja o tutorial abaixo para mais informações sobre isso, com alguns exemplos de código.
Arduino UNO Pinout – Pino Serial
O microcontrolador do Arduino UNO (Atmega328p) possui três tipos distintos de portas de comunicação serial (protocolos). Essas portas permitem que o Arduino interaja com uma vasta gama de sensores e módulos, ampliando suas funcionalidades e capacidades além dos limites do microcontrolador Atmega.
A comunicação serial é um método de troca de dados entre controladores embarcados, onde os bits são enviados e recebidos um a um em sequência. Por isso é chamada de comunicação serial. Existem diferentes portas de hardware (protocolos) para comunicação de dados em série, entre as quais (UART, I2C e SPI) são compatíveis com o microcontrolador do Arduino.
Cada porta de comunicação serial (protocolo) possui suas próprias vantagens e desvantagens, além de melhores aplicações. Iremos dedicar um tutorial específico e detalhado para cada um desses protocolos de comunicação serial. Aqui está um resumo de cada porta e seus pinos de IO.
Pinos UART
O UART (Receptor-Transmissor Assíncrono Universal) é o protocolo de comunicação serial mais amplamente utilizado em microcontroladores embarcados. No Arduino, geralmente empregamos o módulo UART para comunicação serial com o computador por meio de um conversor USB-TTL, permitindo a exibição de mensagens no monitor serial.
O Arduino UNO possui apenas um módulo UART, que usa dois pinos: RX, para receber dados seriais, e TX, para enviar dados seriais. O mapeamento dos pinos UART é: RX corresponde ao pino 0 do Arduino, e TX ao pino 1.
Além de ser usado para comunicação serial com o PC para fins de depuração, o UART também é empregado na interface com diversos sensores e módulos, tais como:
- Módulo Bluetooth HC-05
- Módulos GSM/GPRS
- Módulos GPS
- e muitos outros.
Arduino I2C Pins
O I2C ou IIC (Inter-Integrated Circuit) é outro protocolo de comunicação serial muito popular, amplamente utilizado por diferentes sensores e módulos em sistemas embarcados. Ele é composto por apenas 2 pinos (um para dados seriais e outro para o clock serial). Os pinos I2C no Arduino são: SDA (Serial Data) e SCL (Serial Clock).
O I2C é um protocolo multi-mestre e multi-escravo que suporta um grande número de dispositivos no mesmo barramento de 2 fios. Cada dispositivo possui um ID único que permite que outros dispositivos se comuniquem diretamente com ele. É considerado o barramento de comunicação serial mais eficiente em termos da quantidade de pinos de IO necessários para estabelecer uma rede de comunicação com múltiplos dispositivos.
Há muitos módulos e sensores que podemos conectar ao Arduino usando o barramento I2C, incluindo:
- Relógio RTC
- Telas de exibição OLED
- Expansor de pinos IO I2C
- Chips de memória EEPROM externos
- IMU MPU6050 (Giroscópio + Acelerômetro)
- e muitos outros
Geralmente, você não precisará de mais de um módulo I2C no seu microcontrolador Arduino. Isso porque, se precisar adicionar um novo dispositivo ao barramento I2C, basta conectá-lo às linhas SCL e SDA e estará pronto para funcionar. Diferente do UART, que é uma porta de comunicação mestre-escravo única.
Pinos SPI
O SPI (Interface Periférica Serial) é uma das portas de comunicação serial mais rápidas disponíveis. Com o SPI do Arduino, é possível comunicar-se com diversos sensores e módulos a taxas de dados significativamente mais altas em comparação com outros protocolos de comunicação serial.
O barramento de comunicação SPI é composto por 3 linhas principais (Saída de Dados Seriais, Entrada de Dados Seriais e Clock Serial). O dispositivo mestre SPI também precisa de um pino adicional de IO para selecionar o escravo com o qual deseja se comunicar. Isso implica que é necessário um pino de IO extra para cada dispositivo escravo adicionado ao barramento, o que limita o número máximo de dispositivos que podem ser endereçados nesse barramento.
As linhas do barramento SPI têm nomes de acordo com uma convenção que simplifica a conexão e o uso para os usuários, sendo elas:
- MOSI (Saída do Mestre, Entrada do Escravo)
- MISO (Entrada do Mestre, Saída do Escravo)
- SCK (Clock Serial)
- SS (Seleção do Escravo) “Necessário apenas para dispositivos escravos SPI”
Existem várias aplicações em que você precisará usar o barramento SPI do Arduino para conectar diversos sensores e módulos, incluindo, mas não se limitando aos seguintes exemplos:
- Interface com Display TFT SPI
- Interface com Display de Matriz de Pontos
- Memória Flash SPI Externa
- Módulos ADC SPI Externos
- Módulos Sem Fio nRF24L01
- e muitos outros
Tabela Arduino Pinos Analógicos
Pino Arduino | Pino Atmega328p | Função Especial | Descrição |
---|---|---|---|
A0 | PC0 | ||
A1 | PC1 | ||
A2 | PC2 | ||
A3 | PC3 | ||
A4 | PC4 | SDA | I2C Serial Data Line |
A5 | PC5 | SCL | I2C Serial Clock Line |
AREF | AREF | AREF | Pino entrada de referência da tensão analógica |
Arduino UNO R3 Diagrama Esquemático
Como um projeto de código aberto, o design esquemático da placa Arduino UNO e a lista de componentes são completamente open-source e estão disponíveis para todos baixarem, modificarem e criarem designs personalizados de placas Arduino com base nele.
Ao estudar cuidadosamente os arquivos de design esquemático da placa Arduino UNO, você obterá uma visão clara dos detalhes de hardware subjacentes. Você pode baixar o diagrama esquemático de design do Arduino clicando aqui.