ГРИ часы под управлением ESP8266

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

При поддержке РадиоКОТструктор.ру


Аватара пользователя
leoz
Родился
Сообщения: 15
Зарегистрирован: Сб апр 20, 2013 22:08:12

Re: ГРИ часы под управлением ESP8266

Сообщение leoz »

Модифицировал немного прошивку, добавил перебор цифр, вдруг кому понадобится.
Вложения
FINAL_ntp_v2.ino.txt
(15.36 КБ) 483 скачивания
Реклама
Аватара пользователя
MadOrc
Сверлит текстолит когтями
Сообщения: 1215
Зарегистрирован: Чт дек 27, 2012 15:38:20
Откуда: Казахстан, Алма-Ата

Re: ГРИ часы под управлением ESP8266

Сообщение MadOrc »

Сам не люблю глупые вопросы, но вроде всё вероятное исключил. Может знаете где копать?

Модуль ESP8266 ESP-7. Всё нормально из терминала, и wifi сети видит, режимы переключаются и отвечает без мусора в терминале.
СпойлерAT
OK
AT+CWMODE_CUR? +CWMODE_CUR:3

OK
AT+GMR AT version:0.40.0.0(Aug 8 2015 14:45:58)
SDK version:1.3.0
Ai-Thinker Technology Co.,Ltd.
Build:1.3.0.2 Sep 11 2015 11:48:04
OK
AT+RST
OK

ets Jan 8 2013,rst cause:2, boot mode:(3,6)

load 0x40100000, len 1396, room 16
tail 4
chksum 0x89
load 0x3ffe8000, len 776, room 4
tail 4
chksum 0xe8
load 0x3ffe8308, len 540, room 4
tail 8
chksum 0xc0
csum 0xc0

2nd boot version : 1.4(b1)
SPI Speed : 40MHz
SPI Mode : DIO
SPI Flash Size & Map: 8Mbit(512KB+512KB)
jump to run user1 @ 1000

...n't use rtc mem data
rl..;dd.
Ai-Thinker Technology Co.,Ltd.

ready
Но когда пытаюсь шить из IDE 1.6.5 (порт верный) дает "warning: espcomm_sync failed error: espcomm_open failed". Компиляция проходит успешно.
gpio0 ессно на земле, при этом постоянно горит синий светодиод на модуле (не горит без земли на gpio0, мигает в такт общению по usart).

Грешу на адаптер ультрадешёвый usb-usart ch340, хотя лог.уровни на rx/tx 3.3в, проверял. Но может что-то еще?
Радиофил-затейник.
Реклама
Аватара пользователя
RoboC
Мудрый кот
Сообщения: 1795
Зарегистрирован: Ср апр 04, 2012 09:55:53
Откуда: Северодонецк
Контактная информация:

Re: ГРИ часы под управлением ESP8266

Сообщение RoboC »

Вы же с esp общаетесь через этот usb-usart. Если бы какие то проблемы, то точки начало бы рисовать и прервалось. Занят может порт консолью :))) ?
Конденсатор по питанию повесьте 100 мкФ хотя бы. Какая схема включения поподробнее? Мало инфы :( .
У того, кто делает — получается редко. У того, кто не делает — не получается никогда.
SergSV
Прорезались зубы
Сообщения: 230
Зарегистрирован: Вс янв 26, 2014 22:40:17
Откуда: Рязань
Контактная информация:

Re: ГРИ часы под управлением ESP8266

Сообщение SergSV »

Как RoboC написал проверьте порт , он занят терминалом в момент прошивки или еще какой-то прогой.
Последняя прошивка для часов на RGB матрицах на 21 странице в теме https://www.radiokot.ru/forum/viewtopic ... &start=400
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
MadOrc
Сверлит текстолит когтями
Сообщения: 1215
Зарегистрирован: Чт дек 27, 2012 15:38:20
Откуда: Казахстан, Алма-Ата

Re: ГРИ часы под управлением ESP8266

Сообщение MadOrc »

Абсолютно точно нет, не занят. Если занять - он пишет не могу открыть порт.
Питание достаточное, внешнее. Конденсатор и так стоит, правда 47uF.
Схема стандартная - подтяжки на enable, reset, gpio15 на землю, 100нФ по питанию...

Не видит ни одна из программ для прошивки esp-шек, явно что-то не так в моем частном случае.
Цеплял другие экземпляры модулей - то же самое.

Буду пробовать без адаптера, поищу комп с ком-портом. Вроде больше нет вариантов :dont_know:

UPD:
За сим эксперименты закончены.
Перепробовано всё: ArduinoIDE, XTCOM, ESPlorer, ESP8266Flasher, flash download tools.
Питание точно как надо, COM-порт, пробовал и ch340(и вариант без светодиодов), стандартный порт ПК с согласователем уровней.

При этом всё стабильно и качественно работает и передача-получение пакетов, и подключение к AP итд. Пригодятся для работы под внешним контроллером, но прошить - никак. Под эти часы буду заказывать другие. :(
Выводы - хитрый дядюшка Ляо прислал модули, которые тупо не входят в режим прошивки. Кстати и выглядят немного странно, на антенне нет "Rainsun", вывод "CH-PD" тут называется "EN".

Прошивка на борту:
AT version:0.40.0.0(Aug 8 2015 14:45:58)
SDK version:1.3.0
Ai-Thinker Technology Co.,Ltd.
Build:1.3.0.2 Sep 11 2015 11:48:04

Фото виновника торжества (сдул экран посмотреть сопли внутри, но нет, всё аккуратно):
Изображение
Изображение

UPD2:
Таки "победил". 3й по счёту модуль завелся и шьётся штатно. Так и не понял, что это с первыми 2мя, странный брак. Китайцы, сэр. :facepalm:
Радиофил-затейник.
Реклама
Аватара пользователя
leoz
Родился
Сообщения: 15
Зарегистрирован: Сб апр 20, 2013 22:08:12

Re: ГРИ часы под управлением ESP8266

Сообщение leoz »

Добавил сохранение в ипром настроек вайфай и часового пояса. При выключенных часах зажать кнопку (которая в обычном режиме выключает подсветку), подать питание и отпустить ее через пару секунд, часы загрузятся в режим настройки и поднимут точку доступа, подключаемся к ней и заходим по адресу 192.168.4.1
Вложения
FINAL_ntp_v4.7z
(5.57 КБ) 548 скачиваний
Реклама
Аватара пользователя
MadOrc
Сверлит текстолит когтями
Сообщения: 1215
Зарегистрирован: Чт дек 27, 2012 15:38:20
Откуда: Казахстан, Алма-Ата

Re: ГРИ часы под управлением ESP8266

Сообщение MadOrc »

Т-та-дааа...
Корпуса нет, и не будет. Стиль нэйкед-техно-панк. Лаком чуть позже всё покрою. :)))

Изображение

Огромное спасибо авторам. Давно хотел что-нить такое простое и со статической индикацией, но газоразрядники не особо восхищают, слегка переделал. Зеленый светодиод в верхнем левом углу просто говорит что с обновлениями по ntp все в порядке, мне такая концепция удобнее.

PS
Если кому тоже надо, плата(схему не рисовал, всё на-лету в железе) и прошивка(модифицирована под led, которая постом выше, с AP) кнопка 1 - обновление времени/переход в AP при загрузке, 2я - то же самое :) не знаю к чему её подвязать.
esp8266_ntp_clock_7digit.zip
(64.32 КБ) 482 скачивания
Радиофил-затейник.
Аватара пользователя
RoboC
Мудрый кот
Сообщения: 1795
Зарегистрирован: Ср апр 04, 2012 09:55:53
Откуда: Северодонецк
Контактная информация:

Re: ГРИ часы под управлением ESP8266

Сообщение RoboC »

Надо было кнопку (раз она одна) повесить на любой свободный порт esp, а АЦП использовать для датчика освещенности :) .
У того, кто делает — получается редко. У того, кто не делает — не получается никогда.
Аватара пользователя
MadOrc
Сверлит текстолит когтями
Сообщения: 1215
Зарегистрирован: Чт дек 27, 2012 15:38:20
Откуда: Казахстан, Алма-Ата

Re: ГРИ часы под управлением ESP8266

Сообщение MadOrc »

Привинтил уже. Нажал 2-ю - 5 секунд кажет температуру в комнате, и возвращается к показу времени. Как раз 18b20 бесхозные в закромах валялись, и ноги бесхозные у модуля есть. :tea:

Изображение

DS-ку на 13 ногу, впрочем на фото видно.
Вложения
esp8266_ntp_clock_7digit_DS18B20.zip
прошивка с градусником
(6.32 КБ) 425 скачиваний
Радиофил-затейник.
Аватара пользователя
leoz
Родился
Сообщения: 15
Зарегистрирован: Сб апр 20, 2013 22:08:12

Re: ГРИ часы под управлением ESP8266

Сообщение leoz »

Мой вариант корпуса. Фанера, обклеенная белым и черным кожзамом
Изображение

Изображение

Изображение
sa-ta
Это не хвост, это антенна
Сообщения: 1413
Зарегистрирован: Пн ноя 23, 2009 00:50:23
Откуда: Crimea, Simferopol

Re: ГРИ часы под управлением ESP8266

Сообщение sa-ta »

MadOrc писал(а):Т-та-дааа...
а у вас индикаторы с общим анодом ? схему не рисовали ?
нашел у себя большие цифиры - A1801SR. думаю повторить, если дойдут ESP живые...
Аватара пользователя
MadOrc
Сверлит текстолит когтями
Сообщения: 1215
Зарегистрирован: Чт дек 27, 2012 15:38:20
Откуда: Казахстан, Алма-Ата

Re: ГРИ часы под управлением ESP8266

Сообщение MadOrc »

Да, ОА. Такие: http://av-display.pl/o_produkcie.php?id=830 На ногу в среднем приходится не более 16мА, регистры держат 25 на ногу, сборками дарлингтонов не стал заморачиваться.
Схему не рисовал, лень да и незачем, это сильное упрощение авторского варианта, а не усложнение. По плате всё видно.
Радиофил-затейник.
Аватара пользователя
uldemir
Друг Кота
Сообщения: 7359
Зарегистрирован: Пт авг 28, 2009 21:34:30
Откуда: 845-й км.

Re: ГРИ часы под управлением ESP8266

Сообщение uldemir »

Это, а никто не хочет заняться решением проблемы 2036-го года? Когда этот NTP time перевалит переполнение? Конечно, может оказаться, что эти часы так долго не проживут по причине устаревания протокола WiFi, который будет выглядеть также дико, как выглядели бы нынче NTP часы с 10base5 интерфейсом. Но почему бы не сделать?

Протокол, вроде, предполагает знание текущего времени с точностью 68 лет. Вот только как втыкать вешки? Даже если воткнуть вешку в 2036-й год, то часы проработают только до 2104 года. Т.е. надо придумать алгоритм перетыкания вешек.

От себя могу предложить своё дополнение к часам. Вычисляет дату для того, чтобы проводить автоматическоий переход на летнее/зимнее время (у нас оно еще есть) в соответствии с европейским стандартом, которое происходит в 01:00UTC в последнее воскресенье марта и октября. Поэтому коррекцию таймзоны я делаю в модуле DisplayTime, а не сразу по приему данных с NTP.
Спойлер

Код: Выделить всё

/**
 * Выдача текущего времени на индикатор
 */
void DisplayTime(unsigned long epoch) {

    unsigned char weekday = 4;
    unsigned int  year = 1970;
    unsigned char month = 0;
    unsigned char hours;
    unsigned char minutes;
    unsigned char seconds;
    unsigned char day = 0;
    unsigned char leap = 0;
    unsigned long period_length;
    unsigned char dst;
    while (1) {
      if ((year % 400) == 0) leap = 1;   // 2000 - високосный
      else {
        if ((year % 100) == 0) leap = 0; // 2100 - не високосный
        else {
          if ((year & 0x03) == 0) leap = 1; // делится на 4 - високосный
          else leap = 0;                 // иначе - нет
        }
      }
      period_length = 24UL * 3600 * (leap ? 366 : 365 );
      if (epoch >= period_length) {
        epoch = epoch - period_length;
        weekday = (weekday + (leap ? 2 : 1));
        if (weekday > 6) weekday -= 7;
        year++;
      } else break;
    } // в остатке секунды от начала года.
    unsigned char daysinmonth[12]     = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},
                  daysinmonthleap[12] = {31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},
                  week_upd;

    while (1) {
      if (month > 11) {
        Serial.println("Error in date calculation!!!!!!!!!!!");
        break;
      }
      if (leap) {
        period_length = 24UL * 3600 * daysinmonthleap[month];
        week_upd = daysinmonthleap[month] - 7 * 4;
      }
      else {
        period_length = 24UL * 3600 * daysinmonth[month];
        week_upd = daysinmonth[month] - 7 * 4;
      }

      month++;
      if (epoch >= period_length) {
        epoch = epoch - period_length;
        weekday = (weekday + week_upd);
        if (weekday > 6) weekday -= 7;
      }
      else break;
    } // в остатке дни

    day = epoch / 86400;
    weekday = (weekday + day) % 7;
    day++;
    hours = (epoch % 86400) / 3600;

    dst = chk_dst(year, month, day, weekday, hours);

    epoch = epoch + (TIMEZONE + dst)*3600;

  my_s = epoch % 60;
  my_m = ( epoch / 60 ) % 60;
  my_h = ( epoch / 3600 ) % 24;

// Дальше следует код для моего железа - вставьте свой.

  shiftreg =  1L << (31 - digit[0][my_m % 10]);
  shiftreg |= 1L << (31 - digit[1][my_m / 10]);
  shiftreg |= 1L << (31 - digit[2][my_h % 10]);
  shiftreg |= 1L << (31 - digit[3][my_h / 10]);
  shiftreg |= (uint32_t)(my_s & 1) << (31 - divider);

/*
  if (my_h >= HourNightStart || my_h <= HourNightEnd ) {
    analogWrite(HV, 200);
    digitalWrite(LED, LOW);
  }
  else {
    analogWrite(HV, 0); digitalWrite(HV, HIGH);
    if (LedON) {
      digitalWrite(LED, HIGH);
    }
  }
*/
  //      NtpNoConn=0;

  //            if(NtpNoConn==1) {bitWrite(Btt5, 1,LOW ); }
  //               else {bitWrite(Btt5, 1, HIGH);}

  //           if(points==1) {bitWrite(Btt0, 0, HIGH); }
  //               else {bitWrite(Btt0, 0, LOW);}


  // Выливаем на регистры
  uint8_t i;
  for (i = 0; i < 32; i++) {
    digitalWrite(SH_CP, HIGH);
    //    delay(10);
    digitalWrite(DS, shiftreg & 1L);
    digitalWrite(SH_CP, LOW);
    shiftreg >>= 1;
  }
  digitalWrite(ST_CP, HIGH);
  delayMicroseconds(1);
  digitalWrite(ST_CP, LOW);

}

Код: Выделить всё

int chk_dst(unsigned int year, unsigned int month, unsigned char day, unsigned char weekday, unsigned char hours) {
  int set_dst = 0;
  if (dst_enable)  {

    switch (month) {
      case 4:
      case 5:
      case 6:
      case 7:
      case 8:
      case 9:
        set_dst = 1;
        break;

      case 1:
      case 2:
      case 11:
      case 12:
        set_dst = 0;
        break;

      case 3:
        if ((day - weekday) > 24) {
          if ((weekday) != 0) {
            set_dst = 1;
          } else {
            if ((hours) < 1) set_dst = 0;
            else set_dst = 1;
          }
        } else {
          set_dst = 0;
        }
        break;

      case 10:
        if ((day - weekday) > 24) {
          if ((weekday) != 0) {
            set_dst = 0;
          } else {
            if ((hours) < 1) set_dst = 1;
            else set_dst = 0;
          }
        } else {
          set_dst = 1;
        }
        break;
    }
  }
  return set_dst;
}
И еще, я причесал немного HTML-код, к серверу от leoz, чтобы валидатор не ругался у странички настройки, правда, еще не проверил:
Спойлер

Код: Выделить всё

void createWebServer(int webtype) {
  if ( webtype == 1 ) {
    server.on("/", []() {
      IPAddress ip = WiFi.softAPIP();
      String ipStr = String(ip[0]) + '.' + String(ip[1]) + '.' + String(ip[2]) + '.' + String(ip[3]);
      content = "<!DOCTYPE HTML><html><HEAD><TITLE>NTP clock configuration page</TITLE><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"></HEAD>";
      content += "Hello from ESP8266 at ";
      content += ipStr;
      content += "<p>";
      content += st;
      content += "</p><form method='get' action='setting'><table><tr><td>SSID:  <input name='ssid' size=32>   Password: <input name='pass' size=64>";
      content += "<tr><td>TimeZone: <input name='timezone' size=3 value='2'><tr><td>Enable use DST <input name='dst' TYPE=checkbox VALUE=ON>";
      content += "<tr><td>Enable leading zero  <input name='leadingzero' type=checkbox value=ON></table> <input type='submit'></form>";
      content += "</html>";
      server.send(200, "text/html", content);
    });
...дальше по тексту
Я там добавил для себя пару чекбоксов ;-), но остальной код их будет игнорировать, так что можно их оставить. А можно допилить.
DIGITAL544
Родился
Сообщения: 19
Зарегистрирован: Пт мар 18, 2016 16:42:37

Re: ГРИ часы под управлением ESP8266

Сообщение DIGITAL544 »

Достойные часы. Респект автору.
Вопрос uldemir-ру: Можно ли задействовать неиспользуемый вывод ESP (GPIO2 или GPIO13) для выбора таймзоны вручную? Например если на GPIO2-логическая еденица то long TIMEZONE = 0; иначе long TIMEZONE = 1;Как будет выглядеть кусочек программы?

Вопрос MadOrc-ку:Логин и пароль для WI-FI прописываеться в строках 76 и 77: const char* ssid = "test"; и const char* passphrase = "test"; Вашего скетча?
Аватара пользователя
RoboC
Мудрый кот
Сообщения: 1795
Зарегистрирован: Ср апр 04, 2012 09:55:53
Откуда: Северодонецк
Контактная информация:

Re: ГРИ часы под управлением ESP8266

Сообщение RoboC »

DIGITAL544 писал(а):Вопрос MadOrc-ку:Логин и пароль для WI-FI прописываеться в строках 76 и 77: const char* ssid = "test"; и const char* passphrase = "test"; Вашего скетча?
Нет. Это пароль к софтовой точке доступа.
Если при включении вы нажмете кнопку и удержите ее, то ESP поднимет софтовую точку доступа (ТД) WiFi с именем тест (ищите на мобиле ТД "test" пароль test). Подключаетесь к ней.
В адресной строке браузера набираете 192.168.4.1
Заполняете поля ( Логин,пароль, временная зона) домашней ТД WiFi.
Перегружаете ESP и если не ошиблись он подключится к Вашей домашней ТД, получит время и часы пойдут.
У того, кто делает — получается редко. У того, кто не делает — не получается никогда.
Аватара пользователя
uldemir
Друг Кота
Сообщения: 7359
Зарегистрирован: Пт авг 28, 2009 21:34:30
Откуда: 845-й км.

Re: ГРИ часы под управлением ESP8266

Сообщение uldemir »

Код: Выделить всё

if (digitalRead(GPIO13)) timezone = 1; else timezone = 0;
или

Код: Выделить всё

timezone = (digitalRead(GPIO13))  ? 1 : 0;
DIGITAL544
Родился
Сообщения: 19
Зарегистрирован: Пт мар 18, 2016 16:42:37

Re: ГРИ часы под управлением ESP8266

Сообщение DIGITAL544 »

В поле для заполнения (по адресу 192.168.4.1) можно и часовой пояс поменять? Тогда пропадает необходимость задействовать неиспользуемые выводы ESP (GPIO2 или GPIO13) для выбора таймзоны вручную. Может кто скрин покажет, как выглядит страница с полями для заплнения, просто интересно. И спасибо за ответы.
DIGITAL544
Родился
Сообщения: 19
Зарегистрирован: Пт мар 18, 2016 16:42:37

Re: ГРИ часы под управлением ESP8266

Сообщение DIGITAL544 »

Вопрос RoboC-у: Хочу поставить ESP-12E. Надо ли перед заливкой скетча менять прошивку ESP-12E на какую нибудь и есть ли особенности какие?
Аватара пользователя
uldemir
Друг Кота
Сообщения: 7359
Зарегистрирован: Пт авг 28, 2009 21:34:30
Откуда: 845-й км.

Re: ГРИ часы под управлением ESP8266

Сообщение uldemir »

Да, у меня так сделано, кажется. Еще, оно показывает дату и время через web:

Код: Выделить всё

NTP Nixie Clock on 192.168.1.20
Friday, 18.03.2016 21:50:30
И при нажатии верхней кнопки показывает дату и месяц.
Вложения
FINAL_ntp.zip
мой вариант прошивки
(6.83 КБ) 394 скачивания
Аватара пользователя
RoboC
Мудрый кот
Сообщения: 1795
Зарегистрирован: Ср апр 04, 2012 09:55:53
Откуда: Северодонецк
Контактная информация:

Re: ГРИ часы под управлением ESP8266

Сообщение RoboC »

"12E" так же заливается как и 12я.
У того, кто делает — получается редко. У того, кто не делает — не получается никогда.
Ответить

Вернуться в «Статьи»