====== Метеодатчик (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}}