Простые WiFi часы

RedCat

New member
Всем доброго дня!
Переносил вот часики из макетки в продашн так сказать, столкнулся с неприятностью, хочу предупредить - пару часов метаний позволит избежать.
Касаемо подключения DS3231. На принципиальной схеме указано подключение SDA к GPIO4, а SCL к GPIO5 соответственно. На макетке так и расключал по схеме. При переносе в корпус и распайке смотрел в код Clock5web.ino
Код:
// ----------------------------------- I2C
#ifndef NO_DS3231
const uint8_t pin_i2c_scl  = 4;
const uint8_t pin_i2c_sda  = 5;
Подключил, имел интересный вечер с постоянной и никак неизменяемой датой 17.01.2063 на DS3231 o_O.

PS Дабы два раза не вставать - уважаемый ТС, не подскажете место в коде которым зажигается точка на дисплее при подключении WiFi?
 
Касаемо подключения DS3231
Спасибо, исправил ...
На схеме было все правильно, ошибки были в коде, исправления:
Код:
const uint8_t pin_i2c_scl  = 4;
const uint8_t pin_i2c_sda  = 5;
на
const uint8_t pin_i2c_sda  = 4;
const uint8_t pin_i2c_scl  = 5;

и

Wire.begin( pin_i2c_scl, pin_i2c_sda);
на
Wire.begin( pin_i2c_sda, pin_i2c_scl);
подскажете место в коде
show_time.ino 202 строка:
Код:
if( str == 7 && run_serv) str32 |= 1;
 
Последнее редактирование:

RedCat

New member
Таки двухнедельный опыт боевой эксплуатации показал крайнюю полезность изделия. ;)
Ночи у нас стоят холодные и одним глазом ночью смотреть время и мороз на улице весьма информативно.
Появились некоторые вопросы. Опрос уличного датчика сделал раз в 15 мин, через millis(). Но как-то за две недели эти миллисекунды опаздывают минуты на три. Я правильно понимаю что эти millis() отмеряются внутренним таймером камня считающем именно миллисекунды, а сам кристалл мы с успехом поправляем на правильное время по NTP?
И еще вопрос к ТС. Вот здесь люди пишут что раз уж так сложилось что у вас в проекте есть DS3231 то кошерно брать секундные тики с ее ноги SQW и использовать прерывания. Почему не пошли по этому пути?
 
millis() отмеряются внутренним таймером камня считающем именно миллисекунды, а сам кристалл мы с успехом поправляем на правильное время по NTP?
да, так и есть.
брать секундные тики с ее ноги SQW и использовать прерывания
на это есть две причины. Изучение ардуины и ESP я начал с разработки этих часов, и соответственно я тогда про эти возможности не догадывался ). И второе, а на какую ногу повесить прерывания, из свободных есть только GPIO15 а в модуле DS3231 SQW подтянут к плюсу, и в этом случае ESP может и не стартануть ...
 

vvi521

New member
Уважаемые, объясните бестолковому, а почему при срабатывании будильника часы не пищат, а просто щелкают? И в браузере вместо дней недели вопросительные знаки?
Без имени-1.jpg
 
Последнее редактирование:

Evgeniy163

New member
И в браузере вместо дней недели вопросительные знаки?
У меня тоже такое бывало при обновлении по воздуху. Вроде избавился переходом на Chrome и скетч вначале компилирую, а только потом экспортирую. Шаманство конечно, но мне помогло.
По будильнику не подскажу, не пользуюсь.
 

Сергей_Ф

Moderator
Команда форума
почему при срабатывании будильника часы не пищат, а просто щелкают?
очевидно, вы подключили не автопищалку, а динамик или что то подобное. Буззер должен сам пищать при подаче на него напряжения.
 

vvi521

New member
очевидно, вы подключили не автопищалку, а динамик или что то подобное. Буззер должен сам пищать при подаче на него напряжения.
Вы совершенно правы, у меня обычный динамик.
Без имени-2.jpg
Будем искать автопищалку. Спасибо.
 

Сергей_Ф

Moderator
Команда форума
@voldemar2005 есть проблема с будильником при работе без rtc. Синхронизация по сети срабатывает каждый час. Будильник часто ставят на ровное число часов. Во время синхронизации, мало того что сбиваются такты у мелодии, так ещё до момента отключения сети невозможно выключить будильник. Кнопка просто не работает по условиям внутри скетча. Можно сделать приоритет отключения будильника? Ну или сделать синхронизацию настраимовой не раз в час, а реже. Уход не такой уж и большой во встроенных часах.
 

vovka1021

New member
подскажите в чем ошибка?
ВНИМАНИЕ: Категория 'Sensor Control' в библиотеке MD_REncoder не является действительной. Установка на 'Uncategorized'
In file included from C:\Users\V.S.V\Desktop\Clock5web\Clock5web.ino:28:0:

C:\Users\V.S.V\Documents\Arduino\libraries\OneWire/OneWire.h:108:2: error: #error "Please define I/O register types here"

#error "Please define I/O register types here"

^

Несколько библиотек найдено для "OneWire.h"
Используется: C:\Users\V.S.V\Documents\Arduino\libraries\OneWire
Не используется: C:\Users\V.S.V\Documents\Arduino\libraries\OneWire-master
exit status 1
Ошибка компиляции для платы NodeMCU 1.0 (ESP-12E Module).
.
 
Последнее редактирование:

tr558

New member
Добрый день! Объясните пожалуйста на пальцах как настроить эти часы через web интерфейс?
 

Сергей_Ф

Moderator
Команда форума
@tr558 а в чём возникла трудность?
Подключаетесь к с сети, заходите на страничку часов и настраиваете. Первый раз на сеть часов и прописываете домашнюю сеть. Потом на адрес, который присвоен часам, и там все остальное.
 
Объясните пожалуйста на пальцах как настроить эти часы через web интерфейс?
Зажимаем кнопку настройки на часах на 2 сек, часы переходят в режим подключения к WiFi, если в часах нет настроек на свою беспроводную сеть, то создается точка доступа с адресом 192.168.4.1, подключаемся браузером на этот адрес и прописываем настройки своей WiFi сети. При последующих переходах в режим настройки будет производится подключения к этой точке доступа. Если часы собраны с дополнительным экраном, то на нем будете отображаться последние 2 числа IP адреса.
 
А как подключить DS1307 вместо DS3231?
Подключается он точно также по шине I2C, а вот программу надо будет переделывать. Если есть хороший интернет, то можно вообще обойтись без этого модуля (собрать с параметром NO_DS3231), время будет периодически синхронизироваться с интернетом.
 

vovka1021

New member
не пойму в чем ошибка. не может скомпилироваться
Код:
C:\Users\V.S.V\Desktop\Clock5web\Clock5web.ino: In function 'void loop()':

Clock5web:331: error: 'DEBUG_MSG' was not declared in this scope

     DEBUG_MSG( "restart ...");

                             ^

C:\Users\V.S.V\Desktop\Clock5web\Clock5web.ino: In function 'void check_sensor()':

Clock5web:386: error: call of overloaded 'set_brightness()' is ambiguous

     set_brightness();

                    ^

C:\Users\V.S.V\Desktop\Clock5web\Clock5web.ino:386:20: note: candidates are:

In file included from C:\Users\V.S.V\Desktop\Clock5web\Clock5web.ino:32:0:

sketch\Clock5web.h:43:6: note: void set_brightness(int)

 void set_brightness(int foto = 0);

      ^

C:\Users\V.S.V\Desktop\Clock5web\Clock5web.ino:410:6: note: void set_brightness()

 void set_brightness()

      ^

C:\Users\V.S.V\Desktop\Clock5web\Clock5web.ino: In function 'void set_brightness()':

Clock5web:428: error: 'DEBUG_MSG' was not declared in this scope

       DEBUG_MSG( "i=%d, foto=%d, level=%d\n", i, foto, level);

                                                             ^

Clock5web:451: error: 'DEBUG_MSG' was not declared in this scope

     DEBUG_MSG( "brightness: %d\n", cur_brightness);

                                                  ^

C:\Users\V.S.V\Desktop\Clock5web\ds3231.ino: In function 'void get_ds3231()':

ds3231:24: error: 'DEBUG_MSG' was not declared in this scope

     DEBUG_MSG( "DS3231 time = %d %02d.%02d.%04d %02d:%02d:%02d\n", weekday(ds3231_time), day(ds3231_time), month(ds3231_time), year(ds3231_time), hour(ds3231_time), minute(ds3231_time), second(ds3231_time));

                                                                                                                                                                                                              ^

C:\Users\V.S.V\Desktop\Clock5web\eeprom.ino: In function 'void read_settings_ESP()':

eeprom:14: error: call of overloaded 'set_brightness()' is ambiguous

     set_brightness();

                    ^

C:\Users\V.S.V\Desktop\Clock5web\eeprom.ino:14:20: note: candidates are:

In file included from C:\Users\V.S.V\Desktop\Clock5web\Clock5web.ino:32:0:

sketch\Clock5web.h:43:6: note: void set_brightness(int)

 void set_brightness(int foto = 0);

      ^

C:\Users\V.S.V\Desktop\Clock5web\Clock5web.ino:410:6: note: void set_brightness()

 void set_brightness()

      ^

C:\Users\V.S.V\Desktop\Clock5web\eeprom.ino: In function 'void clear_data()':

eeprom:43: error: 'DEBUG_MSG' was not declared in this scope

   DEBUG_MSG("EEPROM set default\n");

                                   ^

C:\Users\V.S.V\Desktop\Clock5web\max7219.ino: In function 'void max_init()':

max7219:19: error: call of overloaded 'set_brightness()' is ambiguous

   set_brightness();

                  ^

C:\Users\V.S.V\Desktop\Clock5web\max7219.ino:19:18: note: candidates are:

In file included from C:\Users\V.S.V\Desktop\Clock5web\Clock5web.ino:32:0:

sketch\Clock5web.h:43:6: note: void set_brightness(int)

 void set_brightness(int foto = 0);

      ^

C:\Users\V.S.V\Desktop\Clock5web\Clock5web.ino:410:6: note: void set_brightness()

 void set_brightness()

      ^

C:\Users\V.S.V\Desktop\Clock5web\ntp.ino: In function 'bool get_ntp_time()':

ntp:6: error: 'DEBUG_MSG' was not declared in this scope

   DEBUG_MSG("Starting UDP");

                           ^

C:\Users\V.S.V\Desktop\Clock5web\ntp.ino: In function 'time_t getNtpTime(IPAddress&)':

ntp:38: error: 'DEBUG_MSG' was not declared in this scope

   DEBUG_MSG( "Transmit NTP Request to ip: %d.%d.%d.%d\n", timeServerIP[0], timeServerIP[1], timeServerIP[2], timeServerIP[3]);

                                                                                                                             ^

C:\Users\V.S.V\Desktop\Clock5web\show_time.ino: In function 'void show_time(bool)':

C:\Users\V.S.V\Desktop\Clock5web\show_time.ino:7:8: warning: unused variable 'out' [-Wunused-variable]

   byte out;

        ^

C:\Users\V.S.V\Desktop\Clock5web\web.ino: In function 'void handleRoot()':

web:210: error: too few arguments to function 'String html_begin_body(bool)'

   str += html_begin_body();

                          ^

C:\Users\V.S.V\Desktop\Clock5web\web.ino:179:8: note: declared here

 String html_begin_body(bool show_foto)

        ^

C:\Users\V.S.V\Desktop\Clock5web\web.ino: In function 'void handleTime()':

web:264: error: too few arguments to function 'String html_begin_body(bool)'

   str += html_begin_body();

                          ^

C:\Users\V.S.V\Desktop\Clock5web\web.ino:179:8: note: declared here

 String html_begin_body(bool show_foto)

        ^

C:\Users\V.S.V\Desktop\Clock5web\web.ino: In function 'void handleWiFi()':

web:392: error: too few arguments to function 'String html_begin_body(bool)'

   str += html_begin_body();

                          ^

C:\Users\V.S.V\Desktop\Clock5web\web.ino:179:8: note: declared here

 String html_begin_body(bool show_foto)

        ^

C:\Users\V.S.V\Desktop\Clock5web\web.ino: In function 'void handleSetParam()':

web:612: error: call of overloaded 'set_brightness()' is ambiguous

   set_brightness();

                  ^

C:\Users\V.S.V\Desktop\Clock5web\web.ino:612:18: note: candidates are:

In file included from C:\Users\V.S.V\Desktop\Clock5web\Clock5web.ino:32:0:

sketch\Clock5web.h:43:6: note: void set_brightness(int)

 void set_brightness(int foto = 0);

      ^

C:\Users\V.S.V\Desktop\Clock5web\Clock5web.ino:410:6: note: void set_brightness()

 void set_brightness()

      ^

C:\Users\V.S.V\Desktop\Clock5web\wifi.ino: In function 'void sta_init()':

wifi:6: error: 'DEBUG_MSG' was not declared in this scope

     DEBUG_MSG("STA client '%s' started ...\n", eeprom_data.sta_ssid);

                                                                    ^

C:\Users\V.S.V\Desktop\Clock5web\wifi.ino: In function 'bool sta_check()':

wifi:24: error: 'DEBUG_MSG' was not declared in this scope

     DEBUG_MSG( "Local IP: %d.%d.%d.%d\n", localIP[0], localIP[1], localIP[2], localIP[3]);

                                                                                         ^

C:\Users\V.S.V\Desktop\Clock5web\wifi.ino: In function 'void ap_init()':

wifi:33: error: 'DEBUG_MSG' was not declared in this scope

   DEBUG_MSG("softAP '%s' started ...\n", eeprom_data.ap_ssid);

                                                             ^

C:\Users\V.S.V\Desktop\Clock5web\wifi.ino: In function 'void check_serv()':

wifi:106: error: 'DEBUG_MSG' was not declared in this scope

       DEBUG_MSG( "stop_serv");

                             ^

exit status 1
'DEBUG_MSG' was not declared in this scope
 
Последнее редактирование:

Pilnikov

Active member
voldemar2005,
обновил архив, проверьте сейчас. И папку с исходниками (Clock5web) надо положить в место которое указано в настройках Arduino IDE "Размещение папки скетчей".
Спасибо огромное вам за труды, я взял когда то давно ваш проект за основу - получилось так
https://esp8266.ru/forum/threads/nuzhna-pomosch-s-led-matricej-esp-arduino.2408/#post-35649

Кино
V_20170504_161319[1].mp4
V_20170504_223125[1].mp4
V_20170504_223306[1].mp4
V_20170504_223456[1].mp4

Это все одна и та же прошивка

Мои часики поддерживают тоже кучу всего.
Предлагаю объединить усилия для совместного развития проекта.
ToDo:
Доделать поддержку датчиков dht11(22), ds18b20
Сделать элемент управления "Календарь" дабы выводить в бегущую строку события в определенные дни недели (дни рождения праздники и т.д.)
Прицепить к будильникам интернет радио (посредством такого шилда НОВЫЙ VS1053B VS1053 MP3 Музыка щит совета Модуль с TF слот для карты Для Arduino UNO R3 купить на AliExpress)
Заменить мелодии будильника на "нормальные мп3"
Сделать часы "говорящими"
 
Последнее редактирование:
  • Like
Реакции: SES
Сверху Снизу