No mundo Arduino, os sensores de temperatura mais comuns são os veneráveis DHT11 e DHT22. Eles costumam vir em todo kit Arduino, até naqueles para crianças. Também estimam umidade relativa, então parecem perfeitos para montar aquela "estação metereológica" (*). Porém, eles têm alguns defeitos:
Para aplicações onde só é necessário ler a temperatura, há um sensor igualmente comum, porém muito melhor: o DS18B20.
Esse dispositivo implementa o protocolo 1-Wire, que é um padrão da indústria e pode conectar muitos dispositivos num mesmo barramento de dados. (Apesar de que não há muitos dispositivos 1-Wire à venda no Brasil, fora o próprio DS18B20.) O protocolo 1-Wire também funciona a distâncias relativamente longas: dezenas ou até centenas de metros a depender da qualidade do cabo.
O nome "1-Wire" vem do fato de alguns dispositivos funcionarem com apenas um fio ativo, o fio de dados, no chamado "modo parasita". Na verdade o fio preto também tem de existir, então é na verdade 2-Wire :) No modo parasita, o sensor extrai energia do próprio fio de dados para funcionar. O consumo de energia dos sensores 1-Wire é minúsculo. Deve haver um resistor "pull-up" no fio de dados.
O modo parasita funciona, mas tem suas desvantagens. O protocolo tem de seguir certas convenções para manter um fluxo de energia suficiente. Há limitações no comprimento do cabo, no número de sensores do barramento e na temperatura máxima de operação. Sempre que possível, é melhor usar 1-Wire no modo alimentado, ou seja, com um terceiro fio fornecendo 3.3V ou 5V (outra vantagem: funciona com 3.3V direto, não precisa de conversor de nível). O resistor pull-up deve ser mantido.
Em todo caso, o sensor 1-Wire desliga quando está em desuso, portanto nunca vai quedar travado. Ele deve ser ativado antes de fornecer uma leitura. Isso colabora para sua resiliência e baixo consumo de energia.
O sensor de temperatura DS18B20 é barato e fácil de encontrar, mesmo no Brasil. É fornecido em diversos empacotamentos, inclusive à prova d'água, podendo ser utilizado em aplicações expostas.
O interfaceamento com o DS18B20 é relativamente simples, há bibliotecas para Arduino e para todas as plataformas embarcadas, e os exemplos são abundantes na Internet. Esta é minha aplicação em MicroPython ESP32, que faz uso de módulos inclusos no MicroPython.
O erro de programação mais comum é esperar tempo de menos entre o comando de ativação do sensor convert_temp e o comando de leitura read_temp. O datasheet recomenda 750ms para a precisão máxima, eu espero um segundo inteiro.
Outro problema é a presença de chips falsos no mercado, cujo comportamento é semelhante porém não exatamente igual ao DS18B20 original. A qualidade dos fakes varia, indo de inutilizáveis até aqueles que implementam recursos extras.
A maioria dos chips falsos falha em modos de uso que o Arduinista típico nunca exercita, então o problema passa desapercebido. O maior sintoma de um chip falsificado ruim é não funcionar em modo parasita. Se o seu exemplar funciona em modo parasita, deve ser bom o suficiente para o feijão-com-arroz que é ler temperatura.
Na verdade, a maior chance é que você adquira um chip falsificado. Para adquirir o original, teria de comprar numa Mouser da vida, pagar DHL e um caminhão de imposto sobre o frete, o que ninguém quer fazer só para comprar um sensor do tamanho de um comprimido...
(*) Pessoalmente, montei minha estação metereológica com um chip BME280, que também mede pressão atmosférica. O código está aqui.
Porém esse negócio não é tão simples. Achei muito difícil posicionar a estação de modo a obter leituras realistas. Não pode ficar exposto ao sol, não pode pegar chuva, mas também não pode ficar num ambiente confinado. Tem de ficar "ao tempo", como numa varanda grande, longe de qualquer superfície aquecida direta ou indiretamente pelo sol, e longe de qualquer fonte de calor, por menor que seja (inclusive o próprio Arduino, bem como sua fonte de alimentação).
Se a estação metereológica tivesse anemômetro e pluviômetro, teríamos requisitos de funcionamento adicionais e conflitantes com os supracitados. Teria de posicionar os sensores remotamente, ou fazer uma estação separada para cada um. Em resumo, achei trabalho demais para benefício de menos (a Copel tem um sensor perto de casa e fornece a informação de graça no site) e larguei de mão, pelo menos por ora.