Arduino с тензодатчиком и усилителем HX711 (цифровые весы)
В этом руководстве вы узнаете, как создать цифровые весы с Arduino, используя тензодатчик и усилитель HX711. Сначала вы узнаете, как подключить тензодатчик и усилитель HX711 к Arduino для создания весов. Затем мы покажем, как откалибровать весы, и приведём простой пример получения веса объектов. Позже мы также добавим дисплей для отображения измерений и кнопку для тарирования весов.
В этом руководстве мы рассмотрим следующие темы:
Знакомство с тензодатчиками
Тензодатчик преобразует силу в электрический сигнал, который можно измерить. Электрический сигнал изменяется пропорционально приложенной силе. Существуют различные типы тензодатчиков: тензорезисторные, пневматические и гидравлические. В этом руководстве мы рассмотрим тензорезисторные тензодатчики.
Тензорезисторные тензодатчики состоят из металлической балки с прикреплёнными тензорезисторами (под белым клеем на фотографии выше). Тензорезистор — это электрический датчик, который измеряет силу или деформацию объекта. Сопротивление тензорезисторов изменяется при приложении внешней силы к объекту, что приводит к деформации формы объекта (в данном случае — металлической балки). Сопротивление тензорезистора пропорционально приложенной нагрузке, что позволяет нам вычислить вес объектов.
Обычно тензодатчики имеют четыре тензорезистора, соединённых в мост Уитстона (как показано ниже), что позволяет получать точные измерения сопротивления. Для более подробного объяснения работы тензорезисторов прочитайте эту статью.
Провода, выходящие из тензодатчика, обычно имеют следующие цвета:
Красный: VCC (E+)
Чёрный: GND (E-)
Белый: Выход – (A-)
Зелёный: Выход + (A+)
Применение
Тензорезисторные тензодатчики могут использоваться в самых разных приложениях. Например:
проверка изменения веса объекта с течением времени;
измерение веса объекта;
обнаружение присутствия объекта;
оценка уровня жидкости в ёмкости;
и т.д.
Поскольку изменения деформации при взвешивании объектов очень малы, нам необходим усилитель. Тензодатчик, который мы используем, обычно продаётся вместе с усилителем HX711. Поэтому именно этот усилитель мы и будем использовать.
Усилитель HX711
Усилитель HX711 — это плата расширения, которая позволяет легко считывать данные с тензодатчиков для измерения веса. С одной стороны вы подключаете провода тензодатчика, а с другой — микроконтроллер. HX711 взаимодействует с микроконтроллером через двухпроводной интерфейс (Clock и Data).
Вам необходимо припаять штыревые разъёмы к выводам GND, DT, SCK и VCC для подключения к Arduino. Я припаял провода тензодатчика напрямую к выводам E+, E-, A- и A+. Провода тензодатчика были очень тонкими и хрупкими, будьте осторожны при пайке, чтобы не повредить провода.
Для получения дополнительной информации об усилителе HX711 вы можете ознакомиться с даташитом HX711.
Настройка тензодатчика
Наш набор с тензодатчиком поставлялся с двумя акриловыми пластинами и несколькими винтами для настройки тензодатчика в качестве весов. Вы можете использовать деревянные пластины или напечатать собственные на 3D-принтере.
Вы должны прикрепить пластины к тензодатчику таким образом, чтобы создать напряжение между противоположными концами металлической балки. Нижняя пластина удерживает тензодатчик, а верхняя — это то место, куда вы помещаете объекты.
На следующем рисунке показано, как выглядит мой тензодатчик с акриловыми пластинами.
Где купить тензодатчик с HX711?
Вы можете проверить тензодатчик с HX711 на Maker Advisor, чтобы найти лучшую цену (с акриловыми пластинами в комплекте или без них). Существуют тензодатчики с различными диапазонами измерения. Наиболее распространённые максимальные веса — 1 кг, 5 кг, 10 кг и 20 кг.
Вы можете использовать ссылки выше или перейти напрямую на MakerAdvisor.com/tools, чтобы найти все компоненты для ваших проектов по лучшей цене!
Подключение тензодатчика и усилителя HX711 к Arduino
Усилитель HX711 взаимодействует через двухпроводной интерфейс. Вы можете подключить его к любым цифровым выводам вашей платы Arduino. Мы подключаем вывод данных (DT) к пину 2 и вывод тактового сигнала (CLK) к пину 3.
Следуйте таблице или схеме подключения ниже, чтобы подключить тензодатчик к плате Arduino.
Тензодатчик |
HX711 |
HX711 |
Arduino |
|
|---|---|---|---|---|
Красный (E+) |
E+ |
GND |
GND |
|
Чёрный (E-) |
E- |
DT |
Pin 2 |
|
Белый (A-) |
A- |
SCK |
Pin 3 |
|
Зелёный (A+) |
A+ |
VCC |
5V |
Установка библиотеки HX711
Существует несколько различных библиотек для получения измерений с тензодатчика с помощью усилителя HX711. Мы будем использовать библиотеку HX711 от bogde. Она совместима с ESP32, ESP8266 и Arduino.
Arduino IDE
Следуйте инструкциям ниже для установки библиотеки, если вы используете Arduino IDE.
Откройте Arduino IDE и перейдите в Sketch > Include Library > Manage Libraries.
Найдите «HX711 Arduino Library» и установите библиотеку от Bogdan Necula.
Калибровка весов (Arduino с тензодатчиком)
На данный момент мы предполагаем, что вы подключили тензодатчик к усилителю HX711, а усилитель — к плате Arduino. У вас также должны быть настроены весы (две пластины, закреплённые на противоположных концах тензодатчика), и установлена библиотека HX711.
Прежде чем определять вес объектов, вам необходимо сначала откалибровать тензодатчик, получив коэффициент калибровки. Ваш коэффициент калибровки будет отличаться от нашего, поэтому вам не следует пропускать этот раздел.
1) Подготовьте объект с известным весом. Я использовал кухонные весы и взвесил стакан с водой (107 г).
2) Загрузите следующий код на вашу плату Arduino. Мы написали следующий код, учитывая инструкции по калибровке тензодатчика, предоставленные документацией библиотеки.
/*
Rui Santos
Complete project details at https://RandomNerdTutorials.com/arduino-load-cell-hx711/
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files.
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
*/
// Calibrating the load cell
#include "HX711.h"
// HX711 circuit wiring
const int LOADCELL_DOUT_PIN = 2;
const int LOADCELL_SCK_PIN = 3;
HX711 scale;
void setup() {
Serial.begin(57600);
scale.begin(LOADCELL_DOUT_PIN, LOADCELL_SCK_PIN);
}
void loop() {
if (scale.is_ready()) {
scale.set_scale();
Serial.println("Tare... remove any weights from the scale.");
delay(5000);
scale.tare();
Serial.println("Tare done...");
Serial.print("Place a known weight on the scale...");
delay(5000);
long reading = scale.get_units(10);
Serial.print("Result: ");
Serial.println(reading);
}
else {
Serial.println("HX711 not found.");
}
delay(1000);
}
//calibration factor will be the (reading)/(known weight)
3) После загрузки откройте монитор порта на скорости 57600 бод, а затем нажмите кнопку RESET на плате Arduino.
4) Следуйте инструкциям в мониторе порта: уберите все грузы с весов (тарирование произойдёт автоматически). Затем поместите объект с известным весом на весы и подождите, пока не получите значение.
5) Рассчитайте коэффициент калибровки по формуле:
коэффициент калибровки = (показание) / (известный вес)
В нашем случае показание равно -49171. Известный вес составляет 107 г, поэтому наш коэффициент калибровки будет: -49171/107 = -459.542.
коэффициент калибровки = -49171/107 = -459.542
Сохраните ваш коэффициент калибровки, потому что он понадобится вам позже. Ваш будет отличаться от нашего.
Поскольку выходной сигнал датчика пропорционален силе, приложенной к тензодатчику, вы можете откалибровать весы, используя любую единицу измерения, которая имеет смысл для вас. Я использовал граммы, но вы можете использовать фунты, килограммы или даже порции кошачьего корма (как в этом видео Andreas Spiess).
Взвешивание объектов (Arduino с тензодатчиком)
Теперь, когда вы знаете свой коэффициент калибровки, вы можете использовать тензодатчик для взвешивания объектов. Начните с взвешивания объектов с известным весом и повторите процесс калибровки, если значения неточные.
Скопируйте следующий код в Arduino IDE. Перед загрузкой на плату не забудьте вставить свой коэффициент калибровки в строку 43/44 кода. Следующий код является примером, предоставленным библиотекой, который демонстрирует использование большинства её функций.
/**
* Complete project details at https://RandomNerdTutorials.com/arduino-load-cell-hx711/
*
* HX711 library for Arduino - example file
* https://github.com/bogde/HX711
*
* MIT License
* (c) 2018 Bogdan Necula
*
**/
#include <Arduino.h>
#include "HX711.h"
// HX711 circuit wiring
const int LOADCELL_DOUT_PIN = 2;
const int LOADCELL_SCK_PIN = 3;
HX711 scale;
void setup() {
Serial.begin(57600);
Serial.println("HX711 Demo");
Serial.println("Initializing the scale");
scale.begin(LOADCELL_DOUT_PIN, LOADCELL_SCK_PIN);
Serial.println("Before setting up the scale:");
Serial.print("read: \t\t");
Serial.println(scale.read()); // print a raw reading from the ADC
Serial.print("read average: \t\t");
Serial.println(scale.read_average(20)); // print the average of 20 readings from the ADC
Serial.print("get value: \t\t");
Serial.println(scale.get_value(5)); // print the average of 5 readings from the ADC minus the tare weight (not set yet)
Serial.print("get units: \t\t");
Serial.println(scale.get_units(5), 1); // print the average of 5 readings from the ADC minus tare weight (not set) divided
// by the SCALE parameter (not set yet)
scale.set_scale(-459.542);
//scale.set_scale(-471.497); // this value is obtained by calibrating the scale with known weights; see the README for details
scale.tare(); // reset the scale to 0
Serial.println("After setting up the scale:");
Serial.print("read: \t\t");
Serial.println(scale.read()); // print a raw reading from the ADC
Serial.print("read average: \t\t");
Serial.println(scale.read_average(20)); // print the average of 20 readings from the ADC
Serial.print("get value: \t\t");
Serial.println(scale.get_value(5)); // print the average of 5 readings from the ADC minus the tare weight, set with tare()
Serial.print("get units: \t\t");
Serial.println(scale.get_units(5), 1); // print the average of 5 readings from the ADC minus tare weight, divided
// by the SCALE parameter set with set_scale
Serial.println("Readings:");
}
void loop() {
Serial.print("one reading:\t");
Serial.print(scale.get_units(), 1);
Serial.print("\t| average:\t");
Serial.println(scale.get_units(10), 5);
delay(5000);
}
Как работает код
Начните с подключения необходимой библиотеки.
#include "HX711.h"
Следующие строки определяют пины, которые вы будете использовать для подключения к усилителю HX711. Мы выбрали пин 2 и пин 3. Вы можете использовать любые другие цифровые пины.
const int LOADCELL_DOUT_PIN = 2;
const int LOADCELL_SCK_PIN = 3;
Затем создайте экземпляр библиотеки HX711 с именем scale, который вы будете использовать позже для получения измерений.
HX711 scale;
setup()
В функции setup() инициализируйте монитор порта.
Serial.begin(57600);
Инициализируйте тензодатчик, вызвав метод begin() на объекте scale и передав цифровые пины в качестве аргументов.
scale.begin(LOADCELL_DOUT_PIN, LOADCELL_SCK_PIN);
Затем вызываются несколько методов, которые можно использовать для получения показаний с помощью библиотеки.
read(): получает необработанное показание с датчикаread_average(количество показаний): получает среднее значение последних заданных показанийget_value(количество показаний): получает среднее значение последних заданных показаний за вычетом веса тары;get_units(количество показаний): получает среднее значение последних заданных показаний за вычетом веса тары, делённое на коэффициент калибровки — это выдаст показание в желаемых единицах измерения.
Serial.println("Before setting up the scale:");
Serial.print("read: \t\t");
Serial.println(scale.read()); // print a raw reading from the ADC
Serial.print("read average: \t\t");
Serial.println(scale.read_average(20)); // print the average of 20 readings from the ADC
Serial.print("get value: \t\t");
Serial.println(scale.get_value(5)); // print the average of 5 readings from the ADC minus the tare weight (not set yet)
Serial.print("get units: \t\t");
Serial.println(scale.get_units(5), 1); // print the average of 5 readings from the ADC minus tare weight (not set) divided
// by the SCALE parameter (not set yet)
В следующей строке не забудьте вставить ваш коэффициент калибровки. Используется метод set_scale().
scale.set_scale(ВСТАВЬТЕ ВАШ КОЭФФИЦИЕНТ КАЛИБРОВКИ)
Затем вызовите метод tare() для тарирования весов.
scale.tare(); // reset the scale to 0
После этой настройки весы должны быть готовы к точным измерениям в желаемых единицах. Пример вызывает те же предыдущие методы, чтобы вы могли увидеть разницу до и после настройки весов.
Serial.print("read: \t\t");
Serial.println(scale.read()); // print a raw reading from the ADC
Serial.print("read average: \t\t");
Serial.println(scale.read_average(20)); // print the average of 20 readings from the ADC
Serial.print("get value: \t\t");
Serial.println(scale.get_value(5)); // print the average of 5 readings from the ADC minus the tare weight, set with tare()
Serial.print("get units: \t\t");
Serial.println(scale.get_units(5), 1); // print the average of 5 readings from the ADC minus tare weight, divided
// by the SCALE parameter set with set_scale
loop()
В функции loop() пример вызывает метод get_units() двумя разными способами: для получения одного показания (без параметров) и для получения среднего значения последних 10 показаний.
Serial.print("one reading:\t");
Serial.print(scale.get_units(), 1);
Serial.print("\t| average:\t");
Serial.println(scale.get_units(10), 5);
Он переводит АЦП, считывающий датчик, в спящий режим с помощью метода power_down(). Затем ожидает 5 секунд, включает АЦП (power_up()), и loop() повторяется. Таким образом, вы будете получать новые показания в мониторе порта каждые 5 секунд.
scale.power_down(); // put the ADC in sleep mode
delay(5000);
scale.power_up();
Демонстрация
Загрузите код на вашу плату Arduino. После загрузки откройте монитор порта на скорости 115200 бод.
Подождите несколько секунд, чтобы код успел настроить весы (вы увидите сообщение в мониторе порта). Затем поместите любой объект на весы для измерения, и вы получите результаты в мониторе порта.
Я экспериментировал с несколькими объектами и сравнивал их с показаниями моих кухонных весов, и результаты совпали. Поэтому могу сказать, что мои весы на Arduino по крайней мере так же точны, как мои кухонные весы.
Цифровые весы с Arduino
В этом разделе мы создадим простые цифровые весы с Arduino. Мы добавим OLED-дисплей для отображения результатов и кнопку для тарирования весов.
Необходимые компоненты
Вот список компонентов, необходимых для этого проекта:
Схема подключения
Добавьте OLED-дисплей и кнопку к вашей предыдущей схеме на следующих пинах:
OLED-дисплей |
Arduino |
|---|---|
VCC |
3.3V или 5V* |
GND |
GND |
SDA |
A4 |
SCL |
A5 |
*подключите к 3.3V или 5V в зависимости от модели.
Не знакомы с OLED-дисплеем? Читайте: Руководство по I2C OLED-дисплею с Arduino.
Подключите кнопку через подтягивающий к земле резистор 10 кОм к пину 4. Другой вывод кнопки должен быть подключён к 5V. Вы можете использовать любой другой цифровой пин Arduino.
Вы можете следовать следующей схеме подключения для соединения ваших компонентов.
Код цифровых весов на Arduino
Для простоты мы будем обрабатывать кнопку с помощью простой библиотеки, которая определяет нажатия кнопки с устранением дребезга (поэтому нам не нужно беспокоиться об этом в нашем коде). Для записи на OLED-дисплей мы будем использовать библиотеки Adafruit SSD1306 и Adafruit GFX.
Библиотека кнопки
Существует множество библиотек с различными функциями для работы с кнопками. Мы будем использовать библиотеку pushbutton от pololu. Это простая библиотека, но в ней есть всё, что нам нужно для этого проекта. В Arduino IDE перейдите в Sketch > Include Library > Manage Libraries и найдите «pushbutton». Установите библиотеку pushbutton от pololu.
Также, если вы не хотите использовать библиотеку, вы можете добавить код устранения дребезга самостоятельно (это несложно). Для примера кода устранения дребезга в Arduino IDE вы можете перейти в File > Examples > Digital > Debounce.
Библиотеки OLED
Мы будем использовать следующие библиотеки для управления OLED-дисплеем. Убедитесь, что эти библиотеки установлены:
Вы можете установить библиотеки с помощью менеджера библиотек Arduino. Перейдите в Sketch > Include Library > Manage Libraries и найдите название библиотеки.
Код
Скопируйте следующий код в Arduino IDE. Перед загрузкой на плату Arduino вам нужно вставить свой коэффициент калибровки (полученный ранее).
/*
Rui Santos
Complete project details at https://RandomNerdTutorials.com/arduino-load-cell-hx711/
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files.
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
*/
// Library HX711 by Bogdan Necula: https://github.com/bogde/HX711
// Library: pushbutton by polulu: https://github.com/pololu/pushbutton-arduino
#include "HX711.h"
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <Pushbutton.h>
// HX711 circuit wiring
const int LOADCELL_DOUT_PIN = 2;
const int LOADCELL_SCK_PIN = 3;
HX711 scale;
int reading;
int lastReading;
//REPLACE WITH YOUR CALIBRATION FACTOR
#define CALIBRATION_FACTOR -476.592
//OLED Display
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)
#define OLED_RESET -1 // Reset pin # (or -1 if sharing Arduino reset pin)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
//Button
#define BUTTON_PIN 4
Pushbutton button(BUTTON_PIN);
void displayWeight(int weight){
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0, 10);
// Display static text
display.println("Weight:");
display.display();
display.setCursor(0, 30);
display.setTextSize(2);
display.print(weight);
display.print(" ");
display.print("g");
display.display();
}
void setup() {
Serial.begin(57200);
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
for(;;);
}
delay(2000);
display.clearDisplay();
display.setTextColor(WHITE);
Serial.println("Initializing the scale");
scale.begin(LOADCELL_DOUT_PIN, LOADCELL_SCK_PIN);
scale.set_scale(CALIBRATION_FACTOR); // this value is obtained by calibrating the scale with known weights
scale.tare(); // reset the scale to 0
}
void loop() {
if (button.getSingleDebouncedPress()){
Serial.print("tare...");
scale.tare();
}
if (scale.wait_ready_timeout(200)) {
reading = round(scale.get_units());
Serial.print("Weight: ");
Serial.println(reading);
if (reading != lastReading){
displayWeight(reading);
}
lastReading = reading;
}
else {
Serial.println("HX711 not found.");
}
}
Как работает код
Начните с подключения необходимых библиотек:
#include "HX711.h"
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <Pushbutton.h>
Определите пины для HX711 (тензодатчика) — мы используем те же, что и в предыдущих примерах:
// HX711 circuit wiring
const int LOADCELL_DOUT_PIN = 2;
const int LOADCELL_SCK_PIN = 3;
Создайте экземпляр HX711 с именем scale.
HX711 scale;
Следующие переменные будут хранить текущее показание веса и последнее показание веса. Мы хотим обновлять OLED-дисплей только при появлении нового показания, поэтому нам нужны эти две переменные. Кроме того, мы не хотим измерять доли грамма, что сделало бы весы слишком чувствительными для нашего приложения — поэтому эти переменные являются целочисленными. Если вам нужны десятичные дроби в измерениях, вы можете определить переменные типа float вместо этого.
int reading;
int lastReading;
Не забудьте заменить следующее значение на ваш коэффициент калибровки. В моём случае эта строка кода выглядит следующим образом (моё значение отрицательное):
#define CALIBRATION_FACTOR -459.542
Далее нам нужно определить ширину и высоту OLED:
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
И создать экземпляр библиотеки Adafruit_SSD1306 с именем display.
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
Определите GPIO, который вы будете использовать для чтения кнопки, и создайте объект Pushbutton с именем button на этом пине.
#define BUTTON_PIN 4
Pushbutton button(BUTTON_PIN);
Функция displayWeight()
Мы создали функцию displayWeight(), которая принимает в качестве аргумента вес, который вы хотите отобразить на OLED.
void displayWeight(int weight){
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(WHITE);
display.setCursor(0, 10);
// Display static text
display.println("Weight:");
display.display();
display.setCursor(0, 30);
display.setTextSize(2);
display.print(weight);
display.print(" ");
display.print("g");
display.display();
}
Не знакомы с OLED-дисплеем? Читайте: Руководство по I2C OLED-дисплею с Arduino
setup()
В функции setup() инициализируйте монитор порта.
Serial.begin(57200);
Инициализируйте OLED-дисплей:
if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println(F("SSD1306 allocation failed"));
for(;;);
}
delay(2000);
display.clearDisplay();
display.setTextColor(WHITE);
И наконец, инициализируйте тензодатчик:
Serial.println("Initializing the scale");
scale.begin(LOADCELL_DOUT_PIN, LOADCELL_SCK_PIN);
scale.set_scale(CALIBRATION_FACTOR); // this value is obtained by calibrating the scale with known weights
scale.tare(); // reset the scale to 0
loop()
Библиотека кнопки позволяет нам ожидать события в случае нажатия или отпускания кнопки. В данном случае мы проверяем, была ли кнопка нажата, с помощью метода getSingleDebouncedPress() и вызываем функцию tare(), если кнопка была нажата.
if (button.getSingleDebouncedPress()){
Serial.print("tare...");
scale.tare();
}
HX711 предоставляет неблокирующий метод для получения показаний. Он определяет максимальный тайм-аут ожидания инициализации оборудования и не блокирует ваш код в случае отключения весов или аппаратных сбоев.
if (scale.wait_ready_timeout(200)) {
reading = round(scale.get_units());
Serial.print("Weight: ");
Serial.println(reading);
В loop() мы постоянно получаем новые показания и сравниваем их с последним показанием. Если мы получили новое измерение, мы вызываем функцию displayWeight() для обновления OLED-дисплея.
if (reading != lastReading){
displayWeight(reading);
}
Демонстрация
После загрузки кода на вашу плату вы можете начать взвешивать объекты с помощью тензодатчика. Показания будут отображаться на OLED-дисплее. Вы можете тарировать весы, нажав кнопку.
Опять же, показания на моих цифровых весах Arduino соответствуют показаниям моих кухонных весов.
Заключение
В этом руководстве вы узнали, как подключить тензорезисторный тензодатчик к плате Arduino с помощью усилителя HX711. Выходной сигнал тензодатчика пропорционален приложенной силе. Поэтому вы можете откалибровать его для использования в граммах, килограммах, фунтах или любых других единицах, которые имеют смысл для вашего проекта.
Подведём итог: вы научились калибровать весы и определять вес объектов. Вы также узнали, как создать простые цифровые весы с Arduino, используя OLED-дисплей для отображения измерений и кнопку для тарирования весов.
Мы надеемся, что это руководство оказалось полезным для начала работы с тензодатчиком. Помимо того, что он полезен для измерения веса объектов, он также может быть полезен во многих приложениях, таких как обнаружение присутствия объекта, оценка уровня жидкости в резервуаре, вычисление скорости испарения воды, проверка наличия корма в миске вашего питомца и т.д.
У нас есть руководства по другим популярным датчикам, которые могут быть вам полезны: