Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

, 
 
E-BOOK 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
SISTEMAS MICROCONTROLADOS 
SISTEMAS DIGITAIS
Sidney Cerqueira 
Bispo dos Santos
 
Introdução aos 
microcontroladores
Objetivos de aprendizagem
Ao final deste texto, você deve apresentar os seguintes aprendizados:
  Identificar a diferença entre microprocessador e microcontrolador.
  Relacionar os elementos da arquitetura interna de um microcontrolador.
  Definir a aplicação básica dos microcontroladores.
Introdução
O emprego de componentes sólidos na eletrônica passou por uma revolu-
ção tecnológica sem precedentes na história dos dispositivos eletrônicos. 
Os circuitos integrados evoluíram e hoje há computadores completos 
em um único chip. É o caso dos microcontroladores.
Imagine um computador muito pequeno, com custo muito baixo e 
encapsulado em um chip: esse é o microcontrolador. Ele traz embutido 
o próprio gerador de clock, memórias ROM, flash e RAM, interfaces de 
entrada e saída, processador, conversores de sinais e outros componen-
tes próprios de cada modelo. Os microcontroladores são utilizados em 
sistemas específicos ou em aplicações embarcadas, como brinquedos, 
controles remotos, eletrodomésticos e máquinas industriais.
Neste capítulo, você vai ver a diferença entre microprocessador e mi-
crocontrolador. Também vai conhecer os elementos da arquitetura interna 
de um microcontrolador e as aplicações básicas dos microcontroladores.
Microprocessadores e microcontroladores
Na década de 1960, engenheiros de uma empresa japonesa encomendaram à 
INTEL circuitos integrados para calculadoras. Nesse contexto, um engenheiro 
da INTEL teve a ideia de projetar um circuito integrado cujo comportamento 
fosse determinado por um programa armazenado no chip. Desse modo, nasceu 
o primeiro microprocessador. A partir daí, a INTEL percebeu a potencialidade 
da sua criação e comprou de volta a licença e a patente do seu produto, lançando 
no mercado o 4004, com palavras de 4 bits e velocidade de 6 mil instruções 
por segundo. No ano seguinte, foi lançado o 8008, com palavras de 8 bits. 
Esse microprocessador podia acessar 16 kB de memória, com velocidade de 
300 mil instruções por segundo, e possuía 45 instruções.
Depois disso, outras empresas perceberam o potencial dos microproces-
sadores e começaram a desenvolver os seus próprios, produzindo grande 
diversidade de arquiteturas e características. Cada empresa fabricante possui 
seu projeto de arquitetura, com vantagens e desvantagens. Essa arquitetura diz 
respeito à forma com que as unidades básicas são organizadas, ao conjunto de 
instruções e ao modo como elas são executadas. Entretanto, existem unidades 
constituintes dos microprocessadores encontradas em todos eles: a Unidade 
Lógica Aritmética (ULA), o arranjo de registradores, a unidade de controle e 
o decodificador de instrução, como você pode ver na Figura 1.
Figura 1. Visão interna de um microprocessador.
Unidade lógica
aritmética
Decodi�cador
de instrução
Arranjo de
registradores
Unidade
de controle
Microprocessador
Introdução aos microcontroladores2
A unidade lógica aritmética é que realiza, a partir dos dados obtidos do 
arranjo de registradores, as operações aritméticas básicas (adições, multipli-
cações, desvios, etc.) e as operações lógicas (e, ou, não, ou-exclusivo, etc.). A 
ULA é gerenciada pela unidade de controle.
O decodificador de instrução, na verdade, pode ser considerado uma parte 
da ULA, mas é interessante ser definido separadamente porque executa uma 
função muito importante. O microprocessador funciona executando instruções 
que ficam armazenadas em uma memória. Essas instruções são armazena-
das em binário. O decodificador decodifica cada instrução armazenada, em 
sequência, para uma forma que a ULA entenda.
Para que a ULA possa executar um programa, é necessário efetuar o 
armazenamento temporário de dados e endereços a fim de que eles sejam 
processados. Isso é feito em um conjunto de registradores chamado de arranjo 
de registradores.
Após o decodificador de instrução efetuar seu trabalho, a unidade de 
controle entra em ação, expedindo sinais de controle e temporização para que 
os dados sejam transferidos para fora ou para dentro do microprocessador. 
Além disso, ela garante o sincronismo na execução das instruções.
O microprocessador é o principal dispositivo de qualquer sistema compu-
tacional. Mas, para que ele seja operacional, ou seja, entregue alguma resposta 
útil, necessita de uma série de periféricos ou elementos funcionais, tais como: 
memórias RAM, memórias de programas, conversores analógico/digital (A/D), 
osciladores e interfaces, entre outros.
Os microprocessadores são circuitos integrados muito flexíveis, mas essa 
flexibilidade possui suas desvantagens, que são o custo e as dimensões, além 
da exigência dos periféricos e interfaces. Uma forma de superar essas des-
vantagens é encapsular tudo o que é necessário para entregar determinado 
resultado em um só chip, com a possibilidade de modificar o resultado por 
meio da programação, ou seja, por meio de software.
Observe a Figura 2 para compreender melhor essa ideia. Os periféricos, 
memórias e interfaces são encapsulados em um único chip, ou seja, o mi-
crocontrolador é fabricado para exigir o mínimo possível de componentes 
externos. Isso proporciona economia de tempo de projeto, espaço e custo.
3Introdução aos microcontroladores
Figura 2. Microcontrolador.
Fonte: Adaptada de Sena (2017).
Elementos da arquitetura interna 
de um microcontrolador
Um microcontrolador é composto de circuitos lógicos, registradores de função 
especial (Special Function Register — SFR), portas de entrada/saída (I/O), 
unidades de memória, unidade central de processamento (Central Processing 
Unit — CPU), barramentos, oscilador, temporizadores e contadores. A seguir, 
você vai conhecer cada um deles.
Circuitos lógicos
O funcionamento dos microcontroladores é baseado em circuitos lógicos ou 
portas lógicas. As portas lógicas são conjuntos de transistores, diodos, resistores 
e capacitores, interligados, que realizam operações matemáticas binárias e 
lógicas com os números 0 e 1. As portas lógicas básicas são as portas E ou 
AND, OU ou OR, NÃO ou NOT e OU-exclusivas ou XOR. A partir delas, você 
pode defi nir outras portas e efetuar arranjos para obter resultados específi cos.
Introdução aos microcontroladores4
O conceito dessas portas pode ser estendido para a programação. Por exemplo, quando 
a operação OR faz parte de um programa, a operação lógica é efetuada pelas instruções.
As portas lógicas AND possuem duas ou mais entradas e uma saída. A 
saída terá um nível lógico 1 sempre que todas as entradas tiverem um nível 
lógico 1. Qualquer outra combinação produz uma saída no nível lógico 0.
As portas lógicas OR possuem duas ou mais entradas e uma saída. Sempre 
que qualquer uma das entradas possuir o nível lógico 1, a saída será no nível 
lógico 1. Caso contrário, será no nível lógico 0.
As portas lógicas NOT possuem somente uma entrada e uma saída. Essas 
portas apresentam, na saída, um nível lógico que é o inverso da entrada. Se a 
entrada possuir nível lógico 1, a saída será nível lógico 0 e vice-versa.
As portas XOR podem ser consideradas uma combinação das anteriores. 
Elas apresentam nível lógico 1 na saída apenas quando as suas entradas apre-
sentam níveis lógicos diferentes.
A saída da porta XOR, dependendo do número de entradas, pode gerar certa confusão. 
Se a porta possuir só duas entradas, então a saída será o nível lógico 1 apenas quando 
suas entradas apresentarem níveis lógicos diferentes. Se ela possuir mais do que 
duas entradas, a saída só será nível lógico 1 quando o número de níveis lógicos 1 nas 
entradas for ímpar. Por exemplo, para uma porta XOR de três entradas, se a entrada 
for 100 (número ímpar de nível 1), a saída será 1. Se a entrada for 110 (número par de 
nível 1), a saída será 0.
Registradores
O registrador é um dispositivo eletrônico que armazena os níveisLeitura recomendada
SEBESTA, R. W. Conceitos de linguagens de programação. Porto Alegre: Bookman, 2018.
13Estrutura do Arduino
ROBÓTICA
Fernando Esquírio Torres
Principais protocolos 
de comunicação
Objetivos de aprendizagem
Ao final deste texto, você deve apresentar os seguintes aprendizados:
 � Diferenciar os protocolos de comunicação utilizados no Arduino.
 � Reconhecer os componentes que são utilizados pelos protocolos de 
comunicação do Arduino.
 � Relacionar os componentes com o protocolo de comunicação 
utilizado.
Introdução
Protocolos de comunicação são regras ou normas que controlam a 
conexão entre dois ou mais sistemas computacionais. Eles definem as 
configurações de parâmetros, sintaxe, semântica e padrões que os dis-
positivos conectados devem obedecer para garantir que eles estejam 
interpretando os dados da mesma forma. Os protocolos foram criados para 
permitir a comunicação padronizada entre os equipamentos interligados, 
pois, sem eles, a transmissão de dados seria caótica. 
Os sistemas microcontrolados, como o Arduino, têm vários protocolos 
de comunicação disponíveis. Neste capítulo, vamos abordar os protocolos 
com mais destaque, que são o UART, o I2C e o SPI. Assim, você aprenderá 
a diferenciar esses protocolos de comunicação e a reconhecer os com-
ponentes que são utilizados por eles. Por fim, você verá como relacionar 
os componentes com o protocolo de comunicação utilizado.
Protocolos de comunicação utilizados 
no Arduino
O Arduino utiliza protocolos de comunicação para estabelecer uma conexão 
segura e confiável com diversos periféricos externos (sensores e atuadores) 
ou com outros microcontroladores e, desse modo, possibilita a troca dados 
entre esses dispositivos (MCROBERTS, 2011). Segundo Monk (2015), os 
protocolos mais comuns no Arduino são o UART, o I2C e o SPI, e o motivo 
dessa popularidade é que esses protocolos realizam a conexão com taxas de 
transmissão de dados altas entre os dispositivos utilizando poucos fios/pinos 
do microcontrolador. Vejamos mais sobre cada um desses protocolos.
Protocolo de comunicação UART
Segundo Monk (2017), a comunicação UART (Universal Asynchronous 
Receiver Transmitter) é um tipo de comunicação serial assíncrona que trans-
mite os dados sequencialmente através de um barramento de comunicação. 
Ela é a mais antiga entre as comunicações seriais e utiliza níveis de tensão 
TTL, que possui valores 0V e 5V para representar os níveis lógicos 0 e 1, 
respectivamente. 
A UART pode ser configurada nos três modos de transmissão: simplex, 
half-duplex ou full-duplex, conforme você pode ver na Figura 1. No primeiro 
modo, simplex, somente o dispositivo 1 pode transmitir os dados para o 
dispositivo 2. No segundo modo, half-duplex, os dispositivos 1 e 2 podem 
transmitir os dados, porém um de cada vez. No terceiro modo, full-duplex, 
existe um canal para cada dispositivo realizar a transmissão e, assim, os 
dispositivos podem enviar dados simultaneamente (EVANS; NOBLE; HO-
CHENBAUM, 2013). Nesse modo, as ligações dos canais transmissor e 
receptor devem ser cruzadas entre os dispositivos (observe a parte inferior 
da Figura 1). 
Principais protocolos de comunicação2
Figura 1. Modos de transmissão UART.
Simplex Half-duplex
Full-duplex
Dispositivo 1
Dispositivo 1
Dispositivo 2 Dispositivo 1 Dispositivo 2
Dispositivo 2
TX
TX
TX
RX
RX
RX
TX/RX RX/TX
Protocolo de comunicação I2C
De acordo com Banzi e Shiloh (2015), a comunicação I2C (Inter-Integrated 
Circuit) é uma comunicação serial síncrona que trabalha no modelo de hie-
rarquia mestre-escravo, podendo ter mais de um mestre (master), mas não 
simultaneamente, e vários escravos (slaves). O mestre, que costuma ser um 
microcontrolador ou dispositivos programáveis como FPGA, CLP etc., é 
responsável por coordenar a comunicação e requisitar informações dos outros 
dispositivos escravos. Cada dispositivo escravo tem um endereço único na 
comunicação. 
A I2C é um tipo de comunicação half-duplex e necessita de dois fios 
para estabelecer a conexão entre os dispositivos, o SDA e o SCL. A co-
nexão SDA (Serial Data Line) é um canal bidirecional por onde os dados 
são transmitidos (do mestre para o escravo e do escravo para o mestre). A 
conexão SCL (Serial Clock Line) é o canal do clock, que é controlado pelo 
dispositivo mestre, utilizado na sincronização da comunicação (MONK, 
2015). 
3Principais protocolos de comunicação
Figura 2. Comunicação I2C.
MASTER
SDA
SCL
SLAVE 1 SLAVE 2
Segundo Monk (2015), a transmissão de dados na comunicação I2C é 
iniciada com o sinal de Start enviado no barramento pelo dispositivo mestre. 
A condição de Start funciona como um sinal para avisar a todos os dispositivos 
ligados que algo será transmitido no barramento. Assim, todos os circuitos 
conectados irão “prestar atenção” e “escutar” o barramento. O sinal de Start 
consiste em fazer a transição do canal SDA (dados) do nível lógico 1 para 0 
e, em seguida, fazer a transição do canal SCL (clock) do nível lógico 1 para 
0 também. 
Em seguida, o mestre envia o endereço do dispositivo com o qual ele quer 
estabelecer a comunicação. Os dispositivos comparam esse endereço com o 
seu e, se for compatível, o escravo envia uma resposta chamada de sinal de 
Acknowledge (ACK). Uma vez o mestre recebeu o sinal de ACK, ele pode 
começar a transmissão ou recepção dos dados. Por fim, o mestre envia o sinal 
de Stop no barramento para finalizar a comunicação. O sinal de Stop consiste 
em fazer a transição do canal SCL (clock) do nível lógico 0 para 1 e, em seguida, 
fazer a transição do canal SDA (dados) do nível lógico 0 para 1 também.
Principais protocolos de comunicação4
Protocolo de comunicação SPI
Segundo Monk (2015), a comunicação serial SPI (Serial Peripheral Interface) 
é umas das comunicações seriais mais rápidas, porém atinge apenas pequenas 
distâncias. Esse tipo de comunicação também trabalha com a hierarquia 
mestre-escravo, como a I2C, mas no modo de transmissão full-duplex. 
Tipicamente a SPI, que você pode visualizar na Figura 3, utiliza pelo menos 
três conexões comuns entre os dispositivos: 
 � MISO (Master In Slave Out) — Linha do dispositivo Escravo para 
enviar dados para o dispositivo Mestre.
 � MOSI (Master Out Slave In) — Linha do dispositivo Mestre para enviar 
dados para o dispositivo Escravo.
 � SCK ou SCLK (Serial Clock) — Pulsos de clock de sincronismo da 
transmissão gerada pelo dispositivo Mestre. 
A conexão SS (Select Slave) é necessária quando existir mais de um dis-
positivo Escravo no barramento.
Figura 3. Comunicação SPI.
MASTER
SLAVE 1
SLAVE 2
SCLK
MOSI
MISO
SS1
SS2
SCLK
MOSI
MISO
SS
SCLK
MOSI
MISO
SS
5Principais protocolos de comunicação
De acordo com Geddes (2017), a transmissão de dados na comunicação SPI 
é iniciada com a configuração do clock pelo dispositivo Mestre, utilizando a 
frequência suportada pelo dispositivo Escravo. Em seguida, o Mestre utiliza o 
pino SS para selecionar o dispositivo Escravo com o qual ele quer estabelecer 
a comunicação. E, então, o dispositivo Mestre começa a enviar dados para 
o dispositivo Escravo pelo barramento MOSI e a receber dados do Escravo 
pelo barramento MISO. Para finalizar a transmissão, o dispositivo Mestre 
dá um toggle no sinal de clock e desativa o canal SS.
Componentes utilizados pelos protocolos 
de comunicação do Arduino
A maioria das placas Arduino possui pelos menos um periférico de cada uma 
das comunicações seriais: UART, I2C e SPI. Vamos agora focar na placa Ar-
duino Uno, que é a base das principais placas Arduino disponíveis, de modo 
que todas as informações apresentadas servirão para essas placas, como, por 
exemplo, o Arduino Mega. 
Comunicação serial UART no Arduino
Segundo Monk (2013), a comunicação serial UART permite a comunicação 
com o computador e com módulos eletrônicos como, por exemplo, o Bluetooth 
HC-05. Por padrão, ela está ligada aos pinos digitais 0 (receptor, RX) e 1 
(transmissor, TX). No Arduino Uno, esses são os mesmospinos ligados ao 
microcontrolador ATmega16U2, responsável por gerenciar a comunicação 
USB entre o computador e o Arduino, que permite a gravação do firmware 
na placa Arduino. Acompanhe a Figura 4.
Principais protocolos de comunicação6
Figura 4. Comunicação serial UART no Arduino Uno.
Fonte: Adaptada de Monk (2015).
Arduino Uno
Rx/D0 Tx/D1
Tx
RxATmega328 UART Interface
USB
Computador
Na comunicação UART, o transmissor e o receptor devem ter as mesmas 
configurações dos parâmetros da comunicação (taxa de transmissão, bits de 
dados, bit de paridade e bits de parada). Desse modo, ambos interpretarão os 
dados da mesma forma. 
Comunicação serial I2C no Arduino
A comunicação I2C no Arduino Uno é também conhecida como Two Wire 
Interface (TWI, interface de dois fios) e está disponível nos pinos analógicos 
A4 (SDA) e A5 (SCL). Existem diversos dispositivos que utilizam a comu-
nicação I2C para se comunicar com o Arduino, conforme mostra a Figura 5. 
Entre eles podemos citar os módulos display da Adafruit, o módulo receptor 
FM TEA5767, o módulo Real Time Clock (RTC, relógio de tempo real) e o 
acionador servo PWM.
7Principais protocolos de comunicação
Figura 5. Dispositivos I2C.
Fonte: Adaptada de Monk (2015).
Display de LEDs de 7
segmentos da Adafruit
Matriz de LEDs
da Adafruit
Pequena matriz de
LEDs da Adafruit
Módulo TEA5767
receptor de FM
Relógio de
tempo real (RTC)
Acionador servo/PWN
de 16 canais
De acordo com Monk (2015), o módulo TEA5767 é o dispositivo eletrônico 
utilizado para sintonizar uma frequência de rádio configurada na comunicação 
I2C. O módulo Real Time Clock contém um cristal oscilador utilizado para 
guardar data e hora exatas. O acionador servo PWM possui 16 canais de 
PWM (Pulse Width Modulation, Modulação por Largura de Pulso); segundo 
Culkin e Hagan (2018), a técnica de PWM permite reduzir a tensão média de 
um sinal elétrico.
Segundo Monk (2015), o Arduino tem uma biblioteca específica para 
trabalhar com a comunicação I2C, chamada de Wire, que deve ser incluída 
por meio do comando #include no início do código. Essa biblio-
teca permite ao Arduino se comunicar com dispositivos via interface I2C. 
Essa biblioteca tem uma classe com o mesmo nome, Wire, e disponibiliza 
métodos/funções e atributos para facilitar a configuração e a transmissão de 
dados entre os dispositivos conectados. A seguir, estão listadas as principais 
funções disponíveis.
Principais protocolos de comunicação8
 � Wire.begin (): inicializa a biblioteca e barramento I2C como mestre 
ou escravo.
 � Wire.beginTransmission(endereço): inicializa a transmissão e espe-
cifica o endereço do dispositivo para o qual o mestre deseja enviar os 
dados. Sinal de Start.
 � Wire.write(): escreve um byte de dados no barramento.
 � Wire.send(): escreve uma sequência de caracteres no barramento.
 � Wire.endTransmission(): finaliza a transmissão. Sinal de Stop.
 � Wire.requestFrom(): requisição realiza pelo mestre ao escravo de 
uma quantidade de bytes.
 � Wire.available(): usada pelo dispositivo escravo para determina se os 
dados chegaram e qual o número de bits solicitados.
 � Wire.read(): lê os dados enviados para o dispositivo escravo.
O módulo I2C LCD é outro componente muito utilizado para trocar dados 
com o Arduino. O módulo I2C necessita de apenas dois pinos para realizar a 
conexão com o Arduino, enquanto, sem ele, seriam necessários de 4 a 8 pinos. 
Isso é importante porque, muitas vezes, a quantidade de pinos disponíveis no 
Arduino é limitada e reduzir o uso de pinos com o display LCD possibilita 
conectar mais dispositivos — por exemplo, sensores diversos (STEVAN JU-
NIOR; SILVA, 2015). Outra vantagem é ter uma biblioteca específica para 
trabalhar com esse módulo (LiquidCrystal_I2C.h).
Comunicação serial SPI no Arduino
Segundo Monk (2015), a comunicação SPI permite conectar um ou mais 
dispositivos com velocidades rápidas a curtas distâncias. No Arduino Uno, a 
interface serial está disponível nos pinos 11, pino MOSI; 12, pino MISO; 13, 
pino SCK; e 10, pino SS.
Diversos sensores e atuadores se comunicam com o Arduino por meio da 
interface SPI, como o sensor de temperatura digital TC72 da Texas Instruments, 
a DAC MCP4921/4922 da Microchip, o Display OLED SPI, entre outros. O 
TC72 é um sensor digital capaz de ler temperaturas de −55ºC a +125ºC e pode 
ser usado para ler a temperatura continuamente ou ler uma única amostragem. 
A DAC MCP4921/4922 é um conversor digital analógico com grande precisão, 
utilizado em aplicações em que a calibração e a precisão de sinais (como 
temperatura, pressão, humidade, etc.) são necessárias. O display OLED, que 
tem uma opção que comunica via I2C, é um display gráfico que permite exibir 
mensagens diversas (MCROBERTS, 2011). 
9Principais protocolos de comunicação
Segundo Monk (2013), o Arduino possui uma biblioteca específica para 
trabalhar com a comunicação SPI, que pode ser incluída por meio do comando 
#include no início do seu código. Essa biblioteca permite ao Arduino 
se comunicar com dispositivos via interface SPI. Essa biblioteca possui uma 
classe com o mesmo nome, SPI, e disponibiliza métodos/funções e atributos 
para facilitar a configuração e a transmissão de dados entre os dispositivos 
conectados. A seguir estão elencadas as principais funções disponíveis.
 � SPI.begin(): inicializa a comunicação SPI configurando os barramentos 
MOSI, SCK e SS no dispositivo mestre.
 � SPI.beginTransmission(): inicializa a transmissão SPI.
 � SPI.transfer(): transfere os dados através do barramento SPI.
 � SPI.endTransmission(): finaliza a comunicação SPI.
Relação dos componentes com o protocolo de 
comunicação utilizado
Como vimos, existem diversos componentes que utilizam os protocolos de 
comunicação serial UART, I2C e SPI para se comunicarem com o Arduino. 
O Quadro 1 mostra alguns desses componentes e exemplos de aplicações em 
que eles podem ser utilizados.
Componente Comunicação Aplicações
Computador UART � Sistema supervisório para monitora-
mento de uma planta industrial.
 � Chat virtual.
Bluetooth 
HC-05
UART � Robô móvel controlado pelo celular.
 � Domótica (automação industrial).
 � Internet das Coisas.
Quadro 1. Componentes eletrônicos, protocolos de comunicação e aplicações
(Continua)
Principais protocolos de comunicação10
Quadro 1. Componentes eletrônicos, protocolos de comunicação e aplicações
Componente Comunicação Aplicações
MPU6050 I2C � Sistema de detecção de 
movimentação do solo.
 � Controle de videogame (por exemplo, 
Nintendo Wii).
 � Sistema de detecção de quedas de 
idosos.
I2C LCD I2C � Mostrador de mensagens integrado a 
diversos sistemas.
Real Clock 
Time
I2C � Relógio digital
 � Log de dados de eventos.
TC72 SPI � Monitoramento da temperatura de 
um ambiente.
 � Controle de temperatura de um 
sistema de fabricação de cerveja.
DAC 
MCP4921/4922
SPI � Leitores de música.
 � Celulares.
 � Reconstrução de sinais.
Diplay OLED SPI ou I2C � Exibição de gráficos simples.
 � Exibição de mensagens.
(Continuação)
Programação do MPU6050 I2C no Arduino
Segundo Monk (2013), o módulo MPU6050 possui em uma mesma placa um 
acelerômetro e um giroscópio de alta precisão de três eixos cada um. Esse 
modulo contém um conversor analógico digital de 16 bits por canal e permite 
capturar os canais x, y e z ao mesmo tempo. Esse sensor utiliza a comunica-
ção I2C para interligar-se a outros dispositivos, assim você deverá utilizar a 
interface I2C (Pino A4-SDA e A 5-SCL) do Arduino para realizar a ligação 
do circuito, conforme mostra a Figura 6.
11Principais protocolos de comunicação
Figura 6. Circuito entre o Arduino e o módulo MPU6050.
Fonte: Elaborado pelo autor com o Software Fritzing (2019).
O código do sketch mostrado na Figura 7 é utilizado para programar o 
Arduino para estabelecer a comunicação com o módulo MPU6050 e, desse 
modo, ler dados do acelerômetro e giroscópio e exibir o resultado no monitor 
serial da IDE (Monk, 2013).
Principais protocolos de comunicação12Figura 7. Programação para o Arduino se comunicar com o módulo MPU6050.
BANZI, M.; SHILOH, M. Primeiros Passos com o Arduino. 2. ed. São Paulo: Novatec, 2015.
CULKIN, J.; HAGAN, E. Aprenda eletrônica com Arduino: um guia ilustrado de eletrônica 
para iniciantes. São Paulo: Novatec, 2018. (Série Make).
EVANS, M.; NOBLE, J.; HOCHENBAUM, J. Arduino em ação. São Paulo: Novatec, 2013.
13Principais protocolos de comunicação
GEDDES, M. Manual de projetos do Arduino: 25 projetos práticos para começar. São 
Paulo: Novatec, 2017.
MCROBERTS, M. Arduino básico. São Paulo: Novatec, 2011.
MONK, S. Programação com Arduino: começando com sketches. 2. ed. Porto Alegre: 
Bookman, 2017. (Série Tekne).
MONK, S. Programação com Arduino II: passos avançados com sketches. Porto Alegre: 
Bookman, 2015. (Série Tekne).
MONK, S. Projetos com Arduino e Android: use seu smartphone ou tablet para controlar 
o Arduino. Porto Alegre: Bookman, 2013. (Série Tekne).
STEVAN JUNIOR, S. L.; SILVA, R. A. Automação e instrumentação industrial com Arduino: 
teoria e projetos. São Paulo: Saraiva, 2015.
Leituras recomendadas
ARDUINO. Serial. [S. l.], 2019a. Disponível em: https://playground.arduino.cc/Referencia/
Serial. Acesso em: 6 abr. 2019.
ARDUINO. Wire library. [S. l.], 2019b. Disponível em: https://www.arduino.cc/en/reference/
wire. Acesso em: 6 abr. 2019.
MADEIRA, D. Protocolo I2C: comunicação entre Arduinos. In: VIDA DE SILÍCIO. Brasil, 2017. 
Disponível em: https://portal.vidadesilicio.com.br/i2c-comunicacao-entre-arduinos/. 
Acesso em: 6 abr. 2019.
ROBOCORE. Módulo I2C: primeiros passos. Brasil, 2017. Disponível em: https://www.
robocore.net/tutoriais/primeiros-passos-com-modulo-i2c.html. Acesso em: 6 abr. 2019.
Principais protocolos de comunicação14
ROBÓTICA
Fernando Esquírio Torres
Serial
Objetivos de aprendizagem
Ao final deste texto, você deve apresentar os seguintes aprendizados:
 � Reconhecer as características da comunicação serial.
 � Aplicar os comandos para leitura e escrita na serial do Arduino.
 � Relacionar a aplicação da comunicação serial com periféricos para 
Arduino.
Introdução
A comunicação serial é largamente utilizada para transferir informações 
entre o Arduino e periféricos externos. Esse tipo de comunicação permite 
conectar o Arduino a módulos eletrônicos, a outros microcontroladores 
e ao computador para trocar dados sequencialmente. Como toda co-
municação, a comunicação serial possui protocolos que definem regras 
para a transmissão de dados entre os dispositivos. 
Neste capítulo, você vai conhecer as características da comunicação 
serial. Em seguida, vai ver como funcionam os comandos para leitura e 
escrita na serial do Arduino e, por fim, vai conhecer uma aplicação da 
comunicação serial com periféricos Arduino.
Características da comunicação serial
A comunicação serial transmite dados entre dispositivos de forma sequencial 
por meio de um canal de comunicação ou barramento. Esse tipo de comunica-
ção também pode ser chamada de UART (Universal Asynchronous Receiver 
Transmitter) ou de USART (Universal Synchronous Asynchronous Receiver 
Transmitter). 
A UART (Figura 1a) é uma comunicação serial assíncrona, que permite 
configurar parâmetros da transmissão, como, por exemplo, o formato dos 
dados e a taxa de transmissão. A USART (Figura 1b) é uma comunicação serial 
síncrona, que se diferencia da UART por um canal de clock para sincronismo 
da transmissão dos dados. Esse tipo de comunicação utiliza níveis lógicos 
TTL (3,3V ou 5V) e não deve ser conectado diretamente em uma porta serial 
RS232, pois essa porta opera em níveis lógicos de +/− 12V; assim, é necessário 
utilizar um adaptador para evitar o risco de danificar o microcontrolador.
Figura 1. Comunicação serial UART (a) e comunicação serial USART (b).
Serial UART Serial USART
Dispositivo 1 Dispositivo 1Dispositivo 2
TX
TXRX
TX
RX
CLK CLK
RX
Dispositivo 2TX
RX
(a) (b)
O Arduino tem apenas o periférico de comunicação UART, que é respon-
sável por realizar a comunicação serial entre dispositivos e também com o 
computador, e não tem a opção de comunicação com sincronismo. Sendo assim, 
daqui para frente veremos apenas as características da comunicação UART.
Existem três modos de transmissão na comunicação serial (NELSON, 1999): 
 � Simplex: neste modo, somente o dispositivo 1 pode transmitir os dados 
para o dispositivo 2.
 � Half-duplex: neste modo, os dispositivos 1 e 2 podem transmitir os 
dados, porém um de cada vez. 
 � Full-duplex: neste modo, mostrado na Figura 1, existe um canal para 
cada dispositivo realizar a transmissão e, assim, os dispositivos podem 
enviar dados simultaneamente.
A comunicação serial UART possui quatros parâmetros configuráveis: a 
taxa de transmissão, o tamanho/formato dos bits de dados, o bit de paridade 
e os bits de parada (MONK, 2017). 
Serial2
A taxa de transmissão, também conhecida como Baud Rate, é a velocidade 
da comunicação serial. Ela indica o número de bits transmitidos por segundo 
(medida em bps, bits por segundo); por exemplo, 19200 bps significa que são 
transmitidos 19200 bits por segundo. 
O formato dos bits de dados define o tamanho do pacote de informação 
transmitido, que pode ser de 5 a 8 bits. O bit de paridade é um método de 
verificação de erro utilizado na comunicação serial. Existem quartos tipos de 
verificação de paridade: par, ímpar, marcada e espaçada. 
Os bits de parada são utilizados para sinalizar o fim da comunicação para 
um único pacote na transmissão serial. Os valores típicos são 1 e 2 bits. Além 
desses bits, temos o bit de início da transmissão. Desse modo, o overhead 
(Figura 2) da comunicação serial UART pode ter até 12 bits de informação 
(AXELSON, 2007). Esses parâmetros devem ser configurados entre os dis-
positivos conectados para que ambos sigam o mesmo padrão de comunicação.
Figura 2. Overhead da comunicação serial UART.
8 bits de dados
11 bits de informação
8 bits de informação
S D
LSB MSB
D D D D D D D P T
Overhead de dados
Start bit
Bit de paridade
Bit de parada
Least Signi�cant Bit – Bit Menos Signi�cativo
Most Signi�cant Bit — Bit Mais Signi�cativo
Overhead geralmente se refere a qualquer processamento ou armazenamento exces-
sivo, que pode resultar em diminuição do desempenho da máquina.
3Serial
Comandos para leitura e escrita na serial 
do Arduino
Segundo McRoberts (2011), todas as placas Arduino têm pelo menos uma 
porta de comunicação serial ligada aos pinos digitais 0 (receptor, RX) e 1 
(transmissor, TX). Esses são os mesmos pinos ligados ao microcontrolador AT-
mega16U2, responsável por gerenciar a comunicação USB entre o computador 
e o Arduino, que permite a gravação do firmware na placa Arduino. Qualquer 
placa Arduino possui pelo menos um periférico UART full-duplex, ou seja, 
a comunicação é assíncrona e possui canais independentes para transmitir e 
receber dados simultaneamente (MONK, 2014).
De acordo com Geddes (2017), as placas Arduino Uno, Nano, Mini, Leo-
nardo, Micro e Yún têm apenas um periférico de comunicação serial disponível 
nos pinos digitais 0 (Rx) e 1 (Tx), e as placas Mega e Due têm quatro periféricos 
de comunicação serial disponíveis nos pinos mostrados no Quadro 1.
Fonte: Adaptado de Arduino (2019).
Placa Serial padrão Serial 1 Serial 2 Serial 3
Uno, Nano, Mini 0 (RX), 1 (TX)
Mega
0 (RX), 1 (TX) 19 (RX), 
18 (TX)
16 (RX), 
17 (TX)
15 (RX), 
14 (TX)
Leonardo, 
Micro, Yún
0 (RX), 1 (TX)
Due
0 (RX), 1 (TX) 19 (RX), 
18 (TX)
16 (RX), 
17 (TX)
15 (RX), 
14 (TX)
Quadro 1. Periféricos de comunicação serial nas principais placas Arduino
O Arduino possui uma biblioteca padrão que encapsula algumas funcio-
nalidades, facilitando o uso desse tipo de comunicação. Essa biblioteca tem 
uma classe chamada Serial com métodos/funções disponíveis para configurar 
e trabalhar com o periférico de comunicação serial UART. A seguir, você 
vai ver exemplos de como realizar a leitura e a escrita de dados na serial 
do Arduino, além de ver uma descrição das principaisfunções usadas na 
programação da comunicação.
Serial4
Programação
O código do sketch para utilizar a comunicação serial no Arduino é mostrado 
na Figura 3. O programa configura a comunicação serial definindo a taxa de 
transmissão, o tamanho dos bits de dados, o bit de paridade e o bit de parada 
na função setup. Na função loop, ele aguarda o recebimento de um caractere, 
processa esse dado e envia uma resposta ao dispositivo com o qual o Arduino está 
se comunicando, que pode ser um computador, módulo Bluetooth entre outros.
Figura 3. Código para utilizar a comunicação serial no Arduino.
5Serial
No código da Figura 3, o Arduino aguarda receber do computador a letra L, 
seja maiúscula ou minúscula, para ligar o LED interno da placa conectado 
no pino 13 (padrão de todas as placas do Arduino) ou a letra D, seja também 
maiúscula ou minúscula, para desligar o LED interno da placa. Qualquer 
outro valor enviado pelo dispositivo que estabeleceu a conexão será ignorado 
e descartado.
Segundo Javed e Adas (2017), para realizar a comunicação serial entre o 
Arduino e um computador geralmente é utilizado um software hyperterminal, 
que permite trocar dados entre os dispositivos através da serial. A IDE (am-
biente de desenvolvimento) Arduino tem um monitor serial embutido para se 
comunicar com as placas do Arduino. Para abrir o monitor serial, você deve 
conectar a placa Arduino no seu computador e acessá-lo, o que pode ser feito 
de três maneiras possíveis:
 � clicar no menu Ferramentas > Monitor Serial;
 � utilizar a sequência de teclas de atalho Ctrl+Shift+M;
 � clicar no botão Monitor Serial
A Figura 4 exibe os campos disponíveis da janela Monitor Serial. Os 
elementos que merecem ser destacados são: 
 � porta de comunicação do Arduino; 
 � taxa de transferência de bits; 
 � TextBox para enviar dados pela serial; 
 � botão Enviar;
 � área onde é exibida toda mensagem recebida pela serial.
Entendendo o código
De acordo com Arduino (2019), o comando Serial.begin (9600, Serial_8N1) 
define a taxa de transmissão em bit por segundo e os outros parâmetros (bits 
de dados, bit de paridade e bits de parada) da comunicação serial. Os valores 
de taxas disponíveis são 300, 600, 1.200, 2.400, 4.800, 9.600, 14.400, 19.200, 
28.800, 38.400, 57.600 ou 11.520. 
Serial6
Figura 4. Campos da janela Monitor Serial.
Porta serial do Arduino
TextBox para enviar dados pela serial
Botão para enviar os dados pela serial
Taxa de transferência de bits, por exemplo:
9600 bps (9600 bits por segundo)
A macro Serial8N1 configura a comunicação para funcionar com 8 bits de 
dados, sem bit de paridade e um bit de parada. As outras macros disponíveis 
para configurar a comunicação serial são: SERIAL_5N1, SERIAL_6N1, 
SERIAL_7N1, SERIAL_8N1, SERIAL_5N2, SERIAL_6N2, SERIAL_7N2, 
SERIAL_8N2, SERIAL_5E1, SERIAL_6E1, SERIAL_7E1, SERIAL_8E1, 
SERIAL_5E2, SERIAL_6E2, SERIAL_7E2, SERIAL_8E2, SERIAL_5O1, 
SERIAL_6O1, SERIAL_7O1, SERIAL_8O1, SERIAL_5O2, 
SERIAL_6O2, SERIAL_7O2, SERIAL_8O2. Se você utilizar o comando 
Serial.begin (9600), o Arduino assumirá a macro SERIAL_8N1 como padrão.
O comando Serial indica se a porta serial está pronta para comunicar. Ele 
retorna True (comunicação disponível) ou False (comunicação indisponível). 
O comando while(!Serial) trava o código enquanto uma conexão serial não 
estiver disponível. Quando uma comunicação serial é aberta, por exemplo, o 
monitor serial da IDE do Arduino, o código segue a execução normalmente 
(MONK, 2017).
O comando available() retorna o número de bytes (caracteres) disponível 
para ser lido pela porta serial; sintaxe: Serial.available(). 
O comando Serial.read() lê um dado serial (MONK, 2017). Sintaxe: Serial.
read(). Retorno: o primeiro byte no buffer da serial (formato int).
7Serial
O comando Serial.print() possui a seguinte sintaxe:
 � Serial.print(valor)
 � Serial.print(valor, formato)
Imprime um dado na serial, onde (MONK, 2017): 
 � valor: valor a ser impresso; 
 � qualquer dado: string, caractere, variável, etc.; 
 � formato: especifica a base numérica ou o número de casas decimais; 
 � base numérica: DEC (Decimal), BIN (Binário), OCT (Octal) e HEX 
(Hexadecimal); 
 � 0, 1, 2…: zero casas decimais, uma casa decimal, duas casas decimais.
O comando Serial.println() possui a seguinte sintaxe:
 � Serial.println(valor)
 � Serial.println(valor, formato)
Ele imprime um dado na serial e quebra uma linha, onde valor e formato 
têm as mesmas especificações do comando anterior, print (MONK, 2017).
Comunicação serial com periféricos 
para Arduino
A comunicação serial é um recurso eficiente para realizar a troca de dados 
entre dois sistemas computacionais e pode ser utilizada em diversos projetos 
implementados com o Arduino. Ela é muito útil como debug do programa, 
auxiliando o programador a encontrar erros ou trechos de código que não estão 
funcionando da forma esperada. A serial também possibilita enviar dados 
lidos de sensores ligados ao Arduino para o monitor serial do computador ou 
um sistema supervisório.
Entre as diversas aplicações da comunicação serial no Arduino, pode-se 
citar um sistema de GPS usando o Arduino para localização de um objeto 
como, por exemplo, um veículo ou um robô móvel. Esse sistema utiliza o 
módulo GPS GY-NEO6MV2, que se comunica com a placa Arduino utilizando 
comunicação serial. 
Serial8
O circuito da Figura 4 mostra como deve ser realizada a ligação do módulo 
com o Arduino. Observe a necessidade do um divisor de tensão no pino de RX 
do módulo GPS, que é necessário para evitar danificar o pino de recepção do 
módulo. Lembre-se de que é necessário inverter os pinos de TX e RX, assim, 
o pino transmissor (TX) do Arduino deve ser conectado ao pino receptor (RX) 
do módulo GPS e o pino receptor (RX) do Arduino deve ser conectado ao 
pino transmissor (TX) do módulo GPS (MONK, 2015).
Figura 5. Circuito do GPS GY-NEO6MV2.
Legenda dos �os:
GND: Preto
VCC: Vermelho
RX: Amarelo
TX: Verde
9Serial
Antes de iniciar a programação do Arduino, você precisa fazer o download da biblioteca 
TinyGPS.h, que é necessária para a comunicação com o módulo GPS. A partir do link 
a seguir, você pode fazer o download.
https://qrgo.page.link/HMKe
Após realizar o download da biblioteca, você terá que instalá-la na IDE do Arduino. 
Caso nunca tenha feito isso, no link a seguir você encontra um tutorial bastante útil 
para ajudar na instalação.
https://qrgo.page.link/9bXx
O código do sketch para programar o Arduino e ler dados do módulo 
GPS através da comunicação serial é mostrado na Figura 6. Nesse programa 
é necessário usar uma biblioteca extra, a SoftwareSerial.h, que é necessária 
para emular via software outra porta de comunicação serial nos pinos 3 (RX) 
e 4 (TX) e, desse modo, evitar conflito com a USB ligada ao computador, por 
onde serão transmitidos os dados coletados do sensor GPS.
Você pode armazenar os dados coletados do GPS em um cartão de memória 
e depois desenhar o caminho percorrido no Google Maps, por exemplo. 
No link a seguir, você encontra um artigo que ensina, detalhadamente, como imple-
mentar o projeto que acabamos de descrever.
https://qrgo.page.link/1R6b
Serial10
Figura 6. Código do GPS GY-NEO6MV2.
11Serial
ARDUINO. [S. l.], 2019. Disponível em: https://www.arduino.cc. Acesso em: 06 abr. 2019.
AXELSON, J. Serial port complete: COM ports, USB virtual COM ports, and ports for 
embedded systems (complete guides series). 2. ed. Chicago: Lakeview Research, 2007.
GEDDES, M. Manual de projetos do Arduino: 25 projetos práticos para começar. São 
Paulo: Novatec, 2017.
JAVED, A.; ADAS, C. J. Criando projetos com Arduino para a internet das coisas: experi-
mentos com aplicações do mundo real: um guia para o entusiasta de Arduino ávido 
por aprender. São Paulo: Novatec, 2017.
MCROBERTS, M. Arduino básico. São Paulo: Novatec, 2011.
MONK, S. 30 projetos com Arduino. 2. ed. Porto Alegre: Bookman, 2014. (Série Tekne).
MONK, S. Programação com Arduino: começando com sketches. 2. ed. PortoAlegre: 
Bookman, 2017. (Série Tekne).
MONK, S. Programação com Arduino II: passos avançados com sketches. Porto Alegre: 
Bookman, 2015. (Série Tekne).
NELSON, M. Serial communications: developer's guide. 2. ed. New York: Wiley, 1999.
Leituras recomendadas
ARDUINO. Serial. . [S. l.], 2019. Disponível em: https://www.arduino.cc/reference/en/
language/functions/communication/serial/. Acesso em: 06 abr. 2019.
ROBOCORE. Bluetooth HC-05 com Arduino: comunicando com PC. Brasil, 2016. Disponível 
em: https://www.robocore.net/tutoriais/bluetooth-hc-05-com-arduino-comunicando-
-com-pc.html. Acesso em: 06 abr. 2019.
SPARKFUN. Serial communication. Colorado, [2019?]. Disponível em: https://learn.spa-
rkfun.com/tutorials/serial-communication/all. Acesso em: 06 abr. 2019.
Serial12
Robótica
Fernando Esquírio Torres
Arduino e Bluetooth
Objetivos de aprendizagem
Ao final deste texto, você deve apresentar os seguintes aprendizados:
 � Caracterizar a comunicação via Bluetooth.
 � Reconhecer os componentes que possibilitam a comunicação do 
Arduino via Bluetooth.
 � Analisar as aplicações da Bluetooth com Arduino.
Introdução
O módulo Bluetooth ligado ao Arduino tem sido bastante utilizado em 
projetos que têm a necessidade da troca de dados ou informações a 
distância, sem precisar utilizar cabos ou fios para realizar essa conexão. 
Conectar o Bluetooth na plataforma microcontrolada Arduino permite 
controlar dispositivos a distância através de celulares, tablets ou notebooks. 
Atualmente, utilizamos diversos aparelhos, portáteis ou não, que têm o 
padrão de comunicação Bluetooth embarcado, o que torna interessante 
você aprender a conectar o Bluetooth e o Arduino a esses aparelhos e 
controlar os seus projetos remotamente.
Neste capítulo, você vai estudar as características da comunicação 
Bluetooth, além de ver alguns componentes e dispositivos que propi-
ciam a comunicação do Arduino com outros dispositivos por meio do 
Bluetooth. Por fim, vai ver alguns projetos que utilizam o Bluetooth e o 
Arduino.
Comunicação via Bluetooth
O Bluetooth, segundo Harte (2009), é um padrão de comunicação sem fio 
(wireless) desenvolvido para fornecer conexão entre dispositivos como tele-
fones celulares, tablets, notebooks, impressoras, câmeras digitais, consoles 
de videogames, etc. O padrão, atualmente utilizado mundialmente, foi criado 
no final dos anos 1990, pelo grupo Bluetooth SIG (Bluetooth Special Interest 
Group) formado pelas empresas Ericson, Intel, IBM, Toshiba e Nokia. O 
Bluetooth é uma especificação para personal area network (PAN), também 
conhecido como IEEE 802.15.1 (HEYDON, 2012). 
O Bluetooth foi desenvolvido para ser uma solução wireless de especifi-
cação aberta, capaz de transmitir voz e dados por pequenas distâncias (de 1 a 
100 metros). Assim, ele elimina a necessidade de cabos e fios para conectar 
os dispositivos fixos e/ou móveis, transmitindo as informações através de 
redes ad hoc e fornecendo a sincronização automática entre os equipamentos 
pareados (HARTE, 2009).
A conectividade dos equipamentos, que são embarcados com a tecnologia 
Bluetooth, é possível por meio de um chip que funciona como um rádio trans-
ceptor operando na frequência de 2.4 GHz, que opera na faixa ISM (industrial, 
scientific, medical) em sua camada física de rádio (HUANG, 2007). A classi-
ficação dos dispositivos Bluetooth é feita em classes, de acordo com o alcance 
e a potência máxima permitida, conforme você pode visualizar no Quadro 1. 
Fonte: Adaptado de HC… (2010).
Potência máxima permitida Alcance
Classe 1 100 mW (20 dBm) até 100 metros
Classe 2 2.5 mW (4 dBm) até 10 metros
Classe 3 1 mW (0 dBm) aprox. 1 metro
Quadro 1. Características das classes do padrão Bluetooth
Arduino e Bluetooth2
Há também outras classes, mas são muito raras, por isso não veremos 
elas aqui. 
Todas as especificações e características do padrão Bluetooth são regu-
lamentadas pelo grupo Bluetooth SIG, que, em 2018, contava com mais de 
30.000 empresas associadas por todo o mundo. Uma especificação importante 
regulada pelo grupo é o controle de versão/modelos do Bluetooth. Até 2019, há 
11 versões disponíveis para o padrão Bluetooth (IEEE..., 2002). O Quadro 2 
mostra algumas características das principais versões.
Versão Descrição
Bluetooth 
1.0 e 1.0B
As primeiras versões oficiais apresentaram muitos problemas, 
como velocidade baixa, pouca segurança, interoperabilidade 
entre equipamentos de fabricantes diferentes e 
impossibilidade de manter o anonimato nas transmissões.
Bluetooth 1.1 Lançada em 2002, esta versão apresentou a 
correção de muitos problemas apresentados 
na versão 1.0B. Incluiu suporte a canais não 
encriptados e indicador de sinal recebido (RSSI).
Bluetooth 1.2 Nesta versão foram implementadas algumas melhorias, 
entre elas busca e conexão mais rápida entre os 
dispositivos, pulo de frequência adaptável, resistência 
na frequência de rádio para evitar interferências, 
transmissões de dados mais rápidas (até 1 Mbps) e 
aumento da qualidade das conexões de voz e áudio.
Bluetooth 
2.0 + EDR
Introduziu maior velocidade de transmissão 
dos dados (até 3 Mbps), devido à inclusão da 
característica enhanced data rate (EDR). 
Bluetooth 
2.1 + EDR
Adotada em 2007, trouxe melhorias no pareamento 
dos dispositivos Bluetooth, no desempenho 
(inclusão do e BER, bit error rate) e na segurança da 
transmissão dos dados e no consumo de bateria.
Bluetooth 
3.0 + HS
Adotada em 2009, teve como característica importante a 
velocidade de transferência de dados em high speed (HS) 
com taxas de até 24 Mbps, além de a transmissão de dados 
ser realizada por meio do protocolo 802.11 da IEEE.
Quadro 2. Versões do padrão Bluetooth
(Continua)
3Arduino e Bluetooth
Fonte: Adaptado de IEEE... (2002).
Quadro 2. Versões do padrão Bluetooth
Versão Descrição
Bluetooth 4.0 Adotada em 2010, apresentou três protocolos: o 
Bluetooth clássico, o Bluetooth de alta velocidade 
e o Bluetooth de baixo consumo.
Bluetooth 4.1 Anunciada em 2013, trouxe uma atualização 
de software que adicionou novos recursos 
para melhorar a usabilidade do usuário.
Bluetooth 4.2 Lançado em 2014, introduziu características de Internet 
das Coisas (IOT, Internet of Things), como baixo consumo de 
energia, conexão segura, extensão do pacote de dados e 
inclusão da versão 6 do Internet Protocol Support Profile (IPSP).
Bluetooth 5.0 Adotada em 2016, esta versão trouxe a inclusão de novas 
características focadas na tecnologia emergente da IOT. 
Bluetooth 5.1 Adotada em 2019, trouxe melhorias em diversas áreas, como 
Ângulo de chegada (AoA) e Ângulo de partida (AoD), que são 
usados para a localização e o rastreamento de dispositivos; 
suporte a HCI para chaves de debug em conexões 
seguras; hierarquia baseada em malha; entre outras.
(Continuação)
De acordo com Heydon (2012), a comunicação entre equipamentos Blue-
tooth é bidirecional, podendo ser ponto a ponto ou ponto a multiponto. No 
primeiro tipo, a conexão é estabelecida entre dois dispositivos, enquanto, no 
segundo, pode haver até 8 dispositivos. A comunicação é realizada por meio 
do compartilhamento do canal físico, denominado piconet. Nesse canal, um 
dispositivo tem o papel de mestre e os outros de escravos, conforme você pode 
visualizar no esquema da Figura 1. Ainda segundo Heydon (2012), uma vez 
que os dispositivos foram previamente pareados, eles podem se comunicar 
sempre que um estiver ao alcance do outro, pois o sincronismo da reconexão 
é realizado automaticamente.
Arduino e Bluetooth4
Figura 1. Piconet com um dispositivo mestre e quatro escravos.
Mestre
Escravo
A comunicação Bluetooth funciona com uma arquitetura de camadas 
(Figura 2), que é dividida em enlace lógico e comunicação lógica. Ela também 
tem vários protocolos, que permitem a transmissão e o controle do pacote 
de dados (HUANG, 2007). Entre os protocolos, os mais importantes sãoos 
seguintes. 
 � L2CAP: é responsável pelo fornecimento de serviços orientados e não 
orientados à conexãopara as camadas superiores, além de permitir aos 
protocolos de maior nível transmitir e receber pacotes de dados L2CAP 
acima dos 64 KB Bluetooth.
 � BNP: pacote baseado no EthernetII/DIX Bluetooth, que define um 
formato de pacotes comum aos dispositivos.
5Arduino e Bluetooth
Figura 2. Estrutura de camadas da comunicação Bluetooth.
Aplicações da rede
TCP/UDP
IP
BNEP SDP
L2CAP
LMP
Banda Base Bluetooth
Bluetooth Radio
Componentes eletrônicos para a troca de dados 
do Arduino via Bluetooth 
O padrão Bluetooth é uma das comunicações sem fio mais utilizadas para a 
transmissão e a recepção de dados com o Arduino (McROBERTS, 2011). Isso se 
deve à simplicidade de configuração e programação e à facilidade de encontrar 
módulos para comprar no mercado. Os módulos mais populares, atualmente, 
são os da série HC, particularmente o HC-05 e o HC-06. A diferença mais 
importante entre esses dois modelos é que o HC-05 pode exercer o papel de 
mestre ou escravo em uma conexão, enquanto o HC-06, apenas o papel de 
escravo. Por esse motivo, vamos estudar em mais detalhes o módulo HC-05.
Módulo Bluetooth HC-05
O Bluetooth HC-05 (Figura 3) utiliza o protocolo serial Bluetooth (Bluetooth 
SPP, Serial Port Protocol), que é composto de uma interface serial e de um 
adaptador Bluetooth em um único módulo (HC..., 2010). O HC-05 fornece 
uma interface simples para a conexão com o microcontrolador e uma fácil 
Arduino e Bluetooth6
configuração do dispositivo, além de ser uma solução barata para realizar a 
troca de informações/dados sem fio com o microcontrolador no seu projeto. 
Todo componente eletrônico tem especificações técnicas e elétricas pró-
prias, então, é importante conhecer essas características do dispositivo para 
utilizá-lo de forma correta e obter funcionamento adequado do mesmo (HC..., 
2010). O Quadro 3 mostra algumas dessas características técnicas e elétricas 
do módulo Bluetooth HC-05.
Figura 3. Módulo HC-05.
Características Descrição
Protocolo Bluetooth 2.0 + EDR
Frequência 2,4 GHz Banda ISM
Modulação GFSK
Emissão de energiae HEX (Hexadecimal); 0, 1, 2…: zeros, casas 
decimais, uma casa decimal, duas casas decimais (MARGOLIS, 2012; BANZI; 
SHILOH, 2015).
O comando Serial.println( ) tem a seguinte sintaxe:
 � Serial.println(valor);
 � Serial.println(valor, formato).
Esse comando imprime um dado na serial e quebra uma linha, onde valor 
e formato têm as mesmas especificações do comando anterior print (MAR-
GOLIS, 2012; BANZI; SHILOH, 2015).
Arduino e Bluetooth12
Conexão entre o Arduino e o celular
Para conectar o circuito Bluetooth ligado no Arduino ao seu celular/tablet 
com sistema operacional Android (O sistema iOS possui algumas restrições 
de conexão e troca de dados via Bluetooth, por será abordado apenas o sis-
tema Android nesse material), primeiramente você deverá parear o módulo 
Bluetooth ao seu telefone (MONK, 2014). Para isso, siga os passos a seguir.
1. Ligue a placa Arduino no seu computador para energizá-la e ligar o 
módulo Bluetooth.
2. Habilite a conexão Bluetooth do seu aparelho celular.
3. Aguarde o celular procurar por dispositivos Bluetooth disponíveis nas 
proximidades. Caso o celular atualize a lista, faça a busca manualmente.
4. Procure o dispositivo com o nome HC-05 ou linvor (vai depender do 
modelo que você tem) e escolha “conectar” para fazer o pareamento.
5. No campo senha digite 1234 (alguns podem vir de fábrica com o código 
0000, mas é muito raro de acontecer).
6. Pronto, seu celular já está pareado com o circuito Bluetooth.
O sistema iOS tem algumas restrições de conexão e troca de dados via Bluetooth, por 
isso é abordado apenas o sistema Android neste material.
É necessário fazer esse pareamento entre o celular/tablet e o módulo Blue-
tooth apenas uma vez, mas caso você remova o pareamento manualmente, 
terá que refazer os passos novamente (MONK, 2014). Agora, para enviar e 
receber dados do seu Celular para o Arduino e vice-versa, você precisará 
seguir os passos a seguir.
1. Faça o download do aplicativo S2 Bluetooth Terminal Free na loja de 
aplicativos da Google. 
2. Clique no botão “conectar” e selecione o dispositivo Bluetooth que foi 
pareado anteriormente (HC-05 ou linvor).
13Arduino e Bluetooth
3. Pronto, você já está pronto para receber e enviar mensagens para o 
seu Arduino.
4. Teste enviar o valor L e depois D.
Aplicações da comunicação Bluetooth 
com Arduino
A comunicação Bluetooth utilizando a plataforma microcontrolada Arduino 
pode ser aplicada em diversos projetos que necessitam de uma comunicação 
sem fio em distâncias pequenas. Na internet, você encontra diversos projetos 
que utilizam a comunicação Bluetooth e o Arduino para fazer medições de 
sensores, acionamento de atuadores, controle de dispositivos remotamente, 
entre outros. Vamos analisar o projeto de Domótica que pode desenvolvido 
utilizando essa tecnologia de comunicação wireless.
Automação residencial (domótica)
De acordo com Monk (2014), a automação residencial, conhecida também 
como domótica, pode ser utilizada para controlar remotamente diversos 
equipamentos na sua casa, como as tomadas para ligar e desligar aparelhos, 
o sistema de climatização do ambiente e, até mesmo, a fechadura da sua porta 
da frente ou do seu quarto.
As placas do Arduino podem fazer esse tipo de automação de uma resi-
dência, esteja conectado ou não a um computador. Às vezes, a presença de um 
computador é necessária no caso de você querer implementar uma interface 
gráfica mais elaborada para gerenciar os equipamentos automatizados, mas, 
se quiser apenas controlar remotamente o acionamento dos dispositivos, um 
aplicativo no celular ou tablet é mais do que suficiente (MONK, 2014).
Suponha que você queira acionar uma lâmpada na sua casa. Você precisará, 
além da placa Arduino, alguns componentes eletrônicos como, por exemplo, o 
módulo Bluetooth (para a conexão com o celular ou tablet) e um módulo relé 
5V (para o acionamento da lâmpada ligada na energia elétrica da sua casa). 
O circuito é mostrado na Figura 6. 
O relé de 5V tem a função de deixar a energia da tomada fluir ou não, 
ligando ou desligado a lâmpada. O código para o circuito da Figura 6 é o 
mesmo mostrado na Figura 5.
Arduino e Bluetooth14
ROBÓTICA
Flávio Luiz Puhl Junior 
Sensores para 
projetos Arduino
Objetivos de aprendizagem
Ao final deste texto, você deve apresentar os seguintes aprendizados:
 � Caracterizar os sensores mais utilizados em projetos com Arduino.
 � Selecionar os sensores segundo a aplicação.
 � Integrar os principais sensores utilizados em projetos com Arduino.
Introdução
Existe uma área muito específica de atuação chamada de instrumentação. 
Essa área trata de adaptar os fenômenos físicos presentes no meio ambiente 
para os meios eletrônicos, de forma que esses fenômenos físicos possam 
ser interpretados pelo microcontrolador em sua linguagem de máquina.
A instrumentação está intrinsicamente ligada aos sensores e esses, por 
sua vez, têm como função fazer a adequação do sinal para ser utilizado 
em projetos. Especificamente no Arduino, mas podendo ser estendido 
para qualquer outro sistema eletrônico, existem os recursos chamados 
de shields, cujo objetivo é adicionar funcionalidades à placa de desen-
volvimento de forma prática e rápida.
Neste capítulo, você vai aprender sobre os sensores mais comuns 
para aplicações e ideias dos dia a dia. Vai identificar o tipo de sensor 
adequado para cada necessidade e conhecer na prática a integração 
de alguns sensores. 
Dispositivos mais utilizados para medição
Os sensores, como o próprio nome sugere, são os recursos que permitem que 
um dispositivo entenda o meio no qual está inserido e interaja adequadamente, 
de acordo com o objetivo para o qual foi elaborado. Cada projeto e/ou objetivo 
fará uso de uma gama de diferente de sensores. 
Existem métodos de sensoriamento que se destacam dos demais por serem 
de aplicação mais universal. A seguir, vamos ver alguns dos sensores mais 
utilizados e suas características (SANTOS, R.; SANTOS, S., 2018).
Sensor de temperatura e umidade
Os sensores de temperatura e umidade DHT11 e DHT22 são comumente 
utilizados devido à sua versatilidade e custo acessível. Esses sensores têm 
um microcontrolador incorporado que faz a conversão analógico-digital dos 
valores de temperatura e umidade e envia esses valores para o Arduino via 
comunicação digital. Para utilizá-los basta incorporar ao seu código a biblioteca 
DHT11 e seguir os exemplos de uso. A diferença entre os dois é que o DHT22 
tem uma faixa de medição de umidade maior e melhor acuracidade. 
Veja na Figura 1 os sensores DHT11 e DHT22 e um exemplo de ligação 
do DHT11 ao Arduino.
Você pode conseguir a biblioteca DHT11 acessando o link a seguir.
https://qrgo.page.link/CntyS
Figura 1. (a) DHT11 e DHT22; (b) exemplo de ligação.
Fonte: Santos, R. e Santos, S. (2018).
(a) (b)
Sensores para projetos Arduino2
Sensor de temperatura DS18B20
Existem muitas maneiras de fazer a medição de temperatura, porém este é 
um sensor muito utilizado devido à sua versatilidade. Ele tem dois formatos: 
um é parecido com um transistor (TO-92) e outro é à prova d’água, como 
mostra a Figura 2. 
A maioria dos sensores de temperatura é analógica e fornece um valor 
de tensão ou corrente que deve ser interpretado pelo microcontrolador. O 
DS18B20, no entanto, já faz essa interpretação: ele lê a temperatura, inter-
preta a informação e envia o valor de temperatura em graus Celsius para o 
microcontrolador, utilizando um barramento de um fio (um protocolo de 
comunicação 1-wire).
Os sensores DS18B20 têm um endereço serial exclusivo de 64 bits. Isso 
significa que é possível instalar vários sensores em um mesmo barramento, 
ocupando só uma porta do microcontrolador, e obter os valores de temperatura 
de cada sensor.
Figura 2. (a) DS18B20 em suas apresentações; (b) exemplo de ligação.
Fonte: Santos, R. e Santos, S. (2018).
(a) (b)
Sensor de distância por ultrassom HC-SR04
O HC-SR04 é utilizado para especificar a distância entre o sensor e um obs-
táculo. Para fazerisso, ele emite ondas sonoras de alta frequência (acima 
de 40kHz) e aguarda o retorno, que ocorrerá quando a onda encontrar um 
obstáculo. O tempo de envio e retorno da onda sonora é utilizado para calcular 
a distância entre o sensor e o obstáculo — algo muito parecido com o sistema 
de localização dos morcegos.
3Sensores para projetos Arduino
Os sensores ultrassônicos podem medir variáveis como enchimento e 
altura sem ter que entrar em contato com os elementos do meio. Além disso, 
sua operação não é prejudicada por transparência, poeira, sujeira ou vapores 
e gases presentes no ambiente. Se o obstáculo é capaz de refletir as ondas 
sonoras então é possível utilizar um sensor ultrassônico.
Veja na Figura 3 um HC-SR04 e um exemplo de ligação ao Arduino.
Figura 3. (a) HC-SR04; (b) exemplo de ligação.
Fonte: Santos, R. e Santos, S. (2018). 
(a) (b)
Sensor de umidade do solo YL-69 ou HL-69
Os sensores de umidade do solo foram especialmente desenvolvidos para 
o monitoramento de sistemas de irrigação ou plantações. Acompanhe um 
exemplo desse tipo de sensor na Figura 4.
Esses sensores têm um potenciômetro embutido para ajuste de sensibilidade 
da saída, um LED para indicação de energia e um LED que indica a saída 
digital. A tensão da saída do sensor muda de acordo com a quantidade de 
água no solo. Quando o solo está úmido, a tensão de saída diminui e, quando 
está seco, a tensão de saída aumenta. Têm duas saídas: uma digital e outra 
analógica. A saída digital apenas indica se o solo está úmido ou seco, enquanto 
a saída analógica indica a quantidade de umidade do solo.
Sensores para projetos Arduino4
Figura 4. (a) Sensor de umidade; (b) exemplo de ligação.
Fonte: Santos, R. e Santos, S. (2018).
(a) (b)
Microfone
O sensor de microfone disponível para uso no Arduino apenas detecta a in-
tensidade sonora do ruído ao qual é exposto. Nesse tipo de aplicação o sensor 
não consegue identificar palavras ou frequências específicas (por exemplo, 
um apito ou uma música), devido às características de processamento do 
Arduino e pelo próprio princípio de funcionamento do sensor. Ele tem uma 
saída analógica, que indica o nível de pressão sonora, e um potenciômetro, 
para ajuste da sensibilidade. Veja um exemplo de microfone, bem como de 
ligação ao Arduino, na Figura 5.
Figura 5. (a) Microfone; (b) exemplo de ligação.
Fonte: Santos, R. e Santos, S. (2018).
(a) (b)
5Sensores para projetos Arduino
Estes são alguns dos sensores mais comuns utilizados no Arduino. Com eles 
é possível implementar uma gama extensa de projetos para as mais diversas 
finalidades. Mas eles não são os únicos disponíveis: ainda há muitos outros 
tipos de sensores, como, por exemplo, sensor de luminosidade, de tensão, 
de corrente elétrica, sensores de força e até mesmo sensores que indicam a 
potência do sinal de ondas de rádio. Basta identificar a necessidade do seu 
projeto e procurar o recurso que melhor atenda à sua necessidade.
Fenômenos físicos e seus sensores
Os sensores funcionam, basicamente, convertendo um fenômeno físico em um 
sinal elétrico que possa ser interpretado pelo circuito eletrônico e/ou micro-
controlador. Para melhor entender essa relação, devemos primeiro conhecer 
o Sistema Internacional de Unidades.
O Sistema Internacional de Unidades (SI) estabelece uma unidade para 
cada grandeza, sendo o sistema de medição mais utilizado no mundo. Suas 
padronizações são definidas por representantes do mundo inteiro em encontros 
periódicos chamados de Conferência Geral de Pesos e Medidas (CGPM). Na 
14ª CGPM, realizada em 1971, foram selecionadas as unidades básicas do SI 
e as grandezas fundamentais a que correspondem (SILVA, [2019?]): 
 � metro — comprimento;
 � quilograma — massa;
 � segundo — tempo;
 � ampere — intensidade de corrente elétrica;
 � kelvin — temperatura;
 � mol — quantidade de matéria;
 � candela —intensidade luminosa.
Agora, imagine que você quer fazer a medição de um peso na balança que 
tem em casa. Para o valor do peso ser indicado no pequeno display da balança, 
existe uma sequência de transformações que devem ser realizadas, conforme 
você pode ver na Figura 6.
Sensores para projetos Arduino6
Fi
gu
ra
 6
. S
eq
uê
nc
ia
 d
e 
ev
en
to
s p
ar
a 
a 
m
ed
iç
ão
 d
e 
pe
so
.
O
 p
es
o 
é 
co
lo
ca
do
 
so
br
e 
a 
ba
la
nç
a.
O
 p
es
o 
ge
ra
 u
m
 e
sf
or
ço
 so
br
e 
a 
ba
se
 m
et
ál
ic
a.
 
U
m
 p
eq
ue
no
 re
sis
to
r 
su
pe
r�
ci
al
, c
ha
m
ad
o 
de
 
st
ra
in
-g
au
ge
, 
m
od
i�
ca
 su
a 
re
sis
tê
nc
ia
.
A 
al
te
ra
çã
o 
no
 v
al
or
 d
a 
re
sis
tê
nc
ia
 a
lte
ra
 o
 
va
lo
r d
e 
te
ns
ão
, q
ue
 é
 
co
nv
er
tid
o 
pe
lo
 
co
nv
er
so
r 
an
al
óg
ic
o-
di
gi
ta
l d
o 
m
ic
ro
co
nt
ro
la
do
r.
M
ic
ro
co
nt
ro
la
do
r r
ec
eb
e 
a 
in
fo
rm
aç
ão
 d
e 
te
ns
ão
ca
lc
ul
a 
o 
va
lo
r d
o 
pe
so
 d
e
ac
or
do
 c
om
 su
a
re
fe
rê
nc
ia
 fí
sic
a 
e 
m
os
tr
a
no
 d
isp
la
y.
7Sensores para projetos Arduino
Então, para obtermos o resultado do peso na balança, o processo começa 
pela deformação mecânica de um elemento metálico que está instrumentado 
com um medidor de deformação chamado de strain-gauge. Essa deformação 
causa uma alteração na resistência do medidor, que, por sua vez, causa uma 
variação proporcional de tensão na entrada analógica do microcontrolador. O 
microcontrolador faz a aquisição desse valor e o multiplica por uma constante, 
para adequar o valor à referência de peso. Depois, exibe o valor no display, 
que visualizamos e interpretamos.
Esse mesmo processo pode ser utilizado para muitas outras medições, 
como a medição de torque, a medição de temperatura pela deformação tér-
mica de algum material, a medição de volume, etc. Assim, se você entender 
alguns processos físicos/mecânicos, será capaz de fazer a medição de qualquer 
fenômeno físico.
Seleção do sensor conforme aplicação
Existem muitos tipos de sensores disponíveis que permitem a interação com 
o nosso meio, e pode ser difícil decidir qual deles é melhor para usar em 
determinado projeto. Reconhecer a real necessidade e a aplicação facilita na 
decisão pelo método que tenha a implementação mais simples.
Botões e interruptores
A maneira mais fácil de proporcionar interação com um dispositivo eletrônico 
é usando um botão ou um interruptor. Um interruptor geralmente possui 
uma trava, que permite ao usuário clicar para frente e para trás e mantê-lo na 
posição. Já um botão assume um estado quando pressionado e retorna ao seu 
estado original quando a interação é interrompida. 
Esse tipo de sensor faz uso das entradas digitais do microcontrolador. Ele 
tem a vantagem de ser um tipo de sensor barato, confiável e de fácil imple-
mentação. Seu uso não se restringe a botões para interação com o usuário 
— também pode ser usado para verificar portas abertas, limites de posição, 
presença de objetos etc. 
Para um projeto que requeira muitas entradas digitais, chaves e pinos podem 
ser uma ótima solução. É relativamente fácil criar seus próprios botões com 
material condutor, se você quiser personalizá-los em um dispositivo ou não 
deseja que botões fiquem visíveis. Você pode ler os botões e/ou interruptores 
nos pinos digitais no Arduino colocando os interruptores em paralelo. 
Sensores para projetos Arduino8
A Figura 7 mostra alguns exemplos de botões e interruptores.
Figura 7. (a) Botões; (b) interruptores; (c) chaves fim de curso.
Fonte: JCL Garcia/Shutterstock.com; KevinLinXC/Shutterstock.com e Esham (2007).
(a)
(b)
(c)
Sensores infravermelhos
A radiação infravermelha é uma forma de luz com ondas mais longas e que 
não são visíveis para o olho humano. 
Os sensores infravermelhos detectam a radiação infravermelha de duas 
maneiras: passivamente ou ativamente. Um sensor passivo consiste em apenas 
um detector de infravermelho. Ele detecta a radiação emitida pelos objetos 
e é útil para detectar a diferença entre objetos com diferentes temperaturas,como um humano entrando no quintal de alguém. Um sensor ativo consiste 
em um emissor de infravermelho e em um detector de infravermelho. A radia-
ção emitida de um sensor ativo é refletida de qualquer objeto e, em seguida, 
detectada pelo detector. Os sensores ativos são bons para verificar quando 
um objeto passa entre o emissor e o receptor, identificando a presença de um 
obstáculo, por exemplo.
9Sensores para projetos Arduino
Uma aplicação desse tipo de sensor muito utilizada com o Arduino é 
em encoders de motores. Nesse caso, o motor possui um disco com várias 
“janelas”; de um lado está o emissor e do outro está o receptor. Quando o 
disco gira com o eixo do motor, existe a indicação de passagem da radiação 
ou não. Com esse tipo de sinal podemos calcular precisamente a velocidade 
de rotação do motor, estimar a posição relativa etc.
Acompanhe na Figura 8 dois exemplos de sensor infravermelho.
Figura 8. Sensores infravermelhos.
Fonte: Lexa Adams/Shutterstock.com.
(a) (b)
Fotorresistores ou Light Dependent Resistors (LDRs)
Fotodectores são sensores elétricos que medem as mudanças na luz. Portanto, 
se uma pessoa altera a quantidade de luz que chega ao sensor, o sinal produzido 
pelo fotodetector pode ser usado para controlar outro componente elétrico 
ou, simplesmente, indicar a quantidade de incidência de luz em determinado 
ambiente.
Fotorresistores, fotodiodos e fototransistores são exemplos de foto-
detectores. A grande diferença entre eles é que os fotorresistores têm um 
tempo de resposta muito mais lento às mudanças de luz do que fotodiodos e 
fotorresistores. A sensibilidade de cada um desses sensores pode ser ajustada 
alterando os resistores no circuito. Por exemplo, se você colocar uma resistência 
menor em paralelo com um fotorresistor, poderá medir mudanças de fontes 
de luz muito brilhantes. Se usar um resistor maior, poderá medir as alterações 
em situações de pouca luz. A Figura 9 mostra um exemplo de fotorresistor.
Para usar um fotorresistor, conecte-o em série a outro resistor. O sinal é lido 
no nó entre esses componentes. Conecte um fio desse nó a um pino analógico.
Sensores para projetos Arduino10
Figura 9. Fotorresistor.
Fonte: Awe Inspiring Images/Shutterstock.com.
Sensor ultrassônico
Os sensores ultrassônicos são conceitualmente semelhantes aos sensores 
infravermelhos, mas emitem e recebem ondas ultrassônicas. Um pino de 
gatilho envia um sinal para produzir um pulso ultrassônico, e o pino de eco 
gera um sinal, dependendo da onda ultrassônica que é detectada pelo receptor. 
Se algo passa pelo sensor, as ondas ultrassônicas são refletidas pelo objeto e 
detectadas pelo receptor ultrassônico.
O tempo transcorrido entre o momento em que o pulso ultrassônico é 
produzido e o momento em que é detectado depende da distância que o objeto 
está do sensor. Portanto, um dos principais benefícios dos sensores ultrassô-
nicos obter informações de distância sobre objetos próximos. Veja na Figura 
10 uma ilustração de como isso ocorre.
Sensores ultrassônicos fornecem detecção sem contato para distâncias 
que variam de 2 cm a 500 cm. Eles também têm um ângulo de feixe estreito 
(em torno de 10° a 15°), para que sua detecção seja sensível a apenas uma 
pequena área.
Para usar o sensor ultrassônico, os pinos de eco e gatilho são conectados 
a dois pinos no Arduino. Em geral estes sensores exigem tempos de amos-
tragem longos e médias dos valores adquiridos, o que pode reduzir a taxa de 
atualização do dispositivo. Além disso, a quantidade de tempo por leitura no 
sensor depende do tempo de eco.
11Sensores para projetos Arduino
Figura 10. Sensor ultrassônico.
Fonte: Adaptada de Random Nerd Tutorials (2019).
Transmissor
Receptor
Onda re�etida (eco)
Distância
Onda original
Objeto
Acelerômetros
Os acelerômetros medem forças de aceleração. Essas forças podem ser es-
táticas, como a força de gravidade constante, ou dinâmicas, como aquelas 
causadas pelo movimento do dispositivo.
Há mais de uma maneira de construir um acelerômetro, mas todas incluem 
estruturas micromecânicas que se movem sob força e, assim, causam uma 
alteração nas propriedades elétricas do dispositivo. Muitos acelerômetros vêm 
com um minúsculo cristal piezoelétrico em seu interior, que, quando estressado 
por movimentos súbitos, produzirá uma tensão mensurável. Outros vêm com 
estruturas em miniatura que coletivamente carregam uma capacitância, que 
muda conforme uma dessas estruturas se move em relação a outra.
Geralmente, a maioria dos acelerômetros mede forças ao longo de três eixos 
(X, Y e Z) e pode variar em sensibilidade e oscilações máximas. A conexão 
do acelerômetro pode ser feita nas entradas analógicas do Arduino; alguns 
modelos fazem a transferência dos dados por meio de comunicação serial.
Sensores para projetos Arduino12
Esse tipo de sensor é capaz de informar a inclinação do equipamento e de 
identificar se o direcionamos para cima, para baixo, para a esquerda ou direita, 
podendo ser aplicado em controle de drones, robôs etc. Veja a Figura 11.
Figura 11. Acelerômetro.
Fonte: Souza (2015).
Fenômenos e meios de medição
Vejamos a seguir outros fenômenos físicos e seus princípios de medição 
(MORRIS, 2001).
Temperatura
Instrumentos para medir a temperatura podem ser divididos em classes separa-
das de acordo com o princípio físico em que operam. Os principais princípios 
utilizados são:
 � efeito termoelétrico;
 � mudança de resistência;
 � sensibilidade do dispositivo semicondutor.
Os sensores de efeito termoelétrico partem do princípio físico de que, 
quando dois metais estão ligados entre si, é gerada uma força eletromotriz, 
uma tensão, em função da temperatura a qual o sensor está exposto.
13Sensores para projetos Arduino
Este tipo de sensor é conhecido como termopares. Os termopares são uma 
classe muito importante de dispositivo, mais comumente usados para medir 
temperaturas na indústria. Os termopares são padronizados por letras (K, J, 
etc.) para identificar quais são os materiais envolvidos e assim permitir uma 
adequada seleção para aplicação. Algumas combinações de materiais são 
adequadas para baixas temperaturas, ou ambientes corrosivos, ou altíssimas 
temperaturas, por exemplo, como você pode ver na Figura 12.
Figura 12. Tabela de força eletromotriz versus temperatura para vários tipos de 
termopares.
Fonte: Temrmopares (2013).
Outra maneira de medir temperatura é por meio de termistores. Eles são 
fabricados a partir de grânulos de material semicondutor, preparados a partir 
de óxidos do grupo do ferro, de metais como cromo, cobalto, ferro, manga-
nês e níquel. Normalmente, termistores têm um coeficiente de temperatura 
negativo, ou seja, a resistência diminui à medida que a temperatura aumenta, 
porém de forma não linear.
Sensores para projetos Arduino14
Força
Na medição de força, a força é avaliada utilizando-se células de cargas, que 
têm como princípio de funcionamento a deformação elástica de um material, 
geralmente metálico, cuja deformação é linear e diretamente proporcional à 
força aplicada. A deformação é regida pela lei de Hooke.
Para essa medição são utilizados strain-gauges, que, como vimos, são 
resistências em formato de lâminas coladas na superfície do corpo metálico. 
Conforme a força é aplicada ao corpo, ou célula de carga, a resistência sofre 
variação, e essa variação é percebida pelo circuito eletrônico, que então é capaz 
de informar para o microcontrolador a deformação, que calcula a força aplicada.
Da medição de força derivam muitas outras medições de grandezas fí-
sicas, como pressão, torque e até mesmo volume. Todos esses partem do 
mesmo princípio de medição: uma força aplicada sobre um elemento metálico 
causa deformação elástica, e essa deformação é medida e informada para o 
microcontrolador.
A sensibilidade à deformação do strain-gauge é expressa quantitativamente 
como fator de gauge (GF). GF é a relação entre a variação relativa de resistência 
elétrica e a variação relativa em comprimento,ou deformação.
Para medir variações pequenas de resistência, as configurações de strain-
-gauge são baseadas no conceito de ponte de Wheatstone. Uma ponte Wheat-
stone genérica é uma rede formada por quatro braços resistivos e uma tensão 
de excitação aplicada na ponte.
Figura 14. Ponte de Wheatstone.
Fonte: National Instruments (2019).
15Sensores para projetos Arduino
Tensão elétrica
Independentemente da grandeza física que vamos medir, sempre iremos nos 
deparar com a medição da tensão elétrica. Isso porque as entradas analógicas do 
Arduino funcionam com a leitura de tensão aplicada sobre os pinos analógicos.
A tensão elétrica, também chamada de força eletromotriz, é a diferença 
de potencial elétrico entre dois pontos de um circuito elétrico ou eletrônico, 
expressa em volts. É uma medida da energia potencial de um campo elétrico 
que provoca uma corrente elétrica em um condutor elétrico. 
A maior parte dos dispositivos de medição pode fazer medições de tensão. 
As duas medições de tensão mais comuns são feitas em corrente contínua 
(CC) e corrente alternada (CA). Apesar de as medições de tensão serem as 
mais simples entre os diversos tipos de medições analógicas, elas apresentam 
desafios únicos, relacionados ao ruído.
A tensão de referência do ADC interno do Arduino é de 5V (Vref = 5V). 
Isso quer dizer que a tensão máxima que podemos medir sem usar um circuito 
externo é de 5V. Sua resolução é de 10 bits, 210 = 1024 valores para escala de 
0 a 5V. 0V corresponde a 0 leitura de ADC e 5V corresponde a 1024. 
Para medir tensões mais altas do que 5V, precisamos de um divisor de tensão 
externo para não exceder a tensão máxima nos pinos. O Arduino é capaz de 
medir tensão somente em modo single ended, ou seja, com referência apenas 
ao aterramento, não sendo possível medir a tensão diferencial entre dois pinos.
Corrente 
Conforme Bolton (2004), corrente elétrica é o fluxo de carga elétrica e sua 
unidade no SI é o ampere (A), que corresponde ao fluxo de 1 coulomb de 
carga por segundo.
A corrente pode ser medida por diversos métodos, mas o mais comum 
é a medição indireta. Ela mede a tensão entre os terminais de um resistor 
de precisão e determina a corrente que passa por esse resistor com base na 
principal teoria da eletricidade, a lei de Ohm. Outro método bastante usado 
tem base eletromagnética e está associado a um dos primeiros medidores de 
bobina móvel (d’Arsonval).
Sensores para projetos Arduino16
A lei de Ohm estabelece que, em um circuito elétrico, a corrente que passa por um 
condutor colocado entre dois pontos é diretamente proporcional à diferença de 
potencial observada entre esses dois pontos e inversamente proporcional à resistência 
entre eles.
A maior parte dos amperímetros atuais se baseia na lei de Ohm. Os am-
perímetros modernos são, basicamente, voltímetros com um resistor de pre-
cisão. Usando a lei de Ohm, é possível fazer medições com exatidão e ótimo 
custo-benefício.
Para medir correntes maiores, você pode incluir um resistor de precisão, 
chamado de shunt, em paralelo com o medidor. A maior parte da corrente 
flui pelo shunt e apenas uma fração flui pelo medidor. Esse recurso permite 
que o medidor trabalhe com valores de corrente mais altos. Qualquer resistor 
pode ser utilizado, desde que a corrente máxima esperada multiplicada pela 
resistência não ultrapasse a faixa de entrada do amperímetro ou do dispositivo 
de aquisição de dados.
Se medir a corrente dessa maneira, você precisará utilizar um resistor 
de menor valor possível, para que ele crie interferência mínima no circuito 
original. Resistências menores criam quedas de tensão menores, ou seja, é 
preciso escolher entre ter resolução ou interferência no circuito.
Veja na Figura 15 a medição de corrente com o shunt.
Figura 15. Medição de corrente utilizando resistor shunt.
Fonte: National Instruments (2017).
17Sensores para projetos Arduino
Os métodos de medição de grandezas físicas apresentados estão entre 
os mais utilizados. A área de instrumentação é muito abrangente e existem 
muitas soluções de transformação para que a grandeza possa ser mensurada 
e então interpretada pelo microcontrolador.
Integrando sensores com o Arduino
Um dos recursos do Arduino que o tornam tão versátil e popular são os shields. 
Os shields são placas de circuito que podem ser conectadas ao Arduino para 
expandir suas capacidades, possibilitando uma infinidade de aplicações de 
maneira simples e rápida. Essas placas podem ter displays de LCD, sensores, 
módulos de comunicação ou relés, por exemplo (LEMOS, 2013). 
Shields normalmente precisam de bibliotecas específicas para funcionarem 
corretamente. Algumas já vêm como bibliotecas padrão do Arduino, mas 
muitas precisam ser baixadas do site do fabricante do shield e instaladas no 
ambiente de desenvolvimento (IDE) do Arduino.
Vejamos um exemplo. Vamos dar ao Arduino a funcionalidade de data-
logger, que é um registrador de dados. Para isso vamos utilizar um Arduino 
Uno, um módulo RTC DS3231 e um módulo cartão SD. Nosso projeto vai 
registrar os dados de data, hora e temperatura a cada 1 minuto, gravando-os 
em um arquivo de texto no cartão SD (THOMSEN, 2015).
O módulo RTC é um Real Time Clock, que é um circuito integrado que 
faz a contagem do tempo, informando data e hora. Ele tem uma bateria para 
manter seu relógio interno em funcionamento quando não estiver com ali-
mentação externa — assim, não é necessário corrigir a data cada vez que se 
desliga o módulo. A comunicação do módulo é feita pela interface I2C, possui 
alimentação de 3,3V a 5V e trabalha com nível de sinal de 5V, podendo ser 
ligado diretamente ao microcontrolador. 
O módulo cartão SD é uma memória externa tipo flash que funciona 
como um pendrive. Com ele é possível guardar informações e fazer a leitura 
dos dados posteriormente. Em nosso projeto, vamos utilizá-lo para guardar 
os dados de data hora e temperatura coletados. Veja na Figura 16 como fica 
a montagem do circuito do nosso datalogger.
Sensores para projetos Arduino18
Figura 16. Montagem do circuito do datalogger.
Fonte: Thomsen (2015).
Para este projeto, precisamos utilizar as bibliotecas SPI, Wire e SD, já 
presentes na IDE do Arduino, e mais três bibliotecas que precisarão ser insta-
ladas: Time, DS3232RTC e Streaming. Baixe as três bibliotecas e coloque-as 
dentro da pasta LIBRARIES da IDE do Arduino.
O código que captura a data e a hora do módulo é baseado no programa de 
exemplo SetSerial, da própria biblioteca. Então adiciona-se no cartão SD a 
função de gravar as informações de data, hora e temperatura a cada 1 minuto.
Outra solução que podemos criar utilizando sensores no Arduino é um 
monitor residencial de consumo de energia elétrica. Esse tipo de projeto tem 
um grande apelo ecológico, ambiental e econômico, uma vez que é possível 
monitorar o consumo de uma residência em tempo real e identificar os eletrodo-
mésticos ou dispositivos que mais contribuem para o custo de energia elétrica.
Grande parte dos medidores inteligentes disponíveis no mercado são de-
rivados de um projeto open source chamado de Open Energy Monitor. Esse 
projeto desenvolve dispositivos de código aberto para fazer o monitoramento 
de energia e ajudar a sustentabilidade de forma global.
19Sensores para projetos Arduino
O sistema para monitoramento de consumo de energia elétrica é um disposi-
tivo portátil que deve ser acoplado à entrada de energia na caixa de disjuntores 
da residência. O sensor de corrente funciona como um alicate amperímetro 
(sendo não invasivo), e o sensor de tensão faz ligação em paralelo com a en-
trada de cada fase. O sistema é em tempo real, pois envia os dados para uma 
nuvem na internet, por meio do Ethernet Shield, que podem ser acessados 
pelo aplicativo Blynk (BRITO, 2016). 
O sensor SCT 013-000 é um transformador de corrente ideal para leituras 
não invasivas, apresentando um funcionamento similar a um alicate amperíme-
tro. Visualize o SCT 013-000 e o Arduino com o Ethernet Shield nalógicos dos 
bits. É semelhante às memórias, só que, enquanto as memórias só armazenam 
os bits, os registradores controlam algumas ações. 
Em um microcontrolador, existe um número muito grande de registradores 
e algumas partes são controladas por dezenas de registradores. Devido à grande 
5Introdução aos microcontroladores
diversidade de registradores dentro do microcontrolador, eles são designados 
por nomes. Por exemplo, o microcontrolador ATmega128 possui o registrador 
UCSRnA (USART Control and Status Register A). Esse registrador pode ser 
utilizado para ler os estados e configurar um módulo do microcontrolador 
ATmega128 chamado de USART.
Registrador de função especial
Além dos registradores citados anteriormente, existem os registradores de 
função especial, que possuem funções predeterminadas pelos fabricantes. 
Eles são interligados aos outros circuitos internos (osciladores, portas seriais, 
conversores A/D, temporizadores e outros) fi sicamente e determinam o com-
portamento do microcontrolador. Normalmente, possuem 8 bits, ou seja, um 
byte, e funcionam como oito interruptores para os outros circuitos dentro do 
microcontrolador.
Portas de entrada e saída
Os microcontroladores, para executarem suas funções, necessitam se ligar 
ao mundo externo de alguma forma. Isso é feito por meio dos registradores 
conectados aos pinos do chip, chamados de portas de entrada e saída. Como 
os níveis dos registradores podem ser modifi cados por software, o projetista 
pode adequar as saídas e as entradas, inclusive modifi cando valores durante 
seu funcionamento.
Na especificação de um microcontrolador, um dos pontos mais importantes é a corrente 
máxima que os pinos podem suportar. Cada pino normalmente suporta correntes na 
faixa de 5 a 25 mA. Ao verificar a corrente máxima que um microcontrolador pode 
suportar, em suas especificações técnicas, você precisa ter em mente que essa corrente 
é compartilhada por todos os pinos. Assim, quanto mais pinos o controlador possui, 
menor é a corrente máxima que cada pino suporta.
Os pinos das portas I/O são controlados por SFR. Seus níveis lógicos 
normalmente possuem em torno de 0 V ou 5 V. Por exemplo, se um regis-
trador escrever o bit 1 no pino de uma porta de I/O, a tensão nesse pino irá 
Introdução aos microcontroladores6
para 5 V e esse pino será configurado como uma entrada. Por outro lado, se 
o registrador apresentar o bit 0 nesse pino da porta, a tensão irá para 0 V e 
ele será configurado como uma saída.
Unidade de memória
O microcontrolador precisa de vários tipos de memória para armazenar dados. 
Cada posição dessas memórias é acessada por um endereço de memória e seu 
conteúdo pode ser lido ou escrito. Os diversos tipos de memórias são utilizados 
pelos fabricantes de acordo com seu projeto. A seguir, você pode ver os tipos 
de memórias mais comuns.
  ROM (Read Only Memory): é utilizada para gravar programas que são 
permanentes. Só permite a leitura.
  OTP ROM (One Time Programmable ROM): é utilizada para gravar 
um programa apenas uma vez. É a memória em que o projetista carrega 
seu programa de controle para efetuar a tarefa que ele projetou. Só pode 
ser gravada uma vez. Se o projetista precisar efetuar alterações, terá 
de gravar outro chip.
  UV EPROM (Ultra Violet Erasable Programmable ROM): é mais 
flexível do que a anterior, já que os dados podem ser apagados com 
luz ultravioleta e o chip pode ser reaproveitado.
  FLASH: é muito flexível. Seu conteúdo pode ser escrito e apagado 
eletricamente muitas vezes.
  RAM (Random Access Memory): é utilizada em quase todos os pro-
cessos do microcontrolador como memória temporária. É uma memória 
volátil, ou seja, quando a alimentação é desligada, seus dados são 
apagados.
  EEPROM (Electrically Erasable Programmable ROM): é mais uti-
lizada no armazenamento de valores criados durante a operação do 
microcontrolador, já que os dados armazenados não são perdidos quando 
se desliga a alimentação. Seu conteúdo pode ser apagado eletricamente.
Unidade central de processamento
É o cérebro do microcontrolador. É ela que controla e monitora todos os 
processos internos. É composta, principalmente, de um decodifi cador de ins-
truções, de uma unidade lógica aritmética e de um acumulador. Dependendo 
do fabricante, existem outras unidades específi cas.
7Introdução aos microcontroladores
O decodificador de instruções é a parte da CPU que lê as instruções do 
programa, as interpreta e faz com que as outras partes do circuito executem 
as ações. A unidade lógica e aritmética, por sua vez, é a parte da CPU que 
executa todas as operações lógicas e matemáticas do microcontrolador.
O número de instruções de cada família de microcontrolador normalmente é diferente. 
É esse número que define a potencialidade do microcontrolador.
O acumulador é um registrador de função especial utilizado em conjunto 
com a ULA. É onde a ULA coloca os dados que serão manipulados nas diversas 
operações e armazena seus resultados para utilização nos processamentos 
seguintes. 
O acumulador possui um SFR que é chamado de status. Esse SFR armazena todas as 
informações sobre os dados armazenados no acumulador.
Barramento
Para que o microcontrolador acesse a memória e os dados trafeguem entre 
as diversas unidades, existem os barramentos. Eles são trilhas ou linhas cujo 
número depende do tamanho da palavra dos dados ou do número máximo 
de endereços que se precisa acessar. São de dois tipos: o de endereçamento 
e o de dados.
O barramento de endereçamento é por onde a CPU envia o endereço da 
memória que deve ser lida ou escrita. O barramento de dados liga todos os 
circuitos internos do microcontrolador e depende de quantos bits devem ser 
acessados ou transmitidos de uma vez.
Introdução aos microcontroladores8
Interfaces seriais
O microcontrolador permite comunicações paralelas entre suas portas I/O e 
periféricos. Entretanto, para grandes distâncias, a transmissão paralela é cara 
e depende de vários parâmetros, principalmente de sincronismo. Atualmente, 
a maior parte dos microcontroladores já traz embutidos, de fábrica, diversos 
sistemas de comunicações seriais. A seguir, você pode ver os mais utilizados.
  I2C (Inter-Integrated Circuit): utilizado para distâncias curtas onde, 
normalmente, o microcontrolador e os periféricos estão na mesma 
placa. A comunicação utiliza um par de condutores: um é utilizado 
para transferir dados e o outro é utilizado para o sinal de relógio, ou 
seja, a comunicação é síncrona.
  SPI (Serial Peripheral Interface Bus): utiliza até quatro condutores para 
uma ligação full-duplex, pois usa um condutor para enviar dados e um 
para receber dados simultaneamente, um para o sinal de relógio e outro 
para determinar com qual dispositivo a comunicação vai ser efetuada. 
Por isso, possui velocidade de comunicação maior do que a do I2C. 
  UART (Universal Asychronous Receiver/Transmitter): existe apenas 
um condutor e a comunicação é assíncrona.
Quando há comunicação full-duplex entre dois dispositivos, os dois podem transmitir 
e receber dados simultaneamente.
Oscilador
O oscilador, que normalmente utiliza um cristal de quartzo, produz um sinal 
de relógio estabilizado para que todos os circuitos do microcontrolador tra-
balhem de forma síncrona. Quando a aplicação não exige grande estabilidade 
na geração do sinal do oscilador, pode-se utilizar um microcontrolador com 
circuito RC (resistência e capacitor), que é mais barato.
Existem microcontroladores em que todas as instruções são executadas 
no mesmo número de ciclos e existem outros em que o número de ciclos por 
instrução pode ser variável.
9Introdução aos microcontroladores
Conversor análogico/digital
Os sinais externos com que o microcontrolador trabalha normalmente são 
analógicos. Como ele só “compreende” sinais digitais, há necessidade de um 
conversor do sinal analógico para o sinal digital. O conversor A/D recebe um 
sinal de tensão em um dos pinos, o converte em um sinal digitalFigura 17.
Figura 17. (a) Sensor de corrente SCT 013-000; (b) Arduino com Ethernet Shield.
Fonte: Brito (2016).
(a) (b)
BOLTON, W. Instrumentation and Control Systems. EUA: Elsevier, 2004.
BRITO, J. L. G. Sistema para monitoramento de consumo de energia elétrica particu-
lar, em tempo real e não invasivo utilizando a tecnologia Arduino. 2016. Trabalho de 
Conclusão de Curso (Graduação em Engenharia Elétrica) - Universidade Estadual de 
Londrina, Londrina, 2016.
DALLY, J. W.; RILEY, W. F.; MCCONNELL, K. G. Instrumentation for engineering measure-
ments. 2. ed. EUA: John Wiley & Sons, 1993.
ESHAM, B. D. Interior de uma chave de fim de curso. Brasil, 2007. Disponível em: https://
pt.wikipedia.org/wiki/Chave_fim_de_curso#/media/File:Microswitch.jpg. Acesso em: 
19 maio 2019.Leituras recomendadas
Sensores para projetos Arduino20
LEMOS, M. Conheça os shields e incremente seu Arduino com eles. Brasil, 2013. Dispo-
nível em: https://blog.fazedores.com/conheca-os-shields-e-incremente-seu-arduino-
-com-eles/. Acesso em: 19 maio 2019.
MORRIS, A. Measurement e instrumentation principles. 3. ed. Oxford: Butterworth-
-Heinemann, 2001.
NATIONAL INSTRUMENTS. Medições de corrente: guia prático. Brasil, 2017. Disponível 
em: https://brasilescola.uol.com.br/fisica/sistema-internacional-unidades-si.htm. Acesso 
em: 19 maio 2019.
NATIONAL INSTRUMENTS. Medições de deformação com Strain Gages. Brasil, 2019. 
Disponível em: http://www.ni.com/pt-br/innovations/white-papers/07/measuring-
-strain-with-strain-gages.html. Acesso em: 19 maio 2019.
RANDOM NERD TUTORIALS. Complete guide for ultrasonic sensor HC-SR04 with Ar-
duino. EUA, 2019. Disponível em: https://randomnerdtutorials.com/complete-guide-
-for-ultrasonic-sensor-hc-sr04/. Acesso em: 19 maio 2019.
SANTOS, R.; SANTOS, S. Ultimate guide for Arduino sensors/modules. EUA: Random-
NerdTutorials, 2018.
SILVA, D. C. M. D. Sistema internacional de unidades. Brasil, [2019?]. Disponível em: 
https://brasilescola.uol.com.br/fisica/sistema-internacional-unidades-si.htm. Acesso 
em: 19 maio 2019.
SOUZA, F. Arduino: interface com acelerômetro e giroscópio. Brasil, 2015. Disponível 
em: https://www.embarcados.com.br/arduino-acelerometro-giroscopio/. Acesso em: 
19 maio 2019.
TERMOPARES. Curva de variação da F.E.M. dos termopares. São Paulo, 2013. Disponível 
em: http://www.termopares.com.br/teoria_sensores_temperatura_termopares_cur-
vas_variacao_fem/. Acesso em: 19 maio 2019.
THOMSEN, A. Como fazer um Datalogger com Arduino. Brasil, 2015. Disponível em: 
https://www.filipeflop.com/blog/datalogger-com-arduino-cartao-sd/. Acesso em: 
19 maio 2019.
WEBSTER, J. The measurement instrumentation and sensors handbook. [S. l.]: CRC 
Press, 1999.
Leituras recomendadas
ALVES, J. L. L. Instrumentação controle e automação de processos. São Paulo, LTC, 2005
BALBINOT, A.; BRUSAMARELLO, V. J. Instrumentação e fundamentos de medidas. São 
Paulo: LTC, 2006. v. 1. 
HELFRICK, A. D.; COOPER, W. D. Instrumentação eletrônica moderna e técnicas de medição. 
Rio de Janeiro: Prentice-Hall, 1994.
21Sensores para projetos Arduino
ROBÓTICA
Fernando Esquírio Torres
Atuadores para 
projetos Arduino
Objetivos de aprendizagem
Ao final deste texto, você deve apresentar os seguintes aprendizados:
 � Caracterizar o funcionamento dos motores DC.
 � Identificar circuitos para acionamentos dos motores utilizados em 
projetos com Arduino.
 � Analisar as aplicações de motores DC utilizando Arduino.
Introdução
Os motores de corrente contínua (motor DC) são utilizados, geralmente, 
em robôs móveis no seu sistema de locomoção, pois seu baixo custo e 
grande versatilidade no controle de velocidade garantem sua navegação 
dentro de um ambiente de trabalho (PETRUZELLA, 2013). Você pode 
encontrar esse tipo de motor em diversos equipamentos, como, por 
exemplo, dispositivos domésticos (leitor de DVD ou Blu-ray) e brinquedos.
Neste capítulo, você vai conhecer o princípio de funcionamento 
geral dos motores DC. Você vai ver as principais características técnicas 
desses motores e identificar os circuitos necessários para o acionamento e 
interfaceamento desse tipo de motor com a plataforma microcontrolada 
Arduino.
Funcionamento de um motor DC
De acordo com Petruzella (2013), os motores de corrente contínua, tam-
bém chamados de motores DC, são um tipo de motor energizado com uma 
corrente contínua, que pode ser proveniente de pilhas/baterias ou de uma 
fonte de alimentação CC (como, por exemplo, carregadores de celular, fonte 
chaveada ou comutada). Esse tipo de motor é recomendado para aplicações 
que exigem torque preciso e acionamento de velocidade, como guindastes, 
correias transportadoras, elevadores, entre outras. Segundo Monk (2014), os 
motores DC podem ser classificados quanto a sua comutação em escovados 
ou brushless (sem escovas).
Segundo Petruzella (2013), o motor DC tem dois terminais que, ao serem 
energizados por uma bateria ou uma fonte de alimentação, produzem um 
campo magnético gerado pela corrente que percorre por esses terminais. Se 
você ligar os terminais do motor nos polos da bateria, como mostrado na 
Figura 1, o motor vai girar no sentido anti-horário (você se lembra da regra 
da mão direita, que aprendeu nas aulas de Física?). Se você inverter a ligação 
dos terminais do motor com os polos da bateria, o motor irá girar no sentido 
contrário.
Figura 1. Terminais do motor DC energizados por uma bateria.
Fonte: Fouad A. Saad/Shutterstock.com.
Atuadores para projetos Arduino2
De acordo com o princípio de funcionamento dos motores DC, a rotação acontece por 
causa do campo magnético criado pela corrente gerada pela ligação de uma bateria 
ou de uma fonte de alimentação de corrente contínua (CC). O sentido de rotação vai 
depender da polarização dos terminais, que provocam uma mudança no sentido do 
campo magnético gerado. A velocidade dos motores DC é controlada variando a 
tensão aplicada nos seus terminais.
Você pode saber mais sobre o funcionamento de motores DC no vídeo disponível 
no link a seguir, do canal Learn Engineering, que é um projeto criado para melhorar a 
qualidade da educação voltada para engenharia. Para entender a operação e construção 
de motores comerciais, assista ao vídeo.
https://goo.gl/4YGjVc
Stevan Junior (2015) destaca a importância de identificar as especificações 
técnicas/elétricas do motor DC que você está usando ao trabalhar com esse 
dispositivo, pois essas características serão úteis para um melhor aprovei-
tamento e utilização do motor. As especificações técnicas importantes são: 
 � tensão de operação; 
 � velocidade de rotação; 
 � corrente do motor.
Um motor DC comumente utilizado por hobbista e estudantes em seus 
projetos é o modelo RF-300ca-09550 (Figura 2). Esse motor é fácil de comprar 
no mercado, pois é utilizando em DVD-Rom e/ou Play Station para rotacionar 
o CD/DVD.
3Atuadores para projetos Arduino
Figura 2. Motor DC utilizado em DVD-Rom e 
Play Station.
Fonte: Adaptada de Mabuchi Motor ([201-?]).
O Quadro 1 mostra as principais características do motor RF-300ca-09550.
Fonte: Adaptado de Mabuchi Motor ([201-?]).
Tensão Sem carga
Na máxima 
eficiência
Travado
Faixa 
de ope-
ração
Nomi-
nal
Veloci-
dade
Cor-
rente
Veloci-
dade
Cor-
rente
Corrente
rpm A rpm A A
1 – 6V 3V 2700 0.012 2100 0.042 0.15
Quadro 1. Especificações técnicas do motor RF-300ca-09550
Perceba, no Quadro 1, que a primeira especificação técnica é a faixa de 
operação da tensão do motor, que, de acordo com Margolis (2012), representa 
os valores mínimos e máximos que você pode alimentar o motor (nesse caso 
de 1 a 6V). Já a tensão nominal (3V) é o valor que seu motor precisa para 
funcionar corretamente. 
Atuadores para projetos Arduino4
A segunda especificação técnica é a velocidade de rotação, que é medida 
em rpm (rotações por minuto). Ela representa a quantidade de voltas que o motor 
dá por unidade de tempo, neste caso por minuto. Assim você tem 2700 rpm, 
quando o motor está sem carga, e 2100 rpm na máximaeficiência. 
Por fim, a terceira especificação técnica é a corrente necessária para 
rotacionar o motor. Neste caso, você tem 12 mA quando o motor está sem 
carga, 42 mA na eficiência máxima e 150 mA com o motor travado. Existe 
também a corrente de pico, que é a corrente necessária para iniciar o movi-
mento do motor, ou seja, tirar o motor da inércia. Ela normalmente tem um 
valor próximo da corrente com o motor travado (+/- 150 mA).
Veja mais sobre as especificações técnicas desse motor e de outros motores semelhantes 
no seu datasheet, que pode ser acessado no link a seguir.
https://goo.gl/9kigwA
Circuitos para acionamentos de motores DC 
usando o Arduino
Segundo Culkin (2018), para controlar um motor DC é necessário correntes 
mais altas do que as fornecidas pelos microcontroladores, pois microcontrola-
dores têm limitação de corrente nos pinos de saída. De acordo com McRoberts 
(2011) e Banzi e Shiloh (2015), o Arduino fornece uma corrente de saída nos 
seus pinos de 40 mA. Esse valor não é suficiente para rotacionar o motor DC 
na sua máxima eficiência e muito menos para iniciar o movimento de rotação 
(sair da inércia) do motor DC. Por isso, é necessário um circuito de acionamento 
para fazer a interface entre o motor e o Arduino, permitindo movimentá-lo e 
controlar sua velocidade.
Sendo assim, você precisa conhecer alguns dos circuitos existentes para o 
acionamento de motores utilizando a plataforma microcontrolada Arduino. A 
seguir, serão apresentados dois circuitos para fazer a interface entre motores 
DC e o Arduino, de forma a acioná-los.
5Atuadores para projetos Arduino
Circuito de acionamento com transistor
Segundo Monk (2014), o circuito de acionamento de motores DC mais simples 
para você montar, utilizando a plataforma Arduino, é composto de um tran-
sistor, um resistor e um diodo. Nesse circuito, que você pode ver na Figura 3, 
o transistor funciona como uma chave de liga e desliga e permite controlar o 
motor utilizando apenas um pino de saída digital do Arduino.
Figura 3. Circuito de acionamento do motor com transistor.
Fonte: Adaptada de Monk (2014, p. 137).
GND
D11 R1
D1 M
b
e
c
T1
12V CC
Fonte de
alimentação
GND
12V Vin Vin
270 V
Arduino
270 Ω
A fonte de alimentação pode ser pilhas/baterias ou uma fonte de corrente 
contínua, desde que forneçam tensão e corrente suficientes para o funcio-
namento do circuito e controle do motor. De acordo com Culkin (2018), o 
transistor do tipo NPN é utilizado como uma chave/interruptor de sinal elétrico 
e seus três pinos são: 
 � emissor (e); 
 � base (b);
 � coletor (c). 
Atuadores para projetos Arduino6
O pino do emissor está ligado ao GND, a base está ligada ao pino 11 do 
Arduino em série com um resistor e o pino coletor está ligado à alimentação 
5V em série com o diodo e o motor. 
Veja na Figura 4 o circuito montado no protoboard. Nele foi utilizado o 
transistor BC639, um resistor de 270Ω, um diodo 1N4007, um motor DC, 
um Arduino UNO e cabos para conexão. Se você for montar o seu circuito, é 
importante prestar a atenção na posição do transistor: certifique-se de que a 
parte reta fique virada para você.
Figura 4. Circuito de acionamento do motor com o transistor 
NPN BC639, resistor de 270Ω e diodo 1N4007.
7Atuadores para projetos Arduino
Durante a montagem do circuito, certifique-se de que a alimentação está desligada, 
pois, caso esteja ligada, isso pode causar danos ou até queimar os componentes 
utilizados.
O código do sketch para o funcionamento do circuito é relativamente sim-
ples — veja um exemplo na Figura 5. Conforme descrito por Banzi e Shiloh 
(2015), o passo necessário para construir o código para acionar o circuito 
da Figura 3 é, basicamente, configurar o pino 11 como saída digital — isso 
permite o firmware “escrever” níveis de tensão (Alto/High ou Baixo/Low) no 
pino. Desse modo, para ligar o motor, basta você colocar um nível de tensão 
alto (5V, HIGH no Arduino) no pino de saída e para desligar o motor um nível 
de tensão baixo (0V, LOW no Arduino).
No código mostrado na Figura 5, a diretiva #define (#define MOTOR 11) 
estipula um “apelido” para representar o pino 11 do Arduino. Essa é uma boa 
técnica de programação que deixa mais claro, organiza e facilita a manutenção 
do programa. De acordo com Evans, Noble e Hochenbaum (2013), o comando 
#define cria uma macro (apelido) que está associada a um valor, uma sequência 
de caracteres ou um comando. 
Na função setup(), o comando pinMode(MOTOR, OUTPUT), na linha 13, 
configura o pino 11 como saída digital. No loop principal, o comando 
digitalWrite(MOTOR, HIGH) liga o motor DC na sua máxima eficiência, 
pois esse comando coloca um nível de tensão alto (5V) no pino de saída digital, 
e ele fica ligado por 2 segundos (2000 milissegundos) devido ao comando de 
espera ocupada delay(2000). Por último, o comando digitalWrite(MOTOR, 
LOW) desliga o motor, pois esse comando coloca um nível de tensão baixo 
(0V) no pino e ele fica desligado por 500 milissegundos devido ao comando 
delay(500). Essa lógica principal fica executando em loop até você desligar 
o Arduino (McROBERTS, 2011).
Esse primeiro circuito de acionamento tem a desvantagem de fazer o motor 
girar apenas em um sentido, que vai depender da conexão dos terminais no 
protoboard e de como você alimenta os terminais do motor. Mesmo assim, 
esse circuito é importante para entendermos o funcionamento e o controle de 
um motor DC utilizando o Arduino, e pode ser aplicado em um projeto de um 
robô móvel que anda somente para frente, por exemplo, assim o motor tem 
que girar apenas em um sentido.
Atuadores para projetos Arduino8
Figura 5. Código para o acionamento do motor DC com transistor.
Circuito de acionamento com ponte H
Quando você quiser mudar o sentido de rotação, deverá utilizar uma ponte H 
(Figura 6), que, segundo Monk (2014), é um circuito eletrônico que possibilita 
controlar o sentido de rotação do motor DC, além de fornecer a tensão e a 
corrente necessárias para o funcionamento do motor. Essencialmente, a ponte 
H é um conjunto de 4 chaves (transistores) eletrônicas(os) operadas(os) aos 
pares (Figura 7). Ligando-se S1 e S4 simultaneamente, a corrente circulará 
em um sentido pelo motor. Por outro lado, com S2 e S3 ligadas, a corrente 
circulará em sentido oposto, e o giro do motor será no sentido oposto.
9Atuadores para projetos Arduino
Figura 6. Circuito de acionamento ponte H.
Fonte: Adaptada de Monk (2014, p. 138).
+V
–V
S1
S2
S3
S4
A B
M
Figura 7. Circuito de acionamento do motor com a ponte H L298N.
+5Vcc
Arduino 9
8
+12V
+5Vcc
Ponte H
O
U
T 
A
GND
IN1
IN2
OUT1
OUT2
M
Atuadores para projetos Arduino10
Margolis (2012) destaca que existem vários shields ou módulos de ponte 
H para acionar um motor DC com o Arduino. Aqui, você verá a montagem do 
circuito utilizando o módulo ponte H L298N. Esse módulo L298N é chamado 
ponte H dupla, pois pode controlar até dois motores de forma independente. 
O circuito esquemático para acionar um motor DC utilizando a ponte H e o 
Arduino é mostrado na Figura 7. Nessa imagem esquemática, a ponte H é 
alimentada com 5V e GND da placa Arduino; neste caso, serão necessários 
dois pinos de saída digital para controlar o motor (pino 8 e pino 9), ligados 
nos pinos IN1 e IN2 da ponte H, pois o motor DC está ligado nas saídas 
OUT1 e OUT2.
O Quadro 2, a seguir, mostra as conexões do módulo da ponte H L298N 
e algumas sugestões de onde liga-las no Arduino.
Nome da 
porta
Estado Descrição
+12V 
power
- Atenção: alimentação externa (5V a 35V).
Deve ser ligada ao pino de 5V do Arduino.
power 
GND
- Conexão para o GND da fonte de alimentação externa.
Deve ser ligada ao pino GND do Arduino.
+5V 
power
- Atenção: saída de 5V.
ENA Entrada Habilita (1) /Desabilita (0) motor A — 
jumper disponível.
IN1 Entrada Controle de velocidade do motor A.
É um sinal PWM do Arduino.
IN2 Entrada Sentido de giro do motor. É um sinal lógico fornecido 
pelo Arduino: HIGH = horário, LOW = anti-horário.ENB Entrada Habilita (1) /Desabilita (0) motor B — 
jumper disponível.
IN3 Entrada Controle de velocidade do motor B.
É um sinal PWM do Arduino.
IN4 Entrada Sentido de giro do motor. É um sinal lógico fornecido 
pelo Arduino: HIGH = horário, LOW = anti-horário.
Quadro 2. Especificações técnicas do módulo ponte H L298N
(Continua)
11Atuadores para projetos Arduino
Quadro 2. Especificações técnicas do módulo ponte H L298N
Nome da 
porta
Estado Descrição
OUT A 
(2 pinos)
Saída Ligação do motor A.
OUT A = {OUT1, OUT2}
OUT B 
(2 pinos)
Saída Saída para o motor B.
OUT B = {OUT3, OUT4}
5V enable - Se o jumper estiver conectado no pino 5V_EN, o 
LM7805 irá fornecer 5V para alimentar o CI L298N. 
Caso o jumper seja desconectado do pino, será 
necessário fornecer 5V para o chip L298N.
(Continuação)
Você pode visualizar na Figura 8 o código do Arduino para o acionamento 
do motor DC utilizando o circuito de ponte H. 
No código da Figura 8, as diretivas #define (#define IN1 9 e #define IN2 8) 
estipulam “apelidos” para representar os pinos 9 e 8 do Arduino. Na função 
setup() do código, os comandos pinMode(IN1, OUTPUT) e pinMode(IN2, 
OUTPUT) configuram o pino 9 e 8 como saída digital. No loop principal, os 
comandos digitalWrite(IN1,HIGH) e digitalWrite(IN2,LOW) controlam 
a energização dos terminais do motor DC para girar em um sentido, e o 
motor fica ligado por 5 segundos (5000 milissegundos) devido ao comando 
de espera ocupada delay(5000). Em seguida, o motor é parado devido aos 
comandos digitalWrite(IN1,HIGH) e digitalWrite(IN2,HIGH) por 2 se-
gundos (comando delay(2000)). Então, os comandos digitalWrite(IN1, 
LOW) e digitalWrite(IN2, HIGH) invertem o sentido de rotação do motor 
DC por 5 segundos (delay(5000)). Por fim, o motor para novamente por 
2 segundos. O loop principal é repetido até que você desligue o Arduino 
(McROBERTS, 2011). 
Atuadores para projetos Arduino12
Figura 8. Código para o acionamento do motor DC com a ponte H.
Controle de velocidade de motores DC 
utilizando o Arduino
Como você viu, a velocidade de um motor DC é controlada pelo valor de 
tensão aplicada nos seus terminais. Segundo Monk (2014), quando você está 
trabalhando com microcontroladores, inclusive com o Arduino, é possível variar 
13Atuadores para projetos Arduino
a tensão de um pino de saída por meio do periférico interno responsável pela 
Modulação por Largura de Pulso (PWM, Pulse Width Modulation). 
Evans, Noble e Hochenbaum (2013) descreve o PWM como uma técnica 
usada para obtermos variáveis analógicas por meio da duração de pulsos de 
uma onda quadrada. Essa ideia está ilustrada na Figura 9, na qual é gerada uma 
onda quadrada com frequência constante e a duração dos pulsos é controlada 
pelo ciclo ativo de 0 a 100%.
Figura 9. Modulação por Largura de Pulso (PWM).
Nível de tensão alto 5V
Nível de tensão baixo 0V
Nível de tensão alto 5V
Nível de tensão baixo 0V
Nível de tensão alto 5V
Nível de tensão baixo 0V
Nível de tensão alto 5V
Nível de tensão baixo 0V
Nível de tensão alto 5V
Nível de tensão baixo 0V
Ciclo ativo 0%
Ciclo ativo 25%
Ciclo ativo 50%
Ciclo ativo 75%
Ciclo ativo 100%
Tensão média
0V
1,25V
2,5V
3,75V
5V
De acordo com McRoberts (2011), no Arduino, a frequência constante de 
oscilação dos pulsos é, por padrão, de 490 Hz e o periférico PWM possui 8 
bits. Desse modo, o controle do chamado ciclo ativo ou tempo de trabalho 
(duty cycle) acontece discretamente em 256 níveis (28 bits = 256 níveis), sendo 
o nível 0 igual ao ciclo ativo 0% e o nível 255 igual a 100%. 
A função responsável por controlar os valores de PWM é a analogWrite(nível), 
onde nível é o valor entre 0 e 255, correspondente ao ciclo ativo do pulso. O 
Quadro 3 mostra alguns desses valores e seus respectivos percentuais. O 
Arduino UNO tem 6 pinos de PWM, destacados com o símbolo “~” na placa 
de circuito impresso (são eles: 3, 5, 6, 9, 10 e 11).
Atuadores para projetos Arduino14
O código de controle de velocidade do motor DC é mostrado na Figura 10, 
a seguir. Nesse código, você pode ver o uso da função analogWrite com os 
níveis de ciclos ativos mostrados no Quadro 3, mais adiante, para aumentar 
e diminuir a velocidade do motor DC. O circuito utilizado para esse código 
é o mostrado na Figura 3 (circuito simples com transistor).
Figura 10. Código para o controle de velocidade do motor DC.
15Atuadores para projetos Arduino
Ciclo ativo (%) analogWrite()
0 0
25 64
50 128
75 171
100 255
Quadro 3. Ciclo ativo versus valor da função analogWrite
No código mostrado na Figura 10, o comando analogWrite( ) confi-
gura a saída do sinal PWM no pino digital indicado. A sintaxe da função é: 
analogWrite(PINO, VALOR_DA_ESCALA), onde o pino pode ser qualquer um 
dos pinos de PWM disponíveis no Arduino e o valor de escala deve ser valores 
entre 0 e 255 (McROBERTS, 2011). O código da Figura 10 faz o aumento da 
velocidade do motor DC a cada 2 segundos na escala de incremento de 25% 
e depois diminui a velocidade de motor na mesma escala.
BANZI, M.; SHILOH, M. Primeiros passos com o Arduino. 2. ed. São Paulo: Novatec, 2015. 
CULKIN, J. Aprenda eletrônica com Arduino. São Paulo: Novatec, 2018. 
EVANS, M.; NOBLE, J.; HOCHENBAUM, J. Arduino em ação. São Paulo: Novatec, 2013.
MABUCHI MOTOR. RF-300CA. [S. l.], [201-?]. Disponível em: http://www.edutek.ltd.uk/
Binaries/Datasheets/Misc/SolarMotor.pdf. Acesso em: 24 mar. 2019.
MARGOLIS, M. Make an Arduino-controlled robot: (make: projects). Sebastopol CA (EUA): 
Maker Media, Inc, 2012.
McROBERTS, M. Arduino básico. São Paulo: Novatec, 2011.
MONK, S. 30 projetos com Arduino. Porto Alegre: Bookman, 2014. (Série Tekne).
PETRUZELLA, F. D. Motores elétricos e acionamentos. Porto Alegre: Bookman, 2013. 
(Série Tekne).
Atuadores para projetos Arduino16
STEVAN JUNIOR, S. L. Automação e instrumentação industrial com Arduino: teoria e 
projetos. São Paulo: Saraiva, 2015. 
Leituras recomendadas
ARDUINO. AnalogWrite(). [S. l.], 2019b. Disponível em: https://www.arduino.cc/reference/
pt/language/functions/analog-io/analogwrite/. Acesso em: 24 mar. 2019.
ARDUINO. DigitalWrite(). [S. l.], 2019b. Disponível em: https https://www.arduino.cc/
reference/pt/language/functions/digital-io/digitalwrite/. Acesso em: 24 mar. 2019.
ARDUINO. PinMode(). [S. l.], 2019a. Disponível em: https://www.arduino.cc/reference/
pt/language/functions/digital-io/pinmode/. Acesso em: 24 mar. 2019.
17Atuadores para projetos Arduino
ROBÓTICA 
Cleiton Silvano Goulart
Projeto integrado 
de robótica
Objetivos de aprendizagem
Ao final deste texto, você deve apresentar os seguintes aprendizados:
 � Identificar as características da ferramenta Tinkercad.
 � Definir as características dos projetos eletrônicos.
 � Aplicar os conceitos de projetos eletrônicos utilizando a ferramenta 
Tinkercad.
Introdução
Neste capítulo, você vai conhecer o Tinkercad, uma ferramenta gratuita, 
simples e muito poderosa para criar e simular circuitos eletrônicos. A partir 
dele é possível desenvolver uma versão inicial de um projeto e simular 
seu funcionamento para verificar se está tudo certo antes de construir 
um protótipo real. Além disso, você também vai conhecer quais são as 
características básicas de um projeto eletrônico.
Tinkercad
O Tinkercad é uma plataforma on-line da Autodesk feita para projetar e fabricar 
os mais variados projetos. Ele é composto por ferramentas que permitem o 
projeto tridimensional de peças, o projeto e a simulação de circuitos eletrôni-
cos e a programação em códigos de forma estruturada, em blocos. Seu uso é 
totalmente gratuito, e basta a criação de uma conta de usuário para acessá-lo 
(O TINKERCAD..., [2019]).
O acesso ao Tinkercad está disponível no link a seguir.
https://qrgo.page.link/FGYW
Logo na página inicial do Tinkercad, é possível encontrar uma galeria com 
vários projetos criados por outros usuários. Existe ainda um blog com vários 
artigos para orientar e instruir os usuários sobre o próprio Tinkercad e sobre 
tecnologiascorrelacionadas, como impressão 3D. Após o usuário acessar o 
sistema do Tinkercad com uma conta de usuário, é possível encontrar ainda 
alguns tutoriais.
O Tinkercad possui duas ferramentas fundamentais: Projetos 3D e Cir-
cuitos. A Figura 1 mostra como acessar cada uma delas. Com a ferramenta 
Projetos 3D é possível construir qualquer peça de forma simples e intuitiva 
pelo navegador de internet. Já com a ferramenta Circuitos é possível desenhar 
circuitos eletrônicos e ainda realizar sua simulação. As simulações realizadas 
por essa ferramenta suportam desde circuitos analógicos simples até projetos 
envolvendo o Arduino. 
O Arduino é uma plataforma eletrônica de código aberto que permite 
usar circuitos eletrônicos programáveis por meio dos microcontroladores 
(WHAT..., [2019]).
Figura 1. Interface padrão do Tinkercad.
Acesso à ferramenta Projeto 3D
Acesso à ferramenta Circuitos
Projeto integrado de robótica2
Características dos projetos eletrônicos
Nos projetos de robótica, muitas vezes é necessário o uso de circuitos eletrôni-
cos para controlar motores, monitorar sensores e outras aplicações específicas. 
Todo projeto eletrônico é constituído de fonte de alimentação, condutores e os 
componentes elétricos ou eletrônicos. Os componentes elétricos/eletrônicos 
podem ser resistores, indutores, capacitores, diodos, transistores, circuitos 
integrados, relês, motores elétricos, LEDs, sensores diversos, entre outros. 
Vejamos os fundamentos de cada um desses componentes essenciais dos 
projetos eletrônicos.
Fonte de alimentação
A fonte de alimentação é responsável por fornecer a energia elétrica para o 
circuito. Ela pode ser produzida a partir de pilhas, baterias, transformadores 
e fontes de alimentação externas. Uma fonte de alimentação externa consiste 
em um circuito eletrônico que recebe a energia elétrica da concessionária por 
meio da tomada elétrica e converte essa energia de forma apropriada. Existem 
ainda as fontes de alimentação ajustáveis, geralmente encontradas em labora-
tórios de eletrônica. Essas fontes de alimentação são ligadas diretamente na 
tomada e permitem que a tensão de saída e vários outros parâmetros sejam 
alterados, de acordo com o modelo da fonte. 
Para a correta seleção da fonte de alimentação para um projeto eletrônico, 
alguns aspectos devem ser observados. Se o projeto necessita se mover, como, 
por exemplo, um robô seguidor de trilhas, a fonte de alimentação não pode 
depender da energia fornecida pela concessionária elétrica; podem ser usadas 
pilhas ou baterias. Se o projeto for estacionário, isto é, se ele ficar instalado de 
forma fixa em algum lugar, como uma impressora 3D, por exemplo, recomenda-
-se utilizar alguma fonte de alimentação externa.
Tanto as pilhas e baterias quanto as fontes de alimentação externas estão 
disponíveis em várias combinações de tensão e capacidade de drenagem 
de corrente elétrica. As pilhas e baterias geralmente estão disponíveis em 
tensões inferiores a 24V, com capacidade de drenar correntes que vão de 
alguns miliamperes-hora (mAh) até algumas dezenas de amperes-hora (Ah). 
Já as fontes de alimentação externas possuem uma variedade muito grande 
de tensões de saída e capacidade de drenar corrente elétrica. Existem ainda 
empresas que desenvolvem fontes de alimentação sob demanda, para atender 
de forma bem específica a um projeto eletrônico (GUSSOW, 2009).
3Projeto integrado de robótica
Existem vários tipos de pilhas e baterias. Os tipos mais utilizados de pilhas são a pilha 
comum, a alcalina e a de lítio. Essas pilhas não são recarregáveis e, uma vez que a 
reação química no interior do componente se esgote, a pilha deve ser descartada.
Já os principais tipos de baterias recarregáveis podem ser chumbo-ácida, chumbo-
-ácida selada (gel), níquel-cádmio (NiCd), níquel-hidreto metálico (NiMH), íon-lítio 
(Li-Ion) e íon-polímero (Li-Po).
Condutores
Nos circuitos eletrônicos, a energia elétrica deve fluir por meio dos condutores. 
Existem várias formas de se montar os componentes, e a grande variável entre 
essas formas é a maneira pela qual os condutores elétricos são dispostos. Os 
circuitos podem ser montados em placas de prototipagem, conhecidas como 
protoboard; podem ser soldados em placas perfuradas padrão e ser interligados 
aos componentes eletrônicos por fios. Também pode ser desenvolvida uma 
placa de circuito impresso, na qual os componentes são efetivamente soldados 
em uma placa especialmente fabricada para aquele circuito.
Figura 2. Tipos de montagens eletrônicas e seus condutores elétricos: (a) protoboard; (b) 
placa perfurada padrão; (c) placa de circuito impresso.
Fonte: (a) lovecreativa/Shutterstock.com; (b) Joe White/Shutterstock.com; (c) Matee Nuserm/ 
Shutterstock.com.
(a) (b) (c)
Projeto integrado de robótica4
As placas de prototipagem rápida (protoboard) são placas em que é 
possível montar circuitos eletrônicos de forma extremamente rápida sem a 
necessidade de usar soldas. A Figura 2a mostra um exemplo desse tipo de 
placa. Elas possuem uma série de conectores internos que fazem a interligação 
elétrica dos componentes, conforme indicado na Figura 3. 
Além desses conectores, podem ser usados fios elétricos para complementar 
as ligações elétricas nessas placas. Elas estão disponíveis nos mais variados 
tamanhos e são indicadas para a fase inicial do projeto, quando o circuito 
eletrônico ainda está sendo desenvolvido. Apesar de simples e fáceis de usar, 
essas placas podem apresentar mau contato nos conectores. Portanto, ao usá-
-las, deve-se observar se os terminais elétricos e os fios estão corretamente 
inseridos nos orifícios. 
Figura 3. Esquema de interligação elétrica da protoboard. Os 
traços indicam quais furos estão eletricamente interligados.
Fonte: Adaptada de lovecreativa/Shutterstock.com.
5Projeto integrado de robótica
Para a montagem do circuito eletrônico podem ser usadas ainda as placas 
perfuradas padrão, ilustradas na Figura 2b. Essas placas são compostas de 
um substrato isolante, geralmente o fenolite ou a fibra de vidro, com uma 
camada de cobre fixada em um ou nos dois lados da placa. Nessas placas existe 
uma série de furos com ilhas ou trilhas de cobre, nas quais os componentes 
podem ser soldados. Para complementar as ligações elétricas, deve ser usada 
a própria solda eletrônica ou mesmo os fios condutores. 
A Figura 4 ilustra um exemplo de montagem empregando esse método. 
Embora essa abordagem seja um pouco mais difícil de ser usada, devido à 
necessidade de soldar os componentes, ela não apresenta os eventuais mau 
contatos que podem ocorrer nas protoboards. Como a montagem dos condu-
tores elétricos é feita de forma artesanal, essa abordagem não é recomendada 
quando o projeto será fabricado em grande quantidade. Estas placas são ideais 
para pequenos protótipos ou para a montagem de circuitos de forma mais 
rápida do que se fossem feitas placas de circuito impresso.
Figura 4. Exemplo de montagem usando a placa perfurada padrão.
Fonte: Cabin (c2019, documento on-line).
Projeto integrado de robótica6
A solda de eletrônica é conhecida como solda de estanho e é composta por um fio 
de chumbo-estanho na proporção 63/37, isto é, 63% de chumbo para 37% de estanho, 
com fluxo de solda no interior desse fio. Existem outras proporções disponíveis.
Essa solda à base de chumbo atualmente deve ser evitada, devido à contaminação 
causada pelo chumbo. Ele é nocivo para o ser humano e para o meio ambiente. Já estão 
disponíveis no mercado as soldas sem chumbo (lead-free), às quais são recomendadas 
por não terem chumbo na sua composição.
As placas de circuito impresso são a solução definitiva para a montagem 
de circuitos eletrônicos. Elas são compostas por um substrato isolante, seme-
lhante às placas perfuradas padrão, porém o desenho das trilhas e a posição 
de cada ilha está vinculado ao circuito eletrônico. Dessa forma, essa placa 
possui um lugar para cada componente do circuito e não é necessário utilizar 
qualquer fio elétrico paracompor o circuito eletrônico. O problema dessas 
placas é que sua confecção demanda maior trabalho do que as outras formas 
de montagem. Existem várias técnicas de fabricação dessas placas e todas 
envolvem o desenho da placa propriamente dita para posterior confecção. 
A Figura 2c mostra um exemplo de placa de circuito impresso. Elas podem 
ter trilhas condutoras em uma única face, conhecidas como placas de face 
simples, ou ter trilhas nas duas faces, conhecidas como placas dupla-face. Além 
disto, é possível em projetos mais complexos incluir várias faces intermediárias, 
dentro do substrato, nesta abordagem a placa é composta por várias camadas. 
Embora elas são vastamente utilizadas na produção em larga escala do projeto, 
elas também podem ser usadas para prototipagem de circuitos eletrônicos.
Componentes eletrônicos
Os componentes eletrônicos são responsáveis pelo funcionamento do circuito 
propriamente dito. Existe uma gama muito grande de componentes eletrônicos 
que podem ser usados. Na Figura 5 você pode ver alguns desses componentes. 
Existem componentes mais simples, como os resistores, capacitores, 
indutores, diodos retificadores, LEDs e transistores, mas também existem 
componentes mais complexos, como os circuitos integrados e os micro-
controladores. Além disso, alguns componentes necessitam de montagens 
com dissipadores de calor, como é o caso de alguns transistores e circuitos 
7Projeto integrado de robótica
integrados de potência. A maioria desses componentes pode ser facilmente 
montada de qualquer uma das formas descritas para os condutores. Entretanto, 
alguns componentes mais complexos — por exemplo, circuitos integrados com 
muitos terminais — só podem ser montados em placas de circuito impresso.
Figura 5. Exemplos de componentes eletrônicos.
Fonte: phanu suwannarat/Shutterstock.com.
Existem ainda componentes que geralmente são montados fora das placas 
de circuito impresso ou mesmo das placas de prototipagem, como é o caso dos 
motores e alguns sensores. Nesse caso é necessário utilizar cabos para conectar 
esses elementos ao circuito. Por causa disso, temos ainda os conectores e os 
terminais, que têm uma variedade muito grande. 
Projetos eletrônicos no Tinkercad
Por meio do Tinkercad é possível desenvolver projetos eletrônicos em um 
ambiente totalmente virtual de forma on-line. Um aspecto significativo dessa 
abordagem é a segurança. Os projetos podem ser desenvolvidos sem o risco de 
queimar componentes, de forma rápida e prática. Para uma simulação inicial 
do projeto, o Tinkercad é uma ferramenta muito poderosa. Apesar de ser 
limitado no sentido de componentes disponíveis para o projeto, o Tinkercad 
consegue atender muitos projetos eletrônicos de robótica.
Projeto integrado de robótica8
Agora veremos três projetos simples que podem ser desenvolvidos e simu-
lados no Tinkercad. O primeiro projeto consiste em uma lâmpada controlada 
por uma chave simples; apesar de muito simples, esse projeto permite um 
conhecimento prévio do ambiente do Tinkercad. No segundo projeto, temos 
uma variação do primeiro, em que será demonstrado como usar o Tinkercad 
para fazer medidas elétricas a partir do módulo de simulação. Por fim, no 
terceiro projeto, será montado um circuito em que o Arduino irá controlar 
um motor de corrente contínua.
Acendendo um LED
Para ilustrar os fundamentos do Tinkercad, o primeiro circuito que será apre-
sentado consiste em uma chave para acender um LED. Na Figura 6, temos o 
circuito elétrico em que, ao pressionarmos uma chave, um LED irá acender 
a partir de uma pilha de 9V.
Figura 6. Circuito para acender um LED com uma pilha de 9V. 
9V
LED1
R1 = 470Ω
Após acessar o Tinkercad, é possível arrastar e soltar os componentes 
necessários. Existem várias formas de montar esse circuito no Tinkercad. 
Na Figura 7, você pode ver duas formas diferentes de construir o circuito 
representado na Figura 6. Para construir esse circuito foram necessários uma 
9Projeto integrado de robótica
bateria de 9V, um LED, um botão e um resistor de 470Ω. Alguns componentes 
do Tinkercad têm opções que podem ser alteradas quando eles são selecionados 
com a simulação desligada. Por exemplo, para alterar o valor do resistor para 
470Ω, basta selecioná-lo e, na caixa que abrir, fazer as devidas alterações. Da 
mesma forma é possível alterar a cor do LED e as cores dos fios.
Após montar o circuito, vamos ligar o simulador do Tinkercad e pressionar 
o botão. Se tudo foi montado corretamente, o LED deve acender. A Figura 7a 
mostra o LED acesso, enquanto a Figura 7b mostra o LED apagado.
Figura 7. Exemplos de montagem do circuito no Tinkercad: (a) montagem usando apenas 
fios; (b) montagem usando placa de prototipagem.
(a) (b)
Fazendo medições elétricas no circuito da lâmpada
O Tinkercad também permite fazer medições elétricas nos circuitos. Para 
exemplificar essa abordagem, o mesmo circuito da Figura 6 foi adaptado 
para incluir um voltímetro e um amperímetro, conforme ilustra a Figura 8. 
No Tinkercad existe o componente multímetro, que pode ser configurado 
como voltímetro, amperímetro ou ohmímetro. Para isso, basta você colocar 
o componente multímetro no circuito e selecioná-lo. Na caixa de opções que 
abrir, é só mudar o modo de medida desejada. Veja na Figura 9 um exemplo 
de medição de tensão e de corrente com o multímetro.
Projeto integrado de robótica10
Figura 8. Circuito para acender um LED com uma pilha de 9V, com um voltímetro 
e com um amperímetro.
9V
LED1
R1 = 470Ω
Figura 9. Montagem do circuito da Figura 8, no Thinkercad. Observe que o simulador está 
ativado e o botão foi pressionado.
11Projeto integrado de robótica
Controlando um motor com o Arduino
Uma montagem um pouco mais complexa pode ser feita na interface do Tinker-
cad. Agora vamos controlar um motor de corrente contínua pelo Arduino, de 
acordo com a montagem que você vê na Figura 11, mais adiante. Esse circuito 
foi adaptado do projeto 24 de Monk (2014). 
Para esse circuito é necessário um Arduino Uno, uma placa de prototipagem, 
um motor de corrente contínua, um capacitor de 100μF × 16V, um circuito 
integrado L293D e fios para ligação elétrica. O Arduino será responsável por 
controlar o motor. Por meio dele o motor poderá rodar no sentido horário ou 
anti-horário; além disso, é possível ajustar a velocidade do motor. 
Um motor de corrente contínua precisa de uma corrente elétrica que o 
Arduino não consegue fornecer. Por isso, foi usado o circuito integrado L293D. 
Esse componente recebe os comandos do Arduino e controla o motor. Inter-
namente ele possui um circuito chamado ponte H. 
Para uma explicação mais detalhada do projeto de controle do motor, do funciona-
mento do circuito integrado L293D e do código necessário para o controle, acesse o 
link a seguir e consulte o projeto 24 do livro 30 projetos com Arduino, de Simon Monk.
Após montar todo o circuito, vamos digitar na aba Código o código da 
Figura 10.
Projeto integrado de robótica12
Figura 10. Código para controlar o motor.
13Projeto integrado de robótica
Figura 11. Circuito montado no Tinkercad para controle de um motor de corrente contínua 
com o uso do Arduino Uno.
Fonte: Adaptada de Monk (2014).
Ao executarmos a simulação do Tinkercad, o motor irá girar e aparecerá 
uma indicação sobre a velocidade do motor. Altere o valor de 220 para a 
variável velocidade no código-fonte — repare que a velocidade do motor 
irá mudar. Experimente valores de −255 a 255. Repare que valores negativos 
fazem o motor rodar em um sentido, enquanto valores positivos o fazem rodar 
em outro sentido.
CABIN, J. Circuit board. c2019. Disponível em: http://johnscabin.com/Basic_speaker/
circuitboard00a.jpg. Acesso em: 9 maio 2019.
GUSSOW, M. Eletricidade básica. 2. ed. Porto Alegre: Bookman, 2009.
MONK, S. 30 projetos com Arduino. 2. ed. Porto Alegre: Bookman, 2014.
O TINKERCAD é. Autodesk Tinkercad, [s. l.], [2019]. Disponível em: https://www.tinkercad.
com. Acesso em: 8 mai. 2019.
WHAT is Arduino.Arduino, [s. l.], [2019]. Disponível em: https://www.arduino.cc. Acesso 
em: 9 mai. 2019.
Projeto integrado de robótica14
Leituras recomendadas
GEDDES, M. Manual de projetos do Arduino: 25 projetos práticos para começar. 1. ed. 
São Paulo: Novatec, 2017.
MONK, S. Programação com Arduino: começando com sketches. Porto Alegre: Bookman, 
2013. (Série Tekne).
MONK, S. Programação com Arduino II: passos avançados com sketches. Porto Alegre: 
Bookman, 2014.
SCHULER, C. Eletrônica I. 7. ed. Porto Alegre: Bookman, 2013. (Série Tekne).
15Projeto integrado de robóticae encaminha 
os bits à CPU para processamento.
Arquitetura interna
Atualmente, existem dois tipos de arquitetura interna mais utilizados pelos 
microcontroladores: a arquitetura Harvard e a arquitetura von Neumann. Na 
Figura 3, você pode ver, de forma esquemática, as duas arquiteturas.
Figura 3. Arquiteturas von Neumann e Harvard, respectivamente.
Na arquitetura von Neumann, as instruções dos programas são armazenadas 
no mesmo espaço em que os dados são armazenados. Só existe um barramento 
para que a CPU possa ler uma instrução, ou ler ou escrever dados da memória. 
Como esses processamentos não podem ser executados ao mesmo tempo, o 
barramento fica sobrecarregado e a comunicação se torna lenta.
Na arquitetura Harvard, existem dois barramentos com funções específicas 
e duas memórias, uma para instruções dos programas e outra para dados. 
Um barramento permite a leitura das instruções de uma das memórias para 
a CPU, e o outro barramento permite a leitura ou escrita de dados em outra 
memória. Assim, a leitura de uma instrução pode ser feita ao mesmo tempo 
em que a CPU acessa a memória dos dados. Os dois barramentos podem ter, 
inclusive, números de linhas diferentes.
Introdução aos microcontroladores10
Aplicações básicas dos microcontroladores
Hoje, é difícil encontrar produtos industriais com certa complexidade em que 
a eletrônica não esteja envolvida. A eletrônica integra tanto veículos aéreos, 
terrestres e marítimos quanto eletrodomésticos, por exemplo. 
No início deste capítulo, você viu que os microcontroladores são soluções 
ideais quando é necessária uma solução computacional completa que tenha 
dimensões reduzidas, seja barata e possua a flexibilidade de ser programável. 
Contudo, antes de optar pelos microcontroladores, você deve considerar alguns 
fatores, tais como: o número de saídas e entradas necessárias, a necessidade 
de comunicação serial, a necessidade de conversores A/D, a estabilidade e a 
velocidade, entre outros.
À medida que os requisitos técnicos do projeto são definidos, a escolha do 
microcontrolador certo, dentro da grande gama de ofertas, também é definida. 
Naturalmente, você deve levar em consideração, na escolha, o preço de cada 
microcontrolador e o número de unidades necessárias.
De acordo com uma pesquisa efetuada pela EDN Networks (EVANCZUK, 
2013), as seguintes famílias de microcontroladores são as mais populares: Atmel 
8-bit AVR, Cypress Semiconductor PSoC 1 Programmable System-on-Chip, 
Freescale Semiconductor Motorola MC6800, Infineon Technologies TriCore 
(TCxxxx) MCU, Microchip Technology PIC16 MCU, Silicon Laboratories 
C8051F33x, STMicroelectronics STM32 e Texas Instruments MSP430.
Na Figura 4, a seguir, você pode ver um microcontrolador PIC da Motorola 
em dois tipos de encapsulamento.
Figura 4. Microcontrolador PIC em dois tipos de encapsulamento.
Fonte: Adaptada de Microchip (2018).
11Introdução aos microcontroladores
Os microcontroladores são utilizados em milhares de produtos. Eles estão 
presentes, por exemplo:
  na eletrônica dos aviões;
  na eletrônica embarcada dos veículos (freios, direção, carburação, con-
trole de estabilidade, amortecedores, multimídia e controle de diversos 
dispositivos);
  no controle de processos na indústria (medidores de fluxo, medidores 
elétricos, sensores, motores, robôs, termostatos, painéis de acesso);
  na avicultura e na suinocultura;
  nos diversos dispositivos de entretenimento (brinquedos, videogames, 
consoles e música);
  nas telecomunicações (roteadores, switches, celulares, tablets, relógios, 
GPS, bluetooth, wi-fi e outros);
  na saúde e na estética (medidores de pressão, marcapassos e diversos 
equipamentos médicos);
  na domótica (automação residencial); e
  nos eletrodomésticos.
Existem diversas aplicações práticas dos controladores. Você pode explorá-las por 
meio das leituras recomendadas deste capítulo.
1. O elemento central em um 
microcontrolador é a(o):
a) unidade lógica aritmética. 
b) decodificador de instruções.
c) unidade central de 
processamento.
d) acumulador.
e) microprocessador.
2. O circuito integrado que contém as 
funções de CPU, memória, entrada e 
saída de dados e funções especiais 
tais como PWM e conversão A/D 
em um único chip é chamado de:
a) CI programável.
b) arduino.
c) FPGA.
d) microprocessador.
e) microcontrolador.
3. Um sistema computacional é 
composto por três componentes 
Introdução aos microcontroladores12
EVANCZUK, S. MCU popularity perceptions. 2013. Disponível em: . Acesso em: 6 ago. 2018.
MICROCHIP: dsPIC33CH128MP202. 2018. Disponível em: . Acesso em: 6 ago. 2018.
SENA, A. S. Microcontroladores PIC. Rio de Janeiro: [s.n.], 2017. Disponível em: . Acesso em: 6 ago. 2018.
Leituras recomendadas
GIMENEZ, S. P. Microcontroladores 8051. São Paulo: Pearson, 2005.
GIMENEZ, S. P.; DANTAS, L. P. Microcontroladores PIC18: conceitos, operação, fluxograma 
e programação. São Paulo: Érica, 2015. 
HAUPT, A. W. Eletrônica digital. São Paulo: Blucher, 2016.
TANENBAUM, A. S.; AUSTIN, T. Organização estruturada de computadores. 6. ed. Porto 
Alegre: Prentice Hall, 2013.
TOCCI, R. J.; WIDMER, N. S.; MOSS, G. L. Sistemas digitais: princípios e aplicações. 11. ed. 
São Paulo: Pearson Prentice Hall, 2011. 
TOKHEIM, R. Fundamentos de eletrônica digital: sistemas sequenciais. Porto Alegre: 
AMGH, 2013. v. 2.
VAHID, F. Sistemas digitais. Porto Alegre: Bookman, 2008.
genéricos. Nos microcontroladores, 
o componente que leva e 
traz informação para o meio 
externo chama-se:
a) CPU.
b) portas de entrada e saída.
c) acumulador.
d) barramento.
e) registrador de funções especiais.
4. No microcontrolador, o dispositivo 
eletrônico que armazena os 
níveis lógicos dos bits e controla 
algumas ações é chamado de:
a) registrador.
b) memória.
c) decodificador.
d) barramento.
e) ULA.
5. As interfaces seriais mais utilizadas 
nos microcontroladores são:
a) I2C, SCSI e UART.
b) USB, SPI e SCSI.
c) USB, SCSI e UART.
d) I2C, SPI e UART.
e) I2C, SPI e USB.
13Introdução aos microcontroladores
https://www.edn.com/
https://www.microchip.com/
http://livrosebookfree.blogspot.com/2017/09/pic-apostila.html
Encerra aqui o trecho do livro disponibilizado para 
esta Unidade de Aprendizagem. Na Biblioteca Virtual 
da Instituição, você encontra a obra na íntegra.
C08_Sistemas_Digitais.indd 18 23/08/2018 15:31:18
Conteúdo:
ROBÓTICA
Cleiton Silvano Goulart
Família ATMega
Objetivos de aprendizagem
Ao final deste texto, você deve apresentar os seguintes aprendizados:
 � Caracterizar os microcontroladores ATMega.
 � Diferenciar os microcontroladores ATMega dos principais concorrentes.
 � Analisar as aplicações dos microcontroladores ATMega.
Introdução
Neste capítulo, você vai conhecer a família de microcontroladores 
ATMega, fabricada pela Atmel. Também irá ver quais são os recursos que 
os diferenciam dos demais microcontroladores AVR (também fabricados 
pela Atmel) e de outros microcontroladores, concorrentes dele. 
Os microcontroladores ATMega são extremamente versáteis e apre-
sentam uma excelente relação custo-benefício, o que possibilita seu 
uso em diversas aplicações de sistemas embarcados, como portões 
eletrônicos, centrais de alarmes simples, sistemas robóticos de pequeno 
e médio porte, entre várias outras aplicações.
Microcontroladores ATMega
A família ATMega é uma linha de microcontroladores com arquitetura 
RISC 8-bits de grande sucesso, produzida pela Atmel. Ela é vastamente 
utilizada nos mais variados projetos, devido à sua grande versatilidade e 
excelente custo benefício. Uma característica marcante dessa família de 
microcontroladores é o elevado número de recursos incluídos em um único 
circuito integrado, em especial memórias para programa e variáveis– daí 
a expressão MEGA.
A Atmel, fabricante inicial da família ATMega, foi adquirida pela Microchip, sua principal 
concorrente, em 2016. Com isso, vários integrantes dessa família foram descontinuados.
O elevado número de canais de entrada e saída, além da memória interna 
para o programa e para variáveis (memória RAM), possibilita desenvolver 
aplicações e programas mais robustos e mais complexos, quando comparados 
com outros microcontroladores. 
No Quadro 1 você encontra alguns dos principais integrantes dessa família 
e suas principais especificações. Para efeito comparativo, o microcontrolador 
ATtiny2313A, que não faz parte dessa família, tem 20 pinos de entrada/saída, 
2KB de memória flash e 0,128KB de memória SRAM. 
Designação
Quantidade 
de entradas e 
saídas (pinos)
Memória 
flash (para o 
programa) 
(KB)
Memória SRAM 
(memória 
dinâmica para 
as variáveis)
(KB)
ATmega 8A 28-44 8 1
ATmega 16A 28-44 16 1
ATmega 32A 28-44 32 2
ATmega 328PB 32 32 2
ATmega 2560 64-100 256 8
Quadro 1. Alguns integrantes da família ATMega com especificação básica de hardware
Observe que a quantidade de pinos de entrada e saída é variável conforme 
o encapsulamento do circuito integrado. O encapsulamento nada mais é do 
que a carcaça (geralmente plástico epóxi) na qual o microcontrolador é dispo-
nibilizado. Para ilustrar, considere como exemplo o ATMega 328P; de acordo 
com sua ficha de dados (datasheet), disponibilizada por Microchip (2019), os 
Família ATMega2
encapsulamentos disponíveis para ele são DIP-28 e TQFP-32. Veja na Figura 1 
como se parecem esses encapsulamentos.
Figura 1. (a) DIP-28 e (b) TQFP-32: diferentes tipos de encapsulamentos disponíveis para 
o microcontrolador ATMega 328P. Observe que alguns encapsulamentos têm mais canais 
de entrada/saída do que outros, porém, internamente, eles são funcionalmente iguais.
Fonte: (a) ATmega328P-PU (2009); (b) ATmega328P (2014).
(a) (b)
No link ou código a seguir, você poderá encontrar uma 
relação completa de todos os microcontroladores da família 
ATMega que estão em produção, além de informações 
técnicas, inclusive de modelos que não são fabricados mais.
https://goo.gl/V5xwmA
Família ATxMega
Existem ainda os microcontroladores ATxMega, que pertencem a uma subfa-
mília, que conta com as vantagens da família ATMega e mais alguns recursos 
de hardware, como conversores digital-analógico — DAC; blocos de proces-
samento de criptografia em nível de hardware; e maior número de canais para 
os diversos protocolos de comunicação (I2C, SPI, USB, UART, USART, etc.). 
Essa família também é recomendada para aplicações de tempo real.
3Família ATMega
Uma aplicação de tempo real é definida quando o fator tempo deve ser determinístico, 
isto é, quando a noção de tempo deve ser bem definida. Observe que isto não significa 
dizer que ele é mais rápido.
Arquitetura RISC
A arquitetura interna do processador desses microcontroladores é baseada 
na estrutura RISC (Reduced Instruction Set Computer ou computador com 
conjunto de instruções reduzidas). A principal consequência do uso dessa 
arquitetura, de acordo com Brito (2014), é uma unidade de processamento mais 
simples, mais rápida e mais eficiente, ao preço de um menor limite teórico de 
endereçamento de memória. 
Mesmo com os limites impostos pela arquitetura, o seu excelente desempe-
nho para aplicações de pequeno porte fez com que os microcontroladores da 
família AVR e ATMega fossem adotados de forma bastante vasta pelo meio 
industrial, em aplicações de eletrônica embarcada. Vários concorrentes diretos 
da família AVR usam uma arquitetura similar, CISC (Complex Instruction Set 
Computer ou computador com conjunto de instruções complexas), a qual tem 
um desempenho ligeiramente menor do que a arquitetura RISC. 
Principais características da família ATMega
Os microcontroladores da família ATMega são marcantes por sua memória de 
grande capacidade para programas que demandam muitas linhas de código; 
porém, além dessa memória, alguns recursos de hardware são disponibilizados 
de forma mais extensiva e com mais opções, como, por exemplo, protocolos 
de comunicação. Vamos ver a seguir uma breve descrição da função dos 
principais recursos presentes nesses microcontroladores, com comentários 
acerca de sua presença na família ATMega. 
Família ATMega4
ADC 
O ADC (Analog-to-Digital Converter ou CAD, conversor analógico-digital) 
é um bloco geralmente presente nos microcontroladores, que permite fazer a 
conversão de um nível de tensão analógica para digital (MONK, 2017). Prati-
camente todos os microcontroladores têm conversores desse tipo já incluídos, 
porém, na família ATMega, é possível encontrar de 8 a 16 canais ADC com 
resolução de até 12 bits, enquanto que, em outros microcontroladores con-
vencionais, você encontra até 10 canais, geralmente com resolução de 10 bits.
Quando um microcontrolador tem muitos canais ADC, ele pode fazer várias leituras 
analógicas simultaneamente. Já o número de bits está relacionado com a precisão de 
leitura que o ADC consegue realizar. 
DAC 
O DAC (Digital-to-Analog Converter ou CDA, conversor digital-analógico) 
é um conversor que permite que o microcontrolador gere um sinal analógico 
com base no controle desejado. Este recurso só é possível de se encontrar na 
família ATxMega, com resolução de 12 bits.
Canais PWM
PWM — (Pulse Width Modulation ou modulação por largura de pulso) é 
uma forma simples de gerar um sinal pseudoanalógico sem a necessidade 
de usar um conversor DAC. Apesar de ser possível fazer essa modulação via 
programa, muitos microcontroladores disponibilizam um recurso de hardware 
para fazer tal modulação. Quando ela é feita por hardware, o programa fica 
livre para fazer outras tarefas. 
Os microcontroladores da família ATMega têm pelo menos 2 canais PWM 
como um bloco de acessório interno do microcontrolador, sendo possível 
encontrar modelos como o ATMega 2560 com 4 canais PWM de 8 bits e até 
6 canais de 16 bits. Nos modelos da família ATxMega, esses recursos também 
estão presentes em maior número. 
5Família ATMega
Apesar de ser possível gerar um sinal pseudoanalógico a partir de um canal PWM, é 
errado dizer que o PWM é uma saída analógica. Na verdade, ela é uma saída digital 
pulsante em que o intervalo de tempo entre os pulsos é variado de forma que o valor 
médio seja alterado conforme a necessidade. Caso seja necessário um sinal analógico 
contínuo, é necessário o uso de um conversor DAC (digital para analógico).
MULT
Os modelos mais recentes da família ATMega e ATxMega também têm o 
MULT, um recurso nativo de hardware que permite fazer operações de multi-
plicação de dois números de 8 bits, resultando em um número de 16 bits. Esse 
recurso permite que o programa faça cálculos matemáticos avançados, com 
uma performance muito superior quando comparado com os modelos que não 
possuem esse recurso. Observe que uma operação com ponto flutuante (com 
casas decimais) muitas vezes necessita desse recurso para obter um nível de 
desempenho aceitável conforme a aplicação desejada do microcontrolador, 
de acordo com Microchip (2019).
UART/USART
Os protocolos universal de comunicação serial assíncrona (UART) e uni-
versal de comunicação serial síncrona-assíncrona (USART) geralmente 
são disponibilizados como um recurso adicional de hardware nos microcon-
troladores, apesar de ser possível implementá-los via programa. Entretanto, 
na família ATMega, esses protocolos estão disponíveis em maior número do 
que o convencional, sendo possível encontrar, por exemplo, o ATMega 2560 
com até quatro canais destes. Exemplos de comunicações que necessitam desse 
protocolo são o protocolo USB, o protocolo RS-232 e o RS-485, entre outros.
Família ATMega6
Os protocolos RS-232 e RS-485 são exemplos de comunicação vastamente empregada 
em dispositivos e equipamentos de porte industrial.
I2C e SPI
Os protocolos I2C e SPI são protocolos de comunicação de uso geral com 
dois fios (I2C) e quatro fios (SPI), que permitemque o microcontrolador se 
comunique de forma eficiente com outros dispositivos de hardware em baixo 
nível, como, por exemplo, conversores analógico-digital e digital-analógico em 
circuitos integrados dedicados; relógios de tempo real (RTC); potenciômetros 
digitais, e até mesmo outros microcontroladores. Todos os integrantes da 
família ATMega possuem suporte nativo desses protocolos, com geralmente 
um canal de cada protocolo. É possível colocar vários dispositivos em paralelo 
em um mesmo canal, o que reduz a necessidade de mais de um canal desses 
protocolos. 
Aplicações práticas da família ATMega
A família ATMega, por apresentar uma excelente relação custo-benefício, 
permite a construção de vários dispositivos e equipamentos. Entre as várias 
aplicações, podemos citar aparelhos de medição de pressão arterial, módulos 
de monitoramento de gases, impressoras 3D, robôs de pequeno porte, servo-
motores, eletrodomésticos inteligentes como panelas de pressão eletrônicas, 
por exemplo. Um caso de grande sucesso dos microcontroladores da família 
ATMega é a plataforma Arduino.
Plataforma Arduino
Um exemplo muito presente nos dias atuais é o Arduino. De acordo com 
Monk (2017), o Arduino consiste em uma plataforma de hardware e software 
de baixo custo e com estrutura de código aberto a qual facilita o processo de 
prototipagem e uso de microcontroladores. 
7Família ATMega
O primeiro microcontrolador usado no Arduino foi o ATMega 8, inte-
grante hoje considerado obsoleto e já fora de produção. Atualmente, existem 
muitas variantes da plataforma original do Arduino, algumas utilizando mi-
crocontroladores mais simples e outras mais complexos. O Arduino Uno, hoje 
considerado a versão mais acessível disponível, emprega o microcontrolador 
ATMega 328. Existe ainda o Arduino MEGA, que usa o ATMega 2560, além 
de muitas outras versões — algumas com processadores de outras famílias. 
A diferença marcante essas versões são os recursos que o microcontrolador 
disponibiliza para o usuário final: maior número de entradas e saídas digitais e 
analógicas, maior espaço de memória para o programa, maior memória RAM 
disponível para as variáveis, entre vários outros recursos específicos que estão 
presentes nesses microcontroladores.
O Arduino emprega ainda outra vantagem presente nos microcontroladores 
da família ATMega, que é a sua facilidade de programação. Enquanto que 
alguns microcontroladores de outras famílias concorrentes exigem níveis de 
tensões específicos e alguns exigem até mesmo sistema com luz ultravioleta, 
para permitir a gravação do programa do usuário, a família ATMega facilita 
esse processo de forma a não necessitar de ferramentas específicas para a 
gravação. 
Assim, podemos dizer que o Arduino consiste em um microcontrolador 
ATMega, com a sua infraestrutura básica de operação, acrescido de um sistema 
de conversão USB para SPI — que é o canal usado para a programação dos 
microcontroladores ATMega. 
ATMEGA328P. In: WIKIMEDIA. Brasil, 2014. Disponível em: https://en.wikipedia.org/
wiki/ATmega328#/media/File:ICIC-TQ32-X-K328-01_(16421989932).jpg. Acesso em: 
21 mar. 2019. 
ATMEGA328P-PU. In: WIKIMEDIA. Brasil, 2009. Disponível em: https://pt.wikipedia.org/
wiki/Ficheiro:ATMEGA328P-PU.jpg. Acesso em: 21 mar. 2019.
BRITO, A. Introdução a arquitetura de computadores. João Pessoa: Editora da UFPB, 2014.
MONK, S. Programação com Arduino: começando com sketches. 2. ed. Porto Alegre: 
Bookman, 2017. (Série Tekne).
Família ATMega8
Leituras recomendadas
ARDUINO. [S. l.], 2019. Disponível em: https://www.arduino.cc. Acesso em: 21 mar. 2019.
BALBINOT, A.; BRUSAMARELLO, V. J. Instrumentação e fundamentos de medidas. 2. ed. 
LTC, 2010. v. 1.
GEDDES, M. Manual de projetos do Arduino: 25 projetos práticos para começar. São 
Paulo: Novatec, 2017. 
MICROCHIP. AVR MCUs. [S. l.], 2019. Disponível em: https://www.microchip.com/design-
-centers/8-bit/avr-mcus/. Acesso em: 10 fev. 2019.
MICROCHIP. Datasheet do ATMega 328P. [S. l.], 2018. Disponível em: http://ww1.micro-
chip.com/downloads/en/DeviceDoc/ATmega48A-PA-88A-PA-168A-PA-328-P-DS-
DS40002061A.pdf. Acesso em: 10 fev. 2019.
MONK, S. 30 projetos com Arduino. 2. ed. Porto Alegre: Bookman, 2014. (Série Tekne).
MONK, S. Programação com Arduino II: passos avançados com sketches. Porto Alegre: 
Bookman, 2015. (Série Tekne).
MONK, S. Projetos com Arduino e Android: use seu smartphone ou tablet para controlar 
o Arduino. Porto Alegre: Bookman, 2014. (Série Tekne).
9Família ATMega
ROBÓTICA
Flávio Luiz Puhl Junior
História do Arduino
Objetivos de aprendizagem
Ao final deste texto, você deve apresentar os seguintes aprendizados:
 � Apresentar breve histórico da plataforma Arduino.
 � Diferenciar os componentes utilizados nas placas Arduino.
 � Analisar a aplicação das diferentes placas Arduino.
Introdução
O Arduino é uma plataforma aberta de prototipação eletrônica. Por ser 
uma plataforma, ele não é simplesmente um hardware — é composto 
por hardware (placa controladora) e software (ambiente de desenvolvi-
mento), ambos muito flexíveis e fáceis de usar. Ele é uma das principais 
realizações de um movimento que só cresce no mundo: o movimento 
makers, composto por representantes de uma cultura que uniu o “faça 
você mesmo” à tecnologia para criar projetos em diversas áreas.
O projeto original italiano do Arduino foi refinado por pesquisadores 
para se tornar mais leve, acessível e barato. Hoje, a plataforma está bas-
tante evoluída e pode ser executada em todos os sistemas operacionais 
sob licença Creative Commons para hardware e licenças GPL/LGPL para 
software. Isso significa que, a partir de uma placa padrão de Arduino, é 
possível criar outros controladores. O mesmo vale para o software, ou 
seja, qualquer pessoa pode utilizar a plataforma para criar o que quiser.
Neste capítulo, você vai conhecer a história por trás da plataforma 
Arduino e suas motivações para que o projeto fosse tão aceito pela co-
munidade. Também vai conhecer os componentes que fazem parte da 
placa de desenvolvimento e analisar algumas aplicações interessantes.
O que é o projeto Arduino?
O Arduino faz parte do conceito de hardware e software livre e está aberto 
para uso e contribuição de toda a sociedade. O conceito do Arduino surgiu 
na Itália, em 2005, com o objetivo de criar um dispositivo que pudesse ser 
utilizado em projetos ou protótipos construídos de forma menos dispendiosa 
do que outros sistemas disponíveis no mercado. 
O Arduino foi projetado com a finalidade de ser de fácil entendimento 
e programação, além de ser multiplataforma, podendo ser configurado em 
ambientes Linux, Mac OS e Windows. Outro grande diferencial desse recurso 
é ser mantido por uma comunidade que trabalha na filosofia open source, 
desenvolvendo e divulgando gratuitamente seus projetos sob licenças Creative 
Commons.
Creative Commons, ou apenas CC, é uma organização sem fins lucrativos que permite 
o compartilhamento e o uso de conhecimento por meio de instrumentos jurídicos 
gratuitos. Com uma rede de funcionários, um conselho e uma rede global de colabo-
radores, o CC oferece licenças de direitos autorais gratuitas e fáceis de usar para criar 
uma maneira simples e padronizada de dar ao público a permissão de compartilhar e 
usar seu trabalho criativo. O CC protege as pessoas que utilizam o trabalho de terceiros, 
para que não tenham que se preocupar com violação de direitos autorais — desde 
que respeitem as condições especificadas pelo dono do trabalho.
O equipamento do Arduino é uma plataforma de computação física: trata-
-se de um conjunto de sistemas digitais ligados a sensores e atuadores, que 
permitem construir sistemas que percebam a realidade e respondam com 
reações. Ele é baseado em uma placa com microcontrolador, com acessos 
de Entrada/Saída (I/O), sobre a qual foram desenvolvidas bibliotecas com 
funções que simplificam a sua programação, com sintaxe similar à utilizada 
nas linguagens C e C++.
História do Arduino2
O Arduino é umaplataforma de hardware programável e flexível projetada 
para artistas, designers, makers e inventores de coisas. Em muito pouco tempo, 
a pequena placa azul do Arduino motivou uma nova geração de makers de 
todas as idades, possibilitando a realização de projetos desde no ambiente 
universitário até em festivais de arte. Os projetos baseados em Arduino cos-
tumam exigir pouca ou nenhuma habilidade de programação ou conhecimento 
de teoria eletrônica — esse conhecimento geralmente é obtido ao longo do 
caminho (EVANS, 2011).
Capitaneado por Massimo Banzi como uma modesta ferramenta para 
seus estudantes no Interaction Design Institute Ivrea (IDII), o Arduino gerou 
uma revolução internacional do tipo “faça você mesmo” (ou DIY, da sigla em 
inglês para do it yourself ) na eletrônica. Você pode adquirir uma placa por 
um valor muito baixo (a ideia é que custe o equivalente a jantar uma pizza em 
um restaurante) ou construir o seu próprio a partir do zero: todos os esquemas 
de hardware e código-fonte estão disponíveis gratuitamente sob licenças 
públicas. Como resultado, o Arduino tornou-se o recurso open source mais 
influente do seu tempo.
O projeto tinha um desafio: como ensinar eletrônica aos alunos rapidamente. 
Era 2002 e Banzi havia sido contratado pelo IDII como professor associado 
para promover novas formas de fazer design interativo — um campo nascente, 
às vezes conhecido como physical computing. Com um orçamento cada vez 
menor e tempo de aula limitado, suas opções de ferramentas eram poucas.
Como muitos de seus colegas, no início Banzi contou com o microcontro-
lador BASIC Stamp, criado pela empresa californiana Parallax e utilizado por 
muitos engenheiros havia cerca de uma década. Codificado com a linguagem 
de programação BASIC, o Stamp era uma pequena placa de circuito — essen-
cialmente, uma fonte de alimentação, um microcontrolador, memória e portas 
de Entrada/Saída para conectar hardware. Mas o BASIC Stamp tinha dois 
problemas: não tinha poder de computação suficiente para alguns dos projetos 
que os alunos tinham em mente e também era caro demais (KUSHNER, 2011).
3História do Arduino
Figura 1. Primeiro protótipo do Arduino, quando o projeto ainda não tinha 
esse nome.
Fonte: Kushner (2011).
A proposta era que o Arduino consistisse em peças baratas que poderiam 
ser facilmente encontradas se os usuários quisessem construir suas próprias 
placas. Um ponto fundamental da proposta era garantir que o equipamento seria 
plug-and-play: algo que alguém poderia tirar de uma caixa, conectar em um 
computador e usar imediatamente. Placas como o BASIC Stamp exigiam que 
os usuários utilizassem outros hardwares periféricos, que adicionavam custo.
Com o desenvolver do projeto, foram produzidas, em caráter experimental, 
algumas dezenas de placas Arduino, já com um design muito próximo do que 
temos hoje no mercado. Essas placas foram distribuídas aos alunos da IIDI e a 
aceitação foi muito boa, diminuindo a curva de aprendizagem e possibilitando 
a aplicação quase que imediata de eletrônica — um assunto que antes exigia 
conhecimento prévio.
História do Arduino4
Hoje o Arduino conta com dezenas de versões para as mais diversas apli-
cações, sejam elas industriais, sejam comerciais, para hobistas, weareables, 
Internet das Coisas, etc. Essa democratização da eletrônica microcontrolada 
foi uma revolução, pois tornou acessível a todos o uso do estado da arte da 
tecnologia disponível atualmente.
O nome Arduino veio do nome de um pub italiano frequentado pelos criadores da 
plataforma, chamado Bar di Re Arduino, ou Bar do Rei Arduino.
A placa de desenvolvimento Arduino 
e seus recursos
O Arduino é composto de duas partes principais: placa Arduino, que é o 
hardware que trabalhamos quando construímos os objetos, e o Arduino IDE, 
o software que executamos no computador. Utilizamos o IDE para criar um 
sketch (um pequeno programa de computador) e fazemos upload para a placa 
Arduino. O sketch é o programa que controlará o Arduino (MASSIMO, 2011).
Existem inúmeras variações do Arduino, para diferentes aplicações, porém a 
mais utilizada é a versão Uno, que está em sua terceira revisão. Vamos ver agora 
as principais características do hardware do Arduino Uno (SOUZA, 2013).
A placa pode ser alimentada pela conexão USB ou por uma fonte de ali-
mentação externa. A alimentação externa é feita através do conector Jack, 
com positivo no centro, ou através do pino VIN, em que o valor de tensão deve 
estar entre os limites de 7V a 12V, para que tenha comportamento estável e 
não aqueça demais.
Note que o diodo D1 tem a função de proteger a placa de uma ocasional 
inversão de polaridade, quando utilizando a fonte externa.
5História do Arduino
Figura 2. Arduino Uno e esquema da fonte de alimentação.
Fonte: Adaptada de Arduindo ([201-?]).
USB
Fonte externa
6VDC a 12VDC
Regulador de tensão 5V
Diodo de proteção de
inversão de polaridade
LED indicador de 
placa alimentada
O Arduino ainda tem um fusível de proteção resetável de 500mA, que 
protege a porta USB do computador em caso de sobrecorrente. Também conta 
com um circuito para comutar a alimentação automaticamente entre a tensão 
da USB e a tensão da fonte externa. Caso haja uma tensão no conector da fonte 
de alimentação externa (conector Jack ou VIN) e a USB esteja conectada, a 
tensão de 5V será proveniente da fonte externa e a USB servirá apenas para 
comunicação com o PC. 
Ao utilizar a fonte externa, você deverá escolher entre utilizar o conector Jack ou o VIN. 
Não utilize os dois ao mesmo tempo, pois podem ocorrer danos à fonte.
Existe na placa um regulador de 3,3VDC. Esse componente é responsável 
por fornecer uma tensão contínua de 3,3V para a alimentação de circuitos ou 
shields que necessitem desse valor de tensão. Deve-se ficar atento ao limite 
máximo do valor da corrente que esse regulador pode fornecer, que, neste 
caso, é de 50mA.
História do Arduino6
O componente principal da placa Arduino Uno é o microcontrolador Atmel 
ATmega328, um dispositivo de 8 bits da família AVR com arquitetura RISC 
que pode contar também com encapsulamento DIP28 ou SMD. Ele tem 32kB 
de memória flash (mas 512 bytes são utilizados pelo bootloader), 2kB de 
memória RAM e 1kB de memória EEPROM. A placa Arduino Uno opera 
em 16MHz, valor do cristal externo que está conectado aos pinos 9 e 10 do 
microcontrolador.
O Arduino Uno tem 14 pinos de entrada e saída digitais e 6 pinos de entrada 
analógica. Esses Pinos operam em 5VDC, em que cada pino pode fornecer 
ou receber uma corrente máxima de 40mA. Cada pino possui um resistor de 
pull-up interno, que pode ser habilitado por software. A seguir são apresentadas 
as funções principais de alguns desses pinos (ARDUINO, [201-?]).
 � PWM: os pinos 3, 5, 6, 9, 10 e 11 podem ser utilizados como saídas 
PWM de 8 bits por meio da função analogWrite().
 � Comunicação serial: os pinos 0 e 1 podem ser utilizados para comuni-
cação serial. Esses pinos são ligados ao microcontrolador responsável 
pela comunicação USB com o PC.
 � Interrupção externa: os pinos 2 e 3 podem ser configurados para 
gerar uma interrupção externa por meio da função attachInterrupt().
 � SPI: os pinos 10 (SS), 11 (MOSI), 12 (MISO) e 13 (SCK) suportam 
comunicação SPI com o uso da biblioteca SPI.
 � LED: no pino 13 existe um LED built-in. Quando o valor do pino é 
HIGH, o LED está ligado, e quando o valor é LOW, o LED está desligado.
 � I2C: A4 ou pino SDA e A5 ou pino SCL. Suporta comunicação I2C 
utilizando a biblioteca Wire.
Para fazer a interface com o mundo analógico, a placa Arduino Uno possui 
6 entradas com resolução de 10 bits. Por padrão, a referência do conversor 
AD (analógico-digital) está ligada internamente a 5VDC, ou seja, quando 
a entrada estiver com 5V, o valor da conversão analógica-digital será 1023.
7História do Arduino
Figura 3. Arduino Uno e sua estrutura.
Fonte: Adaptada de Souza (2013).
Conector para gravação do ATmega328
Caso utilize estes sinais no projeto, 
tome cuidado,pois estão conectados 
ao outro microcontrolador para gravação
Os sinais em amarelo e vermelho
indicam dois pinos que estão em curto
LEDs de status da comunicação
serial entra placa e computador
LED conectado ao pino 13
do Arduino
Conector para gravação ICSP
do ATmega16U2
Conjunto microcontrolador e 
cristal que faz a interface USB 
com o computador
Conjunto microcontrolador e
cristal responsável pelo controle e
a leitura de todos os pinos da placa
Conector USB tipo B
Conector DC
Regula a 
tensão DC 
para 5V
Impede que a USB do computador
seja dani�cada em caso de 
sobrecorrente (acima de 500mA)
Veri�ca se a tensão DC está presente.
Se não estiver, deixa que a tensão 
da USB alimente o circuito Regula a
tensão DC
para 3,3V.
Botão de
reset
Sendo um projeto open source, todo o material sobre o Arduino pode ser encontrado 
na página do projeto. Esse material inclui esquema elétrico, lista de componentes, 
layout de placa, etc. Se quiser ver todo o material disponível, acesse o link a seguir e 
clique na aba DOCUMENTATION.
https://goo.gl/sLwqQg
Projetos baseados no Arduino 
Apesar de ter modelos e versões amplamente divulgados, existem iniciativas 
baseadas no Arduino que, graças ao seu apelo de livre uso e criação, foram 
desenvolvidas em paralelo e servem de fomento a novas comunidades. Vejamos 
duas dessas iniciativas.
História do Arduino8
Franzininho
A Franzininho foi desenvolvida para as atividades dentro do FAB LAB Livre 
SP durante o Arduino Day, São Paulo, 2017. Na época, chegou-se à conclusão 
de que seria melhor fazer placas compatíveis com Arduino para as pessoas 
montarem e terem experiência com solda. O desenvolvimento foi baseado no 
hardware das placas Arduino Gemma e Digispark (placas open hardware), e 
a nova placa foi batizada dando sequência à placa antecessora, Franzino, que 
também é open hardware e com a iniciativa DIY (SOUZA, [2018]). 
Figura 4. Primeiro protótipo do Franzininho.
Fonte: Santos ([2018]).
Após o Arduino Day de 2017, o layout da PCB (placa de circuito impresso) 
foi melhorado e foi incluída a bandeira do Brasil. Após um período trabalhando 
com a Franzininho V0RV1, foi desenvolvida uma nova versão com conector 
USB. Essa nova versão resolveu dois problemas: facilitou a fabricação e a 
orientação da placa ao conectá-la no computador.
9História do Arduino
Figura 5. Franzininho V2.
Fonte: Souza (2018).
O hardware Franzininho foi publicado com a licença CC-SA-4.0. Seu 
projeto é open hardware e permite que qualquer pessoa possa construir com 
ele, estudá-lo, modificá-lo, distribui-lo ou vendê-lo. A proposta é que todos 
os interessados possam montar o seu Arduino compatível, entender como 
funciona o circuito, fazer projetos e contribuir para o desenvolvimento de 
um projeto open source.
ArduSat
Abreviação de “Arduino Satellite”, o ArduSat é um nanossatélite open source, 
baseado no padrão CubeSat. A extensa gama de sensores Arduino a bordo 
provê aos alunos a oportunidade de criar seus próprios experimentos de satélite 
e coletar dados espaciais do mundo real usando a plataforma de prototipagem 
Arduino (GEEROMS et al., 2015). 
Quatro estudantes de pós-graduação da International Space University, 
com campus central localizado em Estrasburgo, França, fundaram em 2012 
a empresa NanoSatisfi Inc. O lançamento bem-sucedido da campanha de 
crowdfunding ArduSat no KickStarter resultou em um primeiro projeto do 
protótipo da carga útil ArduSat em agosto de 2012 e um primeiro teste de alta 
altitude em outubro daquele mesmo ano.
Em 3 de agosto de 2013, o veículo japonês de transferência de carga HTV-4 
foi lançado ao espaço pelo Centro Espacial Tanegashima, no Japão, para a 
Estação Espacial Internacional (ISS), carregando dois ArduSats entre as 3,6 
toneladas de experimentos científicos.
História do Arduino10
ArduSat-X e ArduSat-1 foram lançados ao espaço junto com o satélite 
vietnamita PicoDragon CubeSat em 19 de novembro de 2013, do módulo 
japonês Kibo, na Estação Espacial Internacional.
ArduSat-X e ArduSat-1 são duas unidades de CubeSats, com lados de 
10 cm e uma massa total de aproximadamente 1 quilograma. A minúscula 
espaçonave e os subsistemas de estrutura e potência baseiam-se no padrão 
CubeSat, uma especificação de código aberto criada em 1999, que define 
uma plataforma padrão de baixo custo para a pesquisa espacial. Ambos os 
satélites transportam cerca de 20 sensores, incluindo um espectrômetro óptico 
e uma câmera. 
O cérebro do ArduSat-1 é o ArduSat Payload Processor Module (ASPPM). 
Ele possui um processador supervisor que consiste em um ATmega2561 
(semelhante a um Arduino Mega) mais 16 nós de processamento, cada um 
rodando um ATmega328P, como o Arduino Uno.
Figura 6. ArduSat.
Fonte: Adaptada de Rodgers (2012).
Antena dipolo cruzado
Painel solar
Placa de carga útil do 
ArduSat (ASPPM):
Arduinos + conjunto de
sensor com câmeras
Sistema de alimentação elétrica
Estrutura CubeSat 1U
Computador de controle de voo
Transceptor UHF
11História do Arduino
ARDUINO. Arduino uno rev3. [S. l.], [201-?]. Disponível em: https://store.arduino.cc/usa/
arduino-uno-rev3. Acesso em: 4 abr. 2019.
EVANS, B. Beginning arduino programming. EUA: Apress, 2011.
GEEROMS, D. et al. Ardusat, an arduino-based cubesat providing students with the 
opportunity to create their own satellite experiment and collect real-world space 
data. ESA SYMPOSIUM ON EUROPEAN ROCKET AND BALLOON PROGRAMMES AND 
RELATED RESEARCH, 22., 2015. Proceedings… Disponível em: https://pdfs.semantics-
cholar.org/5ab3/ad770bf2a97d944bc064f6fbcc8dac11756e.pdf. Acesso em: 4 abr. 2019.
KUSHNER, D. The making of Arduino. US, 2011. Disponível em: https://spectrum.ieee.org/
geek-life/hands-on/the-making-of-arduino. Acesso em: 4 abr. 2019.
MASSIMO, B. Getting started with Arduino. 2. ed. [S. l.]: O’Reilly, 2011.
RODGERS, E. ArduSat Kickstarter project puts an Arduino-based satellite up for rent. [S. l.], 
2012. Disponível em: https://www.theverge.com/2012/6/21/3108858/ardusat-kickstarter-
-arduino-satellite-cubesat. Acesso em: 4 abr. 2019.
SOUZA, F. Arduino UNO. Brasil, 2013. Disponível em: https://www.embarcados.com.br/
arduino-uno/. Acesso em: 4 abr. 2019.
SOUZA, F. Sobre o projeto franzininho. Brasil, [2018]. Disponível em: https://franzininho.
gitbook.io/franzininho-docs/sobre-o-projeto-franzininho. Acesso em: 4 abr. 2019.
SOUZA, F. Conheça a Franzininho e monte seu próprio Arduino. Brasil, 2018. Disponível 
em: https://www.filipeflop.com/blog/conheca-a-franzininho-e-monte-seu-proprio-
-arduino/. Acesso em: 4 abr. 2019.
Leitura recomendada
EQUIPE BAÚ DA ELETRÔNICA. Placas Arduino: modelos de entrada, diferenças e apli-
cações. Rio de Janeiro, 2018. Disponível em: http://blog.baudaeletronica.com.br/
placas-arduino/. Acesso em: 4 abr. 2019.
História do Arduino12
ROBÓTICA
Flávio Luiz Puhl Junior
Estrutura do Arduino
Objetivos de aprendizagem
Ao final deste texto, você deve apresentar os seguintes aprendizados:
 � Reconhecer os comandos em linguagem C para programar o Arduino.
 � Aplicar a estrutura do código em C utilizando sketches.
 � Analisar o uso das bibliotecas no auxílio da programação do Arduino.
Introdução
Quando falamos de Arduino, geralmente a primeira imagem que vem 
à nossa cabeça é a famosa placa azul do Arduino Uno, talvez devido à 
facilidade em fazer propaganda com elementos físicos e visuais. Mas não 
devemos esquecer que o hardware é apenas metade do nosso recurso. 
A outra metade, e não menos importante, é o software. Por meio do sof-
tware daremos inteligência e utilidade para as placas de desenvolvimento, 
programando-as com comandos específicos.
Neste capítulo, você vai aprender a utilizar a IDE (Integrated Develop-
ment Environment) do Arduino e suas sketches. Também irá aprender a 
utilizar os comandos mais usuais e a estruturar o código da programação, 
além de ver como as bibliotecas podem contribuir para o seu código. 
Ambiente de programação e comandos
O ambiente de desenvolvimento integrado (IDE, IntegratedDevelopment 
Environment) do Arduino é um aplicativo disponível para Windows, MacOS 
e Linux, desenvolvido em linguagem de programação Java. Ele é usado para 
escrever e carregar programas em placas compatíveis com Arduino e outras 
placas de desenvolvimento.
O Arduino IDE é um ambiente simples e funcional para desenvolvimento 
do código a ser carregado no Arduino. Existem outros ambientes disponíveis 
para utilização, como a programação visual utilizando XOD ou a ferramenta 
da Microsoft Visual Studio, mas focaremos no uso do Arduino IDE.
Arduino IDE
Conforme você pode ver na Figura 1, a IDE tem uma interface simples e 
funcional com os recursos necessários para programar o Arduino.
Figura 1. Arduino IDE versão 1.8.5
Menu
Veri�ca
o código
Veri�ca o código,
compila e faz 
upload para 
o hardware
Mensagem
para o 
usuário
Hardware
conectado e
porta serial
Escreva aqui
seu código
Gerenciamento
de abas
Monitor
serial
Novo código Abre Salva
Entre as mais diversas características da IDE, as que se destacam por sua 
utilidade são as seguintes.
 � Monitor serial: permite enviar dados da execução do código pela 
porta serial e acompanhar a execução do código, servindo, inclusive, 
para depuração de rotinas, verificação de funcionamento, entrada de 
dados pelo usuário, etc. No menu é possível encontrar outra ferramenta 
semelhante, que foi adicionada nas últimas versões do programa: Plotter 
Serial. Nela é possível colocar os dados numéricos em forma de gráfico 
temporal e acompanhar as variações de modo mais visual.
 � Gerenciamento de abas: um recurso pouco difundido, mas muito útil 
conforme o código vai aumentando em complexidade, é a utilização de 
abas. Com elas é possível segmentar o código, colocando uma porção 
Estrutura do Arduino2
em cada aba e assim manter uma melhor organização. Você pode, por 
exemplo, manter o código principal em uma aba, cálculos em outra, 
atualização do display em outra etc.
 � Exemplos: uma das grandes vantagens da utilização deste ambiente 
é que ele acompanha uma série de exemplos de utilização dos mais 
diferentes recursos. Então, se houver alguma dúvida, basta abrir o 
exemplo e fazer o upload no seu Arduino para verificar o funcionamento. 
As outras funções disponíveis são semelhantes às nativas de sistemas 
baseados em Windows, e, portanto, de uso intuitivo, não sendo detalhadas 
neste material.
Linguagem de programação do Arduino
A linguagem de programação utilizada no Arduino é baseada na linguagem C, 
desenvolvida nos anos 1970 pela Bell Laboratories e que é muito tradicional 
e conhecida, porém com alguns facilitadores para interpretação humana.
A facilidade de programação do Arduino é que o código que você irá 
escrever, incluindo as sintaxes, estruturas, operadores, etc., são, fundamen-
talmente, idênticas às utilizadas em C, mas o Arduino possui, nativamente, 
algumas funções que descomplicam a criação do código, como pinMode(), 
digitalWrite() e delay() (EVANS, 2011). Observe a Figura 2.
Figura 2. (a) Código-fonte em C; (b) código-fonte utilizando a sintaxe do 
Arduino.
Fonte: (Evans, 2011).
(a) (b)
3Estrutura do Arduino
Os dois códigos apresentados possuem exatamente a mesma funcionalidade, 
que é piscar o LED conectado ao pino 13 da placa Arduino, e os dois podem 
ser compilados e gravados em um Arduino utilizando a IDE. A diferença 
é que o código escrito em linguagem C é razoavelmente mais complexo de 
interpretar do que o outro código.
A lista completa de funções disponíveis para programação do Arduino encontra-se 
no link a seguir.
https://qrgo.page.link/KBjk
O código é composto por uma sequência de comandos. Alguns desses 
comandos são os seguintes (MONK, 2017).
Variáveis: representam uma região da memória usada para armazenar deter-
minada informação. Essa informação pode ser, por exemplo, um número, um 
caractere ou uma sequência de texto. Para podermos usar uma variável em 
um programa Arduino, precisamos fazer uma declaração de variável, como 
int led;. Neste caso está sendo declarada uma variável tipo int chamada led.
 � Tipo de dados: o tipo de dado de uma variável significa a natureza
da informação que se pode armazenar naquela variável. Em C, assim
como em muitas linguagens de programação, é obrigatório definir o 
tipo de dado no momento da declaração da variável, como o exemplo 
anterior. Veja a seguir alguns tipos de dados.
■ boolean: valor verdadeiro ou falso.
■ char: um caractere.
■ int: número inteiro de 16 bits com sinal (−32768 a 32767).
■ long: número inteiro de 32 bits com sinal (−2147483648 a 2147483647).
■ float: número real de precisão simples (ponto flutuante).
■ double: número real de precisão dupla (ponto flutuante).
■ string: sequência de caracteres.
Estrutura do Arduino4
Atribuição: atribuir um valor a uma variável significa armazenar o valor 
nela para posterior uso. O comando de atribuição em C é =. Para atribuirmos 
o valor 13 à variável led, devemos fazer assim: led = 13;. Os valores fixos 
usados no programa, como o valor 13, são chamados de constantes, pois o 
seu valor não muda.
Operadores: é um conjunto de um ou mais caracteres que serve para operar 
sobre uma ou mais variáveis ou constantes. Alguns dos operadores mais 
utilizados, mas não somente, são os seguintes.
 � Aritméticos
 ■ + : adição 
 ■ − : subtração
 ■ * : multiplicação
 ■ / : divisão
 � Lógicos
 ■ && : operador e
 ■ || : operador ou
 ■ == : igualdade
 ■ != : diferente
 ■ > ou >= : maior ou maior e igual
 ■ . 
A segunda parte, 2, é onde geralmente se declara as variáveis do código. 
Na verdade, as variáveis podem ser declaradasem qualquer ponto do código, 
inclusive dentro da rotina principal, mas a boa prática recomenda declará-las 
neste trecho, inclusive incluindo comentários pertinentes à funcionalidade de 
cada variável em caráter de documentação.
A terceira parte do código, 3, refere-se à configuração preliminar. Essa 
função é executada somente uma vez na inicialização do código. Aqui é 
recomendado declarar a funcionalidade dos pinos, configurações iniciais etc.
7Estrutura do Arduino
A quarta parte, 4, é onde consta a rotina principal, que será executada 
infinitamente enquanto o sistema estiver energizado. É aqui que seu código 
deve ser inserido por meio do uso de comandos e estruturas.
Somente utilizando comandos de controle é impossível criar um código 
completamente funcional — precisamos também de rotinas e decisões, pois, a 
partir delas, o código poderá tomar decisões baseadas em informações obtidas 
durante a execução do programa. Para a implementação de rotinas e decisões, 
utilizamos as estruturas de controle. 
Estruturas de controle são blocos de instruções que alteram o fluxo de 
execução do código de um programa. Com elas é possível executar comandos 
diferentes de acordo com uma condição ou repetir uma série de comandos 
várias vezes, por exemplo (EVANS, 2011). 
As estruturas de controle mais utilizadas são as seguintes.
while: é um controle que executa um conjunto de comandos repetidas vezes 
enquanto determinada condição for verdadeira; while em inglês significa 
“enquanto”. Ele segue o formato da Figura 5.
Figura 5. Estrutura de controle while.
if: é uma das estruturas mais básicas de programação em geral. If significa 
“se” em inglês. Ele verifica uma expressão e, apenas se ela for verdadeira, 
executa um conjunto de comandos. Seu formato é apresentado na Figura 6.
Figura 6. Estrutura de controle if.
Estrutura do Arduino8
if-else: o if-else pode ser visto como uma extensão do comando if. Else em 
inglês significa “caso contrário”, e o comando faz isto: “se isso for verdadeiro, 
então faça aquilo; caso contrário, faça outra coisa”. Veja a Figura 7.
Figura 7. Estrutura de controle if-else.
for: o comando for nada mais é do que um while acrescido de parâmetros de 
inicialização e finalização. É necessário definir o seguinte.
 � Condição: é uma expressão verificada repetidamente; enquanto ela for 
verdadeira, os comandos entre {} continuam sendo executados.
 � Inicialização: executado apenas uma vez no início, este comando 
define a condição inicial.
 � Finalização: é um comando executado repetidas vezes ao final de cada 
repetição dos comandos entre {}.
Na Figura 8, o comando inicia a vaiável i em 0 (i=0), executa o código entre 
{} enquanto i for menor ou igual a 5 (i. Isto irá fazer com que o compilador acrescente esta biblioteca nos dados 
enviados para o Arduino.
Pode parecer que essas funções são simples comandos para acionar uma 
saída digital, por exemplo, mas, na verdade, são várias linhas de código que, 
quando executadas, acionam a saída digital, porém tudo isso está condensado 
em uma única função.
As bibliotecas padrão do Arduino, que não precisam ser declaradas desse 
modo porque são automaticamente incluídas, são as seguintes (ARDUINO, 
2019):
 � EEPROM: usada para ler e gravar dados em uma memória EEPROM 
no Arduino. No Uno, a EEPROM tem o tamanho de 1024 bytes e, no 
Mega, de 4096 bytes.
 � Ethernet: permite conectar o Arduino à internet ou à rede local usando 
um Ethernet Shield.
 � Firmata: permite a comunicação entre o Arduino e aplicações em um 
computador via protocolo de comunicação serial.
 � GSM: conecta a uma rede GSM/GPRS usando um shield GSM.
 � LiquidCrystal: com esta biblioteca podemos controlar displays de 
cristal líquido (LCD).
 � SD: biblioteca muito importante, usada para que seja possível escrever 
e ler dados em cartões de memória SD/SDHC.
 � Servo: controla motores servo.
 � SPI: comunicação com dispositivos usando o barramento SPI (Serial 
Peripheral Interface).
 � SoftwareSerial: permite a comunicação serial usando os pinos digitais 
da placa.
 � Stepper: controla motores de passo.
 � TFT: permite desenhar imagens e formas e escrever texto em uma 
tela TFT.
 � WiFi: permite conexão à rede local e à internet por meio de um shield 
WiFi.
11Estrutura do Arduino
 � Wire: permite enviar e receber dados por meio de uma interface TWI/
I2C (interface a dois fios) em uma rede de dispositivos ou sensores.
Embora faça parte do grupo de bibliotecas que é instalada com o Arduino 
IDE, a biblioteca LiquidCrystal não está adicionada ao compilador, então 
é necessário incluí-la no código com a linha #include.
Com isso podemos utilizar a série de comandos que esta biblioteca disponi-
biliza para configurar e utilizar os displays no nosso projeto. Veja a Figura 10.
Figura 10. Comandos de configuração de um display LCD.
Outras bibliotecas que não são distribuídas por padrão com o Arduino 
IDE podem ser adicionadas conforme explicado anteriormente. Elas oferecem 
funções adicionais a bibliotecas existentes ou novas funcionalidades não 
presentes em bibliotecas padrão, permitindo estender o uso do Arduino de 
forma praticamente ilimitada.
O Arduino tem muitas ferramentas de simulação, tanto on-line como off-line. Essas 
ferramentas são muito úteis, pois possibilitam testar seu código sem a necessidade de 
ter fisicamente o hardware (placa Arduino, displays, servomotores etc.) e assim avaliar 
com muita precisão o resultado antes de investir financeiramente no projeto, além 
de auxiliar com a documentação.
Estrutura do Arduino12
Uma ferramenta online de simulação que está sendo muito utilizada atualmente 
é a Tinkercad, fornecida gratuitamente pela Autodesk. Essa ferramenta tem muitos 
recursos de simulação de hardware, além de compilar e mostrar em tempo real a 
execução do código. 
Ela tem um recurso muito útil na depuração de códigos (e que não existe na Arduino 
IDE), que são os breakpoints. Os breakpoints permitem interromper a execução do 
código em determinada linha de código para você poder observar as condições e 
variáveis e assim corrigir falhas na programação.
ARDUINO. Libraries. [S. l.], 2019. Disponível em: https://www.arduino.cc/en/reference/
libraries. Acesso em: 19 maio 2019.
EVANS, B. Beginning Arduino Programming. EUA: Apress, 2011.
MONK, S. Programação com Arduino: começando com sketches. Porto Alegre: Bookman, 
2017. (Série Tekne).
POSH, M. Hands-on embedded programming with C++17. Birmingham: Packt Publishing, 
2019.

Mais conteúdos dessa disciplina