ESP32 и Arduino IDE

=AK=

New member
Сами не поняли, что написали 2 противоположные вещи ? Вначале вроде правильно, только диод то зачем нужен (что бы в отключенный USB разряжался?), а потом написали, что он нужен для разряда в ESP32, да только он же стоит со стороны USB...
И перестаньте приплетать pvvx, это уже на манию или идею фикс похоже.
Про pvvx приходится поминать потому, что вы у него, как я вижу, вроде рыбы-прилипалы. А насчет мнимых "противоположностей" - нет, я не понял, где вы там противоположности усмотрели. Схемки нарисуйте с этими "противоположностями", чтобы можно было предметно обсуждать.
 

kab

New member
Сами не поняли, что написали 2 противоположные вещи ? Вначале вроде правильно, только диод то зачем нужен (что бы в отключенный USB разряжался?), а потом написали, что он нужен для разряда в ESP32, да только он же стоит со стороны USB...
И перестаньте приплетать pvvx, это уже на манию или идею фикс похоже.
Бл...!!! Да прав =AK=, только рисовать неохота. Попробую описать словами:
1.Как обычно, паралельно питанию есп ставите конденсатор.
2. Но ставите кондер не просто так, а последовательно с резистором, чтобы ограничить максимальный ток (через кондер).
3 А т.к. ток через кондер надо ограничить только заряда - ограничительный резистор шунтируем диодом. Чтобы ток разряда кондера шел через диод, а не резистор.
 

A_D

Active member
Про pvvx приходится поминать потому, что вы у него, как я вижу, вроде рыбы-прилипалы. А насчет мнимых "противоположностей" - нет, я не понял, где вы там противоположности усмотрели. Схемки нарисуйте с этими "противоположностями", чтобы можно было предметно обсуждать.
Опять, в разговоре и слова не было про pvvx, а вы про то, что я у него типа прилипалы ... если есть обида на человека, то не пишите об этом на каждом углу как в детсаде.
Раздаёте советы направо и налево, а ссылки или банально схемки приложить - уже лень. Такая себе помощь новичкам. Ибо вот даже человек так же как и я подумал о совершенно другой схеме подключения (хотя по факту ни последовательно с накопителем-конденсатором, ни в питание USB включение резистора\диода не решает проблему нормально):
Можете объяснить, зачем ему быстро разряжаться? Тем более на бесполезную нагрузку.
А вы даже после этого не описали нормально, а тупо обхаяли.

kab, попробуйте так сделать ) я как раз и молчал о главной фишке такого "решения" - старт ESP32 будет все-равно с подачей питания, а с таким костылём питание еще более плавно будет добираться до 5В\3.3В, смотря куда поставить = гарантированное зависание ESP32 при подключении первый раз, надо сбрасывать ESP32 вручную или ставить таймер на reset. Это не решение проблемы питания, это костыль на костыле и поэтому для новичков подобные советы мягко говоря не очень.
 
Последнее редактирование:

Сергей_Ф

Moderator
Команда форума
@kab теперь понял, просто @=AK= свою мысль выразил не очень ясно, не в обиду будет сказано. Т.е. резистор с диодом не в цепи к usb, а в цепи кондера по питанию есп. А к usb напрямую.
 

=AK=

New member
я как раз и молчал о главной фишке такого "решения" - старт ESP32 будет все-равно с подачей питания, а с таким костылём питание еще более плавно будет добираться до 5В\3.3В, смотря куда поставить = гарантированное зависание ESP32 при подключении первый раз, надо сбрасывать ESP32 вручную или ставить таймер на reset.
Насчет "куда ставить" вроде бы черным по белому писал, и не один раз - "на линию питания USB", т.е. на 5В.
Насчет "питание еще более плавно будет добираться до 5В" - расскажите подробнее, в деталях, почему это произойдет. Это очень-очень интересно.
Насчет "ставить таймер на reset" - он там уже имеется, в виде RC-цепочки R1C3 на фиг.4 даташита ESP-WROOM-32. Или вы еще один хотите поставить? А зачем?
 

A_D

Active member
Насчет "куда ставить" вроде бы черным по белому писал, и не один раз - "на линию питания USB", т.е. на 5В.
Насчет "питание еще более плавно будет добираться до 5В" - расскажите подробнее, в деталях, почему это произойдет. Это очень-очень интересно.
Насчет "ставить таймер на reset" - он там уже имеется, в виде RC-цепочки R1C3 на фиг.4 даташита ESP-WROOM-32. Или вы еще один хотите поставить? А зачем?
Тут ваши советы народ воспринимает двояко, отличный троллинг.
Зачем вам рассказывать, вы же профи, советы\ссылки на аргументы без самих аргументов\ссылок\даташитов\картинок приводите - всё знаете, других тоже воспринимаете на аналогичном "уровне". Разве что тему выше про ограничение тока в USB уже забыли....
RC цепочка - это больше защита reset от внешних ЭМИ помех, по факту даже я не верно написал, не таймер нужен, а монитор питания типа такого - http://www.mouser.com/ds/2/256/MAX811-MAX812-190465.pdf или https://datasheets.maximintegrated.com/en/ds/MAX803-MAX810Z.pdf ибо встроенный в ESP32 не пашет.
 

A_D

Active member
Слив засчитан.

Соответственно, прописываю вас в категорию жирных троллей, не способных отвечать за свои слова.
мда...если б я писал про ваши, было б позначимее. (причину я кстати указал в сообщении - ограничение тока по usb, но вам надо разжевать все почему-то, а другим же вы отвечаете, что ничего разжевывать не будете и должны все сами знать и гуглить. Забавно.)
Вижу, что спорить или доказывать вам что то бесполезно, на своей волне всегда.
Лишь бы только костыльные советы новичкам не давали только, намучаются почем зря.
 

=AK=

New member
Хотя, может быть - больше вольтаж - больше энергии запасется в конденсаторе при той же емкости? Так?
В модуле есть свой диод Шоттки, и за счет этого можно кое-что сэкономить.

На конкретно моем модуле напряжение на шине +3.3 начинает проседать, когда напряжение на +5 USB разъема уменьшается до 4.8В, и это при токе потребления модуля 50 мА. На холостом ходу USB порт моего компа выдает 5.06В. Однако на USB разьеме модуля, подключенного через 1м USB кабель, при 50 мА потребления - всего 5.01В. Значит, сумма вых. сопротивления источника и сопротивления моего кабеля составляет примерно 1 Ом. Импульсы тока потребления амплитудой 0.6...0.7А в моем случае, очевидно, вызывают проседания шины +5 до 4.3В, а при таком напряжении на шине +3.3 напряжение падает ниже 2.85В. И это при минимально допустимом 2.3В для ESP-32. Еще раз отмечу, что я делал замеры при токе 50 мА, а при 0.6...0.7А все существенно хуже, поскольку возрастет падение напряжения на регуляторе питания и на диоде Шоттки, который стоит перед регулятором.

Но у меня-то модуль худо-бедно работает. А у AndrF глючит. Очень вероятно, что у него сопротивление кабеля больше, поэтому и просадка питания глубже, вот модуль и сбрасывается.

Теперь сделаем прикидочный расчет номиналов предлагаемой цепочки. Примем, например, что сопротивление источника и кабеля равно 1.5 Ом. Тогда при 5В напряжения холостого хода и среднем токе модуля 150 мА (берем с запасом) на шине +5 модуля будет в среднем 4.775 В. До этого напряжения будет заряжен конденсатор. Если принять, что он должен выдавать ток 0.6А в течении 0.5 мс, и напряжение на нем не должно за это время упасть более чем на 0.3В, то требуемая емкость конденсатора должна быть 1000 мкФ. Я не учитываю, что конденсатор - это всего лишь вспомогательный источник тока, поэтому 1000 мкФ - это с запасом. (Правда, есть еще начальный импульс 10 мс, и его парировать будет гораздо труднее. )

Импульсы следуют каждые 100 мс. Чтобы в промежутке между импульсами конденсатор успевал опять зарядиться, постоянная времени зарядной цепочки должна быть в несколько раз (скажем, в 5 раз) меньше этих 100 мс. Откуда максимальное сопротивление резистора должно быть 20 Ом или менее.

Теперь о разряде. Поскольку в модуле уже есть свой диод Шоттки на входе, то имеет смысл второй диод Шоттки подключить анодом к конденсатору, а катоды обих диодов соединить вместе. За счет этого "сэкономится" падение напряжения на диоде.

А вообще же стоит сказать, что по даташиту ESP-32 должен потреблять менее 300 мА: процессор 50 мА и WiFi передатчик 240 мА макс. А он потребляет примерно вдвое больше. Пока что можно и на "жрущих" модулях пожить какое-то время. Но хотелось бы раздобыть модуль с характеристиками, обещанными в даташите.
 
Последнее редактирование:

AndrF

New member
А вообще же стоит сказать, что по даташиту ESP-32 должен потреблять менее 300 мА: процессор 50 мА и WiFi передатчик 240 мА макс. А он потребляет примерно вдвое больше. Пока что можно и на "жрущих" модулях пожить какое-то время. Но хотелось бы раздобыть модуль с характеристиками, обещанными в даташите.
USB-тестер на работающем ESP32 работающей Web-страничкой у меня показывает 130 миллиампер, но это, конечно, среднее значение. Большое потребление у ESP-шки в пиках, которые вполне можно сгладить кондером...
 

=AK=

New member
USB-тестер на работающем ESP32 работающей Web-страничкой у меня показывает 130 миллиампер, но это, конечно, среднее значение. Большое потребление у ESP-шки в пиках, которые вполне можно сгладить кондером...
Те, у которых длительность по 0.5 мс с паузами по 100 мс между ними, - да, нетрудно сгладить. А вот начальный импульс длительностью 10 мс - трудно. При среднем токе 0.5 А для сглаживания придется ставить кондер порядка 10000 мкФ.

Этот импульс идет при первом вызове WiFi.scanNetworks(); После этого он больше не появляется.
 

pvvx

Активный участник сообщества
А вообще же стоит сказать, что по даташиту ESP-32 должен потреблять менее 300 мА: процессор 50 мА и WiFi передатчик 240 мА макс. А он потребляет примерно вдвое больше. Пока что можно и на "жрущих" модулях пожить какое-то время. Но хотелось бы раздобыть модуль с характеристиками, обещанными в даташите.
Там давно вставлен программный тротлинг. Если его убрать, то совсем беда. И не только WiFi передатчик потребляет, да и два ядра ESP-32S не жрут 50 мА.
И нафиг такой WiFi-SoC с программными задержками в либах?
Указанные 1000 мкФ и остальные цепи не спасают его от выхода среднего потребления за спецификацию USB-2.0. Чип больше и имеет TDP больше, чем ESP8266.
---
В остальном вы повторяете доказательство (и описания данные мной более полу года назад), что DevBoard с ESP-32S - недоработанная плата с кучей ошибок (как и сам модуль пусть даже от Espressif или другой с ESP-32S) и не стоит её брать поклонникам Arduino. :p Через пару лет возможно Espressif исправит свои ошибки с данной серией за счет оплачиваемых "энтузиастов", а пока это не исправляется ничем. Необходимо подождать пока фанаты ESP скупят весь брак с али и тем самым оплатят Espressif работу над ошибками... Другие фирмы в таких случаях бесплатно меняют товар на исправленный :)
 
Последнее редактирование:

=AK=

New member
DevBoard с ESP-32S - недоработанная плата с кучей ошибок
Уточняю, что у AndrF и у меня платы - DOIT/SmartArduino ESP32 DevKit, а не "DevBoard с ESP-32S"


Причин превышения тока потребления может быть несколько:
- Несоответствие характеристик чипа ESP-32 заявленным в даташите
- Некорректное согласование в RF части модуля ESP-WROOM-32
- Некорректное расположение модуля на плате DOIT
Замечу, что на "родной" плате Espressif ESP32-DevKitC антенна модуля вынесена за границу платы и висит в воздухе, что немаловажно. Это может сказываться и на характеристиках WiFi, и на токе потребления

ESP-32 DevBoard.png


Через пару лет возможно Espressif исправит свои ошибки с данной серией за счет оплачиваемых "энтузиастов", а пока это не исправляется ничем. Необходимо подождать пока фанаты ESP скупят весь брак с али и тем самым оплатят Espressif работу над ошибками... Другие фирмы в таких случаях бесплатно меняют товар на исправленный :)
Чтобы проверить влияние расположения модуля, я отпилил кусок платы под антенной:

ESP-32 DevKit modified.png

После доработки пиковый ток потребления уменьшился раза в полтора. Начальный импульс тока длительностью 10 мс уменьшился примерно до 0.3А (в среднем), пики длительностью 0.5 мс уменьшились примерно до 0.4 А. Ну и греться плата стала вроде как меньше. При сканировании WiFi скетч стал обнаруживать 5...8 сетей, тогда как раньше более 4-х за один раз не видел.

"Не исправляется ничем"(с), говорите? :D
 
Последнее редактирование:

AndrF

New member
Господа, прервитесь - следующая проблема:

Пример WiFiScan работает, но не удается просто подключиться к роутеру, так в примере WiFiClient крутит бесконечный цикл, выводя точки. Ssid и password, само-собой, заданы правильно.

Код

Код:
void setup()
{
    Serial.begin(115200);
    delay(10);

    // We start by connecting to a WiFi network

    Serial.println();
    Serial.println();
    Serial.print("Connecting to ");
    Serial.println(ssid);

    WiFi.begin(ssid, password);

    while (WiFi.status() != WL_CONNECTED) {
        delay(500);
        Serial.print(".");
        Serial.println(WiFi.status());
        }

    Serial.println("");
    Serial.println("WiFi connected");
    Serial.println("IP address: ");
    Serial.println(WiFi.localIP());
}
Выводит следующее:

Код:
Connecting to MGTS_GPON_1500
.6
.6
.6
.6
.1
.1
.1
.1
.1
.1
.1
.1
.1
Смотрим значения статуса:

Код:
typedef enum {
    WL_NO_SHIELD        = 255,   // for compatibility with WiFi Shield library
    WL_IDLE_STATUS      = 0,
    WL_NO_SSID_AVAIL    = 1,
    WL_SCAN_COMPLETED   = 2,
    WL_CONNECTED        = 3,
    WL_CONNECT_FAILED   = 4,
    WL_CONNECTION_LOST  = 5,
    WL_DISCONNECTED     = 6
} wl_status_t;
Но сетка с таким именем ведь на 100% есть...
 
Последнее редактирование:

=AK=

New member
примере WiFiClient крутит бесконечный цикл, выводя точки
У меня работает:
Код:
Connecting to MyNetwork
........
WiFi connected
IP address:
192.168.1.9
connecting to data.sparkfun.com
Requesting URL: /input/....................?private_key=....................&value=1
HTTP/1.1 302 Found
Cache-Control: no-cache
Content-length: 0
Location: https://data.sparkfun.com/input/....................?private_key=....................&value=1
Connection: close
Наверное в пароле ошиблись
 

=AK=

New member
Да если бы. Все сто раз проверено - моя домашняя сетка. WiFiScan при этом работает отлично, запитана всо от отдельного источника, кондеры тоже побольше повешены...
Соединение с правильным именем и паролем
Код:
Connecting to MyNetwork
.6
.6
.6
.6
.6
.6
.6
.3

WiFi connected
IP address:
192.168.1.9
Соединение с неправильным именем сети (лишний пробел в конце имени)
Код:
Connecting to MyNetwork 
.6
.6
.6
.1
.1
.1
.1
.1
... и т.д.
Соединение с неправильным паролем
Код:
Connecting to MyNetwork
.6
.6
.6
.6
.6
.6
.6
.6
.6
.6
... и т.д.
 
Сверху Снизу