На всех платках предусмотрено место для цифрового термометра DS18B20, но он не впаян.
Сделать это несложно:
Обратите внимание, позиционирование чипа может быть зеркально маркировке, сверьте на своем модуле разводку VCC и GND.
Подключение к Arduino
Для демонстрации работы микросхемы был использован Модуль часов реального времени на микросхеме DS1307 + микросхема EEPROM AT24C32. Микросхема AT24C32 будет рассмотрена в другой статье.
Выводы отвечающие за интерфейс I2C на платах Arduino на базе различных контроллеров разнятся
RTC модуль |
На базе ATmega 328 |
Leonardo |
MEGA, ADK, DUE |
SCL |
A5 |
D3 |
D21 |
SDA |
A4 |
D2 |
D20 |
VCC |
+5V |
+5V |
+5V |
GND |
GND |
GND |
GND |
Для работы с модулем удобно использовать библиотеку RTClib (скачать).
При первом подключении модуля необходимо синхронизировать время. При помощи стандартной библиотеки Time.h (скачать) это можно сделать посредством Ethernet шилда, GPS или вручную.
Самый простой на мой взгляд, метод синхронизации времени в RTC, состоит из небольшой программки и скетча загружаемый на Arduino
1 Заливаем в ардуино скетч
2 Подключаемся к COM порту к которому у нас подключена Arduino. и просто нажимаем верхнюю красную стрелочку, после успешной настройки, выйдем сообщение RTC set, настройка завершена.
Архив с скетчем и программой для синхронизации модуля Tiny RTC I2C
Проверим работу модуля. Заливаем скетч и открываем монитор порта.
Пример программного кода:
#include <Wire.h>
#include "RTClib.h"
RTC_DS1307 RTC;
void setup () {
Serial.begin(9600);
Wire.begin();
RTC.begin();
}
void loop () {
// Определяем время
DateTime now = RTC.now();
// Выводим время в монитор порта
Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.day(), DEC);
Serial.print(' ');
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();
delay(1000);
}
|