Питание ESP32/ESP8266 от солнечных панелей (с мониторингом уровня заряда батареи)
В этом руководстве показано пошагово, как запитать плату ESP32 от солнечных панелей, литиевой батареи 18650 и зарядного модуля TP4056. Схема, которую мы соберём, также совместима с ESP8266 или любым микроконтроллером, работающим от 3.3 В.
Когда вы питаете ESP32 от солнечных панелей, может быть полезно использовать возможности глубокого сна для экономии энергии. Узнайте всё, что нужно знать о глубоком сне ESP32, из нашего руководства: ESP32 Deep Sleep с Arduino IDE и источниками пробуждения.
Необходимые компоненты
Для питания ESP32 или ESP8266 от солнечных панелей нам понадобятся следующие компоненты:
ESP32 или ESP8266 (читайте ESP32 vs ESP8266)
Держатель батареи
Стабилизатор напряжения:
Опционально — делитель напряжения для мониторинга батареи:
Вы можете использовать ссылки выше или перейти напрямую на MakerAdvisor.com/tools, чтобы найти все компоненты для ваших проектов по лучшей цене!
ESP32 на солнечной энергии — обзор схемы
Следующая диаграмма показывает, как работает схема питания ESP32 от солнечных панелей.
Солнечные панели выдают от 5 В до 6 В при прямом солнечном свете.
Солнечные панели заряжают литиевую батарею через зарядный модуль TP4056. Этот модуль отвечает за зарядку батареи и предотвращение перезарядки.
Литиевая батарея выдаёт 4.2 В при полной зарядке.
Необходимо использовать схему стабилизатора напряжения с низким падением (MCP1700-3302E), чтобы получить 3.3 В из выходного напряжения батареи.
Выход стабилизатора напряжения будет питать ESP32 через вывод 3.3 В.
Солнечные панели
Солнечные панели, которые мы используем, имеют выходное напряжение до 5–6 В. Если вы хотите, чтобы батарея заряжалась быстрее, можно использовать несколько солнечных панелей, соединённых параллельно. В этом примере мы используем две мини солнечные панели, как показано на следующем изображении.
Чтобы соединить солнечные панели параллельно, припаяйте вывод (+) одной солнечной панели к выводу (+) другой. То же самое сделайте для выводов (-). Может помочь следующее изображение.
При параллельном соединении солнечных панелей вы получите такое же выходное напряжение и удвоенный ток (для идентичных солнечных панелей). Как видно на следующем изображении, солнечные панели выдают приблизительно 6 В.
На фотографии выше мы используем мультиметр ANENG AN8002, читайте наш обзор здесь: ANENG AN8002 Multimeter Review — лучший бюджетный мультиметр?
Зарядный модуль TP4056
Зарядный модуль TP4056 для литиевых батарей оснащён защитой и предотвращает перенапряжение батареи и подключение с обратной полярностью.
Модуль TP4056 загорается красным светодиодом при зарядке батареи и голубым светодиодом, когда батарея полностью заряжена.
Подключите солнечные панели к зарядному модулю TP4056, как показано на схеме ниже. Подключите положительные клеммы к контакту IN+, а отрицательные клеммы к контакту IN-.
Затем подключите положительный вывод держателя батареи к контакту B+, а отрицательный вывод — к контакту B-.
OUT+ и OUT- — это выходы батареи. Эти литиевые батареи выдают до 4.2 В при полной зарядке (хотя на этикетке указано 3.7 В).
Для питания ESP32 через вывод 3.3 В нам нужна схема стабилизатора напряжения, чтобы получить 3.3 В из выхода батареи.
Стабилизатор напряжения
Использование типичного линейного стабилизатора напряжения для снижения напряжения с 4.2 В до 3.3 В — не лучшая идея, потому что по мере разряда батареи, например, до 3.7 В, ваш стабилизатор перестанет работать из-за высокого порога отсечки.
Для эффективного снижения напряжения при работе с батареями нужно использовать стабилизатор с низким падением напряжения (LDO — Low-Dropout regulator), который может регулировать выходное напряжение.
После исследования LDO-стабилизаторов, MCP1700-3302E является лучшим для наших целей. Также есть хорошая альтернатива — HT7333-A.
Любой LDO с аналогичными характеристиками также подойдёт. Ваш LDO должен иметь схожие параметры по выходному напряжению, току покоя, выходному току и низкому падению напряжения. Посмотрите на даташит ниже.
Вот распиновка MCP1700-3302E: выводы GND, VIN и VOUT.
К LDO-стабилизаторам следует подключить керамический конденсатор и электролитический конденсатор параллельно между GND и Vout для сглаживания пиков напряжения. Здесь мы используем электролитический конденсатор 100 мкФ и керамический конденсатор 100 нФ.
Следуйте следующей схеме, чтобы добавить стабилизатор напряжения к предыдущей сборке.
Внимание: электролитические конденсаторы имеют полярность! Вывод с белой/серой полосой должен быть подключён к GND.
Вывод Vout стабилизатора напряжения должен выдавать 3.3 В. Именно этот вывод будет питать ESP32 или ESP8266.
Наконец, убедившись, что вы получаете правильное напряжение на выводе Vout стабилизатора, можно запитать ESP32. Подключите вывод Vout к выводу 3.3 В ESP32 и GND к GND.
Если вы используете ESP8266, можно применить ту же схему. Подключите выход MCP1700-3302E к выводу 3.3 В ESP8266, а GND — к GND.
Схема мониторинга уровня заряда батареи
Когда ESP32 питается от батарей или солнечных панелей, как в нашем случае, очень полезно отслеживать уровень заряда батареи. Один из способов — считывать выходное напряжение батареи с помощью аналогового вывода ESP32.
Однако батарея, которую мы используем, выдаёт максимум 4.2 В при полной зарядке, а GPIO ESP32 работают при 3.3 В. Поэтому нам нужно добавить делитель напряжения, чтобы можно было считывать напряжение батареи.
Формула делителя напряжения:
Vout = (Vin*R2)/(R1+R2)
Итак, если мы используем R1=27 кОм и R2=100 кОм, получаем:
Vout = (4.2*100k)/(27k + 100k) = 3.3V
Таким образом, при полностью заряженной батарее Vout выдаёт 3.3 В, которые можно считать с GPIO ESP32.
Добавьте два резистора в вашу схему, как показано на следующей принципиальной схеме.
В данном случае мы мониторим уровень заряда батареи через GPIO33, но вы можете использовать любой другой подходящий GPIO. Прочитайте наше руководство по GPIO ESP32, чтобы узнать, какие GPIO лучше использовать.
Наконец, чтобы получить уровень заряда батареи, можно просто считать напряжение на GPIO33 с помощью функции analogRead() в вашем коде (если вы используете Arduino IDE).
analogRead(33);
Вы также можете использовать функцию map(), чтобы преобразовать аналоговые значения в проценты:
float batteryLevel = map(analogRead(33), 0.0f, 4095.0f, 0, 100);
Если вы используете ESP8266, он поддерживает аналоговое чтение только на выводе A0. Поэтому нужно подключить схему следующим образом:
Для ESP8266 для считывания аналогового значения используйте:
analogRead(0);
Заключение
В этой статье мы показали, как питать ESP32 или ESP8266 от солнечных панелей, литиевой батареи и зарядного модуля TP4056. Показанная схема также может быть использована для питания других микроконтроллеров, работающих от 3.3 В.
При питании ESP32 от солнечных панелей или батарей важно экономить энергию. Для этого можно использовать возможности глубокого сна ESP32.
Теперь вы можете использовать эту схему для перевода ваших проектов на солнечную энергию. Например, было бы интересно модифицировать следующие проекты для использования солнечных панелей:
Если вы хотите узнать больше о ESP32, обязательно ознакомьтесь с нашим специализированным курсом: Изучите ESP32 с Arduino IDE.
Спасибо за чтение.
—
Источник: :doc:`Power ESP32/ESP8266 with Solar Panels (includes battery level monitoring) <../power-esp32-esp8266-solar-panels-battery-level-monitoring/index>` — Random Nerd Tutorials