Pular para o conteúdo principal

Arduino — Microcontroladores e Sistemas Embarcados

Microcontrolador vs Microprocessador

Ao longo deste curso estudamos CPUs (microprocessadores) em placas-mãe ATX e SoC. O Arduino representa um paradigma diferente: o microcontrolador — um computador completo em um único chip, projetado para controlar hardware diretamente.

Microprocessador (ex.: Intel Core i9): Microcontrolador (ex.: ATmega328P):

┌───────────────────────────────┐ ┌─────────────────────────────────┐
│ CPU Die │ │ ATmega328P │
│ ┌────┐ ┌────┐ ┌────┐ ┌────┐ │ │ ┌─────┐ ┌──────┐ ┌─────────┐ │
│ │Core│ │Core│ │Core│ │Core│ │ │ │ CPU │ │Flash │ │ SRAM │ │
│ └────┘ └────┘ └────┘ └────┘ │ │ │(ALU)│ │ 32KB │ │ 2KB │ │
│ ┌─────────────────────────┐ │ │ └─────┘ └──────┘ └─────────┘ │
│ │ Cache L1/L2/L3 │ │ │ ┌───────┐ ┌─────────────────┐ │
│ └─────────────────────────┘ │ │ │ I/O │ │ Periféricos │ │
└───────────────────────────────┘ │ │ GPIO │ │ UART/SPI/I2C │ │
│ │ ADC │ │ Timer / PWM │ │
Precisa de: RAM externa (DDR5) │ └───────┘ └─────────────────┘ │
SSD externo └─────────────────────────────────┘
Chipset (PCH)
Placa-mãe Tudo já está dentro do chip.
Sistema operacional Roda sem SO — código direto.
AspectoMicroprocessadorMicrocontrolador
MemóriaRAM e armazenamento externosFlash + SRAM + EEPROM integrados
PeriféricosVia chipset / expansão PCIeGPIO, ADC, UART, I2C, SPI no chip
Sistema OperacionalNecessário (Linux, Windows)Não necessário — bare metal
PotênciaAlta (watt a centenas de watts)Muito baixa (mW a watts)
ClockGHzMHz (8–240 MHz típico)
Preço chip$100–$1.000$1–$10
UsoComputação geralControle de hardware embarcado
Por que "bare metal"?

Um microcontrolador executa o código diretamente no hardware, sem sistema operacional intermediário. O programa gravado na Flash executa a partir do reset — ciclo infinito, controle total e previsível sobre cada pino e temporização.


Arquitetura do ATmega328P — Arduino Uno

O ATmega328P é o microcontrolador do Arduino Uno, baseado na arquitetura AVR (RISC de 8 bits da Atmel/Microchip).

ATmega328P — Diagrama de blocos:

┌─────────────────────────────────────────────────────────────┐
│ ATmega328P │
│ │
│ ┌─────────────┐ ┌──────────┐ ┌────────────────────┐ │
│ │ Flash │ │ SRAM │ │ EEPROM │ │
│ │ 32 KB │ │ 2 KB │ │ 1 KB │ │
│ │ (programa) │ │ (variáv.)│ │ (dados permanentes│ │
│ └──────┬──────┘ └────┬─────┘ └────────────────────┘ │
│ │ │ │
│ ┌──────┴───────────────┴──────────────────────────────┐ │
│ │ CPU — ALU 8-bit │ │
│ │ Program Counter · Stack Pointer │ │
│ │ Registradores (R0–R31) │ │
│ └──────────────────────┬───────────────────────────────┘ │
│ │ │
│ ┌──────────────────────┴───────────────────────────────┐ │
│ │ Periféricos integrados │ │
│ │ ┌────────┐ ┌────────┐ ┌───────┐ ┌────────────────┐ │ │
│ │ │ GPIO │ │ ADC │ │ UART │ │ Timer/PWM/SPI/ │ │ │
│ │ │23 pinos│ │ 6 ch. │ │(TX/RX)│ │ I2C │ │ │
│ │ └────────┘ └────────┘ └───────┘ └────────────────┘ │ │
│ └──────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
Clock: até 16 MHz · Tensão: 3,3 V ou 5 V · TDP: ~0,2 W

Memória no Arduino

A memória do Arduino mapeia diretamente os tipos que estudamos no módulo de Tipos de Memória:

TipoOndeUsoTamanho (Uno)
FlashNão volátilArmazena o programa (sketch)32 KB
SRAMVolátilVariáveis em execução, stack2 KB
EEPROMNão volátilDados que devem persistir após reset1 KB
SRAM é o recurso mais escasso

Com apenas 2 KB de SRAM, variáveis grandes, strings e buffers podem esgotar a memória. No Serial Monitor, a mensagem "SRAM overflow" causa comportamento imprevisível — não há sistema operacional para lidar com isso.


Pinos e Periféricos

GPIO — General Purpose Input/Output

Os pinos GPIO são o coração do Arduino — cada um pode ser configurado como entrada ou saída digital, ler sensores ou acionar atuadores:

Arduino Uno — layout de pinos:

┌─────────────────────────────────────────────┐
│ ARDUINO UNO │
│ │
│ Pinos Digitais: D0–D13 (14 pinos) │
│ ┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐ │
│ │D0││D1││D2││D3││D4││D5││D6││D7│... │
│ └──┘└──┘└──┘└──┘└──┘└──┘└──┘└──┘ │
│ D0=RX, D1=TX (UART) │
│ D3,D5,D6,D9,D10,D11 = PWM (~ marcado) │
│ D10=SS, D11=MOSI, D12=MISO, D13=SCK (SPI) │
│ D18=SDA, D19=SCL (I2C) │
│ │
│ Pinos Analógicos: A0–A5 (6 pinos) │
│ ┌──┐┌──┐┌──┐┌──┐┌──┐┌──┐ │
│ │A0││A1││A2││A3││A4││A5│ │
│ └──┘└──┘└──┘└──┘└──┘└──┘ │
│ ADC 10-bit: 0–5V → 0–1023 (1024 níveis) │
└─────────────────────────────────────────────┘

PWM — Pulse Width Modulation

O PWM simula uma saída analógica variando a largura do pulso digital:

PWM 0% (LOW): ___________________________________________
PWM 25%: ████___████___████___████___████___████___
PWM 50%: ████████____████████____████████____
PWM 75%: ████████████____████████████____
PWM 100% (HIGH): ████████████████████████████████████████

Usado para: intensidade de LEDs, velocidade de motores DC, controle de servos.

ADC — Conversor Analógico-Digital

O Arduino não entende tensões contínuas diretamente — o ADC converte um sinal analógico (0–5V) em um número digital (0–1023):

Sensor de temperatura → 2,5V analógico

┌────┴────┐
│ ADC │
│ 10-bit │ → 512 (valor digital)
└─────────┘
(2,5V / 5V) × 1024 = 512

Barramentos no Arduino

Os barramentos seriais do Arduino correspondem exatamente aos barramentos que existem na placa-mãe, em versões menores e mais simples. Consulte o módulo Barramentos para o contexto em PCs.

UART — Universal Asynchronous Receiver-Transmitter

Arduino ──TX──►──RX── Computador (via USB-Serial)
Arduino ◄─RX──◄──TX── Computador

Características:
- 2 fios (TX e RX)
- Assíncrono: não usa clock separado
- Full-duplex: envia e recebe ao mesmo tempo
- Velocidade típica: 9600 a 115200 baud
- Uso: Serial Monitor, GPS, módulo Bluetooth HC-05

I2C — Inter-Integrated Circuit

Arduino ──SDA──────┬────┬────┬── Dispositivos
──SCL──────┴────┴────┘
Dev.1 Dev.2 Dev.3

Características:
- 2 fios (SDA = dados, SCL = clock)
- Multi-master, multi-slave (até 127 dispositivos)
- Endereçamento: cada dispositivo tem endereço único (7 bits)
- Velocidade: 100 kHz (Standard) / 400 kHz (Fast)
- Uso: sensores (temperatura, pressão), displays OLED, RTC

SPI — Serial Peripheral Interface

Arduino ──MOSI──────┬────┬── Dispositivos
──MISO──────┴────┘
──SCK───────┬────┘
──SS(CS)────┴──── (um pino CS por dispositivo)

Características:
- 4 fios (MOSI, MISO, SCK, SS/CS)
- Síncrono: usa clock (SCK)
- Full-duplex e muito rápido (até MHz)
- Um pino SS por dispositivo escravo
- Uso: cartão SD, display TFT, módulo RF nRF24L01
BarramentoFiosVelocidadeDispositivosUso típico
UART2 (TX, RX)~115 kbps1–1 (ponto a ponto)Debug, GPS, Bluetooth
I2C2 (SDA, SCL)100–400 kbpsAté 127Sensores, displays
SPI4 (MOSI, MISO, SCK, SS)1–10 MbpsMúltiplos (1 SS/dev.)SD card, TFT, RF

Família Arduino — Evolução

PlacaChipArquiteturaFlashSRAMClockDestaques
Uno R3ATmega328PAVR 8-bit32 KB2 KB16 MHzMais popular, fácil de usar
Mega 2560ATmega2560AVR 8-bit256 KB8 KB16 MHzMais pinos (54 digitais)
NanoATmega328PAVR 8-bit32 KB2 KB16 MHzCompacto (mini breadboard)
DueAT91SAM3X8EARM Cortex-M3512 KB96 KB84 MHz32-bit, 3,3V
Nano 33 IoTSAMD21 + NINA-W102ARM Cortex-M0+256 KB32 KB48 MHzWiFi + Bluetooth integrados
Portenta H7STM32H747ARM Cortex-M7+M42 MB1 MB480 MHzDual-core, visão computacional

Ciclo de Execução — Como o Arduino Roda

RESET / POWER ON


Bootloader (gravado em Flash) → verifica se há upload pendente via USB

▼ (nenhum upload → executa o programa)
setup() executa uma vez
└── configura pinos, inicia UART, inicializa sensores


loop() executa para sempre (while true)
├── lê sensores (digitalRead, analogRead)
├── processa dados
└── age sobre atuadores (digitalWrite, analogWrite)

└────────────────────── (repete loop() indefinidamente)

Diferente de um PC que tem um scheduler de SO gerenciando processos, o Arduino executa uma coisa por vez, sem interrupções externas (exceto se programadas via ISR — Interrupt Service Routines).


Shields — Expansão Modular

Os shields são placas de expansão que se encaixam sobre o Arduino — analogia direta aos cards PCIe de uma placa-mãe ATX:

ShieldFunçãoAnalogia PC
Ethernet ShieldConectividade de redePlaca de rede PCIe
Motor ShieldControle de motores DC/paso a pasoControladora SATA (move coisas)
SD Card ShieldArmazenamento em cartão SDSSD M.2
GSM ShieldComunicação celular 2G/3GModem
Sensor ShieldFacilita conexão de sensoresHub USB
Stack de Shields:

┌────────────────┐ ← Shield 3 (ex.: LCD/Display)
├────────────────┤ ← Shield 2 (ex.: Motor Driver)
├────────────────┤ ← Shield 1 (ex.: Ethernet)
└────────────────┘ ← Arduino Uno (base)

Cada shield se conecta aos pinos do Arduino por baixo
e expõe os mesmos pinos por cima (pass-through)

Arduino vs Raspberry Pi

Dois dos dispositivos mais usados em educação de hardware — mas com propósitos fundamentalmente diferentes:

AspectoArduino UnoRaspberry Pi 5
TipoMicrocontroladorComputador SoC completo
Sistema operacionalNão — bare metalSim — Linux (Raspberry Pi OS)
CPUATmega328P @ 16 MHzARM Cortex-A76 @ 2,4 GHz
RAM2 KB SRAM4–8 GB LPDDR4X
Armazenamento32 KB FlashCartão microSD (8 GB+)
GPIO23 pinos (direto no chip)40 pinos (via chip de I/O)
Tempo de bootInstantâneo (~ms)~10–30 segundos
Consumo~0,2 W~5–12 W
Custo~$25~$80
Ideal paraControle em tempo real, sensores, atuadoresProcessamento, câmera, IA, servidor
Quando usar cada um?

Arduino: quando precisar de resposta em tempo real (ex.: piscar LED exatamente a cada 100ms, ler sensor a cada 10ms, controlar motor DC com precisão).

Raspberry Pi: quando precisar de processamento de dados, rede, câmera, interface gráfica ou rodar software complexo (Python, servidor web, reconhecimento de imagem).

Os dois juntos: Arduino faz o controle de hardware em tempo real e envia dados via UART/I2C para o Raspberry Pi, que processa e exibe resultados — arquitetura híbrida muito comum.


Aplicações e Contexto

O Arduino é amplamente usado em:

  • Educação: ensino de eletrônica, programação e sistemas embarcados
  • Robótica: controle de motores, servos e sensores de distância
  • IoT (Internet of Things): coleta de dados ambientais, automação residencial
  • Prototipagem rápida: validar ideias de produto antes de produzir hardware customizado
  • Arte e instalações interativas: sensores + LEDs + motores em instalações artísticas
Conexão com o conteúdo do curso

Os conceitos deste curso aparecem diretamente no Arduino:

  • Tipos de Memória → Flash (programa), SRAM (variáveis), EEPROM (dados persistentes)
  • Barramentos → UART, I2C, SPI implementados nos pinos do chip
  • Fatores de Forma → a placa Arduino Uno é um Mini-PCB de 68 mm × 53 mm
  • Gestão Térmica → microcontroladores consomem mW — dissipação raramente é um problema

Explorar Mais

Após entender os microcontroladores, vale revisitar os módulos principais com esse novo olhar: