Как и зачем добавлять часы реального времени в Arduino

Как и зачем добавлять часы реального времени в Arduino

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





к сожалению, Google Play перестал работать

Чтобы ваш Arduino синхронизировался с окружающим миром, вам понадобится так называемый «модуль часов реального времени». Вот как его использовать.





В чем смысл часов реального времени (RTC)?

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





Если ваш проект имеет какое-либо отношение к потребности во времени - например, мой ночник и будильник восхода солнца - это явно будет проблемой. В этом проекте мы обошли проблему, вручную установив время каждую ночь довольно грубо: пользователь нажимал кнопку сброса перед сном, обеспечивая ручную синхронизацию времени. Ясно, что это не идеальное решение для длительного использования.

Модуль RTC - это дополнительная схема, требующая небольшой батарейки типа «таблетка», которая продолжает отсчитывать время, даже когда ваш Arduino выключен. После однократной настройки он продержит это время на протяжении всего срока службы батареи, обычно около года.



TinyRTC

Самый популярный RTC для Arduino называется TinyRTC, и его можно купить на eBay примерно за 5-10 долларов. Скорее всего, вам понадобится собственная батарея (незаконно отправлять их за границу во многие места) и некоторые разъемы (контакты, которые вставляются в отверстия, которые вам нужно впаять самостоятельно).

Это модуль, который у меня есть:





У него даже есть встроенный датчик температуры, хотя аккумулятор прослужит дольше, если вы его не используете.

Количество отверстий на этой штуке выглядит довольно устрашающе, но вам нужно их всего четыре; GND, VCC, SCL и SDA - вы можете использовать соответствующие контакты на любой стороне модуля RTC. Вы разговариваете с часами, используя Протокол I2C , что означает, что используются только два контакта - один для «часов» (часы данных последовательной связи, не имеющие отношения ко времени) и один для данных. Фактически, вы даже можете подключить до 121 устройства I2C к одним и тем же двум контактам - проверьте эта страница Adafruit для выбора других устройств I2C вы можете добавить, потому что их много!





Начиная

Подключите модуль TinyRTC в соответствии со схемой ниже - розовая линия DS не нужна, так как это для датчика температуры.

Затем загрузите Время а также DS1307RTC библиотеки и поместите полученные папки в свой / библиотеки папка.

Выйдите и перезапустите среду Arduino, чтобы загрузить библиотеки и примеры.

В меню DS1307RTC вы найдете два примера: загрузите и запустите Установить время пример сначала - это установит RTC на правильное время. Фактический код не стоит вдаваться в подробности, просто знайте, что вам нужно запустить его один раз, чтобы выполнить начальную синхронизацию времени.

Затем посмотрите на пример использования с ReadTest .

синхронизировать контакты с iphone на android

#include
#include
#include
void setup() {
Serial.begin(9600);
while (!Serial) ; // wait for serial
delay(200);
Serial.println('DS1307RTC Read Test');
Serial.println('-------------------');
}
void loop() {
tmElements_t tm;
if (RTC.read(tm)) {
Serial.print('Ok, Time = ');
print2digits(tm.Hour);
Serial.write(':');
print2digits(tm.Minute);
Serial.write(':');
print2digits(tm.Second);
Serial.print(', Date (D/M/Y) = ');
Serial.print(tm.Day);
Serial.write('/');
Serial.print(tm.Month);
Serial.write('/');
Serial.print(tmYearToCalendar(tm.Year));
Serial.println();
} else {
if (RTC.chipPresent()) {
Serial.println('The DS1307 is stopped. Please run the SetTime');
Serial.println('example to initialize the time and begin running.');
Serial.println();
} else {
Serial.println('DS1307 read error! Please check the circuitry.');
Serial.println();
}
delay(9000);
}
delay(1000);
}
void print2digits(int number) {
if (number >= 0 && number <10) {
Serial.write('0');
}
Serial.print(number);
}

Обратите внимание, что мы также включили ядро Wire.h библиотека - поставляется с Arduino и используется для связи по I2C. Загрузите код, откройте последовательную консоль со скоростью 9600 бод и смотрите, как ваш Arduino выводит текущее время каждую секунду. Чудесный!

Самый важный код в примере - это создание tmElements_t tm - это состав что мы заполним текущим временем; и RTC.read (tm) функция, которая получает текущее время от модуля RTC, помещает его в наш тм структура и возвращает истину, если все прошло хорошо. Добавьте код отладки или логики внутри этого оператора if, например, распечатайте время или ответьте на него.

невозможно проверить наличие обновлений после побег из тюрьмы

Теперь, когда вы знаете, как установить правильное время с помощью Arduino, вы можете попробовать переписать проект будильника восхода солнца или создать светодиодные часы со словом - возможности безграничны! Что ты будешь делать?

Кредиты изображений: Снотлаб Через Flickr

Делиться Делиться Твитнуть Эл. адрес Как изменить внешний вид рабочего стола Windows 10

Хотите узнать, как улучшить внешний вид Windows 10? Используйте эти простые настройки, чтобы сделать Windows 10 своей собственной.

Читать далее
Похожие темы
  • Сделай сам
  • Ардуино
Об авторе Джеймс Брюс(Опубликовано 707 статей)

Джеймс имеет степень бакалавра в области искусственного интеллекта и имеет сертификаты CompTIA A + и Network +. Когда он не занят в качестве редактора обзоров оборудования, он любит LEGO, VR и настольные игры. До прихода в MakeUseOf он работал светотехником, учителем английского языка и инженером центра обработки данных.

Ещё от James Bruce

Подписывайтесь на нашу новостную рассылку

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

Нажмите здесь, чтобы подписаться