Medição de Temperatura no Raspberry Pi com Sensores Maxim 1‑Wire e Bridge I2C DS2482
Medição de Temperatura no Raspberry Pi com Sensores Maxim 1‑Wire e Bridge I2C DS2482
Monitoramento preciso de temperatura é essencial para muitos projetos Raspberry Pi, desde controle climático até data logging. A família de sensores 1‑Wire da Maxim Integrated, como o DS18B20, oferece uma solução simples de baixo pin count. Usando o bridge DS2482 1‑Wire‑to‑I2C você pode anexar até dez sensores a um único barramento I2C, mantendo o footprint GPIO do Pi mínimo.
Visão Geral do Hardware
- Raspberry Pi – qualquer modelo com barramento I2C (ex.: Pi 2/3/4)
- DS2482‑2 – mestre 1‑Wire no I2C, endereço 0x18
- Sensores de temperatura Maxim 1‑Wire – até 10 unidades, cada uma com endereço 1‑Wire único
- Resistores pull‑up – 4.7 kΩ na linha de dados 1‑Wire (opcional se DS2482 gerencia pull‑ups)
Pré‑requisitos de Software
Estas instruções assumem uma instalação padrão Raspbian com source do kernel disponível. Você precisará recompilar o kernel após fazer as seguintes alterações.
Passo 1 – Habilitar DS2482 no Barramento I2C
Modifique arch/arm/mach-bcm2708/bcm2708.c no source do kernel para registrar o DS2482 como dispositivo I2C. Adicione a seguinte definição de platform device e array de board info:
static struct platform_device bcm2708_bsc1_device = { .name = "bcm2708_i2c", .id = 1, .num_resources = ARRAY_SIZE(bcm2708_bsc1_resources), .resource = bcm2708_bsc1_resources, }; static struct i2c_board_info __initdata pi_i2c_devs[] = { { I2C_BOARD_INFO("ds1307", 0x68)}, { I2C_BOARD_INFO("ds2482", 0x18)}, }; ... bcm_register_device(&bcm2835_thermal_device); i2c_register_board_info(1, pi_i2c_devs, ARRAY_SIZE(pi_i2c_devs)); Após adicionar o dispositivo, recompile e instale o kernel.
Passo 2 – Gerenciar Pull‑ups 1‑Wire no Kernel
Modifique drivers/w1/w1_io.c para permitir que o DS2482 controle o resistor pull‑up durante conversões. Substitua a função w1_post_write por:
static void w1_post_write(struct w1_master *dev) { if (dev->pullup_duration) { if (dev->enable_pullup && dev->bus_master->set_pullup) { dev->bus_master->set_pullup(dev->bus_master->data, 0); msleep(dev->pullup_duration); } else { msleep(dev->pullup_duration); } dev->pullup_duration = 0; } } Passo 3 – Adicionar Controle de Pull‑up ao Driver DS2482
Em drivers/w1/masters/ds2842.c adicione um helper que ativa o strong pull‑up do DS2482 quando um delay é requisitado:
static u8 ds2482_w1_set_pullup(void *data, int delay) { struct ds2482_w1_chan *pchan = data; struct ds2482_data *pdev = pchan->pdev; u8 retval = 1; u8 cfg; if (delay) { /* Garante que o barramento está idle antes de mudar config */ ds2482_wait_1wire_idle(pdev); /* Habilita tanto SPU quanto APU para strong pull‑up */ retval = ds2482_send_cmd_data(pdev, DS2482_CMD_WRITE_CONFIG, ds2482_calculate_config(DS2482_REG_CFG_SPU | DS2482_REG_CFG_APU)); ds2482_wait_1wire_idle(pdev); } return retval; } Passos Finais
- Recompile e reinicie o Pi com o novo kernel.
- Verifique se o DS2482 aparece sob
/sys/bus/i2c/devices/1-0018. - Conecte seus sensores Maxim 1‑Wire à linha de dados do DS2482 (pino 1) e ground.
- Verifique se cada sensor aparece sob
/sys/bus/w1/devices/e quecat /sys/bus/w1/devices/28‑xxxxxxxxxxxx/w1_slaveretorna um valor de temperatura.
Com esses ajustes de kernel no lugar, o Raspberry Pi pode ler confiavelmente até dez sensores de temperatura 1‑Wire através de um único bridge DS2482, tornando‑o ideal para projetos de monitoramento multi‑sensor.
Recursos Adicionais
Processo de manufatura
- Sistema Integrado de Controle de Acesso com QR, RFID e Verificação de Temperatura
- Construa um Registrador de Temperatura com Raspberry Pi e Sensor I2C de $5
- Perfilamento de Temperatura Preciso no Raspberry Pi com Python, SQLite e LabVIEW
- Conecte Múltiplos Sensores DS18B20 1-Wire ao Raspberry Pi para Monitoramento Preciso de Temperatura
- Monitor de Temperatura e Umidade em Rede com Raspberry Pi – Guia DIY de Configuração
- Como Ler Temperatura com DS18B20 no Raspberry Pi 2
- Monitoramento Profissional de Temperatura com Raspberry Pi e DS18B20
- Construa um Sensor de Temperatura Remoto com Raspberry Pi e Python – Guia Passo a Passo
- Monitoramento Contínuo de Temperatura e Umidade no Raspberry Pi com EzTemp
- Monitoramento Preciso de Temperatura em Closet de Servidores com Raspberry Pi