• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе 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 было.
 
Сверху Снизу