Получение точного времени через NTP/RTC
Добавляйте к данным точные даты и время.
«Получение точного времени через NTP/RTC» — бесплатный урок Arduino & IoT Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Arduino & IoT Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Arduino & IoT Academy содержит 4 уроков всего.
Почему время важно
Показание вроде «24,3 °C» рассказывает лишь половину истории. Чтобы правильно понять записанные данные, каждому измерению нужна временная отметка, точно указывающая момент его получения. ⏰
У Arduino нет часов
Arduino забывает дату, как только отключается питание. Она считает только миллисекунды с момента загрузки и не знает, который сейчас час по реальному времени.
Два способа получить время
Можно получить время из интернета через NTP или хранить его локально с помощью микросхемы RTC с резервным питанием. Каждый способ подходит для своей ситуации.
Что делает NTP
NTP (сетевой протокол времени) запрашивает текущий момент у сервера времени в интернете. Он точен и бесплатен, но для работы требуется активное подключение WiFi.
Запрос времени у сервера NTP
На ESP32 одна строка настройки указывает для платы общедоступный сервер времени и смещение часового пояса. После этого плата синхронизируется автоматически.
configTime(0, 0, "pool.ntp.org");Считывание синхронизированного времени
После синхронизации получите текущее время в структуру и считайте её поля. Так Вы получите год, месяц, день, час и минуту для маркировки данных.
struct tm now;
getLocalTime(&now);Что делает RTC
Модуль RTC, например DS3231, продолжает отсчитывать время от небольшой батарейки-таблетки, даже когда Arduino полностью выключена. Сеть вообще не нужна.
Подключение RTC
Большинство модулей RTC обмениваются данными по I2C, поэтому достаточно подключить четыре провода: питание, землю, SDA и SCL. Это делает конструкцию особенно простой.
Считывание данных с RTC
С помощью библиотеки RTClib получите текущий момент как объект DateTime, а затем считайте его поля так же, как в варианте с NTP.
DateTime now = rtc.now();
int h = now.hour();NTP или RTC?
Выбирайте NTP, если устройство всегда подключено к сети и Вам не нужны дополнительные компоненты. Выбирайте RTC для автономных или работающих от батареи узлов, которым всё же нужно точное время.
Преимущества обоих способов
Многие удачные конструкции используют оба способа: RTC хранит время без подключения к сети, а NTP время от времени корректирует небольшое расхождение, когда доступен WiFi. 🌐
Быстрая проверка
Какой источник времени продолжает работать без подключения к интернету?
Итоги
У Arduino нет настоящих часов, поэтому добавьте время с помощью NTP в сети или RTC автономно. Теперь каждое записанное показание может содержать точную временную отметку. ✅
Часто задаваемые вопросы
Урок «Получение точного времени через NTP/RTC» бесплатный?
Да — полный текст урока «Получение точного времени через NTP/RTC» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Arduino & IoT Academy, подпишись на CoddyKit PRO. Курс Arduino & IoT Academy содержит 4 уроков всего.
Чему я научусь в уроке «Получение точного времени через NTP/RTC»?
Добавляйте к данным точные даты и время. Ты практикуешь Arduino & IoT Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Arduino & IoT Academy?
Предыдущий опыт не требуется. Arduino & IoT Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Получение точного времени через NTP/RTC»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Arduino & IoT Academy?
Да. Каждый урок Arduino & IoT Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Получение точного времени через NTP/RTC
- Запись CSV на SD-карту
- Буферизация и пакетная отправка
- Визуализация записанных данных