• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

ESP8266 - Время DS3231 (DS1307?) - чтение, установка

Mоnk

Member
Нормально. Если Вы и БМП и 3231 на Д6 и Д5 повесите, и в сканере Д6 и Д5 пропишете, сканер оба устройства должен найти.
 

Mоnk

Member
Честно говоря не знаю, нужна ли вообще библиотека для 3231? Взять или установить время можно и без неё.
 
А разные устройства желательно на разные ноги вешать или на одни? SCL и SDA имею ввиду. И если использовать wire.h и на разных ногах, то как их прописывать?
 

Mоnk

Member
Шина, она одна. У устройств адреса разные. Грубо говоря проц по адресу с устройством общается. Так что на два провода можно сразу повесить 16 LCD экранов, два bmp280, один Si7021, и один DS3231. Лишь бы памяти хватило.
 
Сейчас тот пример из DS1307.h запустил отдельно на своей собранной плате. Работает. Правильное время кажет и часы идут.
Вставляю это в полный скетч, снова время не идет и 165:165:85.
 
О! Вааще нешел непонятную вещь! В общем первым делом к ESP8266 подключал светодиодые матрицы, писал шрифты, настраивал вывод текста и задал выход на матрицу так:
Код:
#define DATA_PIN 4  //пин матрицы
Ну типа на Ардуино D4 можно писать как 4 и все работает. Таки и здесь все работает. Стоит записать D4 или 2 (от GPIO2), как перестает работать матрица!
А я почему-то думал что цифру от GPIO можно взять. А в библиотечном примере написано
Код:
/*
  DS1307 RTC (Real-Time-Clock) Example

  Uno       A4 (SDA), A5 (SCL)
  Mega      20 (SDA), 21 (SCL)
  Leonardo   2 (SDA),  3 (SCL)
 */
Но ведь работает!
 

Mоnk

Member
Повторюсь... это ESP, и тут пишут цифрами. Видел для Wemos пишут таблицу соответствия Dxx - GPIOxx, вставляют в скетч, и тогда пишут Dxx.
 
Повторюсь... это ESP, и тут пишут цифрами. Видел для Wemos пишут таблицу соответствия Dxx - GPIOxx, вставляют в скетч, и тогда пишут Dxx.
Да я вот до сегодняшнего дня тоже так думал. Но у меня написано #define DATA_PIN 4, т.е. это GPIO4, но система понимает, что это именно D4. Если пишу D4 или 2 (от GPIO2) вообще матрица не работает! Уже 10 раз проверил маршруты, все правильно на D4 запаяно. Вот у меня и мысли ходят. Ведь если я беру пример из библиотеки часы работают, а если подствлаю строки из примера в свой скетч, сразу билиберда вместо времени!
 
А не может это зависить от оболочки, в которой программируешь? Я в ArduinoIDE пишу. Ну и гружу оттуда же. Может что другое попробовать?
 

CodeNameHawk

Moderator
Команда форума
define DATA_PIN 4, т.е. это GPIO4, но система понимает, что это именно D4.
4 и GPIO4 это одно и тоже, а D4 может быть на другом номере gpio, зависит от того, какая плата выбрана в ардуино виде.

wemos d1 mini D4 это gpio2, D2 это gpio4
 
Последнее редактирование:
Распиновку я давно нашел. Сейчас экспериментировал, у меня много что через D было прописано
Код:
#define DATA_PIN 4  //пин матрицы
#define LIGHT_PIN A0  //пин
#define ONE_WIRE_BUS D3 //контакт для передачи данных подключен к D1 ES8266 12-Е (GPIO5)
#define MOVE D7 //датчик движения
#define POWER_PIN D8 //пин состояния датчика движения

void setup() {
..
..
Wire.begin(D6, D5);
..
..
}
Видите DATA_PIN значится 4, а висит он на D4. Так вот если сменить на D4 или 2 (от GPIO2), то не работает,Ю работает только при 4. А остальные D на цифру при GPIO можно поменять. Вот так
Код:
#define DATA_PIN 4  //пин матрицы
#define LIGHT_PIN A0  //пин
#define ONE_WIRE_BUS 0 //контакт для передачи данных подключен к D1 ES8266 12-Е (GPIO5)
#define MOVE 13 //датчик движения
#define POWER_PIN 15 //пин состояния датчика движения

void setup() {
..
..
Wire.begin(12, 14);
..
}
А вот если как для матрицы у остальных буду писать не D3, а 3, то не работает. Не понимаю. Может конечно дело и не в этом, но удивляет, что если пишу код ТОЛЬКО для часов без всех датчиков и матриц, то часы работают правильно. Наверное буду сейчас датчики отцеплять и смотреть.
 

Вложения

Нашел с чем конфликт. Убрал все связаное с датчиком BME280 (он тоже на i2c, но на других выводах) сразу часы пошли. Разкомментировал Wire.begin(12, 14); сразу опять немыслимые цифры. Буду ковырять BME280 теперь.
 
Ну чтож, всем спасибо. Этот вопрос решился. Перепаял датчким bme280 на 13 и 14 ногу, убрал запуск DS1307 rtc.begin();, т.к. в библиотеке он именно стартует wire.
 
Просто DS1307 рассчитана на 5v VCC, соответственно в SDA и SCL она дает до 5v. Нужно еще ведь конвектор уровней к ней, чтобы из 5 к 3.3 было.
 
Сверху Снизу