Есть очень хороший (если не поддельный) датчик BME280. Он умеет мерять температуру, давление и влажность (есть его собрат в "бомж"-комплектации - BMP280 - он влажность не умеет).
Датчик - 8-ногая букашка, умеет общаться с внешним миром как по SPI-интерфейсу, так и по I2C.
Сам датчик мелкий, не очень паябельный. Но китайские бизнесмены просекли фишку и продают этот датчик уже припаянный к плате. Причем в двух вариантах:
Платка об 6 выводах - там сразу 2 интерфейса доступны - SPI и I2C. Но нет стабилизатора напряжения. А у датчика напряжение питания - 3.3 вольта.
А на 4-выводной плате выведен только I2C-интерфейс. Но на плате сразу есть подтягивающие резисторы, LDO и преобразователь уровней для I2C. Т.е. его можно гонять при любом напряжении питания от 3 до 5 вольт.
Очень удобный датчик для построения всяких термометров, барометров и прочих показометров.
Но используемые интерфейсы не предусматривают вынос датчика от управляющего микроконтроллера на сколь-либо значимое расстояние.
Соответственно, возле датчика нужно поставить свой небольшой микроконтроллер, считывающий показания датчика и отправляющий эти данные на головное устройство по какому-либо каналу связи.
Вариант такого датчика я уже делал, там используется радиоканал на капризных JDY-40. И памятуя пляски с бубном вокруг этого радиоканала, в этот раз я остановился на варианте 1-Wire.
1-Wire - или OneWire - достаточно прикольный протокол подключения устройств, в т.ч. и отнесенных от головного устройства на значительное расстояние - десятки метров.
Вопреки названию минимально для работы 1-Wire-устройства нужно два провода: сигнальный и общий. "Один Провод" тут означает, что и питание, и данные могут передаваться по одному и тому же проводу.
Хотя часть 1-Wire-устройств поддерживает трехпроводное подключение - питание, данные и общий провод.
К таким устройствам относится и термометр DS18B20, а так же его клоны. DS18B20 прекрасно общается с головным устройством по двум проводам, однако для непосредственного измерения температуры (и для еще пары операций) ему не хватает того паразитного питания, которое он может получить от линии питания/данных. И термометр требует либо усиленную подтяжку к питанию линии питания/данных, либо питание по отдельному проводу - трехпроводная схема.
Вот, взяв за основу принцип DS18B20, я сделал на ATMEGA8A "обертку" для ВМЕ/ВМР280, реализующую общение с головным устройством по 2/3-проводному интерфейсу 1-Wire.
- 4-проводной модуль BME/BMP280 (со встроенным LDO)
- Потребление в ждущем режиме до 10 мка
- 256 вариантов адреса
- необходимость усиленной подтяжки в 2-проводном режиме на время преобразования
- время преобразования - не менее 200 мс
- контрольный светодиод (работает только в трехпроводном режиме)
- Температура -40..+85°С, при этом наилучшая точность обеспечивается в диапазоне 0..60°С
- Давление 225..825 мм рт.ст.
- Влажность 0..100%