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

Нужна помощь ESP-07 WiFi problem

Killbrum

New member
Доброго времени суток! Есть проблема с подключением модуля к точке доступа. Проблема скорее всего очень комплексная потому буду излогать много но кратко

Цель: создание "точки" которая будет отправлять текущую температуру с помощью MQTT протокола на OpenHab

Средства:
RobotDyn ESP8266-07 (взят 07 т.к. есть выход на антену; надежда улучшить сигнал через толстые стены)
AMS1117 в виде мелкой платы с обвязкой
BME280, 3.3v датчик температуры и влажности с которого надо снять показатели

Прошивка: Arduino core for ESP8266 WiFi chip
Версии прошивки: 2.0, 2.2, 2.3, 2.4 релиз кандидат, 2.4 версия с гита

Проблема:
Проблем несколько. Первая это то что чип падает. Практически постоянно. Не зависит от метода подключения. Могу подключить с внешним питанием, могу без. В 80% чип упадет при старте раз 10. Если он все же сможет подключится к точке то будет работать относительно стабильно. Проблема падения мне не понятна более чем полностью

Вот примеры:
Код:
Couldn't connect to server, code: -1
Retrying MQTT connection in 5 seconds...
Exception (0):
epc1=0x40211aa5 epc2=0x00000000 epc3=0x00000000 excvaddr=0x00000000 depc=0x00000000
ctx: sys 
sp: 3ffffd70 end: 3fffffb0 offset: 01a0
>>>stack>>>
3fffff10:  40210b40 3fff0e8c 3fff092c 40211a9c  
3fffff20:  3fff05dc ffffffff 3fff0e8c 3ffee008  
3fffff30:  00000000 3fff092c 0000001c 3fff0e8c  
3fffff40:  3ffeafc2 00000000 3fff092c 40211099  
3fffff50:  6401a8c0 000000e1 00000000 00000033  
3fffff60:  00000002 00000018 4021599b 3ffece90  
3fffff70:  3ffeaf9c 3fffdcc0 3ffe9488 3ffe9488  
3fffff80:  4021590e 3ffece90 00000000 3fff0f1c  
3fffff90:  3fffdc80 00000000 3fff092c 4022a60b  
3fffffa0:  40000f49 3fffdab0 3fffdab0 40000f49  
<<<stack<<<


Exception (0):
epc1=0x402150c4 epc2=0x00000000 epc3=0x00000000 excvaddr=0x00000000 depc=0x00000000
ctx: sys 
sp: 3ffffe00 end: 3fffffb0 offset: 01a0
>>>stack>>>
3fffffa0:  3ffe9450 40000f49 3fffdab0 40000f49  
<<<stack<<<
⸮⸮⸮⸮O⸮Real chip size is: 1048576
CPU speed is: 40000000
Connecting to WiFi. SSID: "Mysterium_hard". Password: bSVHL7BsmBgqdrHP
........
WiFi connected
IP address: 192.168.1.47
Starting BME280... result of .begin(): 0x60
Connecting to MQTT... Couldn't connect to server, code: -1
Retrying MQTT connection in 5 seconds...
Exception (0):
epc1=0xfeffffff epc2=0x00000000 epc3=0x00000000 excvaddr=0x00000000 depc=0x00000000
ctx: sys 
sp: 3ffffd60 end: 3fffffb0 offset: 01a0
>>>stack>>>
3fffff00:  3fff17bc 3fff09d4 00000000 3fff0e8c  
3fffff10:  00000006 4021d56d 3fffff54 4020e41c  
3fffff20:  00000000 00000002 00000000 3ffecb70  
3fffff30:  3fff0a0c 402111dc 3fff09bc 3fff09d4  
3fffff40:  3ffebc4a 3fff09d4 3fff09bc 402111d0  
3fffff50:  2f01a8c0 6401a8c0 00000000 00000031  
3fffff60:  3ffebc66 3ffebc70 3fff0e90 00000000  
3fffff70:  3fff0ebf 3fffdcc0 3ffe94a8 3ffe94a8  
3fffff80:  4021590e 3ffece90 00000000 3fff0f2c  
3fffff90:  3fffdc80 00000000 3fff09bc 4022a60b  
3fffffa0:  40000f49 3fffdab0 3fffdab0 40000f49  
<<<stack<<<

Connecting to WiFi. SSID: "Mysterium_hard". Password: bSVHL7BsmBgqdrHP
.......
Exception (28):
epc1=0x4020137f epc2=0x00000000 epc3=0x00000000 excvaddr=0x0000003c depc=0x00000000
ctx: sys 
sp: 3ffffbf0 end: 3fffffb0 offset: 01a0
>>>stack>>>
3ffffd90:  40216082 3ffecb70 3fff17bc 00000001  
3ffffda0:  00000000 00000000 00000020 40100ec2  
3ffffdb0:  00000002 00000000 40220ce2 00000000  
3ffffdc0:  00000000 00069534 00000000 00069534  
3ffffdd0:  00000000 40100823 00000002 00000002  
3ffffde0:  40238220 40220ce2 00000000 00000000  
3ffffdf0:  00000000 00069534 00000000 4022994b  
3ffffe00:  00000002 00000000 40220ce2 00000000  
3ffffe10:  00000000 00069534 00000000 401044e3  
3ffffe20:  401044c4 3fffc100 00000008 00000000  
3ffffe30:  00000000 40220ce2 3ffed88c 40101d68  
3ffffe40:  400005e1 00000000 00000000 3ffffed0  
3ffffe50:  40220ce2 00000030 00000010 00000100  
3ffffe60:  3ffed7cc 3ffedb54 3ffece90 3ffea97e  
3ffffe70:  3ffe9c98 612aa824 00000000 00000003  
3ffffe80:  3ffed94c 00000001 00000002 3ffece90  
3ffffe90:  3fff17bc 00000008 3ffee008 00000000  
3ffffea0:  3ffe9ca4 00152754 402212b3 3fff17d4  
3ffffeb0:  40000f68 00000030 0000000b ffffffff  
3ffffec0:  40000f58 00000000 00000020 00000000  
3ffffed0:  3ffed504 7fffffff 00000000 3ffeca60  
3ffffee0:  3ffece68 00000006 00000000 3fffdab0  
3ffffef0:  00000000 3fffdcc0 3ffe94b0 00000030  
3fffff00:  00000000 00000000 3ffea389 3ffea3d6  
3fffff10:  4021c6c1 3ffea3be 00000000 00000000  
3fffff20:  00006208 7f5e0001 7b10faff bc8860ef  
3fffff30:  60ef7b10 c970bc88 4021a0cd 3ffece90  
3fffff40:  3ffea97e 40220ca0 3ffece90 3ffea964  
3fffff50:  3ffea964 000001ea 00000000 00000037  
3fffff60:  00000002 00000018 4021599b 3ffece90  
3fffff70:  3ffea958 3fffdcc0 3ffe94b8 3ffe94b8  
3fffff80:  00000000 3ffece90 00000000 3fffdcb0  
3fffff90:  402152bb 3fffdab0 00000000 40205413  
3fffffa0:  3ffe94b8 40000f49 3fffdab0 40000f49  
<<<stack<<<

Проблема вторая. При падении чип что-то делает (увы, эфир не смотрел) и в последствии как минимум мой ноутбук отключается от точки. Иногда сама точка пропадает пока я не отключу питание от esp. Видимо шлет что-то в эфир бродкастом. Но смысл мне не понятен.

Проблема третяя. Главная. Подключение к роутеру. Сам esp работает чисто как точка. В нем зашиты SSID, PASS. Дело в том что WiFi.status() в 95% возвращает WL_CONNECT_FAILED. При этом наблюдаю картину что если он 1 раз вернул такой статус то он уже не подключится. Для подключения надо ресетить сам модуль.
Проблема вроде как известная на ветке 2.3 (WiFi only works once after erasing flash · Issue #3100 · esp8266/Arduino · GitHub есть еще и другие смежные). Дело в том что проблемы нет на 2.2 и на 2.4. Но она у меня есть везде. Для "решения" проблемы подключения просто программно перезагружаю esp. Все "фиксы" от igrr мне не подошли. Работает оно все крайне не стабильно
 

Killbrum

New member
Собственно вот сам скетч (ino)

Код:
#include <ESP8266WiFi.h>
#include <Adafruit_MQTT_Client.h>
#include <SparkFunBME280.h>

extern "C"
{
  #include "user_interface.h"
}

// interval with wich we will publish collected data in mqtt server (in milliseconds)
#define SEND_INTERVAL 60000
#define DEBUG 1
#if (DEBUG == 1)
#define LOG(x) Serial.print((x))
#define LOGN(x) Serial.println((x))
#else
#define LOG(x)
#define LOGN(x)
#endif

/************************* MQTT Definition *********************************/
WiFiClient client;
// TODO: switch to authorization with username/password (also encryption should be present)
//Adafruit_MQTT_Client mqtt(&client, MQTT_SERVER, MQTT_PORT, MQTT_CLIENTID, MQTT_USERNAME, MQTT_PASSWORD);
Adafruit_MQTT_Client mqtt(&client, MQTT_SERVER, MQTT_PORT, MQTT_CLIENTID);

/****************************** Feeds ***************************************/
Adafruit_MQTT_Publish temperature_topic = Adafruit_MQTT_Publish(&mqtt, TEMPERATURE_FEED);
Adafruit_MQTT_Publish humidity_topic = Adafruit_MQTT_Publish(&mqtt, HUMIDITY_FEED);

/*************************** Sketch Code ************************************/

BME280 sensor;

void ResetESP()
{
  WiFi.disconnect();
  ESP.eraseConfig();
  delay(1000);
  ESP.reset();
}

void InitializeSensor()
{
  //***Driver settings********************************//

  //commInterface can be I2C_MODE or SPI_MODE
  //specify chipSelectPin using arduino pin names
  //specify I2C address.  Can be 0x77(default) or 0x76

  //For I2C, enable the following and disable the SPI section
  sensor.settings.commInterface = I2C_MODE;
  sensor.settings.I2CAddress = 0x76;

  //For SPI enable the following and dissable the I2C section
  //sensor.settings.commInterface = SPI_MODE;
  //sensor.settings.chipSelectPin = 10;


  //***Operation settings*****************************//

  //runMode can be:
  //  0, Sleep mode
  //  1 or 2, Forced mode
  //  3, Normal mode
  sensor.settings.runMode = 3;

  //tStandby can be:
  //  0, 0.5ms
  //  1, 62.5ms
  //  2, 125ms
  //  3, 250ms
  //  4, 500ms
  //  5, 1000ms
  //  6, 10ms
  //  7, 20ms
  sensor.settings.tStandby = 0;

  //filter can be off or number of FIR coefficients to use:
  //  0, filter off
  //  1, coefficients = 2
  //  2, coefficients = 4
  //  3, coefficients = 8
  //  4, coefficients = 16
  sensor.settings.filter = 0;

  //tempOverSample can be:
  //  0, skipped
  //  1 through 5, oversampling *1, *2, *4, *8, *16 respectively
  sensor.settings.tempOverSample = 1;

  //pressOverSample can be:
  //  0, skipped
  //  1 through 5, oversampling *1, *2, *4, *8, *16 respectively
  sensor.settings.pressOverSample = 1;

  //humidOverSample can be:
  //  0, skipped
  //  1 through 5, oversampling *1, *2, *4, *8, *16 respectively
  sensor.settings.humidOverSample = 1;

  //Make sure sensor had enough time to turn on. BME280 requires 2ms to start up.
  delay(20); 



  LOG(F("Starting BME280... result of .begin(): 0x"));
  //Calling .begin() causes the settings to be loaded
  int res = sensor.begin();
  LOGN(String(res, HEX));
}

void InitializeWiFi()
{
  LOG(F("Connecting to WiFi. SSID: \""));
  LOG(WLAN_SSID);
  LOG(F("\". Password: "));
  LOGN(WLAN_PASS);

  wifi_set_sleep_type(NONE_SLEEP_T);

#if 0
  // hack to erase previous wifi configuration
  WiFi.disconnect();
#endif

#if 1
  WiFi.persistent(false);
  WiFi.mode(WIFI_OFF);
#endif

  WiFi.mode(WIFI_STA);
  WiFi.begin(WLAN_SSID, WLAN_PASS);

  // timeout 30 seconds
  const byte max_count = 60;
  byte count = 0;

  wl_status_t sts = WiFi.status();
  while (sts != WL_CONNECTED)
  {
    if (count >= max_count)
    {
      ResetESP();
    }
    /*switch (sts)
    {
      case WL_CONNECT_FAILED:
      {
        LOGN(F("WL_CONNECT_FAILED. Probably password is incorrect"));
        break;
      }

      case WL_NO_SSID_AVAIL:
      {
        LOGN(F("WL_NO_SSID_AVAIL. Cannot find specified SSID"));
        break;       
      }
    }*/

    count++;
    delay(500);
    LOG(F("."));
   
    sts = WiFi.status();
  }

  WiFi.setAutoReconnect(true);
  WiFi.setAutoConnect(false);

  LOGN(F(""));
  LOGN(F("WiFi connected"));
  LOG(F("IP address: "));
  LOGN(WiFi.localIP());
}

void setup()
{
#if (DEBUG == 1)
  Serial.begin(9600);

  int chip_size = ESP.getFlashChipRealSize();
  int cpu_speed = ESP.getFlashChipSpeed();

  LOG(F("Real chip size is: "));
  LOGN(chip_size);

  LOG(F("CPU speed is: "));
  LOGN(cpu_speed);
#endif

  InitializeWiFi();
  InitializeSensor();
}

void MQTT_connect()
{
  // Stop if already connected.
  if (mqtt.connected())
  {
    return;
  }   

  LOG(F("Connecting to MQTT... "));

  // timeout 1 minute
  const byte max_count = 12;
  byte count = 0;

  int8_t ret;
  // connect will return 0 for connected
  while ((ret = mqtt.connect()) != 0)
  {
    if (count >= max_count)
    {
      ResetESP();
    }
   
    switch (ret)
    {
      case 1: LOGN(F("Wrong protocol")); break;
      case 2: LOGN(F("ID rejected")); break;
      case 3: LOGN(F("Server unavailable")); break;
      case 4: LOGN(F("Bad user/password")); break;
      case 5: LOGN(F("Not authenticated")); break;
      case 6: LOGN(F("Failed to subscribe")); break;
      default:
      {
        LOG(F("Couldn't connect to server, code: "));
        LOGN(ret);
      }
      break;
    }
   
    LOGN(F("Retrying MQTT connection in 5 seconds..."));
    mqtt.disconnect();

    count++;
    delay(5000);// wait 5 seconds
  }

  LOGN(F("MQTT Connected!"));
}

void loop()
{
  MQTT_connect();

  float data = sensor.readTempC();
  if (!temperature_topic.publish(data))
  {
    LOGN(F("Failed to publish temperature"));
  }
  else
  {
    LOG(F("Temperature is: "));
    LOG(data);
    LOGN(F(" C"));
  }

  data = sensor.readFloatHumidity();
  if (!humidity_topic.publish(data))
  {
    LOGN(F("Failed to publish humidity"));
  }
  else
  {
    LOG(F("Humidity is: "));
    LOG(data);
    LOGN(F(" %"));
  }

  LOGN(F(""));

  // in case if we're not able to publish data then
  // at least try to "ping" to say that we're online
  if (!mqtt.ping())
  {
    MQTT_connect();
  }

  delay(SEND_INTERVAL);
}
Благодарю!
 

=AK=

New member
А вы пробовали примеры загружать? С ними такое же поведение?
 

Killbrum

New member
А вы пробовали примеры загружать? С ними такое же поведение?
Увы не пробовал. Особо и смысла не вижу. Все действо происходить в WiFi.begin(..) а он везде одинаков. Так же примеры явно устарели. Хотя для чистоты эксперемента попробую вечером
 

=AK=

New member
В чем они устарели?

Если примеры не работают, то проблема скорей в конкретном экземпляре модуля (т.е. в железе) или в вашей точке доступа. А если примеры работают, что более вероятно, то проблема где-то у вас в скетче.

У меня все работает и не падает месяцами. А во время разработки тоже падало, когда косячил в скетче.
 

pvvx

Активный участник сообщества
AMS1117 в виде мелкой платы с обвязкой
В первую очередь посмотрите, хватает ли питания, раз глюк плавающий.
Т.к. у вас модуль программно перезапускается по soft-reset, обратите большее внимание на установки ног при перезагрузках (схемотехнику).
AP - это единственное, что стабильно работает на ESP8266, из-за многих упрощений в её протоколе...
 

pvvx

Активный участник сообщества
Проблема вторая. При падении чип что-то делает (увы, эфир не смотрел) и в последствии как минимум мой ноутбук отключается от точки. Иногда сама точка пропадает пока я не отключу питание от esp. Видимо шлет что-то в эфир бродкастом. Но смысл мне не понятен.
Вторая проблема совместно с "первой" на 99.9% говорит, что ответ в первом предложении предыдущего моего поста.
Когда отрабатывает передатчик (повышается ток), то чип слетает и перезагружается. При перезагруке у него неверно установлены пины и он влетает, к примеру в режим программирования. Если в чипе передатчк был активен, то он не отключается даже по сигналу RESET, но переключается PLL и ESP8266 превращается в изумительную глушилку WiFi эфира.
 

Killbrum

New member
Вторая проблема совместно с "первой" на 99.9% говорит, что ответ в первом предложении предыдущего моего поста.
Когда отрабатывает передатчик (повышается ток), то чип слетает и перезагружается. При перезагруке у него неверно установлены пины и он влетает, к примеру в режим программирования. Если в чипе передатчк был активен, то он не отключается даже по сигналу RESET, но переключается PLL и ESP8266 превращается в изумительную глушилку WiFi эфира.

Спасибо большое за ответы.
Тут все несколько странно. Либо у меня проблемы с подключением либо партия чипов не торт.

Дело в том что я пробовал следующие варианты
1) Подключать через USB-TTL (вроде на чипе CH340G) к ноуту
2) Подключать через адаптер для телефона на 0.5А
3) Подключать через адаптер для телефона на 1А

Думаю что 1А хватает с головой т.к. esp в пике вроде больше 350мА не должна брать.

Абсурда ради отмечу что рядом лежит еще одна такая связка. Та связка работала идеально на макете но не работала на плате с нормальной распайкой. В какой то момент все заработало и работает как часы. Все что изменилось между первой связкой (рабочей) и второй (с которой сейчас проблемы) это пару строчек кода. Увы я просто не помню что поменял. Но код который я выложил выше должен работать. Если была бы ошибка то девайс падал бы уже после подключения к точке

P.S. думал что партия брак. По этому взял другой Esp и с ним точно такие же проблемы
 

=AK=

New member
Все что изменилось между первой связкой (рабочей) и второй (с которой сейчас проблемы) это пару строчек кода. Увы я просто не помню что поменял. Но код который я выложил выше должен работать. Если была бы ошибка то девайс падал бы уже после подключения к точке
У вас много странностей в коде. В частности, вы вообще не обслуживаете mqtt. Подключаетесь к нему и думаете что после этого он волшебным образом сам по себе будет работать, даже если не вызывать mqtt.loop() в основном цикле. Вот он у вас и грохает все вскоре после подключения, когда вы к нему начинаете обращаться.

"Танцуйте от печки", т.е. опирайтесь на примеры.
 

Killbrum

New member
В чем они устарели?
В версии 2.3 есть ошибка. В ней обновили SDK до версии 1.5.3 и в итоге даже если модуль подключен все равно вернется ошибка соеденения. Это исправили в SDK 1.5.4 (Espressif). igrr сказал что скорее всего выпустит версию 2.3.1 но так и не выпустил а исправление просто ушло в репозиторий. Вместо исправления рекомендуется использовать следующий код

Код:
WiFi.persistent(false);
WiFi.mode(WIFI_OFF);   // this is a temporary line, to be removed after SDK update to 1.5.4
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
Собственно весь сыр-бор тут WiFi.begin doesn't connect if connection was already established · Issue #2186 · esp8266/Arduino · GitHub

Если примеры не работают, то проблема скорей в конкретном экземпляре модуля (т.е. в железе) или в вашей точке доступа. А если примеры работают, что более вероятно, то проблема где-то у вас в скетче.
Только что проверил.. примеры с Adafruit MQTT тоже не работают. Точнее просто при попытке коннекта к роутеру есп сразу идет в ребут

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

load 0x4010f000, len 1384, room 16
tail 8
chksum 0x2d
csum 0x2d
vf6d232f1
~ld

Exception (0):
epc1=0x4023255e epc2=0x00000000 epc3=0x00000000 excvaddr=0x00000000 depc=0x00000000

ctx: sys
sp: 3ffff7d0 end: 3fffffb0 offset: 01a0

>>>stack>>>
3ffff970:  00000040 0000003c ffffffff 00000038 
3ffff980:  40232852 3ffe8472 3ffeeb38 00000001 
3ffff990:  00000138 00000000 00000003 4022d5dd 
3ffff9a0:  3423eb38 0000001b 4022f43e 00000000 
3ffff9b0:  00000006 00000001 00000001 00000001 
3ffff9c0:  00000001 00000000 00000002 40006784 
3ffff9d0:  00000000 3ffeeb28 3ffe8470 4022d5dd 
3ffff9e0:  400061cc 4022f9e4 00000000 3ffeeb28 
3ffff9f0:  00000006 00000001 00000004 4022d5dd 
3ffffa00:  27282a2b 19161310 00120011 00140013 
3ffffa10:  0000341f 4022d554 00000d26 402310cc 
3ffffa20:  00000ff2 402310e1 3ffeeb28 00000001 
3ffffa30:  3ffeec7a 3ffeeb38 00000001 00000003 
3ffffa40:  3ffeeb28 60000600 60000200 00000000 
3ffffa50:  4022cdfb 00000000 00000001 3ffeec7a 
3ffffa60:  401058c2 60000e00 04460449 04460446 
3ffffa70:  40231e09 070f0307 03060f03 fe87130c 
3ffffa80:  00000000 b2000cdc a6600194 120e2b24 
3ffffa90:  3fff0974 00000000 00007027 40227b27 
3ffffaa0:  3ffee69e 60000e00 3ffee67c 3ffee808 
3ffffab0:  00000001 00000001 00000000 ffff0000 
3ffffac0:  4022843c 3fff0974 ffffff00 40228414 
3ffffad0:  3fff0954 00001000 3fff09f4 3ffee69e 
3ffffae0:  40104766 0000007d 000000ed 3fffffb0 
3ffffaf0:  3fffff10 00000000 00000002 0000007c 
3ffffb00:  ffffffff ffffffff ffff0002 00000000 
3ffffb10:  00000000 00000000 00000000 00000000 
3ffffb20:  00000000 00000000 00000000 00000000 
3ffffb30:  ffffffff 00ffffff 00000000 00000000 
3ffffb40:  00000000 00000000 00000000 00000000 
3ffffb50:  00000000 00000000 00000000 00000000 
3ffffb60:  00000000 00000000 00000000 00000000 
3ffffb70:  00000000 ff000000 ffffffff ffffffff 
3ffffb80:  ffffffff ffffffff ffffffff ffffffff 
3ffffb90:  ffffffff ffffffff ffffffff ffffffff 
3ffffba0:  ffffffff ffffffff ffff00ff ffffffff 
3ffffbb0:  0000000a 5f505345 43444330 00003641 
3ffffbc0:  00000000 00000000 00000000 00000000 
3ffffbd0:  00000000 00000000 00000000 00000000 
3ffffbe0:  00000000 00000000 00000000 00000000 
3ffffbf0:  00000000 00000000 00000000 00000000 
3ffffc00:  00000000 00000000 00000000 00000000 
3ffffc10:  00000000 ffffffff ffffffff ffffffff 
3ffffc20:  ffffffff ffffffff ffffffff ffffffff 
3ffffc30:  ffffffff 000001ff ffffff04 ffffff01 
3ffffc40:  ffffffff ffffffff ffffffff ffffffff 
3ffffc50:  ffffffff ffffffff ffffffff ffffffff 
3ffffc60:  ffffffff ffffffff ffffffff ffffffff 
3ffffc70:  ffffffff ffffffff ffffffff ffffffff 
3ffffc80:  ffffffff ffffffff ffffffff ffffffff 
3ffffc90:  ffffffff ffffffff ffffffff ffffffff 
3ffffca0:  ffffffff ffffffff ffffffff ffffffff 
3ffffcb0:  ffffffff ffffffff ffffffff ffffffff 
3ffffcc0:  ffffffff ffffffff ffffffff ffffffff 
3ffffcd0:  ffffffff ffffffff ffffffff ffffffff 
3ffffce0:  ffffffff ffffffff ffffffff ffffffff 
3ffffcf0:  ffffffff ffffffff ffffffff ffffffff 
3ffffd00:  ffffffff ffffffff ffffffff ffffffff 
3ffffd10:  ffffffff ffffffff ffffffff ffffffff 
3ffffd20:  ffffffff ffffffff ffffffff ffffffff 
3ffffd30:  ffffffff ffffffff ffffffff ffffffff 
3ffffd40:  ffffffff ffffffff ffffffff ffffffff 
3ffffd50:  ffffffff ffffffff ffffffff ffffffff 
3ffffd60:  ffffffff ffffffff ffffffff ffffffff 
3ffffd70:  ffffffff ffffffff ffffffff ffffffff 
3ffffd80:  ffffffff ffffffff ffffffff ffffffff 
3ffffd90:  ffffffff ffffffff ffffffff ffffffff 
3ffffda0:  ffffffff ffffffff ffffffff ffffffff 
3ffffdb0:  ffffffff ffffffff ffffffff ffffffff 
3ffffdc0:  ffffffff ffffffff ffffffff ffffffff 
3ffffdd0:  ffffffff ffffffff ffffffff ffffffff 
3ffffde0:  ffffffff ffffffff ffffffff ffffffff 
3ffffdf0:  ffffffff ffffffff ffffffff ffffffff 
3ffffe00:  ffffffff ffffffff ffffffff ffffffff 
3ffffe10:  ffffffff ffffffff ffffffff ffffffff 
3ffffe20:  ffffffff ffffffff ffffffff ffffffff 
3ffffe30:  ffffffff ffffffff ffffffff ffffffff 
3ffffe40:  ffffff00 00000003 ffffffff ffffffff 
3ffffe50:  ffffffff ffffffff ffffffff ffffffff 
3ffffe60:  ffffffff ffffffff ffffffff ffff0064 
3ffffe70:  00000000 00000000 ffffffff ffffffff 
3ffffe80:  ffffffff ffffffff ffffffff ffffffff 
3ffffe90:  ffffffff ffffffff ffffffff ffffffff 
3ffffea0:  ffffffff ffffffff ffffffff ffffffff 
3ffffeb0:  ffffffff ffffffff ffffffff ffffffff 
3ffffec0:  ffffffff ffffffff ffffffff ffffffff 
3ffffed0:  ffffffff ffffffff ffffffff ffffffff 
3ffffee0:  ffffffff ffffffff ffffffff ffffffff 
3ffffef0:  ffffffff ffffffff ffffffff ffffffff 
3fffff00:  ffffffff ffffffff ffffffff ffffffff 
3fffff10:  ffffffff ffffffff ffffffff ffffffff 
3fffff20:  ffffffff ffffffff ffffffff ffffffff 
3fffff30:  ffffffff ffffffff ffffffff ffffffff 
3fffff40:  ffffffff ffffffff ffffffff ffffffff 
3fffff50:  ffffffff ffffffff ffffffff ffffffff 
3fffff60:  ffffffff ffffffff ffffffff ffffffff 
3fffff70:  ffffffff ffffffff ffffffff ffffffff 
3fffff80:  ffffffff 00000000 00000000 00000000 
3fffff90:  ffff0000 dca2dece cd8547be 510d1dd9 
3fffffa0:  000201e9 d67572b6 ffffff00 55aa55aa 
<<<stack<<<

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

load 0x4010f000, len 1384, room 16
tail 8
chksum 0x2d
csum 0x2d
vf6d232f1
~ld
r$
 

Killbrum

New member
У вас много странностей в коде. В частности, вы вообще не обслуживаете mqtt. Подключаетесь к нему и думаете что после этого он волшебным образом сам по себе будет работать, даже если не вызывать mqtt.loop() в основном цикле. Вот он у вас и грохает все вскоре после подключения, когда вы к нему начинаете обращаться.

"Танцуйте от печки", т.е. опирайтесь на примеры.
дело в том что он так и работает :) его не надо обслуживать. Достаточно передать обект класса в сам MQTT. Все что надо делать это следить за подключением. Вот сами посмотрите Adafruit_MQTT_Library/mqtt_esp8266.ino at master · adafruit/Adafruit_MQTT_Library · GitHub

P.S. простите а есть какой-то общий тест есп модуля? Может у меня просто брак?
 

Killbrum

New member
Мда... установил

Код:
WiFi.setOutputPower(0);
Пропали обрывы, перестал падать модуль. Все работает как часы. Единственное это то что сигнал слабый стал. Соответственно много шума в эфире будет
 

Killbrum

New member

=AK=

New member
Пропали обрывы, перестал падать модуль. Все работает как часы. Единственное это то что сигнал слабый стал.
Я пробовал ESP-07, модуль работал более-менее нормально, но мне не понравился. Чувствительность была намного хуже, чем ESP-12.
 

Killbrum

New member
Я пробовал ESP-07, модуль работал более-менее нормально, но мне не понравился. Чувствительность была намного хуже, чем ESP-12.
Ужас... опять что-то... теперь есп даже не проходят бутлодер как понимаю. При загрузке получаю случайный набор китайских символов (подозреваю что китайские т.к. там кубики и случайный набор букв). Ресет не помогает. Куда могу посмотреть? Только что пробовал на другом чипе - так же. Макет не трогал. На коде падает даже на примерах. В общем везде...

P.S. заказал себе ESP-12. Надеюсь кошмар скоро закончится
 

pvvx

Активный участник сообщества
Ужас... опять что-то... теперь есп даже не проходят бутлодер как понимаю. При загрузке получаю случайный набор китайских символов (подозреваю что китайские т.к. там кубики и случайный набор букв). Ресет не помогает. Куда могу посмотреть? Только что пробовал на другом чипе - так же. Макет не трогал. На коде падает даже на примерах. В общем везде...
Т.к. у вас модуль программно перезапускается по soft-reset, обратите большее внимание на установки ног при перезагрузках (схемотехнику).
На условии "гадания", у вас что-то не то с ногой GPIO2 и модуль перезагружается не по той ветке...
Китайских символов модуль выводить не умеет. При старте у него UART работает на 74880 Baud (115200 Baud * 26 МГц / 40 МГц, т.к. ROM рассчитан на кварц в 40 МГц, а стоит 26).
 

Killbrum

New member
На условии "гадания", у вас что-то не то с ногой GPIO2 и модуль перезагружается не по той ветке...
Китайских символов модуль выводить не умеет. При старте у него UART работает на 74880 Baud (115200 Baud * 26 МГц / 40 МГц, т.к. ROM рассчитан на кварц в 40 МГц, а стоит 26).
Спасибо, понял!

Странно GPIO2 через резистор 10кОм на +3.3 идет. Все работало до сегодня без збоев. Прошить есп и сейчас могу. Загрузить - нет. Контакты прозвонил - все в норме.
 

=AK=

New member
Прошить есп и сейчас могу. Загрузить - нет.
Если можете прошить, то бутлодер жив. Странно, что падает на примерах, это указывает на неисправность железа. Однако, если я правильно понял, модуль у вас не один, и на всех падает одинаково? Тогда неисправность конкретного экземпляра железа невероятна. Брак всей партии? С трудом верится.

У вас на всех примерах падает? Уточните, какие примеры вы грузили. Вы пробовали примеры без MQTT, самые простые? Скажем, ESP8266/Blink, ESP8266WiFi/WiFiScan, на них тоже падает?
 

pvvx

Активный участник сообщества
Если можете прошить, то бутлодер жив. Странно, что падает на примерах, это указывает на неисправность железа. Однако, если я правильно понял, модуль у вас не один, и на всех падает одинаково? Тогда неисправность конкретного экземпляра железа невероятна. Брак всей партии? С трудом верится.
Попробуйте подавать больше 1В с током несколько мА на вход ADC - будет падать вся партия ESP8266 :)
Странно GPIO2 через резистор 10кОм на +3.3 идет. Все работало до сегодня без збоев.
Значит гадания не помогают.
Адреса "падения" одинаковы или нет? (Exception (0): epc1=0x4023255e... ?)
Если одинаковы - то на 90% ищем софт глюк...

humidity_topic.publish(data) можно дать, если соединение MQTT уже закрыто (оборвано со стороны сервера)?
Для неполной проверки этого надо дать mqtt.disconnect() (или не открывать, не исполнять mqtt.connect()) и сразу после инициализации вызвать humidity_topic.publish(data). Если вылетит - долой Arduino и её либы...
 
Последнее редактирование:
Сверху Снизу