Integração de Sensores DHT22, DS18B20 e SHT3x com STM32

A integração de sensores como DHT22, DS18B20Sensores de temperatura e umidade: Integração DHT22/DS18B20 com STM32Sensores de temperatura e umidade: Integração DHT22/DS18B20 com STM32Descubra como integrar os sensores DHT22 e DS18B20 ao STM32 para projetos IoT, monitoramento ambiental e automação com log em cartão SD. e SHT3x em sistemas embarcados com STM32 é fundamental para aplicações industriais, IoT e automação. Este artigo combina teoria e prática, explorando protocolos de comunicação, configuração de hardware, técnicas de software e estratégias avançadas para garantir leituras precisas e estáveis.

🔍 Índice🔗

2. Tipos de Sensores e Características

3. Hardware e Diagramas de Conexão

4. Protocolos de Comunicação: 1-Wire, DHT e I²C

5. Configuração de GPIO e Periféricos no STM32O que é STM32 e por que usá-lo?O que é STM32 e por que usá-lo?Descubra os principais benefícios, arquitetura ARM Cortex-M e aplicações práticas dos microcontroladores STM32. Comece a inovar agora.

6. Implementação de Código para DHT22, DS18B20Sensores de temperatura e umidade: Integração DHT22/DS18B20 com STM32Sensores de temperatura e umidade: Integração DHT22/DS18B20 com STM32Descubra como integrar os sensores DHT22 e DS18B20 ao STM32 para projetos IoT, monitoramento ambiental e automação com log em cartão SD. e SHT3x

7. Tratamento de Erros, CRC e Calibração

8. Exemplos Práticos e Aplicações

9. Otimizações com Filtros e RTOS

10. Teste, Depuração e Conclusão

Introdução🔗

Sensores de temperatura e umidade são componentes críticos em sistemas embarcados. Dispositivos como DHT22Sensores de temperatura e umidade: Integração DHT22/DS18B20 com STM32Sensores de temperatura e umidade: Integração DHT22/DS18B20 com STM32Descubra como integrar os sensores DHT22 e DS18B20 ao STM32 para projetos IoT, monitoramento ambiental e automação com log em cartão SD. (digital), DS18B20Sensores de temperatura e umidade: Integração DHT22/DS18B20 com STM32Sensores de temperatura e umidade: Integração DHT22/DS18B20 com STM32Descubra como integrar os sensores DHT22 e DS18B20 ao STM32 para projetos IoT, monitoramento ambiental e automação com log em cartão SD. (1-Wire) e SHT3x (I²C) destacam-se por sua precisão e facilidade de integração. Este artigo aborda desde a conexão física até técnicas avançadas de software, garantindo robustez em ambientes desafiadores.

Tipos de Sensores e Características🔗

SensorProtocoloResoluçãoFaixa de TemperaturaAplicações Típicas
DHT22Digital0.5°C / 2% umidade-40°C a 80°CMonitoramento ambiental
DS18B201-Wire0.0625°C-55°C a 125°CIndustrial
SHT31I²C0.2°C / 2% umidade-40°C a 125°CAlta precisão

DHT22 vs. SHT3x:

Hardware e Diagramas de Conexão🔗

Diagrama de Conexão (DHT22 e DS18B20)

graph TD STM32 -->|GPIO PA5| DHT22 STM32 -->|GPIO PA6| DS18B20 DHT22 -->|VCC| 3.3V DHT22 -->|GND| GND DS18B20 -->|VDD| 3.3V DS18B20 -->|GND| GND DS18B20 -->|DQ| 4.7kΩ --> VCC

Considerações de Hardware

Protocolos de Comunicação🔗

Protocolo DHT22

1. Inicialização: MCU envia pulso LOW de 18 ms.

2. Resposta: Sensor confirma com 80µs LOW + 80µs HIGH.

3. Dados: 40 bits (16 bits temperatura, 16 bits umidade, 8 bits checksum).

Protocolo 1-Wire (DS18B20)

  • Reset: Pulso LOW de 480µs.
  • Comandos ROM: 0xCC (pular identificação).
  • Leitura: 0xBE para ler 9 bytes do scratchpad.

Protocolo I²C (SHT3x)

  • Endereço: 0x44 (7-bit).
  • Comandos:
    • Iniciar medição: 0x2C06 (alta repetibilidade).
    • Ler dados: 6 bytes (temperatura, umidade, CRC).

Configuração de GPIO e Periféricos no STM32🔗

GPIO para DHT22 e DS18B20

  • Modo Open-Drain: Evita conflitos no barramento.
  • Alternância Entrada/Saída: Necessária para controle bidirecional.

Exemplo (CubeMX):

// Configuração do DS18B20 (PA6)
GPIO_InitTypeDef gpio;
gpio.Pin = GPIO_PIN_6;
gpio.Mode = GPIO_MODE_OUTPUT_OD;
gpio.Pull = GPIO_NOPULL;
gpio.Speed = GPIO_SPEED_FREQ_HIGH;
HAL_GPIO_Init(GPIOA, &gpio);

I²C para SHT3x

I2C_HandleTypeDef hi2c1;
hi2c1.Instance = I2C1;
hi2c1.Init.ClockSpeed = 100000; // 100 kHz
hi2c1.Init.DutyCycle = I2C_DUTYCYCLE_2;
HAL_I2C_Init(&hi2c1);

Implementação de Código🔗

Leitura do DHT22 (Alternativa com Timer)

void DHT22_ReadData(float *temp, float *humid) {
    uint8_t data[5] = {0};
    // Pulso de inicialização
    HAL_GPIO_WritePin(DHT_PORT, DHT_PIN, GPIO_PIN_RESET);
    HAL_Delay(18);
    HAL_GPIO_WritePin(DHT_PORT, DHT_PIN, GPIO_PIN_SET);
    // Configurar como entrada e medir pulsos
    for (int i = 0; i < 40; i++) {
        data[i/8] <<= 1;
        if (medir_pulso() > 30) data[i/8] |= 1; // 30µs como limite
    }
  • temp = (data[2] << 8 | data[3]) * 0.1;
  • humid = (data[0] << 8 | data[1]) * 0.1;
}

Leitura do SHT3x via I²C

uint8_t sht31_read(float *temp, float *humid) {
    uint8_t cmd[2] = {0x2C, 0x06};
    uint8_t data[6];
    HAL_I2C_Master_Transmit(&hi2c1, 0x44 << 1, cmd, 2, 100);
    HAL_Delay(20);
    HAL_I2C_Master_Receive(&hi2c1, 0x44 << 1, data, 6, 100);
    // Verificar CRC
    if (crc8(data, 2) != data[2] || crc8(data+3, 2) != data[5]) return 1;
  • temp = -45 + 175 * ((data[0] << 8) | data[1]) / 65535.0;
  • humid = 100 * ((data[3] << 8) | data[4]) / 65535.0;
return 0; }

Tratamento de Erros e Calibração🔗

Técnicas Comuns

Exemplo de CRC para SHT3x:

$$ \text{CRC} = \sum_{i=0}^{n} (d_i \oplus \text{0x31}) \gg 1 $$

Calibração Prática

  • Compare leituras com um sensor de referência.
  • Ajuste linear: \( y = ax + b \), onde \( a \) e \( b \) são fatores de correção.

Exemplos Práticos🔗

1. Estação Meteorológica:

2. Monitoramento Industrial:

3. Irrigação Automática:

Otimizações🔗

// Exemplo de média móvel
#define SAMPLES 5
float buffer[SAMPLES], sum = 0;
for (int i = 0; i < SAMPLES-1; i++) {
    buffer[i] = buffer[i+1];
    sum += buffer[i];
}
sum = (sum + new_temp) / SAMPLES;

Teste e Depuração🔗

printf("DHT22: %.1f°C | SHT31: %.1f°C\n", temp_dht, temp_sht);
  • Teste de Estresse: Exponha sensores a temperaturas extremas e valide a estabilidade.

Conclusão🔗

A integração de sensores com STM32 requer atenção a detalhes como temporização, tratamento de erros e seleção de protocolos. Com as técnicas apresentadas-desde configuração de GPIO até otimizações com RTOS-é possível desenvolver sistemas robustos para aplicações críticas. Experimente combinar diferentes sensores e protocolos, aproveitando a flexibilidade do STM32O que é STM32 e por que usá-lo?O que é STM32 e por que usá-lo?Descubra os principais benefícios, arquitetura ARM Cortex-M e aplicações práticas dos microcontroladores STM32. Comece a inovar agora. para inovar em seus projetos embarcados. 🚀

Autor: Marcelo V. Souza - Engenheiro de Sistemas e Entusiasta em IoT e Desenvolvimento de Software, com foco em inovação tecnológica.

Referências🔗

Compartilhar artigo

Artigos Relacionados