Цель этого урока - объяснить, как измерить температуру RTC DS3231 с помощью ESP8266, используя Arduino библиотеку.
Как я рассказывал в предыдущем уроке, DS3231 использует температурную компенсацию для калибровки регулируемых конденсаторов резонансного контура, чтобы поддерживать точность отчета времени.
Очень полезной особенностью DS3231 является то, что мы можем получить доступ к измерениям температуры через I2C, расширяя возможности часов реального времени.
Чтобы работать с RTC используя плату ESP8266, нужно установить библиотеку, которая скрывает детали реализации протокола I2C, предоставляя нам простые в использовании функции. Эту же библиотеку мы использовали в предыдущем уроке, в котором рассмотрели процедуру настройки времени и даты, и их считывания. Её можно установить с помощью диспетчера библиотек Arduino IDE, как показано на рисунке ниже.
Аппаратная схема подключения платы DS3231 к ESP8266 очень проста и показана на рисунке ниже.
Как видно на схеме, DS3231 использует интерфейс I2C для взаимодействия с микроконтроллерами. Поскольку мы используем IDE Arduino, у нас есть библиотека Wire для обработки протокола I2C, которую позже будем использовать при создании программы для взаимодействия с RTC.
Для демонстрации вывода температуры напишем простую программу, которая считывает температуру с 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(), который возвращает температуру, как показано в приведенном ниже коде.
Как только выводим температуру в последовательный порт, сделаем задержку в десять секунд перед следующим измерением.
#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 имеет функции, выходящие за рамки простого хранения времени и даты. Подключив его к ESP8266, можем создать устройство IoT, чтобы получать измерения температуры и точное время перед отправкой на сервер.
Поскольку оба устройства очень дешевы, это открывает путь к созданию Интернет устройств, доступных каждому.
Лично я использовал DS3231 не только для измерения времени, но и для измерения температуры во многих проектах. Например, в проекте часов матрица.
Понравился Урок DS3231 RTC вывод температуры? Не забудь поделиться с друзьями в соц. сетях.
А также подписаться на наш канал на YouTube, вступить в группу Вконтакте, в группу на Facebook.
Спасибо за внимание!
Технологии начинаются с простого!
Фотографии к статье
Файлы для скачивания
![]() |
Скетч вывода температуры с DS3231 в монитор порта.ino | 1 Kb | 633 | Скачать |
И как теперь полученную информацию вывести на экран дисплея смартфона?
Игорь, меня например всегда интересует температура с точностью +- 1 градус. Так что для измерения в помещении достаточно.
DS3231 использовать для вывода температуры не серьёзно. будет отклонение от температуры окружающей среды.
Уроки ESP8266 (заметки)
16 июля , 2021
Комментариев:3
Файлов для скачивания:1
Фото:4
Понравилась статья? Нажми
Виджеты для Easy HMI
Читайте также
Мы в соц сетях
Комментарии