Урок ESP8266. DS3231 RTC вывод температуры.

Цель этого урока - объяснить, как измерить температуру RTC DS3231 с помощью ESP8266, используя Arduino библиотеку.

Для урока вывод температуры с DS3231 понадобится.

Как я рассказывал в предыдущем уроке, DS3231 использует температурную компенсацию для калибровки регулируемых конденсаторов резонансного контура, чтобы поддерживать точность отчета времени.

Для урока вывод температуры с DS3231 понадобится.

Очень полезной особенностью DS3231 является то, что мы можем получить доступ к измерениям температуры через I2C, расширяя возможности часов реального времени.

часы реального времени DS3231 к ESP8266 (Node MCU)Чтобы работать с RTC используя плату ESP8266, нужно установить библиотеку, которая скрывает детали реализации протокола I2C, предоставляя нам простые в использовании функции. Эту же библиотеку мы использовали в предыдущем уроке, в котором рассмотрели процедуру настройки времени и даты, и их считывания. Её можно установить с помощью диспетчера библиотек Arduino IDE, как показано на рисунке ниже.

Схема подключения DS3231 к NodeMCU.

Аппаратная схема подключения платы DS3231 к ESP8266 очень проста и показана на рисунке ниже.

Схема подключения DS3231 к NodeMCU.

Как видно на схеме, DS3231 использует интерфейс I2C для взаимодействия с микроконтроллерами. Поскольку мы используем IDE Arduino, у нас есть библиотека Wire для обработки протокола I2C, которую позже будем использовать при создании программы для взаимодействия с RTC.

Скетч вывода температуры с DS3231 в монитор порта.

Для демонстрации вывода температуры напишем простую программу, которая считывает температуру с DS3231 каждые 10 секунд и выводит ее в последовательный порт.

Во-первых, нам нужно подключить библиотеку Wire , которая будет использоваться для связи I2C, и библиотеки RTC.

#include <Wire.h>       //I2C библиотека 
#include <RtcDS3231.h>  //RTC библиотека

Функции для взаимодействия с RTC предоставляются, как методы класса RtcDS3231:

RtcDS3231<TwoWire> rtcObject(Wire); //библиотека rtc

В функции setup() сначала инициализируем последовательное соединение, а затем вызываем метод Begin для объекта RtcDS3231, который мы ранее объявили. Этот метод запустит библиотеку I2C Wire.

void setup() {
  Serial.begin(115200);  //Запуск последовательного подключения
  rtcObject.Begin();     //Запуск I2C
}

В этом уроке для упрощения кода не будем настраивать время и дату RTC. Прочтите мой предыдущий урок, чтобы узнать, как это сделать.

В функции loop() будем получать измерения, вызывая метод GetTempera для rtcObject. Этот метод получает значение температуры из регистров, которые хранят их в часах реального времени.

RtcTemperature temperature = rtcObject.GetTemperature();  //считывание температуры

Температура хранится в двух регистрах RTC и представляется в виде 10-битного кода с разрешением 0,25 ° C . Опять же, нам не нужно беспокоиться об этих деталях, что является преимуществом использования этой замечательной библиотеки.

Serial.print(temperature.AsFloatDegC());  //вывод температуры в монитор порта
Serial.println(" C");

Как видно метод GetTempera вернет объект класса RtcTemperature. В этом классе есть метод AsFloatDegC(), который возвращает температуру, как показано в приведенном ниже коде.

Как только выводим температуру в последовательный порт, сделаем задержку в десять секунд перед следующим измерением.

Полный скетч вывода температуры с DS3231 в монитор порта.

#include <Wire.h>       //I2C библиотека
#include <RtcDS3231.h>  //RTC библиотека

RtcDS3231<TwoWire> rtcObject(Wire); //библиотека rtc

void setup() {
  Serial.begin(115200);  //Запуск последовательного подключения
  rtcObject.Begin();     //Запуск I2C
}

void loop() {

  RtcTemperature temperature = rtcObject.GetTemperature();  //считывание температуры
  Serial.print(temperature.AsFloatDegC());  //вывод температуры в монитор порта
  Serial.println(" C");

  delay(1000);  //10 сек

}

После загрузки кода нам просто нужно открыть последовательный порт Arduino IDE, в котором будет выводиться новое измерение каждые 10 секунд.

Полный скетч вывода температуры с DS3231 в монитор порта.

Заключение.

Как видно из этого урока, DS3231 имеет функции, выходящие за рамки простого хранения времени и даты. Подключив его к ESP8266, можем создать устройство IoT, чтобы получать измерения температуры и точное время перед отправкой на сервер.

Поскольку оба устройства очень дешевы, это открывает путь к созданию Интернет устройств, доступных каждому.

Лично я использовал DS3231 не только для измерения времени, но и для измерения температуры во многих проектах. Например, в проекте часов матрица.

 проект часов матрица

Понравился Урок DS3231 RTC вывод температуры? Не забудь поделиться с друзьями в соц. сетях.

А также подписаться на наш канал на YouTube, вступить в группу Вконтакте, в группу на Facebook.

Спасибо за внимание!

Технологии начинаются с простого!

Фотографии к статье

Файлы для скачивания

Скетч вывода температуры с DS3231 в монитор порта Скетч вывода температуры с DS3231 в монитор порта.ino1 Kb 16 Скачать

Комментарии

Ваше Имя*

Сава

Гость: Сава (19 июля, 2021 в 20:58)

Игорь, меня например всегда интересует температура с точностью +- 1 градус. Так что для измерения в помещении достаточно.

Иван Че

Гость: Иван Че (18 июля, 2021 в 18:56)

DS3231 использовать для вывода температуры не серьёзно. будет отклонение от температуры окружающей среды.