You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
IoT-For-Beginners/translations/ru/2-farm/lessons/1-predict-plant-growth/wio-terminal-temp.md

11 KiB

Измерение температуры - Wio Terminal

В этой части урока вы добавите датчик температуры к вашему Wio Terminal и будете считывать значения температуры с него.

Аппаратное обеспечение

Для Wio Terminal требуется датчик температуры.

Датчик, который вы будете использовать, — это датчик влажности и температуры DHT11, объединяющий два датчика в одном корпусе. Это довольно популярное устройство, и существует множество коммерчески доступных датчиков, которые объединяют измерение температуры, влажности, а иногда и атмосферного давления. Компонент для измерения температуры представляет собой термистор с отрицательным температурным коэффициентом (NTC), сопротивление которого уменьшается с увеличением температуры.

Это цифровой датчик, поэтому он имеет встроенный АЦП (аналогово-цифровой преобразователь), который создает цифровой сигнал с данными о температуре и влажности, которые может считывать микроконтроллер.

Подключение датчика температуры

Датчик температуры Grove можно подключить к цифровому порту Wio Terminal.

Задание - подключите датчик температуры

Подключите датчик температуры.

Датчик температуры Grove

  1. Вставьте один конец кабеля Grove в разъем на датчике влажности и температуры. Кабель вставляется только в одном направлении.

  2. Отключив Wio Terminal от компьютера или другого источника питания, подключите другой конец кабеля Grove к правому разъему Grove на Wio Terminal, если смотреть на экран. Это разъем, который находится дальше всего от кнопки питания.

Датчик температуры Grove подключен к правому разъему

Программирование датчика температуры

Теперь Wio Terminal можно запрограммировать для работы с подключенным датчиком температуры.

Задание - программирование датчика температуры

Программируйте устройство.

  1. Создайте новый проект для Wio Terminal с использованием PlatformIO. Назовите проект temperature-sensor. Добавьте код в функцию setup для настройки последовательного порта.

    ⚠️ Вы можете обратиться к инструкциям по созданию проекта PlatformIO в проекте 1, уроке 1, если это необходимо.

  2. Добавьте зависимость от библиотеки Seeed Grove Humidity and Temperature sensor в файл platformio.ini проекта:

    lib_deps =
        seeed-studio/Grove Temperature And Humidity Sensor @ 1.0.1
    

    ⚠️ Вы можете обратиться к инструкциям по добавлению библиотек в проект PlatformIO в проекте 1, уроке 4, если это необходимо.

  3. Добавьте следующие директивы #include в начало файла, под существующей строкой #include <Arduino.h>:

    #include <DHT.h>
    #include <SPI.h>
    

    Эти директивы импортируют файлы, необходимые для взаимодействия с датчиком. Заголовочный файл DHT.h содержит код для работы с самим датчиком, а добавление заголовочного файла SPI.h гарантирует, что код, необходимый для связи с датчиком, будет подключен при компиляции приложения.

  4. Перед функцией setup объявите датчик DHT:

    DHT dht(D0, DHT11);
    

    Это объявляет экземпляр класса DHT, который управляет Digital Humidity and Temperature датчиком. Он подключен к порту D0, правому разъему Grove на Wio Terminal. Второй параметр указывает, что используется датчик DHT11 — библиотека, которую вы используете, поддерживает и другие варианты этого датчика.

  5. В функции setup добавьте код для настройки последовательного соединения:

    void setup()
    {
        Serial.begin(9600);
    
        while (!Serial)
            ; // Wait for Serial to be ready
    
        delay(1000);
    }
    
  6. В конце функции setup, после последней строки delay, добавьте вызов для запуска датчика DHT:

    dht.begin();
    
  7. В функции loop добавьте код для вызова датчика и вывода температуры в последовательный порт:

    void loop()
    {
        float temp_hum_val[2] = {0};
        dht.readTempAndHumidity(temp_hum_val);
        Serial.print("Temperature: ");
        Serial.print(temp_hum_val[1]);
        Serial.println ("°C");
    
        delay(10000);
    }
    

    Этот код объявляет пустой массив из двух чисел с плавающей точкой и передает его в вызов readTempAndHumidity экземпляра DHT. Этот вызов заполняет массив двумя значениями — влажность записывается в 0-й элемент массива (помните, что в C++ массивы нумеруются с 0, поэтому 0-й элемент — это "первый" элемент массива), а температура записывается в 1-й элемент.

    Температура считывается из 1-го элемента массива и выводится в последовательный порт.

    🇺🇸 Температура считывается в градусах Цельсия. Для американцев: чтобы преобразовать это значение в градусы Фаренгейта, разделите значение в Цельсиях на 5, затем умножьте на 9 и добавьте 32. Например, значение температуры 20°C преобразуется в ((20/5)*9) + 32 = 68°F.

  8. Соберите и загрузите код на Wio Terminal.

    ⚠️ Вы можете обратиться к инструкциям по созданию проекта PlatformIO в проекте 1, уроке 1, если это необходимо.

  9. После загрузки вы можете отслеживать температуру с помощью последовательного монитора:

    > Executing task: platformio device monitor <
    
    --- Available filters and text transformations: colorize, debug, default, direct, hexlify, log2file, nocontrol, printable, send_on_enter, time
    --- More details at http://bit.ly/pio-monitor-filters
    --- Miniterm on /dev/cu.usbmodem1201  9600,8,N,1 ---
    --- Quit: Ctrl+C | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---
    Temperature: 25.00°C
    Temperature: 25.00°C
    Temperature: 25.00°C
    Temperature: 24.00°C
    

💁 Этот код можно найти в папке code-temperature/wio-terminal.

😀 Ваше приложение для работы с датчиком температуры успешно создано!


Отказ от ответственности:
Этот документ был переведен с помощью сервиса автоматического перевода Co-op Translator. Несмотря на наши усилия обеспечить точность, автоматические переводы могут содержать ошибки или неточности. Оригинальный документ на его родном языке следует считать авторитетным источником. Для получения критически важной информации рекомендуется профессиональный перевод человеком. Мы не несем ответственности за любые недоразумения или неправильные интерпретации, возникшие в результате использования данного перевода.