====== Метеодатчик (Troyka-модуль) ====== [[amp>product/troyka-meteo-sensor?utm_source=man&utm_campaign=troyka-meteo-sensor&utm_medium=wiki|Метеосенсор]] поможет определить температуру и влажность в комнате, климатической теплице или парнике. {{ :продукты:troyka-meteo-sensor:troyka-meteo-sensor.4.jpg?nolink |}} ===== Видеообзор ===== {{youtube>pppifpXBhQQ?large}} ===== Общие сведения ===== Метеосенсор не требуют калибровки и позволяет получать на выходе цифровые данные по шине [[Видеоуроки:7-i2c-и-processing|I²C/TWI]]. Малый ток потребления позволяет использовать сенсор с батарейным питанием и дистанционным сбором информации. ===== Пример для Arduino ===== В качестве примера выведем в Serial-порт текущее значение температуры и влажности. ==== Схема устройства ==== Подключите метеосенсор к [[amp>product/arduino-uno?utm_source=man&utm_campaign=troyka-meteo-sensor&utm_medium=wiki|Arduino Uno]] к пинам шины I²C — ''SDA'' и ''SCL''. Для быстрой сборки используйте [[amp>product/arduino-troyka-shield?utm_source=man&utm_campaign=troyka-meteo-sensor&utm_medium=wiki|Troyka Shield]]. {{ :продукты:troyka-meteo-sensor:troyka-meteo-sensor_arduino_troyka-shield.png?nolink |}} С [[amp>product/arduino-troyka-slot-shield?utm_source=man&utm_campaign=zelo-motion-sensor&utm_medium=wiki|Troyka Slot Shield]] провода не понадобятся вовсе. {{ :продукты:troyka-meteo-sensor:troyka-meteo-sensor_arduino_troyka-slot-shield.png?nolink |}} ==== Код программы ==== Прошейте Arduino скетчем приведённым ниже. Для запуска примера скачайте и установите библиотеку [[https://github.com/amperka/TroykaMeteoSensor|TroykaMeteoSensor]]. // библиотека для работы с метеосенсором #include // создаём объект для работы с датчиком TroykaMeteoSensor meteoSensor; void setup() { // открываем последовательный порт Serial.begin(115200); // ждём открытия порта while(!Serial) { } // печатаем сообщение об успешной инициализации Serial-порта Serial.println("Serial init OK"); // начало работы с датчиком meteoSensor.begin(); Serial.println("Meteo Sensor init OK"); // ждём одну секунду delay(1000); } void loop() { // считываем данные с датчика int stateSensor = meteoSensor.read(); // проверяем состояние данных switch (stateSensor) { case SHT_OK: // выводим показания влажности и температуры Serial.println("Data sensor is OK"); Serial.print("Temperature = "); Serial.print(meteoSensor.getTemperatureC()); Serial.println(" C \t"); Serial.print("Temperature = "); Serial.print(meteoSensor.getTemperatureK()); Serial.println(" K \t"); Serial.print("Temperature = "); Serial.print(meteoSensor.getTemperatureF()); Serial.println(" F \t"); Serial.print("Humidity = "); Serial.print(meteoSensor.getHumidity()); Serial.println(" %\r\n"); break; // ошибка данных или сенсор не подключён case SHT_ERROR_DATA: Serial.println("Data error or sensor not connected"); break; // ошибка контрольной суммы case SHT_ERROR_CHECKSUM: Serial.println("Checksum error"); break; } // ждём одну секунду delay(1000); } ===== Пример для Espruino ===== Выведем данные температуры и влажности в консоль Espruino Web IDE. ==== Схема устройства ==== Подключите метеосенсор к [[amp>product/iskra-js?utm_source=man&utm_campaign=troyka-meteo-sensor&utm_medium=wiki|Iskra JS]] к пинам шины I²C — ''SDA'' и ''SCL''. Для быстрой сборки используйте [[amp>product/arduino-troyka-shield?utm_source=man&utm_campaign=troyka-meteo-sensor&utm_medium=wiki|Troyka Shield]]. {{ :продукты:troyka-meteo-sensor:troyka-meteo-sensor_iskra-js_troyka-shield.png?nolink |}} С [[amp>product/arduino-troyka-slot-shield?utm_source=man&utm_campaign=zelo-motion-sensor&utm_medium=wiki|Troyka Slot Shield]] провода не понадобятся вовсе. {{ :продукты:troyka-meteo-sensor:troyka-meteo-sensor_iskra-js_troyka-slot-shield.png?nolink |}} Прошейте платформу ниже приведённым скриптом. ==== Код программы ==== PrimaryI2C.setup({sda: SDA, scl: SCL, bitrate: 100000}); // для адреса 0x44 var meteoSensor = require('@amperka/meteo-sensor').connect(); // для адреса 0x45 /*var meteoSensor = require('@amperka/meteo-sensor').connect({ address: 0x45 }); */ setInterval(() => { meteoSensor.read(function(err, data) { if (err) { console.log(err); } else { console.log("Temp is: " + data.tempC + " C, " + data.tempF + " F, "+ data.tempK + " K, " + "Hum is: " + data.humidity + " %"); } }); }, 1000); ===== Пример для WiFi Slot ===== Вычислим показания температуры и влажности через платформу WiFi Slot. ==== Схема устройства ==== Подключите метеосенсор к платформе [[amp>product/wifi-slot?utm_source=man&utm_campaign=troyka-meteo-sensor&utm_medium=wiki|WiFi Slot]] к пинам шины I²C — ''SDA'' и ''SCL''. Для этого установите датчик в соответствующий слот. {{ :продукты:troyka-meteo-sensor:troyka-meteo-sensor_scheme_wifi-slot.png?nolink |}} ==== Код программы ==== Платформа WiFi Slot программируется двумя способами: * [[:wifi-slot#программирование_на_c|На языке C++ при помощи Arduino IDE.]] * [[:wifi-slot#программирование_на_javascript|На языке Javascript через Espruino IDE.]] Соответственно после настройки платформы выберите [[#пример_для_arduino|код из примера Arduino]] или [[#пример_для_espruino|код для JavaScript]]. ===== Пример для Raspberry Pi ===== Вычислим данные с метеосенсора с помощью одноплатника [[amp>collection/raspberry-pi?utm_source=man&utm_campaign=troyka-meteo-sensor&utm_medium=wiki|Raspberry Pi]]. ==== Схема устройства ==== Подключите метеосенсор к пинам шины I²C — ''SDA'' и ''SCL'' на Raspberry Pi. Для избежания макеток и проводов используйте плату расширения [[amp>product/raspberry-troyka-cap?utm_source=man&utm_campaign=troyka-meteo-sensor&utm_medium=wiki|Troyka Cap]]. {{ :продукты:troyka-meteo-sensor:troyka-meteo-sensor_scheme_troyka-cap.png?nolink |}} ===== Элементы платы ===== {{ :продукты:troyka-meteo-sensor:troyka-meteo-sensor_annotation.png?nolink |}} ==== Чип температуры и влажности ==== Модуль выполнен на высокоточном сенсоре температуры и влажности {{:продукты:troyka-meteo-sensor:sht31_datasheet.pdf|SHT31}} от компании [[https://www.sensirion.com|Sensirion]]. В функционал чипа входит схема обработки и усиления сигнала, блок памяти калибровки, АЦП и схема сброса по питанию. ==== Troyka-контакты ==== На сенсоре выведено две пары Troyka-контактов. //Нижняя группа// * Питание (V) — соедините с рабочим напряжением микроконтроллера. * Земля (G) — Соедините с пином ''GND'' микроконтроллера. //Верхняя группа// * Сигнальный (D) — пин данных шины I²C. Подключите к ''SDA'' пину микроконтроллера. * Сигнальный (C) — пин тактирования шины I²C. Подключите к ''SCL'' пину микроконтроллера. ==== Смена адреса модуля ==== Иногда в проекте необходимо использовать несколько температурных сенсоров. Для смена адреса капните каплей припоя на отведённую контактную площадку на обратной стороне модуля. После чего адрес сенсора сменится с ''0x44'' на ''0x45''. {{ :продукты:troyka-meteo-sensor:troyka-meteo-sensor_change_address.gif?nolink |}} ===== Принципиальная и монтажная схемы ===== {{:продукты:troyka-meteo-sensor:troyka-meteo-sensor_schematic.png?direct&460 |}} {{:продукты:troyka-meteo-sensor:troyka-meteo-sensor_layout_top.png?direct&170 |}} {{:продукты:troyka-meteo-sensor:troyka-meteo-sensor_layout_bottom.png?direct&170 |}} ===== Характеристики ===== * Чип: SHT31 * Напряжение питания: 3.3–5 В * Интерфейс: I²C * Адрес модуля: 0x44 (по умолчанию) / 0x45 * Параметры температуры: * Диапазон измерения: −40…+125 °С * Разрешение: 0,01 °С * Погрешность: ±0.2 °С * Параметры влажности: * Диапазон измерения: 0–100 %RH * Разрешение: 0,01 %RH * Погрешность: ±2 %RH * Габариты: 25,4×25,4 мм ===== Ресурсы ===== * [[amp>product/troyka-meteo-sensor?utm_source=man&utm_campaign=troyka-meteo-sensor&utm_medium=wiki|Метеодатчик]] в магазине * [[https://github.com/amperka/TroykaMeteoSensor|Библиотека для Arduino]] * [[https://github.com/amperka/hardware-drawings/blob/master/troyka-meteo-sensor.svg|Векторное изображение модуля]] * {{:продукты:troyka-meteo-sensor:sht31_datasheet.pdf|Datasheet на чип сенсора температуры и влажности SHT31}}