Сейчас расскажу о программировании модулей в среде Arduino IDE. Заодно в этой статье можно узнать, как сделать часы с синхронизацией времени по NTP протоколу.
Короткий экскурс по программированию ESP-шек
Изначально с завода ESP8266 идут с прошивкой от компании Espressif. В данной прошивке реализована работа с WiFi модулем как с модемом, через AT команды, подаваемые в последовательный порт. В таком режиме хорошо управлять ESP-шкой с внешнего контроллера, тем же Arduono, правда интерфейс обмена данными с контроллером, на мой взгляд, довольно тормозной.
Компания Espressif выпускает SDK для этих модулей, позволяющей разрабатывать собственные прошивки. Здесь подробно описано о данном процессе. Здесь все хорошо по возможностям, но довольно сложно по среде разработки и программировании.
Можно воспользоваться готовыми прошивками со встроенными интерпретаторами. Например, в этой статье я экспериментировал с прошивкой NodeMCU, позволяющей реализовывать логику работы модуля на встроенном интерпретаторе LUA. Можно использовать прошивку со встроенным JavaScript. К недостаткам таких прошивок я бы отнес «прожорливость» встроенных интерпретаторов к ресурсам ESP, в первую очередь ОЗУ, медленную работу и небольшое количество готовых библиотек.
Есть еще ряд прошивок, которые позволяют настроить работу модуля через WEB-интерфейс. Например коммерческая HOME-SMART, работа с которой описана мною здесь. Данная прошивка дает быстрый старт на ряд применений, но, к сожалению, никаких возможностей к расширению и созданию собственных алгоритмов работы не имеет. Хотя авторы очень быстро развивают возможности данной прошивки и в новой версии недавно появилась возможность разработки собственных модулей на Си к ней.
И, наконец, я подошел к еще одному способу программирования ESP8266 — из среды Arduino IDE. Мне, реализовавшему десятки проектов в этой среде, такой способ работы очень понравился. К тому же, большая часть библиотек для Arduino, не использующий внутренние порты и прочие аппаратные возможности микроконтроллера, отлично работают и на ESP-модулях.
Подключение и настройка ESP8266 в среде Arduino IDE
Очень хорошо работа с ESP8266 в среде Ардуино IDE описана в этой статье.
Хочу немного добавить, что купленные мною модули ESP-07 распаянные на платы-адаптеры уже практически готовы к использованию. Подключаем TX/RX и GND к TTL-USB конвертеру, например, такому. Подключаем питание 3.3В к VCC. Для загрузки прошивки GPIO0 присоединяем к земле. Собственно и все. Подключить GPIO0 и RESET к данному конвертеру у меня не получилось, но это оказалось не сильно нужно. При подсоединенном GPIO0 к земле ESP находится в режиме загрузки прошивки во флэш-память, но после загрузки происходит запуск программы без отсоединения данного GPIO. Это позволяет вполне комфортно отлаживать свою программу. Нужно перед загрузкой только перезагрузить модуль передергиванием питания или кратковременно подав на вывод RESET на землю. Я припаял для этого специальную кнопку
На снимке виден еще и припаянный конденсатор, так как были подозрения неустойчивой работы ESP-шки от пульсаций по питанию. Два последних модуля вполне стабильно работают без этого конденсатора.
Итак модуль подключен, среда настроена. Для ES07 все настройки ESP8266 ставятся «по умолчанию»:
Пример разработки прошивки для ESP8266 в Ardiuno IDE
Итак, среда установлена и настроена. Модуль подключен и тестовое «Hello, World!» грузится.
Теперь разработаем что-нибудь полезное. Например, часы на четырехразрядном семисегментном индикаторе с микросхемой TM1637.
Для работы с этим модулем я взял готовую библиотеку для Ардуино DigitalTube. «По умолчанию», дополнительные библиотеки устанавливаются в каталог: «Мои документы\Arduino\libraries\». Чтобы оправдать использование WiFi-модуля, эти часы буду синхронизировать время с NTP сервером в интернете.
Подключаем ESP, дисплей к CLK -> GPIO4, DIO ->GPIO5, стабилизатор 3.3В и USB-TTL конвертер макетными проводами
Загружаем прошивку: Скетч для ESP8266 часов NTP.
Настраиваем параметры своей точки доступа: AP_SSID и AP_PASS, свою таймзону TIMEZONE. У меня установлена TIMEZONE 5 для Перми/Екатеринбурга. Для Москвы будет TIMEZONE 3.
Функцией tm1637.set(2) устанавливаем необходимую яркость индикатора от 0 до 7.
Собирать все это в корпусе я не буду, так как это заготовка для будущего проекта.
Пока работал, кот следил за процессом через зеркало
Посмею поправить. На Homes-Smart появился редактор кода. Пока в тесте, но уже можно как-то прописывать свой алгоритм.
Поправил в статье.
Хотя документация нормальная этой прошивке бы совсем не помешала
Arduino IDE ESP8266
это редактор кода без ограничений как homes smart
Здравствуйте.
Подскажите пожалуйста, где брали такую удобную плату питания.
Спасибо и всего доброго.
Где то на EBAY или АЛИ пару лет назад. Сейчас точно таких нет, есть что-то подобное на два канала 3.3В или 5В:
http://ru.aliexpress.com/item/MB102-Breadboard-Power-Supply-Module-3-3V-5V-For-Solderless/1938037153.html
или
http://ru.aliexpress.com/item/MB102-Breadboard-Power-Supply-Module-3-3V-5V-For-Arduino-Solderless-Breadboard/1973601412.html
http://ru.aliexpress.com/item/1Pcs-Output-AMS1117-3-3-V-DC-DC-Power-Supply-Module-DC-Socket/32352827217.html
Доброе время!
Что я делаю не так?
ntp-clock.ino:1:25: fatal error: ESP8266WiFi.h: No such file or directory
Либо не установили пакет ESP8266 Core for Arduino IDE
Либо плату ESP8266 не выбрали в контроллерах
Почему то отказывается компилироваться скетч. Выдает вот такое…
ntp-clock:9: error: ‘TM1637’ does not name a type
ntp-clock.ino: In function ‘void setup()’:
ntp-clock:52: error: ‘tm1637’ was not declared in this scope
ntp-clock.ino: In function ‘void DisplayTime()’:
ntp-clock:134: error: ‘tm1637’ was not declared in this scope
‘TM1637’ does not name a type
делал все по вашей инструкции, не пойму в чем дело.
У вас не находится библиотека TM1637
Проверьте путь к пользовательским библиотекам и поместите туда TM1637
Что делать если в среде нету пункта «generic esp8266 module» ?
Скачал самую свежую только что … всё равно нет..
Залез в boards manager — там тоже ничего похожего нет… ввёл в поиск ESP — результат нулевой (((
Посоветуйте как быть?
Версия IDE должна быть 1.6.4 и выше
Нужно установить ESP Core for Arduino IDE по инструкции, описанной здесь:
http://esp8266.ru/arduino-ide-esp8266/
Спасибо за оперативный ответ! получилось ))
Пожалуй поясню в чём было дело — ключевым моментом оказалось то что необходимо в настройках в поле «Additional Boards Manager URLs» вставить ссылку http://arduino.esp8266.com/stable/package_esp8266com_index.json
А дальше всё как по маслу…
Можно вопрос. Установил Arduino 1.7.7 — так там в настройках не нахожу поле «Additional Boards Manager URLs» , куда надо вставить ссылку http://arduino.esp8266.com/stable/package_esp8266com_index.json
Ну нет там этого поля. Может надо установить версию Arduino 1.6.5 ?
Спасибо.
Пока сижу на 1.6.5, поэтому про 1.7.7 ничего не скажу
1.7 — форк, претендующий на … скачивать надо по ссылке из инструкции
некропост=)
Ну актуальность осталось. По прежнему сижу на Arduino IDE 1.6.5
А вот ESP CORE уже версии 2.3
Скажите, как часто обновляется время с сервера?
Как часто включается/долго работает ESP?
Делаю сейчас проект NTP-часов.
Время обновляю раз в 2ч. Включается ESP секунд 5 (инициализация библиотек), подключается к WiFi секунд 5-10. Перезагрузки идут очень редко
День добрый.
Поделитесь пожалуйста исходником к своему проекту
Желание собрать что то подобное есть (ESP8266, DS1307, TM1637)
а вот с программированием сложновато, но не безнадежно))
Заранее спасибо
http://samopal.pro/download/ntp-clock.ino
Здравствуйте! Скажите, можно ли подключить OLED SH1106? Везде библиотеки только для SSH1306! Мучаюсь уже 2 недели, но рабочих библиотек так и не нашел! Спасибо!
Попробуйте U8GLIB
подключать как в этой статье
Добрый день,
Меня интересует есть ли готовое решение чтобы передавать get/post запрос на мой сервер. На входе в esp будет два числа по uart — значение и id которые должны быть переданы на сервер например так http://109.109.102.82/meter/current_data.php?id='023932'&data='64343‘. Вам, как бывалому человеку в этой теме, легче сориентироваться где можно поискать ответ или людей которые занимались подобными задачами. Подскажите куда смотреть.
В Arduino IDE если программировать ESP-шку как то так будет
WiFiClient client;
IPAddress ip1(109,109,102,82);;
if (!client.connect(ip1, 80)) {
Serial.println("Connection %s failed");
return false;
}
String out = ""GET http://109.109.102.82/meter/current_data.php?id=023932&data=64343 HTTP/1.0\r\n\r\n";
client.print(out);
return true;
Через AT команды по другому, но примеров навалом
Доброго времени суток.
Решил так же поработат с Esp 8266.
Хотелос повторить Ваши опыты.
При реализации данного, столкнулся с ошибкой:
Arduino: 1.6.7 (Windows 7), Плата:»Generic ESP8266 Module, Serial, 80 MHz, 40MHz, DIO, 115200, 512K (64K SPIFFS), ck, Disabled, None»
J:\###YANDEX DISK###\===TECH===\=Arduino=\=Arduino=\=ПРОВЕРР?РўР¬=\NTP\ntp-clock\ntp-clock.ino: In function ‘void setup()’:
ntp-clock:44: error: ‘ConnectWiFi’ was not declared in this scope
J:\###YANDEX DISK###\===TECH===\=Arduino=\=Arduino=\=ПРОВЕРР?РўР¬=\NTP\ntp-clock\ntp-clock.ino: In function ‘void loop()’:
ntp-clock:68: error: ‘GetNTP’ was not declared in this scope
ntp-clock:79: error: ‘DisplayTime’ was not declared in this scope
J:\###YANDEX DISK###\===TECH===\=Arduino=\=Arduino=\=ПРОВЕРР?РўР¬=\NTP\ntp-clock\ntp-clock.ino: In function ‘bool GetNTP()’:
ntp-clock:146: error: ‘sendNTPpacket’ was not declared in this scope
exit status 1
‘ConnectWiFi’ was not declared in this scope
Подскажите, что я не учел?
Попробуйте 1.6.5 IDE. Под 1.6.7 раньше возникали проблемы при сборке
Спасибо! Помогло. Видать баг был со сборкой IDE.
А какая версия Core ESP была?
Вроде в последних сделали совместимость с IDE 1.6.7
Вы уж простите за глупые вопросы. Но, это мой первый опыт с данным модулем.
Если я вас верно понял, 2.0.0.
Теперь не загрузает скетч из IDE:
error: failed reading byte
warning: espcomm_send_command: cant receive slip payload data
error: failed reading byte
warning: espcomm_send_command: cant receive slip payload data
error: failed reading byte
warning: espcomm_send_command: cant receive slip payload data
error: failed reading byte
warning: espcomm_send_command: cant receive slip payload data
error: failed reading byte
warning: espcomm_send_command: cant receive slip payload data
error: failed reading byte
warning: espcomm_send_command: cant receive slip payload data
error: failed reading byte
warning: espcomm_send_command: cant receive slip payload data
error: failed reading byte
warning: espcomm_send_command: cant receive slip payload data
error: failed reading byte
warning: espcomm_send_command: cant receive slip payload data
warning: espcomm_sync failed
error: espcomm_open failed
error: espcomm_upload_mem failed
Invalid library found in C:\Program Files (x86)\Arduino\arduino-1.6.5-r5\libraries\Ethernet: Library can’t use both ‘src’ and ‘utility’ folders.
Invalid library found in C:\Program Files (x86)\Arduino\arduino-1.6.5-r5\libraries\WiFi: Library can’t use both ‘src’ and ‘utility’ folders.
Invalid library found in C:\Program Files (x86)\Arduino\arduino-1.6.5-r5\libraries\Ethernet: Library can’t use both ‘src’ and ‘utility’ folders.
Invalid library found in C:\Program Files (x86)\Arduino\arduino-1.6.5-r5\libraries\WiFi: Library can’t use both ‘src’ and ‘utility’ folders.
И еще вопрос по экрану, он сразу при подаче питания начитает работать, независимо от сигналов на входах? А то мой что то молит, подозреваю м.б. нерабочий пришел.
CH_PD через резистор к + чтобы работал
GPIO0 к земле чтобы программировался
Использую плату переходник, даже слегка ее доработал, кнопкой на RESET, там на CH_PD резистор есть, GPIO0 на землю замкнул. Грузит и в конце выдает то чтовыше написал.
Добрый день! Необходимо написать прошивку под ESP8266 за материальное вознаграждение 20000р.! Пожалуйста, свяжитесь со мной в скайпе alex268040
Тоже решил повторить часики но ESP8266-12E часто перезагружается, в консоли такое пишет:
Time: 23:24
Time: 23:24
Time: 23:24
Exception (0):
epc1=0x4020bac0 epc2=0x00000000 epc3=0x00000000 excvaddr=0x00000000 depc=0x00000000
ctx: sys
sp: 3ffffd80 end: 3fffffb0 offset: 01a0
>>>stack>>>
3fffff20: 3ffeeee8 000001cd 000001cd 4010020c
3fffff30: 00000000 00000000 3fff0eac 401008c8
3fffff40: 40223f21 3fff0eb4 3fff0eb4 40107218
3fffff50: 4021937f 00000196 00000000 4021938d
3fffff60: 40218b34 3fff0eb4 3fff091c 40223c7d
3fffff70: 00000000 3ffee5f0 021241ad 60000600
3fffff80: 40223cc2 3fffdab0 00000000 3fffdcb0
3fffff90: 3ffee600 3fff0eb4 00000000 40226fd2
3fffffa0: 40000f49 3fffdab0 3fffdab0 40000f49
<<<stack<<<
ets Jan 8 2013,rst cause:4, boot mode:(3,7)
wdt reset
load 0x4010f000, len 1264, room 16
tail 0
chksum 0x42
csum 0x42
~ld
Free Memory: 45680
Connecting to: TP-LINK_7C222C
3
WiFi connect true: 192.168.1.104/255.255.255.0/192.168.1.1
Starting UDP
Local port: 2390
sending NTP packet…
packet received, length=48
Unix time = 1458861854
Time: 23:24
Time: 23:24
Time: 23:24
не подскажите, в чем может быть проблема?
Вы столкнулись со срабатыванием сторожевого таймера WDT.
Это происходит, когда ESP не может перейти на обработку WiFi Слишком долго, по его мнению
Может он с точкой доступа не может соединится и «подвисает» при этом
Попробуйте в цикле loop() поставить delay() побольше и почаще.
повторил часики, только мне пришли из Китая индикаторы на 595 регистрах, пришлось слегка поправить код и до кучи добавил датчик DS18b20, мой первый опыт с 8266, правда заботало только на IDE 1.6.5, на 1.6.7 и 1.6.8 не компелировалось, а так штука прикольная 🙂
На вашу плату питания подается 12В? Это блок питания от телефона?
На вид плата питания AMS1117, а вот что за черный кабель к ней идет?
Черный кабель — это 5В через разъем питания. 12В входящих LM1117 не осилит. Сгорит с таким током потребления, а потом спалит ESP-шку
А отчево он запитан — 5В?
От чего угодно. От USB или блока питания, зарядника от телефона, повербанка
У вас запитано от зарядника? Не нашел у нас в городе зарядник от телефона, чтобы подходил к таким блокам питания или вы на али его заказывали?
Интересно, возможно ли использовать модуль как NTP-клиент для таких часиков http://www.rusimpuls.ru/production/ofisnye-chasy/.
Даже если и есть там синхронизация времени, то протокол, скорее всего, закрытый.
Да и дороговаты часики.
за 3000-4000 рублей можно собрать часики в красивом корпусе со всеми теми же функциями но подключенные к интернету и настраиваемые через встроенный WEB сервер
Здравия желаю:) !
Вопросы:
1. Есть ли зависания при работе девайса? Публикации почти год наверняка есть статистика на предмет зависаний? Нужно «собрать и забыть», в смысле оставить работать, чтобы девайс не требовал к себе внимания. Можно на это рассчитывать? Беглый просмотр инфы по esp8266 настораживает количеством сообщений о зависаниях. У этих замечательных часов возможен мертвый висяк? Может это только в старых моделях и уже пофиксили??? Это основной вопрос. Жду esp-13f с алиэкспресс.
2. Можно ли добавить сюда вэб-морду, обязательно с логином/паролем, в которой непродвинутый пользователь, зайдя по wi-fi, смог бы менять:
— имя ssid и пароль,
— имя сервера ntp
— и по возможности яркость?
3. Можно ли сделать переключение яркости по времени, с 23ч до 6ч яркость низкая, а днем высокая ? И тоже бы интервалы времени в вэб морду бы :)… Регулировка с датчиком освещенности не интересна.
4. Выложенный на странице скетч ntp-clock.ino — это свежая версия, может что-то уже правили/ фиксили за год?
5. Можно ли сделать, чтобы при отсутствии Инета часики не перезагружались (если правильно понял алгоритм их работы), а продолжали тикать автономно и при этом как-то индицировали отсутствие синхронизации, например, стали мигать не двумя точками секунд, а одной и вторая точка горит постоянно или наоборот не горит? Какая точность хода у часов была бы возможна при отсутствии инета, например за неделю?
6. Не совсем понятно — что будет если Инета нет долго (сутки, неделя)? Часы в цикле будут перезагружаться? Что при этом на дисплее будет отображаться?
Искреннее СПАСИБО за публикацию!!!
Извините пожалуйста за «многабуков»!
Очень интересная тема, познания в програмировании не великие, поэтому вопросы.
1. Зависания на ESP очень редкие, связаны с плохим питанием или внешними помехами, а вот перезагрузки от его внутреннего WDT-вещь довольно распостраненная
2,3,4 Да. Есть несколько свежих проектов, в том числе и часов с WEB-мордой, настройкой яркости и прочими фенечками. Будет время, обзор напишу обязательно
5,6 В некоторых версиях поставил еще и DS3231. Часы могут работать сколь угодно долго без Инета, а с ним только подстраиваются. WiFi в них интересен только как конфигуратор параметров через WEB
Спасибо! Дико ждем обзор на DS3231 с синхронизацией по ntp и web-мордой. И еще бы индикатор покрупнее бы 🙂 и модель бы его заранее знать бы чтобы уже заказать :). К заказаной ранее esp дозаказал на Али еще DS3231, удивила цена вопроса =34руб с бесплатной доставкой.
PS «мечты сбываются» 🙂 !
Добрый день!
Хочу сделать такие часы как у вас только на ESP8266-01 и тут возникает пару вопросов.
1. У 8266-01 2 GPIO(0 и 2), важно как им из них вешать CLK или DIO?
2. В коде TM1637_CLK 4 заменить на 0, а TM1637_DIO 5 на 2?
3. Как правильно прошивать eSP — когда все потребители (часы в данном случае) отключены ?
4. После окончания прошивки модуля — убрать питание и снять GPIO0 с GND (TTL UART кроме прошивки не нужен?) и соединить уже часами?
Спасибо.
Немного развлекся с кодом автора.
ESP8266 — 07, индикатор LCD 24×2
#include
#include
#include
#include
#define DS3231_SCL 1 //тут нужные пины для и2си
#define DS3231_SDA 3 //тут нужные пины для и2си
LiquidCrystal_I2C lcd(0x27, 24, 2);
#define AP_SSID «точкадоступа»
#define AP_PASS «парольточкидоступа»
#define TIMEZONE 3 //—— Москва
char ssid[] = «ссайди»; // your network SSID (name)
char pass[] = «ипаролькней»; // your network password
unsigned int localPort = 2390; // local port to listen for UDP packets
unsigned long ntp_time = 0;
long t_correct = 0;
unsigned long cur_ms = 0;
unsigned long ms1 = 0;
unsigned long ms2 = 10000000UL;
unsigned long t_cur = 0;
bool points = true;
unsigned int err_count = 0;
IPAddress timeServerIP;
const char* ntpServerName = «time.nist.gov»;
const int NTP_PACKET_SIZE = 48;
byte packetBuffer[ NTP_PACKET_SIZE];
WiFiUDP udp;
void setup()
{
Wire.begin(DS3231_SDA, DS3231_SCL); //тут запускаем и2си на наших пинах
lcd.begin();
lcd.setCursor(0, 0);
lcd.print(«Free Memory: «);
lcd.print(ESP.getFreeHeap());
delay(2000);
// Соединение с WiFi
if( !ConnectWiFi(AP_SSID,AP_PASS) ){
lcd.clear();
lcd.print(«Reset ESP8266 …»);
delay(2000);
ESP.reset();
}
delay(1000);
// Инициализауия UDP соединения с NTP сервером
lcd.clear();
lcd.print(«Starting UDP, port: «);
udp.begin(localPort);
delay(200);
lcd.print(udp.localPort());
delay(2000);
}
void loop(){
cur_ms = millis();
t_cur = cur_ms/1000;
// Каждые 60 секунд считываем время в интернете
if( cur_ms 60000 ){
err_count++;
// Делаем три попытки синхронизации с интернетом
if( GetNTP() ){
ms2 = cur_ms;
err_count = 0;
t_correct = ntp_time — t_cur;
}
}
// Каждые 0.5 секунды выдаем время 500
if( cur_ms 1000 ){
ms1 = cur_ms;
ntp_time = t_cur + t_correct;
DisplayTime();
points = !points;
}
// Если нет соединения с интернетом, перезагружаемся
if( err_count > 10 ){
lcd.clear();
lcd.print(«NTP connect false»);
lcd.setCursor(0, 1);
lcd.print(«Reset ESP8266 …»);
delay(2000);
ESP.reset();
}
delay(100);
}
/**
* Соединение с WiFi
*/
bool ConnectWiFi(const char *ssid, const char *pass) {
// Три попытки соединения по WiFi
for( int i=0; i<3; i++){
lcd.clear();
lcd.print("Connecting to: ");
lcd.print(ssid);
WiFi.begin(ssid,pass);
delay(2000);
// Максиммум 12 раз проверка соединения
for( int j=0; j<12; j++ ){
if (WiFi.status() == WL_CONNECTED) {
lcd.setCursor(0, 1);
lcd.print("IP ");
lcd.print(WiFi.localIP());
//lcd.print(" mask ");
//lcd.print(WiFi.subnetMask());
//lcd.print(" gate ");
//lcd.println(WiFi.gatewayIP());
delay(5000);
return true;
}
lcd.setCursor(0, 0);
lcd.print(WiFi.status());
delay(5000);
}
}
lcd.setCursor(0, 1);
lcd.print("Connect WiFi failed …");
return false;
}
/**
* Выдача текущего времени на индикатор
*/
void DisplayTime(void){
uint16_t m = ( ntp_time/60 )%60;
uint16_t h = ( ntp_time/3600 )%24;
lcd.setCursor(0, 1);
lcd.print("Time: ");
lcd.print(h);
lcd.print(":");
lcd.println(m);
}
/**
* Посылаем и парсим запрос к NTP серверу
*/
bool GetNTP(void) {
WiFi.hostByName(ntpServerName, timeServerIP);
sendNTPpacket(timeServerIP);
delay(1000);
int cb = udp.parsePacket();
lcd.setCursor(0, 0);
if (!cb) {
lcd.print("No packet yet ");
//Serial.println("No packet yet");
return false;
}
else {
lcd.print("packet received, length=");
lcd.println(cb);
// Читаем пакет в буфер
udp.read(packetBuffer, NTP_PACKET_SIZE);
// 4 байта начиная с 40-го сождержат таймстамп времени — число секунд
// от 01.01.1900
unsigned long highWord = word(packetBuffer[40], packetBuffer[41]);
unsigned long lowWord = word(packetBuffer[42], packetBuffer[43]);
// Конвертируем два слова в переменную long
unsigned long secsSince1900 = highWord << 16 | lowWord;
// Конвертируем в UNIX-таймстамп (число секунд от 01.01.1970
const unsigned long seventyYears = 2208988800UL;
unsigned long epoch = secsSince1900 — seventyYears;
// Делаем поправку на местную тайм-зону
ntp_time = epoch + TIMEZONE*3600;
lcd.setCursor(0, 0);
lcd.print("Unix time = ");
lcd.print(ntp_time);
}
return true;
}
/**
* Посылаем запрос NTP серверу на заданный адрес
*/
unsigned long sendNTPpacket(IPAddress& address)
{
lcd.print("sending NTP packet…");
// Очистка буфера в 0
memset(packetBuffer, 0, NTP_PACKET_SIZE);
// Формируем строку зыпроса NTP сервера
packetBuffer[0] = 0b11100011; // LI, Version, Mode
packetBuffer[1] = 0; // Stratum, or type of clock
packetBuffer[2] = 6; // Polling Interval
packetBuffer[3] = 0xEC; // Peer Clock Precision
// 8 bytes of zero for Root Delay & Root Dispersion
packetBuffer[12] = 49;
packetBuffer[13] = 0x4E;
packetBuffer[14] = 49;
packetBuffer[15] = 52;
// Посылаем запрос на NTP сервер (123 порт)
udp.beginPacket(address, 123);
udp.write(packetBuffer, NTP_PACKET_SIZE);
udp.endPacket();
}
В инклюдах
ESP8266WiFi.h
WiFiUdp.h
LiquidCrystal_I2C.h
Wire.h
Собрал. Работают, но странно. Пару минут после включения показывают время точно, ушел минут на 5-10, возвращаюсь — отстают точно на 2 минуты. Выключаю, включаю питалово, наблюдаю безотрывно за индикатором, сравнивая с точными часами с секундами. Опять пару минут идут точно, потом в 10:14, естественно должно быть следующее значение 10:15, но вместо 10:15 на индикаторе на долю секунды отображается 10:13 и дальше опять 10:14, вместо 10:15. В скетче менял только ssid, пароль и таймзону. Может мне esp или 1637 глючные попались? 1117 с ali тоже странный — на входе 5.65в, на выходе только 3.25 и под нагрузкой и без. Проверить в терминале, что там в ESP твориться пока не было времени, видимо в след. выходные.
Спасибо за проект. Все сразу заработало)))
Доброго дня! Подскажите пожалуйста, как создать соединение по UDP между двумя устройствами ESP8266. И ещё вопрос, как в этом модуле с защитой, если я прошил его, чтобы слить прошивку было невозможно. Спасибо!
1. Ну на одном поднять сервер UDP, на втором клиента. Примеры клиента есть Arduino IDE. Чем HTTP не устраивает, который уже реализован в библиотеках?
2. Никак. Программатором я с внешней микросхемы могу скачать любую прошивку и залить ее в другую ESP
Можно как то попытаться зашифровать данные и хранить ключ на внешнем ресурсе. Тогда программа просто не будет работать
Здравствуйте Алексей. Часто читаю Ваш сайт. Пытаюсь начать программировать, но нигде нет обучения на youtube много видео якобы «программирование esp8266» начинаешь смотреть, а там вводная часть как подключить как прописать стройки Arduino IDE а нужно именно программирование прям по строчкам что бы сделать то и то надо написать то-то и объясняется почему это, а не другое. Единственное что более внятное нашел: https://esp8266.ru/arduino-ide-esp8266/#func на енглише наверняка есть все но я средненько с ним. По примерам как то учится не выходит.
Берите учебник для программирования Arduino
База та же. Есть библиотеки, специальные для ESP
Полный список здесь
https://links2004.github.io/Arduino/index.html
Алексей, написал Вам на почту, но Вы не видите. Поэтому спрошу здесь.
Проект повторил, всё работает. Но хотелось бы немного расширить функционал — ввести датчик DHT22 (чтобы на дисплее попеременно отображалось время/температура/влажность с настраиваемым временем отображения). И ввести в скетч отправку на сервер Мажордомо в формате:
hostname:NAME;dhtt1:25.7;dhth1:38.4;
Помогите, пожалуйста, сам я не программист, только пытаюсь что-то
сделать.
ПС. Умный дом у меня работает полгода на Orange PiPC (Armbian). Наполняю потихоньку датчиками. Этот проект NTP часов тоже будет частью Мажордомо.
ППС. На Муське тоже регулярно читаю Ваши обзоры, сам иногда пишу.
Всем привет, надо разместить html страничку в модуле esp8266 может кто-нибудь сможет рализовать за денюшку
ой почту забыл приложить….ramuald_a@mail.ru