College Online
0%

Sistemas Embarcados e IoT

Modulo 3 · Aula 2 ~20 min de leitura Nivel: Intermediario

Video da aula estara disponivel em breve

O que e um Sistema Embarcado?

Um sistema embarcado e um sistema computacional projetado para executar uma funcao dedicada dentro de um sistema maior. Diferente de um computador de proposito geral (PC), um sistema embarcado e otimizado para uma tarefa especifica, com restricoes de custo, consumo de energia, tamanho e — frequentemente — tempo real.

Exemplos cotidianos de sistemas embarcados:

Diagrama — Arquitetura de Sistema Embarcado
  ┌──────────────────────────────────────────────┐
  │           Mundo Fisico (ambiente)            │
  └────────┬────────────────────────┬────────────┘
           │ sensores               │ atuadores
           v                        ^
  ┌────────────────┐      ┌─────────────────┐
  │  Condicionamento│      │  Drivers de     │
  │  de Sinal       │      │  Potencia       │
  │  (amp, filtro)  │      │  (ponte H, PWM) │
  └───────┬────────┘      └────────┬────────┘
          │ ADC                    │ DAC/GPIO
          v                        ^
  ┌──────────────────────────────────────┐
  │         Microcontrolador             │
  │  ┌─────────┐  ┌──────────┐          │
  │  │  CPU    │  │ Firmware │          │
  │  │         │  │ (bare-   │          │
  │  │  Timer  │  │  metal   │          │
  │  │  UART   │  │  ou RTOS)│          │
  │  │  ADC    │  │          │          │
  │  └─────────┘  └──────────┘          │
  └──────────────┬───────────────────────┘
                 │ comunicacao
                 v
  ┌──────────────────────────────────────┐
  │   Interface (display, LEDs, rede)    │
  └──────────────────────────────────────┘

Restricoes de Tempo Real

Muitos sistemas embarcados são sistemas de tempo real — devem responder a eventos dentro de prazos (deadlines) rigidos. Ha dois tipos:

!
Tempo real nao e "rapido" Um sistema de tempo real nao precisa ser necessariamente rapido — precisa ser previsivel. O que importa e o WCET (Worst-Case Execution Time): o tempo maximo que uma tarefa pode levar para executar. Se o WCET de todas as tarefas e menor que seus respectivos deadlines, o sistema e viavel.

Interfaceamento com Sensores

Sensores convertem grandezas fisicas em sinais eletricos que o microcontrolador pode processar:

Tipos Comuns de Sensores
  Grandeza         Sensor               Interface     Saida
  ──────────────────────────────────────────────────────────────
  Temperatura      LM35, DS18B20        Analog/1-Wire  0.01V/°C
                   BME280               I2C/SPI        Digital
  Umidade          DHT22, BME280        1-Wire/I2C     Digital
  Pressao          BMP280, BME280       I2C/SPI        Digital
  Distancia        HC-SR04 (ultra-som)  GPIO (trigger) Pulso
                   VL53L0X (ToF laser)  I2C            Digital
  Aceleracao       MPU6050 (6-axis)     I2C            Digital
  Luminosidade     LDR (resistor)       Analog (ADC)   Resistencia
  Corrente         ACS712               Analog (ADC)   Proporcional
  Presenca         PIR HC-SR501         GPIO           Digital (0/1)
C (Leitura de sensor via I2C)
// Leitura simplificada do sensor BME280 via I2C
// Endereco I2C: 0x76 ou 0x77

float ler_temperatura_bme280(void) {
    uint8_t data[3];

    // 1. Enviar endereco do registrador de temperatura
    i2c_start();
    i2c_write(0x76 << 1);        // endereco do dispositivo + write
    i2c_write(0xFA);               // registrador temp_msb

    // 2. Ler 3 bytes de dados
    i2c_start();                     // repeated start
    i2c_write((0x76 << 1) | 1);   // endereco + read
    data[0] = i2c_read_ack();      // MSB
    data[1] = i2c_read_ack();      // LSB
    data[2] = i2c_read_nack();     // XLSB (4 bits)
    i2c_stop();

    // 3. Combinar bytes e aplicar compensacao
    int32_t raw = (data[0] << 12) | (data[1] << 4) | (data[2] >> 4);
    return compensar_temperatura(raw);  // algoritmo do datasheet
}

Protocolos de Comunicacao IoT

A Internet das Coisas (IoT) conecta sistemas embarcados a internet. Os protocolos de comunicacao mais usados diferem dos protocolos web tradicionais, pois precisam funcionar com restricoes de banda, energia e processamento:

Comparacao de Protocolos IoT
  Protocolo   Transporte  Modelo          Overhead  Alcance   Energia
  ──────────────────────────────────────────────────────────────────────
  MQTT        TCP         Pub/Sub         2 bytes   Wi-Fi     Medio
  CoAP        UDP         Request/Reply   4 bytes   Wi-Fi     Baixo
  HTTP        TCP         Request/Reply   ~100 bytes Wi-Fi    Alto
  LoRaWAN     LoRa        Pub/Sub         13 bytes  15 km     Muito baixo
  BLE         BT 4.0+     GATT services   ~20 bytes 30 m     Muito baixo
C (ESP32 — Publicacao MQTT)
// Publicar leitura de temperatura via MQTT (PubSubClient + ESP32)
#include <WiFi.h>
#include <PubSubClient.h>

WiFiClient espClient;
PubSubClient mqtt(espClient);

void publicar_temperatura() {
    float temp = ler_sensor();
    char payload[32];
    snprintf(payload, sizeof(payload), "{\"temp\": %.1f}", temp);

    mqtt.publish("casa/sala/temperatura", payload);
    // Topico: casa/sala/temperatura
    // Qualquer subscriber desse topico recebe a mensagem
}

Gerenciamento de Energia

Em dispositivos IoT alimentados por bateria, o consumo de energia e a restricao principal. Estrategias comuns:

C (ESP32 — Deep Sleep)
// ESP32: acordar a cada 5 minutos, ler sensor, publicar, dormir
#define SLEEP_US  (5 * 60 * 1000000ULL)  // 5 minutos em microsegundos

void setup() {
    wifi_connect();
    mqtt_connect();
    publicar_temperatura();
    mqtt_disconnect();
    wifi_disconnect();

    // Configurar deep sleep com timer
    esp_sleep_enable_timer_wakeup(SLEEP_US);
    esp_deep_sleep_start();  // CPU desliga, RTC mantem timer
    // Ao acordar, executa setup() novamente desde o inicio
}

void loop() {
    // Nunca chega aqui — deep sleep reinicia do setup()
}

Edge Computing

Edge computing e o processamento de dados no proprio dispositivo (ou proximo a ele), em vez de enviar tudo para a nuvem. Vantagens:

i
TinyML — Machine Learning na borda Frameworks como TensorFlow Lite Micro permitem executar modelos de ML em microcontroladores com poucos KB de RAM. Aplicacoes incluem keyword spotting ("Hey Siri"), deteccao de anomalias em vibracao de maquinas, e classificacao de gestos.

No harness.os

Sistemas embarcados e IoT oferecem analogias diretas para a arquitetura do harness.os:

Exercicios

  1. Projete a arquitetura de um sistema embarcado para monitoramento de temperatura e umidade de uma estufa. Liste os componentes (sensor, MCU, comunicacao) e justifique suas escolhas.
  2. Compare MQTT e CoAP para um sistema com 100 sensores de temperatura publicando dados a cada 10 segundos. Qual protocolo e mais adequado? Considere consumo de energia e escalabilidade.
  3. Um ESP32 consome 150 mA quando ativo e 10 uA em deep sleep. Se ele acorda por 2 segundos a cada 5 minutos, qual e o consumo medio? Quanto tempo duraria com uma bateria de 2000 mAh?
  4. Explique a diferenca entre hard e soft real-time. De dois exemplos de cada e justifique a classificacao.
  5. Projete o fluxo de dados de um sistema IoT para monitoramento de qualidade do ar: sensor → MCU → cloud → dashboard. Inclua protocolos de comunicacao em cada etapa.

Resumo

Verifique seu entendimento

Qual protocolo IoT usa o modelo publish/subscribe sobre TCP e e o mais leve em termos de overhead?

  • HTTP REST — o padrao web universal
  • MQTT — header minimo de 2 bytes, ideal para dispositivos com recursos limitados
  • CoAP — protocolo request/response sobre UDP
  • LoRaWAN — comunicacao de longo alcance