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

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

fsergei70

New member
Это мой первый опыт работы с ESP, не подскажете в какой последовательности загружать файлы из архива 1 пост. Открыл проект в IDE а там несколько вкладок. Какие настройки arduino ide выбирать, я имею в виду память 4 (1spiffs) или 4 (3spiffs), какую частоту. У меня плата nodemcu V3 Lua
 
не подскажете в какой последовательности загружать файлы из архива
все файлы из папки "clock5web"

Какие настройки arduino ide выбирать
Screenshot_1.jpg

я имею в виду память 4 (1spiffs) или 4 (3spiffs)
без разницы, выбирай любые.
 
  • Like
Реакции: SES

Сергей_Ф

Moderator
Команда форума
@fsergei70 в архиве не бинарник прошивки, а скетч для Arduino IDE. Разархивируйте все файлы в папку проекта и открывайте с помощью IDE. Она сама всё откроет правильно. Потом компилируйте и заливайте в есп.
 

SES

New member
Добрый день!
Уважаемый @voldemar2005, у меня есть несколько вопросов:
  1. У меня на матрице постоянно светится крайняя правая точка в нижнем ряду, как ее потушить, или она там нужна для каких то целей?
  2. С какой целю вы тушите Wi-Fi?
  3. Почему не используете системные часы?
Код:
  setSyncProvider(getNtpTime);
  setSyncInterval(3600);
P.S.: Это мое первое знакомство с ESP (Arduino) и периферией.
Заранее благодарен,
Евгений.
 
SES,
1. Если светится вверху, то это включенный будильник, внизу - включенный WiFi.
2. А зачем его держать включенным, если он нужен только для синхронизации времени, один раз в день. Как никак но эфир засоряет.
3. А что такое системные часы? Этот код я так понял синхронизирует время по NTP, а для этого необходим постоянно включенный WIFi (см.п.2). Точности DS3231 с головой хватает, даже синхронизация раз в день излишняя.
 

Xakep

New member
В общем может кому нибудь пригодиться...

Одновременно в живую изучал что такое микроконтроллеры и с чем их едят, и пытался сделать что нибудь нужное.
Делюсь "Как есть" тем что у меня получилось.

. Будильники сейчас управляют 3-мя реле. пины реле прописываются в массиве alarm_pin
. За место одного из реле можно подключить пассивный Бузер, номер реле за место которого потключен Бузер прописывается в константе buzzer
. Добавлен MQTT
. Можно читать через MQTT и отображать на табло погоду с уличного датчика
. Можно транслировать через MQTT температуру с внутреннего датчика
. Можно управлять реле через MQTT

. WiFi сейчас подключен постоянна из за MQTT

Примечание: Топик управления реле является префиксом, т.е. чтобы например включить третье реле нужно будет послать в топик ESP8266/Clock/RELAY_3 1 , а что бы выключить 0.
Для второго реле топик будет оканчиваться /RELAY_2 , и /RELAY_1 для первого реле...






ps Что то доделывать или править под чьи то желания, я не буду. Без обид...
 

Вложения

Последнее редактирование:

yri26

New member
В общем может кому нибудь пригодиться...

Одновременно в живую изучал что такое микроконтроллеры и с чем их едят, и пытался сделать что нибудь нужное.
Делюсь "Как есть" тем что у меня получилось.

. Будильники сейчас управляют 3-мя реле. пины реле прописываются в массиве alarm_pin
. За место одного из реле можно подключить пассивный Бузер, номер реле за место которого потключен Бузер прописывается в константе buzzer
. Добавлен MQTT
. Можно читать через MQTT и отображать на табло погоду с уличного датчика
. Можно транслировать через MQTT температуру с внутреннего датчика
. Можно управлять реле через MQTT

. WiFi сейчас подключен постоянна из за MQTT






ps Что то доделывать или править под чьи то желания, я не буду. Без обид...
Пробую скомпилировать и залить на
nodemcu V3 Lua что ни делаю выдает: 'Ошибка компиляции для платы NodeMCU 1.0 (ESP-12E Module).' Помогите пожалуйста.


 

Вложения

yri26

New member
@Xakep
Библиотеку Time-master установил, спасибо, но пошли другие ошибки по добавлению библиотек, их установил ну вот последняя вылезла:
E:\Arduino\libraries\AzureIoTHubMQTTClient\src\AzureIoTHubMQTTClient.cpp:210:31: error: 'jsonBuffer' was not declared in this scope
StaticJsonBuffer<200> jsonBuffer;
^
exit status 1
Ошибка компиляции для платы NodeMCU 1.0 (ESP-12E Module).
Не думал что такая запара с компиляцией в Arduino IDE!
 

Xakep

New member
ну вот последняя вылезла:
Я это предвидел, и по этому перезалил свой архив.
В нем приложил библиотеки Time-master и pubsubclient-master ...
А вот свою папку E:\Arduino\libraries\AzureIoTHubMQTTClient перемести пока куда нибуть в другое место, что бы они не конфликтовали с pubsubclient-master .

Не думал что такая запара с компиляцией в Arduino IDE!
Настоящая запара с компиляцией из исходников к которым приложен только Readme.txt и в котором написано всего две строчки -
make
make install
....
 

yri26

New member
Я это предвидел, и по этому перезалил свой архив.
В нем приложил библиотеки Time-master и pubsubclient-master ...
А вот свою папку E:\Arduino\libraries\AzureIoTHubMQTTClient перемести пока куда нибуть в другое место, что бы они не конфликтовали с pubsubclient-master .


Настоящая запара с компиляцией из исходников к которым приложен только Readme.txt и в котором написано всего две строчки -
make
make install
....
Все хорошо, скомпилировалось, спасибо за отзывчивость!:)
 

Вложения

Hi Valdemar2005.
Congratulations for the project.
I would like to do this watch too but I have problems with compilation of the program.
I tried to compile by Arduino IDE 1.8.5 and I receive such errors:

In file included from c:\documents and settings\administrador\configurações locais\dados de aplicativos\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\1.20.0-26-gb404fb9-2\xtensa-lx106-elf\include\c++\4.8.2\utility:68:0,

from c:\documents and settings\administrador\configurações locais\dados de aplicativos\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\1.20.0-26-gb404fb9-2\xtensa-lx106-elf\include\c++\4.8.2\algorithm:60,

from C:\Documents and Settings\Administrador\Configurações locais\Dados de aplicativos\Arduino15\packages\esp8266\hardware\esp8266\2.4.1\cores\esp8266/Arduino.h:254,

from C:\DOCUME~1\ADMINI~1\CONFIG~1\Temp\arduino_build_996479\sketch\Clock5web.ino.cpp:1:

c:\documents and settings\administrador\configurações locais\dados de aplicativos\arduino15\packages\esp8266\tools\xtensa-lx106-elf-gcc\1.20.0-26-gb404fb9-2\xtensa-lx106-elf\include\c++\4.8.2\bits\c++config.h:429:30: fatal error: bits/cpu_defines.h: No such file or directory

#include <bits/cpu_defines.h>

^

compilation terminated.

exit status 1
Erro compilando para a placa Generic ESP8266 Module



As I try to compile with Arduino IDE 1.6.7 I get other errors:

C:\Program Files (x86)\Arduino\Clock5web\web.ino:505:3: warning: multi-line comment [-Wcomment]

//url='/set_param?tzone='+tzone+'&abrd='+abrd+'&brd='+brd+'&brd1='+brd1+'&brd2='+brd2+'&brd3='+brd3+'&brd4='+brd4+'&antp='+antp+'&hntp='+hntp+'&stim='+stim+'&temp='+temp;\n\

^

C:\Program Files (x86)\Arduino\Clock5web\Clock5web.ino: In function 'void loop()':

Clock5web:390: error: 'set_buf_scroll' was not declared in this scope

if( phase_scroll == 3) col_scroll = set_buf_scroll( "\x3b\x3b\x3b\x3b");

^

Clock5web:395: error: 'set_buf_scroll' was not declared in this scope

col_scroll = set_buf_scroll( bufip);

^

Clock5web:406: error: 'scroll_buf' was not declared in this scope

scroll_buf();

^

C:\Program Files (x86)\Arduino\Clock5web\Clock5web.ino: In function 'void scroll_buf()':

C:\Program Files (x86)\Arduino\Clock5web\Clock5web.ino:596:11: warning: unused variable 'num_byte' [-Wunused-variable]

uint8_t num_byte, num_bit, b;

^

C:\Program Files (x86)\Arduino\Clock5web\Clock5web.ino:596:21: warning: unused variable 'num_bit' [-Wunused-variable]

uint8_t num_byte, num_bit, b;

^

C:\Program Files (x86)\Arduino\Clock5web\max7219.ino: In function 'void max_set_row_full(uint8_t, byte*, byte)':

C:\Program Files (x86)\Arduino\Clock5web\max7219.ino:51:14: warning: comparison is always false due to limited range of data type [-Wtype-limits]

if ( row < 0 || row > 7) return;

^

C:\Program Files (x86)\Arduino\Clock5web\show_time.ino: In function 'void show_time(bool)':

C:\Program Files (x86)\Arduino\Clock5web\show_time.ino:7:8: warning: unused variable 'out' [-Wunused-variable]

byte out;

^

C:\Program Files (x86)\Arduino\Clock5web\show_time.ino: In function 'void set_type_font()':

C:\Program Files (x86)\Arduino\Clock5web\show_time.ino:292:20: warning: comparison is always false due to limited range of data type [-Wtype-limits]

if ( add_shift < 0) add_shift = 0;

^

C:\Program Files (x86)\Arduino\Clock5web\wifi.ino: At global scope:

C:\Program Files (x86)\Arduino\Clock5web\wifi.ino:50:6: warning: unused parameter 'value' [-Wunused-parameter]

void get_num( int value, uint8_t index)

^

C:\Program Files (x86)\Arduino\Clock5web\wifi.ino:50:6: warning: unused parameter 'index' [-Wunused-parameter]

Usando a biblioteca ESP8266WiFi na versão 1.0 na pasta: C:\Users\STANLEY\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.1\libraries\ESP8266WiFi
Usando a biblioteca ESP8266WebServer na versão 1.0 na pasta: C:\Users\STANLEY\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.1\libraries\ESP8266WebServer
Usando a biblioteca EEPROM na versão 1.0 na pasta: C:\Users\STANLEY\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.1\libraries\EEPROM
Usando a biblioteca Time-master na versão 1.5 na pasta: C:\Program Files (x86)\Arduino\libraries\Time-master
Usando a biblioteca Wire na versão 1.0 na pasta: C:\Users\STANLEY\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.1\libraries\Wire
Usando a biblioteca ESP8266HTTPUpdateServer na versão 1.0 na pasta: C:\Users\STANLEY\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.1\libraries\ESP8266HTTPUpdateServer
Usando a biblioteca Ticker na versão 1.0 na pasta: C:\Users\STANLEY\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.1\libraries\Ticker
exit status 1
'set_buf_scroll' was not declared in this scope


Arduino 1.6.7 and 1.8.5 installed on separate computers.

I am a beginner and I do not know what to do. You could help me ?

It is possible for you to generate a * .bin file so that it can be loaded by
FLASH DOWNLOAD TOOLS or other similar?
 

Zelezyka

New member
В общем может кому нибудь пригодиться...

Одновременно в живую изучал что такое микроконтроллеры и с чем их едят, и пытался сделать что нибудь нужное.
Делюсь "Как есть" тем что у меня получилось.

. Будильники сейчас управляют 3-мя реле. пины реле прописываются в массиве alarm_pin
. За место одного из реле можно подключить пассивный Бузер, номер реле за место которого потключен Бузер прописывается в константе buzzer
. Добавлен MQTT
. Можно читать через MQTT и отображать на табло погоду с уличного датчика
. Можно транслировать через MQTT температуру с внутреннего датчика
. Можно управлять реле через MQTT

. WiFi сейчас подключен постоянна из за MQTT

Примечание: Топик управления реле является префиксом, т.е. чтобы например включить третье реле нужно будет послать в топик ESP8266/Clock/RELAY_3 1 , а что бы выключить 0.
Для второго реле топик будет оканчиваться /RELAY_2 , и /RELAY_1 для первого реле...






ps Что то доделывать или править под чьи то желания, я не буду. Без обид...
Ошибка компиляции:
Arduino: 1.8.8 (Windows 10), Плата:"NodeMCU 1.0 (ESP-12E Module), 80 MHz, Flash, Disabled, 4M (no SPIFFS), v2 Lower Memory, Disabled, None, Only Sketch, 115200"

Clock5web_My:199:21: error: 'MQTT' does not name a type

Clock5web_My:199:34: error: expected unqualified-id before '&' token

Clock5web_My:199:34: error: expected ')' before '&' token

Clock5web_My:199:36: error: expected initializer before 'pub'

ntp:35:20: error: 'IPAddress' was not declared in this scope

ntp:35:31: error: 'timeServerIP' was not declared in this scope

ntp:62:20: error: variable or field 'sendNTPpacket' declared void

ntp:62:20: error: 'IPAddress' was not declared in this scope

ntp:62:31: error: 'address' was not declared in this scope

In file included from C:\Users\Р?лья\Documents\Arduino\Clock5web_My\Clock5web_My.ino:34:0:

Clock5web.h:66:43: error: 'time_t getNtpTime(IPAddress&)' redeclared as different kind of symbol

time_t getNtpTime( IPAddress &timeServerIP);

^

ntp:35:8: error: previous declaration of 'time_t getNtpTime'

C:\Users\Р?лья\Documents\Arduino\Clock5web_My\ntp.ino: In function 'bool get_ntp_time()':

ntp:19:57: error: 'getNtpTime' cannot be used as a function

C:\Users\Р?лья\Documents\Arduino\Clock5web_My\ntp.ino: In function 'time_t getNtpTime(IPAddress&)':

ntp:35:43: error: 'time_t getNtpTime(IPAddress&)' redeclared as different kind of symbol

ntp:35:8: error: previous declaration of 'time_t getNtpTime'

Несколько библиотек найдено для "PubSubClient.h"
Используется: C:\Program Files (x86)\Arduino\libraries\pubsubclient-master
Не используется: C:\Users\Илья\Documents\Arduino\libraries\ESP8266_Microgear
Не используется: C:\Users\Илья\Documents\Arduino\libraries\CMMC_MQTT_Connector
Несколько библиотек найдено для "TimeLib.h"
Используется: C:\Users\Илья\Documents\Arduino\libraries\Time-master
Не используется: C:\Users\Илья\Documents\Arduino\libraries\Time
Не используется: C:\Program Files (x86)\Arduino\libraries\Time-master
Не используется: C:\Users\Илья\Documents\Arduino\libraries\Time
Не используется: C:\Program Files (x86)\Arduino\libraries\Time-master
Не используется: C:\Users\Илья\Documents\Arduino\libraries\Time
Не используется: C:\Program Files (x86)\Arduino\libraries\Time-master
Не используется: C:\Users\Илья\Documents\Arduino\libraries\Time
Не используется: C:\Program Files (x86)\Arduino\libraries\Time-master
exit status 1
'MQTT' does not name a type
 

MrRites

New member
Сергей, здравствуйте. Я немного не понял как добавить функцию в скетч. Не могли бы вы сделать пример с запуском сервере и этим куском кода, чтобы было понятно, что и куда ставить!
Вы бы очень помогли мне. Заранее спасибо!
@Zelezyka
в web.ino надо добавить в строку function функцию JavaScript для обработки нажатия кнопки, она будет дергать URL /GPIO так:
Код:
\
function switch_GPIO(){\n\
request=new XMLHttpRequest();\n\
request.open('GET', '/GPIO', true);\n\
request.send();\n\
}\n\
\
добавить обработчик запроса URL:
Код:
//-------------------------------------------------------------- handleGPIO
void handleGPIO()
{
  serv_ms = millis(); // это для внутреннего использования в программе часов
  digitalWrite( relay_GPIO, !digitalRead (relay_GPIO)); // меняем состояния Пина на противоположенное
  DEBUG_MSG( "Set GPIO%d %d\n", relay_GPIO, digitalRead (relay_GPIO)); // отладочный вывод
  HTTP.send(200, "text/html", ""); //посылка ответа сервера
}
добавить например в конец void handleTime() перед
str += html_end();
Сам код кнопки в http:
Код:
  str += "<tr><td colspan='3' class='h'><button onclick='switch_GPIO();'>GPIO</button></td></tr>\n";
в основном Clock5web.ino добавить название и номер Пина, который дергать:
Код:
 #define relay_GPIO ВАШ_НОМЕР_ПИНА //13
в setup() определить режим Пина и присвоить обработчик URL для соответствующего адреса запроса:
Код:
  pinMode( relay_GPIO, OUTPUT);
  HTTP.on( "/GPIO", handleGPIO);
кажется всё. Тогда на странице Время внизу будет кнопка GPIO для вызова JavaScript, который отправляет запрос на сервер esp, который вызывает обработчик страницы, а уже он переключает пин relay_GPIO.
Сергей, здравствуйте. Я немного не понял как добавить функцию в скетч. Не могли бы вы сделать пример с запуском сервере и этим куском кода, чтобы было понятно, что и куда ставить!
Вы бы очень помогли мне. Заранее спасибо!
 

Сергей_Ф

Moderator
Команда форума
@MrRites давайте вы попробуете сделать все точно как написано. А уж если что то будет непонятно или не получаться, то задавайте вопросы конкретно. На мой взгляд описано максимально подробно, больше добавить мне нечего.
Если вопрос именно про функцию, то прямо так как написано и добавляете. Вместе со слешами. Копируете и вставляете в файл web.ino в конец функций.
 

Maunty

New member
Друзья скиньте плиз полный комплект библиотек для прошивки. Ругается на mqtt и полный комплект библиотек. Буду очень признателен.
 

MrRites

New member
@MrRites давайте вы попробуете сделать все точно как написано. А уж если что то будет непонятно или не получаться, то задавайте вопросы конкретно. На мой взгляд описано максимально подробно, больше добавить мне нечего.
Если вопрос именно про функцию, то прямо так как написано и добавляете. Вместе со слешами. Копируете и вставляете в файл web.ino в конец функций.
Извините, что неконкретно задал вопрос. Дело в том, что я делаю другой проект и мне необходимо загрузить в файловую систему ESP страничку (HTML, CSS, JavaScript), создать кнопку на странице и опрашивать ее на нажатие, при этом она не должна быть ссылкой. После нажатия на кнопку, условно говоря, должен загореться светодиод. Как я понял, по вашему примеру это возможно.
Лично у меня, когда я пытался разобраться с этим сам, не удалось связать код ESP и HTML страницу которая находится в файловой системе.

В вашем примере, я понимаю, будет необходимо добавить еще несколько строк для определения функции, но я не знаю какие. Не могли бы вы мне подсказать как это сделать. Если вам,к конечно не сложно.
Заранее спасибо, хорошего дня!
 
Сверху Снизу