Пользует ли кто WiFi-модули ESP8266 ? Поделитесь впечатлениями.

Casper17
Offline
Зарегистрирован: 21.06.2013

А тут есть, кто пишет прошивки в Eclipse на Sming? Что бы помочь разобраться с программированием.

Sirocco
Offline
Зарегистрирован: 28.09.2013

Открыл для себя такую тему: https://github.com/esp8266/Arduino Можно кодить ESP8266 как ардуино.

Беру пример "Advanced Web Server", оригинальный кусок кода:

#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>

const char *ssid = "YourSSIDHere";
const char *password = "YourPSKHere";
MDNSResponder mdns;

ESP8266WebServer server ( 80 );

const int led = 13;

void handleRoot() {
	digitalWrite ( led, 1 );
	char temp[400];
	int sec = millis() / 1000;
	int min = sec / 60;
	int hr = min / 60;

	snprintf ( temp, 400,

"<html>\
  <head>\
    <meta http-equiv='refresh' content='5'/>\
    <title>ESP8266 Demo</title>\
    <style>\
      body { background-color: #cccccc; font-family: Arial, Helvetica, Sans-Serif; Color: #000088; }\
    </style>\
  </head>\
  <body>\
    <h1>Hello from ESP8266!</h1>\
    <p>Uptime: %02d:%02d:%02d</p>\
    <img src=\"/test.svg\" />\
  </body>\
</html>",

		hr, min % 60, sec % 60
	);
	server.send ( 200, "text/html", temp );
	digitalWrite ( led, 0 );
}

И по нему у меня вопрос. Кто может объяснить происходящее в строке №33 "<p>Uptime: %02d:%02d:%02d</p>\"

Что такое "%02d" ? Какие ещё варианты могут быть? И что такое в строке №38?

Я пробовал переделать код под себя, всунув DTH

#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>
//******************************
#include <dht.h>
dht DHT;
#define DHT22_PIN 2
//******************************
const char *ssid = "my";
const char *password = "1234";
MDNSResponder mdns;

ESP8266WebServer server ( 80 );

const int led = 13;

void handleRoot() {
	digitalWrite ( led, 1 );
	char temp[400];
 int chk = DHT.read22(DHT22_PIN);
	int sec = millis() / 1000;
	int min = sec / 60;
	int h = (DHT.humidity);
        int t = (DHT.temperature);

	snprintf ( temp, 400,

"<html>\
  <head>\
    </>\
    <title>Влажность</title>\
    <style>\
      body { background-color: #cccccc; font-family: Arial, Helvetica, Sans-Serif; Color: #000088; }\
    </style>\
  </head>\
  <body>\
    <h1>Hello from ESP8266!</h1>\
    <p>Uptime: %d | %d </p>\
    </>\
  </body>\
</html>",

		h, t
  
	);

	server.send ( 200, "text/html", temp );
	//digitalWrite ( led, 0 );
}

В принципе данные отображаются, но куда-то пропадают десятые, и остаются только целые. Как поправить? Как вообще вывести данные?

Если не делать так int h = (DHT.humidity); а сразу писать DHT.humidity, то вылазят странные многозначные значения. Если писать так (DHT.temperature, 1); то выводится только единица... Как быть?

Araris
Offline
Зарегистрирован: 09.11.2012

Это всего лишь функция  

snprintf ( temp, 400, ...<p>Uptime: %02d:%02d:%02d</p>\... , hr, min%60, sec%60 )

%02d %02d %02d - где выводить и как выводить,

hr, min%60, sec%60 - что выводить.

В общем, почитайте про snprintf(), там и про форматы вывода переменных найдете.

Sirocco
Offline
Зарегистрирован: 28.09.2013

Araris пишет:

Это всего лишь функция  

snprintf ( temp, 400, ...<p>Uptime: %02d:%02d:%02d</p>\... , hr, min%60, sec%60 )

%02d %02d %02d - где выводить и как выводить,

hr, min%60, sec%60 - что выводить.

В общем, почитайте про snprintf(), там и про форматы вывода переменных найдете.

Спасиб. Дофига чего читал, но задачу так и не решил..

zalias7
Offline
Зарегистрирован: 18.03.2015

Работал с одним ESP8266 посылал запросы с командой AT+CIPSEND=str.length()+1 без +1 выдаёт busy ... , с +1 работает. Подключил другой  ESP8266 (прошивки разные) и блин надо уже передавать AT+CIPSEND=str.length()+2 . Не знаете почему ? и что на это влияет ? :)

Andrey_Y_Ostanovsky
Offline
Зарегистрирован: 03.12.2012

zalias7 пишет:
Работал с одним ESP8266 посылал запросы с командой AT+CIPSEND=str.length()+1 без +1 выдаёт busy ... , с +1 работает. Подключил другой  ESP8266 (прошивки разные) и блин надо уже передавать AT+CIPSEND=str.length()+2 . Не знаете почему ? и что на это влияет ? :)

У разных "AT"-прошивок немножко разный синтаксис. Почему меняется синтаксис? Потому что это-ж надо было кому-то сесть, и сначала все продумать... Китайцы (да и нынешние европейские пионеры) - так не умеют. Вплоть до того, что у модемов AT команды были регистро-независимые, а у esp8266 "at" можно писать как угодно, а вот остальное - как в мануале... Такое ощущение, что изначальный код где-то сперли, но элементарно доработать не смогли.

zalias7
Offline
Зарегистрирован: 18.03.2015

Andrey_Y_Ostan спасибо за ответ. Прошивки я залил одинаковые последние и сейчас обоим есп надо length()+2.  .Бесит, нельзя использовать готовые библиотеки, без их правки :(.  Скажите у кого какая прошивка и работает без +2 :)

MikSer
Offline
Зарегистрирован: 27.01.2012

AT22SDK100-2015-03-20-boot1.3b.bin

Либа https://github.com/itead/ITEADLIB_Arduino_WeeESP8266

Andrey_Y_Ostanovsky
Offline
Зарегистрирован: 03.12.2012

MikSer пишет:
AT22SDK100-2015-03-20-boot1.3b.bin Либа https://github.com/itead/ITEADLIB_Arduino_WeeESP8266

Это прошивка под какой объем набортной памяти? 512К, или 1Мб?

А то, есть ощущение, что разработчики "старые" платы с 512К чипом уже похоронили и новые прошивки идут для плат с памятью мегабайт и более.

MikSer
Offline
Зарегистрирован: 27.01.2012

Под 512кБ.

mcshel
Offline
Зарегистрирован: 17.10.2014

Кстати не так давно увидел такую штуку) Молодцы китайцы.

http://ru.aliexpress.com/store/product/Free-Shipping-Smart-Electronics-E...

ratman
Offline
Зарегистрирован: 11.10.2015

Andrey_Y_Ostanovsky пишет:
У разных "AT"-прошивок немножко разный синтаксис. Почему меняется синтаксис? Потому что это-ж надо было кому-то сесть, и сначала все продумать... Китайцы (да и нынешние европейские пионеры) - так не умеют. Вплоть до того, что у модемов AT команды были регистро-независимые, а у esp8266 "at" можно писать как угодно, а вот остальное - как в мануале... Такое ощущение, что изначальный код где-то сперли, но элементарно доработать не смогли.

В моём экземпляре eps8266 всё только в верхнем регистре. Вобщем-то без разницы, но расхождение с канонической документацией настораживает. Мысль скребётся -- чего они там ещё не доложили.

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

ratman пишет:

В моём экземпляре eps8266 всё только в верхнем регистре. Вобщем-то без разницы, но расхождение с канонической документацией настораживает. Мысль скребётся -- чего они там ещё не доложили.

Не доложили чего? 0_о

Никто Вам не запрещает самостоятельно залить любую из существующих готовых АТ-прошивок. Или написать свою.

alexvp
Offline
Зарегистрирован: 09.10.2015

Я извиняюсь, если повторю вопрос. Но быстрый просмотр 14 страниц темы не дал на него ответа.

Тестирую esp8266-01 в режиме клиента при подключении к серверу. Коннект устанавливается и запросы посылаются. Но вот не приходит ответ с сервера. Через некоторое время получаю CLOSED.

Точнее, один раз пришел нормальный ответ от сервера в формате html. Но последующие попытки получить ответ не получились.

Подскажите, где можно почитать про организацию обмена данными с esp и сервером?

alexvp
Offline
Зарегистрирован: 09.10.2015

Я еще раз тут со своими вопросами :)

Уперся в стену и не знаю куда идти.

Пытаюсь через esp8266 подключиться к серверу и получить ответ. Запросы посылаю через терминал монитора IDE с помощью АТ-команд.  Обмен выглядит примерно так:

AT+CIPSTART="TCP","domen.ru",80

CONNECT

OK
AT+CIPSEND=22


OK
> GET / HTTP/1.0\r\n\r\n (это посылаю через монитор IDE)

busy s...

Recv 22 bytes

SEND OK

+IPD,166:<html>
<head><title>400 Bad Request</title></head>
<body bgcolor="white">
<center><h1>400 Bad Request</h1></center>
<hr><center>nginx</center>
</body>
</html>
CLOSED

Вроде бы брал рабочий пример, который находил в разных источниках

 

Подскажите, плиз

alexvp
Offline
Зарегистрирован: 09.10.2015

alexvp пишет:

Я еще раз тут со своими вопросами :)

Уперся в стену и не знаю куда идти.

Пытаюсь через esp8266 подключиться к серверу и получить ответ. Запросы посылаю через терминал монитора IDE с помощью АТ-команд.  Обмен выглядит примерно так:

AT+CIPSTART="TCP","domen.ru",80

CONNECT

OK
AT+CIPSEND=22


OK
> GET / HTTP/1.0\r\n\r\n (это посылаю через монитор IDE)

busy s...

Recv 22 bytes

SEND OK

+IPD,166:<html>
<head><title>400 Bad Request</title></head>
<body bgcolor="white">
<center><h1>400 Bad Request</h1></center>
<hr><center>nginx</center>
</body>
</html>
CLOSED

Вроде бы брал рабочий пример, который находил в разных источниках

 

Подскажите, плиз

Проблему удалось решить. Оказалось, что не надо в конце строки прописывать символы \r\n, но в команде AT+CIPSEND надо предусмотреть 2 символа добавить. Т.е. если длина строки 20, то надо писать в команде 22. Перевод строки подставлется самой командой АТ.

Все заработало.

zalias7
Offline
Зарегистрирован: 18.03.2015

У меня тоже надо добавлять +2 баита, почему так никто незнает и при том на разных есп.

MikSer посоветовал : AT22SDK100-2015-03-20-boot1.3b.bin

Либа https://github.com/itead/ITEADLIB_Arduino_WeeESP8266

Сеичас вопсче какие то непонятки неговоря что надо добовалять +15 баитов 53 строка strlen(hello)+15.

Даже интересно стало :) . этот пример из примеров либы у меня нечего не возвворсчает если я что нибудь меняю в строке 62 Serial.print("]\r\n"); ну например убираем символ ] всё нет ответа, хотя по логам на сервере видно что запрос проходит. Вопсчем совсем не понимаю причём эта строка и ответ, помогите :)

На сервере самый простои скрипт, возврасчает параметр а <?php echo $_GET["a"]; ?>

Сервер принципе тоже не причём на несколких испробовал.

P.S. 54 строка должна быть: char *hello = "GET http://www.vakaras.lt/a.php?a=18884";

движок форума переделавяет линк

 

#include "ESP8266.h"
#include <SoftwareSerial.h>
#define SSID        "YOU_SSID"
#define PASSWORD    "YOU_PASS"
#define HOST_NAME   "www.vakaras.lt"
#define HOST_PORT   (80)

SoftwareSerial esp8266Serial = SoftwareSerial(11,12);
ESP8266 wifi = ESP8266(esp8266Serial);

void setup(void)
{

    Serial.begin(9600);
    Serial.print("setup begin\r\n");
    Serial.print("FW Version:");
    Serial.println(wifi.getVersion().c_str());
      
    if (wifi.setOprToStationSoftAP()) {
        Serial.print("to station + softap ok\r\n");
    } else {
        Serial.print("to station + softap err\r\n");
    }
 
    if (wifi.joinAP(SSID, PASSWORD)) {
        Serial.print("Join AP success\r\n");
        Serial.print("IP:");
        Serial.println( wifi.getLocalIP().c_str());       
    } else {
        Serial.print("Join AP failure\r\n");
    }
    
    if (wifi.disableMUX()) {
        Serial.print("single ok\r\n");
    } else {
        Serial.print("single err\r\n");
    }
    
    Serial.print("setup end\r\n");
}
 
void loop(void)
{
    uint8_t buffer[128] = {0};
    
    if (wifi.createTCP(HOST_NAME, HOST_PORT)) {
        Serial.print("create tcp ok\r\n");
    } else {
        Serial.print("create tcp err\r\n");
    }
    
    char *hello = "GET http://www.vakaras.lt/a.php?a=18884";
    wifi.send((const uint8_t*)hello,strlen(hello)+15);
    
    uint32_t len = wifi.recv(buffer, sizeof(buffer), 10000);

    if (len > 0) {
        Serial.print("Received:[");
        for(uint32_t i = 0; i < len; i++) {
            Serial.print((char)buffer[i]);
        }
        Serial.print("]\r\n");
    }
    if (wifi.releaseTCP()) {
        Serial.print("release tcp ok\r\n");
    } else {
        Serial.print("release tcp err\r\n");
    }
    delay(10000);
}
     

 

alexvp
Offline
Зарегистрирован: 09.10.2015

Не могу подсказать, так как не пользовался никакой библиотекой, а работал напрямую с модулем. Возможно баг где-то в библиотеке.

zalias7
Offline
Зарегистрирован: 18.03.2015

ну хоть попробуете кто нибудь, интересно это только у меня так :) 

lehamozg
Offline
Зарегистрирован: 06.11.2015

Добрый день форумчане! Недавно приобрёл сие чудо в сборе за 10$, нашел инструкцию, программу для тестирования, но вот никак не могу понять как создать сам Web сервер в интернете. Я так понимаю в настройках я вбиваю свой вайфай с паролем и указываю куда цепляться, вот только куда и как создать??? сильно стого не судите, с web сервером да еще и на ардуино впервые делаю!

https://fineshang.gitbooks.io/esp8266-based-serial-wifi-shield-for-arduino-user/content/chapter4.html

AlekseyM
Offline
Зарегистрирован: 23.04.2013

Купил ESP2866 на 12 модуле, подсоединил к нему датчик температуры, отправляю данные на thingspeak.com, теперь при работе и настройке оборудования не надо бегать и смотреть температуру, сидишь спокойно и смотришь, что там происходит, сейчас хочу прикрутить ещё датчик напряжения и заменит 18b20 на совмещённый датчик влажности и температуры DTH 11.

shkaff
Offline
Зарегистрирован: 02.10.2015

Ребята, подскажите пожалуйста почему здесь некоторые схемы идут с ардуино, при том что сама ESP8266 как я понимаю вполне может самостоятельно принимать и отправлять данные по wifi будучи прикрученой к батарейке и паре датчиков?

Araris
Offline
Зарегистрирован: 09.11.2012

Если в ESP8266 залита АТ-прошивка, то можно подключить ESP8266 к Ардуино и использовать как адаптер Serial - WiFi, управляя АТ-командами.

lehamozg
Offline
Зарегистрирован: 06.11.2015

Значит никто мне не подскажет по поводу ESP-13?

Araris
Offline
Зарегистрирован: 09.11.2012

lehamozg пишет:
Значит никто мне не подскажет по поводу ESP-13?

Вряд ли. Вопрос "как создать сам Web сервер в интернете" достаточно общий и простого ответа не имеет. Вам бы поискать что-то типа https://www.google.com.ua/?gws_rd=ssl#q=esp8266+web+server , да почитать побольше из разных источников, глядишь, и ответ найдётся.

KVadik
KVadik аватар
Offline
Зарегистрирован: 15.06.2014

lehamozg пишет:
Значит никто мне не подскажет по поводу ESP-13?

А где был вопрос по ESP-13?

Если же Вы про Ваш вопрос "как создать сам Web сервер в интернете", то он, извините, говорит о том, что Вы не понимаете что хотите сделать.

lehamozg
Offline
Зарегистрирован: 06.11.2015

В том то и дело что в интернете полно примеров использования ESP8266 без arduino uno и второй момент в примерах прошивают модуль с логином и поролем сети, а у модуля ESP-13 логин и пороль забивается на 192.168.4.1 https://fineshang.gitbooks.io/esp8266-based-serial-wifi-shield-for-ardui...
Если нужно перепрошить модуль то как это зделать через arduino uno!?
В интернете ни одного примера нет про ESP-13 в таком исполнении....

KVadik
KVadik аватар
Offline
Зарегистрирован: 15.06.2014

Какая разница esp-13 оно или esp-хзчто, главное что оно ESP8266 и в виде чего китайцы его спаяли не важно. Примеров связи ESP8266 с ардуино масса. Главное подобрать хорошую прошивку для ESP8266.

tretyakov
Offline
Зарегистрирован: 09.11.2014

lehamozg пишет:
В том то и дело что в интернете полно примеров использования ESP8266 без arduino uno и второй момент в примерах прошивают модуль с логином и поролем сети, а у модуля ESP-13 логин и пороль забивается на 192.168.4.1 https://fineshang.gitbooks.io/esp8266-based-serial-wifi-shield-for-ardui... Если нужно перепрошить модуль то как это зделать через arduino uno!? В интернете ни одного примера нет про ESP-13 в таком исполнении....

Я на видео снимал и выкладывал пример работы с ESP-12, прошивка через Arduino Nano. Все тоже самое можно сделать с ESP-13 и Arduino UNO.

https://youtu.be/GDezCrN31KI

https://youtu.be/44iIrpjFkRI

Если есть вопросы спрашивайте.

Andrey_Y_Ostanovsky
Offline
Зарегистрирован: 03.12.2012

esp8266, как правило, перешиваются через линии Rx|Tx и одевание GND на GPIO0. Зачем Вам для этого прокладка в виде Uno?

lehamozg
Offline
Зарегистрирован: 06.11.2015

Наткнулся в интернете на интересную тему http://esp8266.ru/iot-manager-for-diy/#more-1108
Всё толково расписано, запустилось с первого раза. (Впринципи ответ на мой не корректный вопрос "как создать сервер в интернете")
Действительно на кой они Arduino UNO присобачили к ESP-13 до сих пор не понимаю, использую как питание для модуля.

AVL4ARDUINO
Offline
Зарегистрирован: 04.01.2012

Плата УНО в этом случае и выступает линиями РХ-ТХ. Ведь 8266 напрямую в ЮЗБ порт нельзя воткнуть  ибо нет там  этих сигналов.

lehamozg
Offline
Зарегистрирован: 06.11.2015

Вот только я не могу прошить модуль через UNO, не видит esp хоть ты тресни , даже кнопку резет зажимал чтобы только esp была подключена к rs232.....

AVL4ARDUINO
Offline
Зарегистрирован: 04.01.2012

А чем другим ті можеш прошить?

Next
Offline
Зарегистрирован: 01.09.2015

semenov2009 пишет:

Да пожалуйста!

Модуль esp8266 должен быть предварительно прошит прошивкой 1.0.0 SDK 0.22 и сконфигурирован (скорость порта, точка доступа, автоматическое подключение) через любую терминальную программу и переходник USB-UART на макетке с помощью АТ-команд. Читаем описание АТ-команд на esp8266.ru



Пользуйтесь!

Добрый день!

Долго уже бьюсь над вашим скетчем, но синхранизацию сделать так и не получается. Правда прошивка более новая, может это быть причиной?

На запрос NTP у меня возвращаются всегда одни и те же данные в out

4294967295
4294967295

Подскажите хоть в какую сторону рыть? ))

Скетч

/*
Настенные часы на семисегментных индикаторах GNS23011

Модуль управления - Arduino Pro Mini 3V 8MHz
Часы - DS3231 в виде готового модуля с резервным аккумулятором
Модуль ESP8266 для получения времени с NTP через WiFi

*/

#define ISDEBUG // Мы в отладке

#include <SPI.h>  
#include <Time.h>
#include <Wire.h>
#include <SoftwareSerial.h>


// For NTP & ESP8266
SoftwareSerial mySerial(51, 53); // A2 - RX, A3 - TX
unsigned long started=0;
uint32_t out=0;
time_t NTPtime=0;
//tmElements_t tm;
int c0, lenght=0;
const unsigned long seventyYears = 2208988800UL;    
const unsigned long LocalTimeZone = 10800UL;  // GMT+3  
const int NTP_PACKET_SIZE= 48; // NTP time stamp is in the first 48 bytes of the message
byte packetBuffer[NTP_PACKET_SIZE]; //buffer to hold incoming and outgoing packets
// Сервер <a href="http://WWW.BELGIM.BY" title="WWW.BELGIM.BY" rel="nofollow">WWW.BELGIM.BY</a> 178.124.164.107

time_t lastNTPtime = 0; // время получения времени от NTP


unsigned long PreviousClockTime, i;
boolean dotsEnable=true;

tmElements_t tm;

void setup() {
Serial.begin(9600);
mySerial.begin(9600);

#ifdef ISDEBUG
  Serial.println("RTC reading OK");
  PrintTime (now());
#endif
   ShowRTC(); // Отобразим время
   //Запрашиваем время с NTP сервера
#ifdef ISDEBUG 
   Serial.println("Request for NTP ...");
#endif 
     GetNTP_esp8266(); //
     //Если время получили успешно, то записываем данные в RTC
     if (NTPtime!=0)
        {
          setTime(NTPtime);
          lastNTPtime=NTPtime;
#ifdef ISDEBUG
          Serial.println("NTP updated OK!");
          PrintTime (now());
#endif
        }
   ShowRTC(); 
} //end of setup
 
void loop() {
 
     GetNTP_esp8266(); // секунд около 40
     //Если время получили успешно, то записываем данные в RTC
     if (NTPtime!=0)
        {
          setTime(NTPtime);
          lastNTPtime=NTPtime;
#ifdef ISDEBUG
          Serial.println("NTP updated OK!");
          PrintTime (now());
#endif
        }
     ShowRTC(); 
 
    dotsEnable=true;
    PreviousClockTime = millis();
    i=1;
    while (abs(millis()-PreviousClockTime) < 20000) // 20 секунд крутим цикл
           {
            if ( (abs(millis()-PreviousClockTime)) >= (i*1000))
                 {dotsEnable=!dotsEnable;
                  ShowRTC();
                  i++;
                 }; 
           }; 

} //loop


// ФУНКЦИИ ДЛЯ ЧАСОВ
void ShowRTC()
{
#ifdef ISDEBUG
  Serial.println("Show RTC ...");
#endif

#ifdef ISDEBUG
//    PrintTime(RTC.get());
    Serial.print("Hour = ");
    Serial.print(tm.Hour);
    Serial.print("  Minute = ");
    Serial.println(tm.Minute);
#endif
}



time_t GetNTP_esp8266()
{
  NTPtime=0;
  mySerial.println("AT+RST");
  delay(1000);
  mySerial.println("AT+CWMODE=1");
  delay(2000);

#ifdef ISDEBUG
  Serial.println("Connect to my AP");
#endif
  mySerial.println("AT+RST\r\n");
  mySerial.println("AT+CWJAP=\"UA\",\"Gjhnatkm\""); // \"  - так передается двойная кавычка внутри двойных кавычек
  delay(8000);
  setNTPpacketBuffer();

#ifdef ISDEBUG
  Serial.println("Connect to NTP");
#endif
  mySerial.println("AT+CIPSTART=\"UDP\",\"178.124.164.107\",123,34000");
  delay(5000);

#ifdef ISDEBUG
  Serial.println("Send lenght 48 bytes");
#endif
  mySerial.println("AT+CIPSEND=48");
  delay(4000);
  while ( mySerial.available()) mySerial.read();
//  delay(100);
 
#ifdef ISDEBUG
  Serial.println("Send NTP packet ");
#endif
  for (int i=0; i<NTP_PACKET_SIZE; i++) {mySerial.write(packetBuffer[i]); }
#ifdef ISDEBUG
  Serial.println("NTP packet sended ");
#endif
delay(10000);
#ifdef ISDEBUG
  Serial.println("Receive Message");
#endif
if (mySerial.available())
   {
   started = millis();
   do {c0 = mySerial.read();} while ((c0 != ':') && (mySerial.available()));
   for (int i=0; i<NTP_PACKET_SIZE; i++) {packetBuffer[i] = mySerial.read();
//                                           Serial.print(packetBuffer[i],HEX); Serial.print(",");
                                         }
   out = (uint32_t(packetBuffer[40])<<24) + (uint32_t(packetBuffer[41])<<16) + (uint32_t(packetBuffer[42])<<8) + uint32_t(packetBuffer[43]) ;
   NTPtime = out - seventyYears + LocalTimeZone + 12;
   Serial.println(out);
   }
else {
#ifdef ISDEBUG
  Serial.println("No data received!");
#endif
     mySerial.println("AT+CIPCLOSE");
     return 0;
     }
#ifdef ISDEBUG
  Serial.println("Close connection");
#endif
  mySerial.println("AT+CIPCLOSE");
//  delay(1000);
return NTPtime;
}

void setNTPpacketBuffer()
{
  // set all bytes in the buffer to 0
  memset(packetBuffer, 0, NTP_PACKET_SIZE);
  // Initialize values needed to form NTP request
  // (see URL above for details on the packets)
  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;
}

#ifdef ISDEBUG
void PrintTime (time_t ttt)
{
 tmElements_t tttm;
 Serial.print("UNIXTIME   ->>>>   ");
 Serial.print(ttt,HEX);
 Serial.print("   ->>>>   ");
 Serial.println(ttt,DEC);
 breakTime(ttt, tttm); 
 Serial.print("Date time is: ");
 Serial.print(tttm.Day);
 Serial.print(".");
 Serial.print(tttm.Month);
 Serial.print(".");
 Serial.print(tttm.Year+1970);
 Serial.print(" - ");
 Serial.print(tttm.Hour);
 Serial.print(":");
 if ( (tttm.Minute) < 10 ) {
     // In the first 10 minutes of each hour, we'll want a leading '0'
     Serial.print('0');
    }
 Serial.print(tttm.Minute);
 Serial.print(":");
 if ( (tttm.Second) < 10 ) {
     Serial.print('0');
    }
 Serial.print(tttm.Second);
 Serial.println(); // Start a new line.
}
#endif

 

ratman
Offline
Зарегистрирован: 11.10.2015

А почему время в uint крутится?

Next
Offline
Зарегистрирован: 01.09.2015

ratman пишет:

А почему время в uint крутится?

Не совсем понял вопрос. Скетч вообще то не мой, автор давал его в этой теме. Я только подчистил от лишнего.

the_wall
Offline
Зарегистрирован: 06.06.2013

Как esp указать статический  IP и DNS?

Для входа в мою локальную сеть с выходом в интеренет всем устройставм нужно прописать статический IP и DNS.

 

Araris
Offline
Зарегистрирован: 09.11.2012

the_wall пишет:

Как esp указать статический  IP и DNS?

Чем прошита ESP ?

the_wall
Offline
Зарегистрирован: 06.06.2013

Araris пишет:

the_wall пишет:

Как esp указать статический  IP и DNS?

Чем прошита ESP ?

У меня связка Arduino Due +esp. Работаю через Serial1.

 

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

Вас спрашивают, какая прошивка в ESP?

the_wall
Offline
Зарегистрирован: 06.06.2013

Jeka_M пишет:

Вас спрашивают, какая прошивка в ESP?

AT версия 0.21.0.0

SDK версия 0.9.5

 

 

 

Araris
Offline
Зарегистрирован: 09.11.2012

Вот здесь http://esp8266.ru/download/esp8266-doc/4A-AT-Espressif%20AT%20Instruction%20Set_v0.21.pdf , или здесь http://esp8266.ru/esp8266-at-commands-v021/ описана команда AT+CIPSTA, устанавливающая статический IP адрес в режиме станции.

Адрес для DNS-запросов - это адрес шлюза (точки доступа), к которому подключена ESP в режиме станции.

the_wall
Offline
Зарегистрирован: 06.06.2013

Araris пишет:

Вот здесь http://esp8266.ru/download/esp8266-doc/4A-AT-Espressif%20AT%20Instruction%20Set_v0.21.pdf , или здесь http://esp8266.ru/esp8266-at-commands-v021/ описана команда AT+CIPSTA, устанавливающая статический IP адрес в режиме станции.

Адрес для DNS-запросов - это адрес шлюза (точки доступа), к которому подключена ESP в режиме станции.

Спасибо.

Al_Ninyo
Offline
Зарегистрирован: 09.11.2014

Всем привет!

Граждане, помогите идиоту, пожалуйста! Пробежался по теме галопом и ответа на свой вопрос не нашёл. Поиграв с ESP8266-01, купил версии ESP8266-12-Q. И теперь мучаюсь. Нашёл только одну инструкцию под похожий модуль (http://wellknownteam.ru/microelectronics/esp8266-12-e-arduino-uno/), но у меня оно не работает как в инструкции.

Подключаю всё так же, как в инструкции, за небольшим исключением: вместо резисторов на 10к нашёл только на 4,7к. Смартфон сетку от модуля (AI-THINKER_007B82) видит, но подключиться к ней не может. Arduino UNO либо никак не реагирует на подключение модуля, либо начинает в монитор порта сыпать кучу мусора (строчки букв "я" или ещё какие кракозябры).

Видеоинструкцию выше видел, но как-то я там всё равно толком ничего не понял. Почитать бы это, да схемки вживую поглядеть, а не на видео...

Хочется с учениками попробовать что-то полезное собрать с этим модулем и Ардуино, да замутить машинку, которой можно будет через интернет управлять.

StrangerM
Offline
Зарегистрирован: 02.11.2013

Побаловался с ESP01  и модифицированной под ESP8266 Arduino IDE и ГПС шилдом. Поменяв в примере WiFiTelnetToSerial скорость порта с 115200 на ГПСные 9600. И подключив после прошивки Tx GPS к Rx ESP01. Работает нормально с OpenCPN.

StrangerM
Offline
Зарегистрирован: 02.11.2013

А вот, нашел. Вставил ESP01 ( с конвертором  12В/3.3В)в АИС приемник NASA ENGIN3. Теперь к приемнику подключена только антенна и питание. Провод СОМ порта можно не ставить. Пашет нормально с OpenCPN.

tretyakov
Offline
Зарегистрирован: 09.11.2014

Al_Ninyo пишет:

Видеоинструкцию выше видел, но как-то я там всё равно толком ничего не понял. Почитать бы это, да схемки вживую поглядеть, а не на видео...

Хочется с учениками попробовать что-то полезное собрать с этим модулем и Ардуино, да замутить машинку, которой можно будет через интернет управлять.

Такой схемки достаточно? http://esp8266-arduinoide.ru/hello-world/ , или подробнее нужно? 

 

Al_Ninyo
Offline
Зарегистрирован: 09.11.2014

tretyakov пишет:

Такой схемки достаточно? http://esp8266-arduinoide.ru/hello-world/ , или подробнее нужно? 

Схемка мало чем отличается от опробованной ранее. К сожалению, при таком подключении модуль пару раз моргает светодиодом и всё. Точки доступа видимой не появляется. К Ардуинке, правда, подключить не могу пока, но не уверен, что будет толк.

tretyakov
Offline
Зарегистрирован: 09.11.2014

Al_Ninyo пишет:

Схемка мало чем отличается от опробованной ранее. К сожалению, при таком подключении модуль пару раз моргает светодиодом и всё. Точки доступа видимой не появляется. К Ардуинке, правда, подключить не могу пока, но не уверен, что будет толк.

Вы же писали, что точку доступа видно? Модуль может находится в 2 режимах: работа и программирование. Сначало в режиме работы нужно получить работу с AT командами. Подключите по схеме, запустите без перемычки, установите в терминале скорость 115200. Нажмите кнопку сброс получите ответ от платы. Отправьте команду AT получите ответ. Если все работает. Проверьте режим программирования:  Установите перемычку, нажмите сброс на GPIO 16 появится 3,3 вольта. Попробуйте залить скетчь.
Если не работает, напишите на каком шаге затык.