Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Учебное пособие по часам реального времени Arduino и DS3231

<основной класс="главный сайт" id="главный">

В этом уроке по Arduino мы узнаем, как использовать модуль часов реального времени DS3231. Вы можете посмотреть следующее видео или прочитать письменное руководство ниже.

Обзор

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

Часы реального времени DS3231

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

Модуль может работать как от 3,3, так и от 5 В, что делает его подходящим для многих платформ разработки или микроконтроллеров. Входное напряжение батареи составляет 3 В, и типичная батарея 3 В CR2032 может питать модуль и сохранять информацию более года.

Модуль использует протокол связи I2C, который делает подключение к плате Arduino очень простым.

Вот принципиальная схема:

Итак, все, что нам нужно, это 4 провода, контакты VCC и GND для питания модуля, а также два коммуникационных контакта I2C, SDA и SCL.

Компоненты, необходимые для этого руководства по Arduino, можно получить по ссылкам ниже:

Программирование

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

Для этого урока я решил использовать библиотеку, созданную Хеннингом Карлсеном, которую можно найти и загрузить с его веб-сайта www.rinkydinkelectronics.com.

Итак, как только мы загрузим и установим библиотеку, мы можем использовать ее первый демо-пример, чтобы первоначально активировать часы модуля RTC. В разделе настройки кода демонстрационного примера мы можем заметить, что есть три строки, которые нам нужно раскомментировать, чтобы изначально установить день недели, время и данные.

// Code from the Demo Example of the DS3231 Library

void setup()
{
  // Setup Serial connection
  Serial.begin(115200);
  // Uncomment the next line if you are using an Arduino Leonardo
  //while (!Serial) {}
  
  // Initialize the rtc object
  rtc.begin();
  
  // The following lines can be uncommented to set the date and time
  //rtc.setDOW(WEDNESDAY);     // Set Day-of-Week to SUNDAY
  //rtc.setTime(12, 0, 0);     // Set the time to 12:00:00 (24hr format)
  //rtc.setDate(1, 1, 2014);   // Set the date to January 1st, 2014
}Code language: Arduino (arduino)

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

Как только мы загрузим этот код, нам нужно прокомментировать три строки и повторно загрузить код.

// Code from the Demo Example of the DS3231 Library

void loop()
{
  // Send Day-of-Week
  Serial.print(rtc.getDOWStr());
  Serial.print(" ");
  
  // Send date
  Serial.print(rtc.getDateStr());
  Serial.print(" -- ");

  // Send time
  Serial.println(rtc.getTimeStr());
  
  // Wait one second before repeating
  delay (1000);
}Code language: Arduino (arduino)

Если мы посмотрим на цикл кода, мы увидим, что теперь, используя три пользовательские функции, мы получаем информацию от RTC и печатаем ее в последовательном мониторе. Вот как они отображаются в последовательном мониторе.

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

Итак, теперь у нас есть часы реального времени, и мы можем использовать их в любом проекте Arduino. В качестве второго примера я подключил ЖК-дисплей к Arduino и напечатал на нем время и дату.

Вот исходный код этого примера:

/*
* Arduino DS3231 Real Time Clock Module Tutorial
*
* Crated by Dejan Nedelkovski,
* www.HowToMechatronics.com
*
* DS3231 Library made by Henning Karlsen which can be found and downloaded from his website, www.rinkydinkelectronics.com.
*
*/
#include <DS3231.h>
#include <LiquidCrystal.h> // includes the LiquidCrystal Library 

DS3231  rtc(SDA, SCL);
LiquidCrystal lcd(1, 2, 4, 5, 6, 7); // Creates an LC object. Parameters: (rs, enable, d4, d5, d6, d7) 

void setup() { 
 rtc.begin(); // Initialize the rtc object
 lcd.begin(16,2); // Initializes the interface to the LCD screen, and specifies the dimensions (width and height) of the display } 
}

void loop() { 
 lcd.setCursor(0,0);
 lcd.print("Time:  ");
 lcd.print(rtc.getTimeStr());
 
 lcd.setCursor(0,1);
 lcd.print("Date: ");
 lcd.print(rtc.getDateStr());
 
 delay(1000); 
}Code language: Arduino (arduino)

Это все, что касается этого руководства по Arduino. Не стесняйтесь задавать любые вопросы в разделе комментариев ниже.


Производственный процесс

  1. Часы видения Arduino pov
  2. Учебное пособие по блокировке RFID для Arduino
  3. Основные часы
  4. Arduino Temp. Монитор и часы реального времени с дисплеем 3.2
  5. Берлинские часы
  6. Цифровые часы TM1637 с функцией настройки времени и будильника
  7. eDOT - точные часы и метеостанция на базе Arduino
  8. Отображение температуры Arduino OLED с часами реального времени
  9. Учебное пособие по датчику отпечатков пальцев Arduino
  10. Робот обнаруживает изменения в 3D и делится ими в режиме реального времени