DS3231 RTC не работает с ESP32
Я использую ESP-32-WROOM-32 с модулем RTC DS3231. Я подключил SDA & Выводы SCL RTC DS3231 с выводами ESP32 D22 и D23. Кроме того, VCC RTC подключен к 3V3 ESP32, а GND RTC также подключен к GND ESP32. К модулю RTC также подключена батарея.
Ниже приведен код:
#include <Wire.h> // для I2C с модулем RTC
#include "RTClib.h" //чтобы показать время
RTC_DS3231 rtc;
void Scanner ()
{
Serial.println ();
Serial.println ("I2C scanner. Scanning ...");
byte count = 0;
Wire.begin(22,23);
for (byte i = 8; i < 120; i++)
{
Wire.beginTransmission (i); // Начало передачи I2C Адрес (i)
if (Wire.endTransmission () == 0) // Получение 0 = успех (ответ ACK)
{
Serial.print ("Found address: ");
Serial.print (i, DEC);
Serial.print (" (0x");
Serial.print (i, HEX); // PCF8574 7-битный адрес
Serial.println (")");
count++;
}
}
Serial.print ("Found ");
Serial.print (count, DEC); // количество устройств
Serial.println (" device(s).");
}
void setup()
{
// поместите сюда свой код установки для однократного запуска:
Wire.begin(22,23);
//Провод.begin();
Serial.begin(115200);
while(!Serial);
/////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////
while (!rtc.begin())
{
Serial.println("Couldn't find RTC");
Scanner();
//Serial.println(DS3231_REG_STATUS);
// пока (1)
// {
// Serial.println("Не удалось найти RTC");
//
// }
;
}
Serial.println("Finally");
// В функции настройки мы вызовем функцию rtc.adjust(DateTime(__DATE__, __TIME__)) которая установит время в соответствии со временем нашего ПК.
rtc.adjust(DateTime(__DATE__, __TIME__));
}
void loop()
{
DateTime curr_time_obj = rtc.now();
int day = curr_time_obj.day();
int month = curr_time_obj.month();
int year = curr_time_obj.year();
int week_day = curr_time_obj.dayOfTheWeek();
int sec = curr_time_obj.second();
int hr = curr_time_obj.hour();
int minute = curr_time_obj.minute();
Serial.print("hour is ");
Serial.println(hr);
Serial.print("min is ");
Serial.println(minute);
Serial.print("secs is ");
Serial.println(sec);
Serial.println("############################");
delay(5000);
}
Ниже приводится вывод:
Некоторые изображения схемы можно найти здесь: https://drive.google.com /drive/folders/1fhM7o_aZCGh88OBDcypVLqhKhizhXnNd?usp=sharing
Буду признателен за любую помощь в решении этой проблемы. Спасибо
@Excalibur, 👍1
Обсуждение1 ответ
Предупреждение
Эти модули обычно поставляются с резистором сопротивлением 200 Ом, припаянным рядом со стабилитроном IN4148, как вы можете видеть на изображении ниже.
Устранение проблемы с модулем ds3231 Резистор и диод образуют простую схему зарядки, предназначенную для использования с аккумуляторными батареями LIR2032.
Имейте в виду, что некоторые модули DS3231 поставляются с неперезаряжаемой батареей CR2032. В этом случае необходимо снять резистор, поскольку попытка зарядить неперезаряжаемую батарею может привести к серьезному повреждению.
Блокировка
Я решил проблему с перезагрузкой, извлекая резистор сопротивлением 200 Ом., @juan orozco
Эта батарея не будет заряжаться с помощью системы 3V3, такой как устройства ESP. Диод должен изолировать его, поэтому вам не нужно ничего делать. Если вы питаете его от напряжения 5 В, вам необходимо заменить его на неперезаряжаемую батарею., @Gil
- Не удается прочитать I2C из RTC
- Как выбрать альтернативные контакты I2C на ESP32?
- Не удалось выделить SSD1306 при добавлении константы
- I2C связь между Arduino Uno и Nodemcu32-s (ESP32)
- Странная проблема. Ардуино перестает работать через несколько часов. Мнения, пожалуйста
- PN532 не обнаруживает RFID-карту при подключении к ESP32 в режиме I2C, но отлично работает с Arduino Uno
- Как закрыть/закончить Wire.begin()?
- Лучший способ отправки команд I2C между Arduino и ESP32
Адрес I²C DS3231 — 0x68, а не 0x57. Вы уверены, что у вас именно этот чип?, @Mat
Да, на чипе написано DS3231M, если быть точным., @Excalibur
Пожалуйста, укажите точный модуль, который вы используете. По фотографиям невозможно понять, что это такое., @Majenko
https://robu.in/product/ds3231-rtc-module-precision-real-time-lock-i2c-at24c32/?gclid=CjwKCAjwhOyJBhA4EiwAEcJdceN-yJB_Uxzz_EervOkpZRWXgECrQZJ_zWbnB5o3OxVbhG_Ki_f69RoCQKIQA vD_BwE @Маженко, @Excalibur
Этот модуль содержит как RTC *и* EEPROM. Устройство 0x57 выглядит как EEPROM. Схемы модуля нет, но есть два набора контактов I2C. *Может* случиться так, что два чипа подключены отдельно, и вам нужно выбрать правильные контакты I2C, для которого чип вы хотите использовать. Попробуйте переключиться на другие контакты SCL/SDA., @Majenko
@Majko У меня есть этот модуль, и я использую RTC через 6-контактный разъем, @Juraj
Я использую этот модуль с библиотекой DS3231 Эндрю Викерта. это в менеджере библиотеки, @Juraj