ESP32 Wifi не работает при питании от батареи

Я совсем новичок в разработке ESP32. Я использовал этот devkit для нескольких небольших проектов, и все шло гладко, пока я не решил запустить его от батареи. В частности, у ESP32 devkit, который я использую, при подключении к батарее, похоже, возникают проблемы при попытке подключиться к Wi-Fi.

Я использую батарею 9 В, подключенную к источнику питания MB-V2, для преобразования выходного напряжения в 3,3 В. Плата питания имеет следующие особенности:

  • Входное напряжение: 6,5-9 В (постоянного тока) через штекер 5,5 мм x 2,1 мм
  • Выходное напряжение: 3,3 В/5 В
  • Максимальный выходной ток: 700 мА
  • Независимый выход шины управления: 0 В, 3,3 В, 5 В на макетную плату

Как вы можете видеть на картинке, мой мультиметр измеряет выходное напряжение около 3,3 В

Voltage measurement

Я создал примерный проект для отладки, вот схемы: Schematics Pic of the setup

Аккумулятор подключен к источнику питания, который выдает напряжение 3,3 В и питает ESP32 через его вывод 3,3 В. У меня нет схемы для этого конкретного devkit, который я использую, поэтому devkit, используемый в схемах, является DOIT, поэтому все контакты отключены. Однако код довольно прост, так что, надеюсь, он сможет немного прояснить ситуацию:

#include <WiFi.h>

const int uS_TO_S_FACTOR = 1000000;
const int TIME_TO_SLEEP = 3;
const int RED_LED_PIN = 32;
const int BLUE_LED_PIN = 25;
const int YELLOW_LED_PIN = 26;
const char SSID[] = "SSID";
const char PASS[] = "PASS";

void startupSequence(){
  digitalWrite(RED_LED_PIN, LOW);
  digitalWrite(BLUE_LED_PIN, LOW);
  digitalWrite(YELLOW_LED_PIN, LOW);
  // Последовательность
  digitalWrite(RED_LED_PIN, HIGH);
  digitalWrite(BLUE_LED_PIN, HIGH);
  digitalWrite(YELLOW_LED_PIN, HIGH);
  delay(1000);
  digitalWrite(RED_LED_PIN, LOW);
  digitalWrite(BLUE_LED_PIN, LOW);
  digitalWrite(YELLOW_LED_PIN, LOW);
  delay(500);
}

void setup(){
  Serial.begin(115200);
  while(!Serial){}
  pinMode(RED_LED_PIN, OUTPUT);
  pinMode(BLUE_LED_PIN, OUTPUT);
  pinMode(YELLOW_LED_PIN, OUTPUT);
  startupSequence();
  delay(500);
  digitalWrite(RED_LED_PIN, HIGH);
  delay(1000);
  Serial.print("Connecting to ");
  Serial.println(SSID);
  WiFi.begin(SSID, PASS);  
  while ((WiFi.status() != WL_CONNECTED) && (millis()<10000)) {
      Serial.print(".");
      delay(500);
  }
  Serial.print("Connected. IP: ");
  Serial.println(WiFi.localIP());
  digitalWrite(RED_LED_PIN, LOW);
  if(WiFi.status() == WL_CONNECTED) //Запустите это только в первый раз
  {
    Serial.println("Connected");
    digitalWrite(YELLOW_LED_PIN, HIGH);
  } else
  {
    Serial.println("Not connected");
    digitalWrite(BLUE_LED_PIN, HIGH);
  }
  delay(3000);
  digitalWrite(BLUE_LED_PIN, LOW);
  digitalWrite(YELLOW_LED_PIN, LOW);
  Serial.println("Going to sleep");
  esp_sleep_enable_timer_wakeup(TIME_TO_SLEEP * uS_TO_S_FACTOR);
  esp_deep_sleep_start();
}

void loop(){}

В коде ESP32 сначала загораются все светодиоды, затем загорается красный светодиод, когда он пытается подключиться к Wi-Fi. Не более чем через 10 секунд загорается желтый светодиод, если подключение прошло успешно, в противном случае загорается синий светодиод. Кроме того, в качестве последнего шага я отправляю ESP32 в глубокий спящий режим, так как моим намерением было измерить его энергопотребление во время сна.

При подключении к ПК все работает без сбоев, в то время как при подключении к батарее ESP32 (по-видимому) никогда не выходит из цикла while, а красный светодиод всегда горит. Затем красный светодиод начинает мигать, а индикатор питания начинает мигать. Сброс его с помощью ПЕРВОЙ кнопки на devkit приводит к тому, что индикатор питания начинает мигать, а красный светодиод никогда не загорается. Это продолжается до тех пор, пока я не отключу питание, затем код, кажется, снова запускается с самого начала (т. Е. Последовательность запуска), и это поведение повторяется.

Я прочитал несколько сообщений о подобных проблемах с ESP32 devkits, но проблема всегда заключалась в том, что батареи не имели достаточно высокого напряжения, что, похоже, не мой случай. Что может быть причиной этой проблемы?

, 👍4

Обсуждение

Общая проблема. Эти 9-вольтовые блочные батареи не предназначены для обеспечения необходимого тока. Они предназначены только для маломощных приборов, таких как детекторы дыма или ИК-пульты дистанционного управления. Используйте аккумулятор, который действительно может обеспечить необходимый ток (может быть до 1 А в течение короткого времени при работе Wi-Fi)., @chrisl

Третий пункт [мой ответ на это question](https://arduinoprosto.ru/q/67828/control-speed-of-a-dc-motor-with-a-9v-battery/67831#67831 ) говорит об этом., @chrisl

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

попробуйте ввести вывод gnd в правом верхнем углу, тот, что находится в нижнем / среднем левом углу, по-видимому, не является gnd, но ошибочно помечен как один на некоторых моих модулях. сводил меня с ума..., @dandavis

@chrisl ты совершенно прав, я не понимал, что это из-за батареи. Я переключил его с помощью блока питания телефона, который подключается через USB-кабель, и все работает нормально. Однако я не регистрировал токи более 120 мА даже при работающем Wi-Fi., @luigi

У меня такая же проблема. Это очень раздражает, потому что раньше мой Arduino работал нормально. После перехода на ESP32 4 батарейки типа АА по 1,5 В уже не помогают. Думаю, мне придется заказать еще один аккумуляторный чехол..., @funct7


1 ответ


Лучший ответ:

3

Я согласен с крислом, батарея не имеет достаточно низкого импеданса для работы вашего проекта. Чего вы не принимаете во внимание, так это тока передатчика, когда он передает сигнал на Wi-Fi. Я обнаружил, что когда он просыпается, он потребляет более 500 мА в течение короткого времени, измеренного с помощью оптического прицела и датчика тока. Это появляется во время выполнения функции "WiFi.scanNetworks()". Добавьте к этому все светодиоды и другую электронику, как вы думаете, что это нарисует. Тот факт, что он работает от USB, также помогает подтвердить это. Попробуйте использовать последовательно 6 батареек большего размера, я ожидаю, что они будут работать правильно. Проверьте эту ссылку от:Expressif, производителя чипа по адресу https://esp32.com/viewtopic.php?t=2662

,

Кроме того, замена линейного регулятора переключающим регулятором > 1A значительно облегчит ситуацию., @Majenko

Большое вам спасибо, это был аккумулятор, я заменил его на блок питания, и все работает нормально. Я и не подозревал, насколько энергозатратным может быть ESP32. Я попытаюсь использовать некоторые предложения в этой теме, поскольку у power bank есть еще одна проблема: он отключается во время фазы глубокого сна ESP32, но это другая проблема., @luigi