Как питать Arduino от батареек: 9V, AA, 18650 и пин Vin
Как питать Arduino от батареек: USB или гнездо питания (7–12 V), пины Vin и 5V, варианты с 9V, AA и 18650, отдельное питание сервоприводов и расчёт времени работы.
Питание Arduino от батареек — первый шаг, чтобы освободить проект от USB-кабеля компьютера и превратить его в робота-машинку, датчик в саду или устройство, которое помещается в кармане. Коротко: самый безопасный способ запитать Arduino Uno от батарей — подключить сборку на 7–12 V (6×AA или два последовательно соединённых 18650) к гнезду питания (DC) или к пину Vin, либо воткнуть пауэрбанк в USB-порт. Пин 5V подходит только для чистого источника 5 V, который заранее измерен и настроен: этот пин полностью обходит стабилизатор и защиту платы.
Плохое питание стоит за многими загадочными проблемами новичков: плата перезагружается при каждом движении сервопривода, батарейка 9V садится за несколько часов, пауэрбанк выключается через пару секунд, а стабилизатор так греется, что до него не дотронуться. В этом руководстве разберём все входы, через которые можно питать Arduino, какую батарейку куда подключать, почему моторам нужно своё питание и как рассчитать потребляемый ток и время работы. В конце посмотрим, чем отличается питание от батарей у ESP32 и Raspberry Pi Pico.

5 способов запитать Arduino
Внутри Arduino Uno два отдельных пути питания. 5 V от USB проходит через самовосстанавливающийся предохранитель на 500 mA (polyfuse) и небольшой ключ на MOSFET, а затем сразу попадает на шину 5 V платы. Напряжение с гнезда питания сначала проходит через диод защиты от переполюсовки, в этой точке появляется на пине Vin и затем понижается до 5 V LDO-стабилизатором семейства 1117. Напряжение 3,3 V получается из шины 5 V вторым, более мелким стабилизатором. Компаратор на плате следит за Vin: как только Vin превышает примерно 6,6 V, он автоматически отключает питание от USB, поэтому источники не конфликтуют, даже если адаптер и USB подключены одновременно.
| Вход | Напряжение | Защита | Когда использовать |
|---|---|---|---|
| USB (тип B) | 5 V | Предохранитель polyfuse на 500 mA | Разработка на столе, зарядка от телефона, пауэрбанк |
| Гнездо питания (5,5×2,1 мм, плюс в центре) | Рекомендуется 7–12 V (предел 6–20 V) | Диод от переполюсовки + стабилизатор 5 V | Сетевой адаптер, 6×AA, сборка Li-ion 2S |
| Пин Vin | 7–12 V | Стабилизатор есть, защиты от переполюсовки нет | Провода батарейного отсека, шилды |
| Пин 5V | Измеренные 4,8–5,2 V | Никакой защиты | Настроенный выход buck/boost-модуля, стабилизированный источник 5 V |
| Пин 3.3V | Только выход | Нет | Датчики на 3,3 V до 50 mA |
Питание от USB: предел 500 mA
USB — самый простой и лучше всего защищённый способ питать Arduino. Порт USB 2.0 компьютера отдаёт не больше 500 mA; самовосстанавливающийся предохранитель Uno нагревается и размыкает цепь, когда общий ток превышает это значение, а остыв, снова замыкается. Сама плата потребляет около 45–50 mA, так что на датчики, светодиоды и модули остаётся примерно 400 mA на всех. Зарядка от телефона или пауэрбанк подключаются к тому же USB-порту; разница только в том, что на тонких длинных кабелях напряжение может проседать до 4,6 V. Пока плата питается от USB, каждый миллиампер, который берётся с пина 5V, вычитается из этого бюджета в 500 mA. Поэтому сервопривод или светодиодная лента на USB-питании выбивают предохранитель, а порт компьютера может ещё и разорвать соединение, чтобы защитить себя.
Гнездо питания и пин Vin: почему 7–12 V?
Стабилизатор 5 V на плате — линейный LDO, и для нормальной работы ему нужно на входе примерно на 1–1,2 V больше, чем на выходе. Добавь падение 0,7–1 V на защитном диоде у гнезда — и получается, что для стабильных 5 V на гнезде нужно не меньше 7 V. С источником 6 V шина 5 V проседает до 4,2–4,5 V: плата вроде бы работает, но аналоговые показания плывут, а модули ведут себя странно. На верхней границе проблема — нагрев: линейный стабилизатор превращает лишнее напряжение в тепло. Рассеиваемая мощность равна P = (Vin − 5 V) × I. Как правило, не заставляй стабилизатор рассеивать больше 1 W: при такой мощности маленький корпус SOT-223 раскаляется так, что до него не дотронуться, и в итоге сам себя отключает.
| Напряжение Vin | Нагрев при 100 mA | Нагрев при 300 mA | Вывод |
|---|---|---|---|
| 7 V | 0,2 W | 0,6 W | Самый эффективный диапазон |
| 9 V | 0,4 W | 1,2 W | На грани при 300 mA |
| 12 V | 0,7 W | 2,1 W | Только для лёгкой нагрузки |
| 20 V | 1,5 W | 4,5 W | Не рекомендуется, стабилизатор перегревается |
Пин Vin — одновременно и вход, и выход. Когда плата питается через гнездо, на Vin присутствует напряжение гнезда минус примерно 0,7–1 V, и от него можно питать небольшую нагрузку на 9–12 V. Но в цепи тока стоит защитный диод на 1 A, поэтому крупные нагрузки вроде моторов нужно питать напрямую от источника, а не от Vin. Если батарейный отсек подключается к пину Vin, защитный диод остаётся в стороне: стабилизатор по-прежнему работает, но при перепутанных плюсе и минусе плату ничто не защитит. На новых Uno R4 Minima и R4 WiFi гнездо и Vin принимают 6–24 V, а вместо линейного стабилизатора стоит импульсный (понижающий, buck) преобразователь, поэтому они не перегреваются даже при 12 V. Подробности — в статье Arduino Uno R4.
Пин 5V: когда можно обойти стабилизатор?
Пин 5V соединён напрямую с шиной питания ATmega328P и остальных микросхем платы. Питание через этот пин минует стабилизатор, диод от переполюсовки и предохранитель USB. Поэтому в официальной документации Arduino питать плату через пины 5V и 3.3V не рекомендуют. Но если сделать всё правильно, есть и плюсы: нет падения напряжения и потерь на нагрев стабилизатора, поэтому батареи служат дольше, а модулям можно отдать больше тока. Условие только одно: источник должен быть стабилизированным и измеренным. ATmega328P рассчитан на работу до 5,5 V, а 6 V — его абсолютный максимум; даже кратковременное превышение может навсегда повредить микросхему.
- Сначала измерь: прежде чем подключать источник к Arduino, проверь его выход мультиметром; должно быть от 4,8 до 5,2 V.
- Никаких батареек напрямую: свежие щелочные 4×AA дают 6,4 V и превышают предел. К пину 5V подключай только выход стабилизатора, понижающего или повышающего модуля.
- Осторожно с одновременным USB: если при питании через пин 5V подключить ещё и USB, два источника 5 V окажутся соединены через плату; безопаснее всего отключать внешнее питание на время загрузки кода.
- Добавь конденсатор: электролитический конденсатор на 100–470 µF на внешней линии 5 V рядом с платой сглаживает просадки при резких скачках тока (что такое конденсатор?).
- Готовые варианты: модули стабилизатора на 7805 (стабилизатор напряжения 7805), LM2596, настроенный на 5,0 V, или модуль питания MB102 для макетной платы — все они дают чистые 5 V.
Пин 3.3V: какой ток с него можно брать?
Пин 3.3V на Uno — не вход питания, а выход маленького стабилизатора, и его официальный предел — 50 mA. Этого хватает модулям, которые укладываются в несколько десятков миллиампер, например BME280, MPU6050 или RFID-считывателю RC522. А вот модули с большими пиковыми токами его перегружают: nRF24L01+PA+LNA с антенной при передаче берёт больше 100 mA, Wi-Fi-модуль ESP-01 потребляет пики в несколько сотен миллиампер, а SIM800L требует импульсов до 2 A. Для nRF24L01+PA+LNA и ESP-01 используй отдельный модуль стабилизатора AMS1117 3.3V, питаемый от шины 5 V. А SIM800L работает не от 3,3 V, а от 3,4–4,4 V и превышает предел AMS1117 в 1 A; питай его от одной Li-ion-ячейки или от понижающего модуля, настроенного на 4,0 V и способного отдать не меньше 2 A. На Arduino Nano и её клонах пин 3.3V часто питается изнутри USB-UART-преобразователя и ещё слабее, чем на Uno, так что и там надёжнее отдельный стабилизатор. Подробнее о питании беспроводных модулей — в руководстве по nRF24L01.

Варианты батарей: 9V, AA, 18650 и пауэрбанки
| Батарея | Напряжение | Ёмкость | Куда подключать | Время работы с Uno (~50 mA) |
|---|---|---|---|---|
| Щелочная «крона» 9V | 9 V (под нагрузкой быстро падает до 7 V) | 400–600 mAh | Гнездо питания / Vin | 6–8 ч |
| Щелочные 6×AA | 9 V | 2000–2500 mAh | Гнездо питания / Vin | ~30 ч |
| Щелочные 4×AA | 6 V (6,4 V у свежих) | 2000–2500 mAh | Не рекомендуется | Мало для гнезда, много для пина 5V |
| Щелочные 3×AA | 4,5 V | 2000–2500 mAh | Пин 5V | ~1 сутки (под конец нестабильно) |
| 1×18650 + повышающий модуль 5 V | 3,0–4,2 V → 5 V | 2000–3500 mAh | USB или пин 5V | ~30 ч (3000 mAh) |
| 2×18650 последовательно (2S) | 7,4 V (6,0–8,4 V) | 2000–3500 mAh | Гнездо питания / Vin | ~2 суток (3000 mAh) |
| Пауэрбанк на 10 000 mAh | 5 V (USB) | ~6000 mAh (при 5 V) | USB | ~5 суток (если не отключится) |
Классическую батарейку-«крону» 9V советуют чаще всего благодаря защёлкивающемуся проводу со штекером, но она же и наименее эффективна. Внутри шесть маленьких элементов, поэтому ёмкость всего около 400–600 mAh, а внутреннее сопротивление высокое: добавь к 50 mA платы Uno сервопривод или несколько светодиодов — и напряжение быстро опускается ниже 7 V, а плата начинает перезагружаться. На плате с линейным стабилизатором время работы напрямую определяет ёмкость батареи в mAh, а лишние вольты просто уходят в тепло. Поэтому отсек 6×AA, который даёт те же 9 V, работает примерно в четыре раза дольше «кроны». Единицы ёмкости подробно разобраны в статье Что означает mAh?.
Батарейки AA дешёвые и продаются везде, но важно правильно выбрать количество элементов. Самая частая ошибка — 4×AA: 6 V мало для гнезда питания, потому что после падения на диоде и стабилизаторе на шину 5 V доходит лишь около 4,2 V, а та же сборка на пине 5V со свежими батарейками даёт 6,4 V, что превышает предел. Правильные сочетания — сборка 6×AA (9 V) в гнездо питания и сборка 3×AA (4,5 V) напрямую на пин 5V. Uno на 16 MHz от 3×AA начинает работать нестабильно, когда напряжение каждого элемента опускается ниже 1,25 V, так что вся ёмкость не используется. Никель-металлгидридные (NiMH) аккумуляторы дают по 1,2 V, поэтому 4×NiMH (4,8 V) — тоже популярный вариант для пина 5V, но только что заряженные элементы в первые минуты могут давать больше 5,5 V.

Li-ion-аккумуляторы 18650 и повышающие преобразователи
18650 — литий-ионный аккумулятор диаметром 18 мм и длиной 65 мм, такие стоят в батареях ноутбуков и в пауэрбанках. Номинальное напряжение — 3,7 V; полностью заряженный показывает 4,2 V, разряженный — около 3,0 V. Реальная ёмкость — от 2000 до 3500 mAh; элементы с надписью 6800 или 9900 mAh почти всегда подделка. Одну 18650 можно использовать с Arduino двумя способами: поднять 3,7 V до 5 V повышающим преобразователем (boost; например, модулем MT3608 или готовой платой пауэрбанка под 18650) и подать на USB или пин 5V, либо соединить два элемента последовательно и подключить сборку 2S (7,4 V) к гнезду питания. Второй вариант для Uno самый сбалансированный: начиная с 8,4 V, напряжение остаётся в комфортном для стабилизатора диапазоне, пока не опустится до 3,5 V на элемент (всего 7 V). С повышающим преобразователем помни, что ток от батареи больше, чем на выходе: схема, которой нужно 200 mA при 5 V, при КПД 88 процентов берёт от элемента 3,7 V около 307 mA.

- Защита обязательна: разряд Li-ion-элемента ниже 3,0 V сокращает срок его службы и может быть опасен. Используй защищённые элементы или плату защиты (BMS).
- TP4056 — только для одного элемента: модуль TP4056 заряжает лишь одну ячейку (1S) до 4,2 V. Никогда не заряжай последовательную сборку 2S через TP4056; используй схему заряда с BMS на 2S или балансирное зарядное устройство. Подробности подключения — в статье Модуль заряда TP4056.
- Берегись короткого замыкания: при коротком замыкании 18650 может отдать десятки ампер; не оставляй оголённых проводов и поставь в линию батареи предохранитель и выключатель.
- Настройка повышающего модуля: не подключай регулируемые модули вроде MT3608 к Arduino, пока их выход не выставлен на 5,0 V.
- Не смешивай элементы: в последовательной сборке используй элементы одной марки, одной ёмкости и с одинаковым уровнем заряда.

Почему пауэрбанк отключается сам?
Пауэрбанк — это готовая сборка, внутри которой литиевые элементы, зарядка, защита и повышающий преобразователь на 5 V, так что запитать Arduino от батарей с ним проще всего: достаточно воткнуть USB-кабель. Однако большинство пауэрбанков следят за выходным током, чтобы выключаться, когда телефон зарядился, и отключают выход через 10–60 секунд после того, как ток падает ниже 50–100 mA. Nano с потреблением 20 mA или Uno с 50 mA остаются ниже этого порога, поэтому плата какое-то время работает, а потом тихо выключается. Обойти это можно двумя способами: выбрать пауэрбанк с режимом малого тока (на некоторых моделях он включается двойным нажатием кнопки) или заставить Arduino через равные промежутки времени ненадолго создавать нагрузку. Для второго способа подключи резистор 47 Ω, 1 W от шины 5V к коллектору NPN-транзистора (BC337 или 2N2222), эмиттер — к GND, а базу — к пину D7 через резистор 1 kΩ. Когда транзистор открывается, резистор берёт около 5 V / 47 Ω ≈ 106 mA, и пауэрбанк видит нагрузку. Номиналы можно проверить в калькуляторе закона Ома.
1// Powerbank uyanık tutma / powerbank keep-alive
2// D7 -> 1 kΩ -> NPN beyzi, kolektör -> 47 Ω -> 5V / D7 -> 1 kΩ -> NPN base, collector -> 47 Ω -> 5V
3const int LOAD_PIN = 7;
4const unsigned long PERIOD_MS = 8000; // her 8 saniyede bir / every 8 seconds
5const unsigned long PULSE_MS = 300; // 300 ms yük / 300 ms of load
6
7unsigned long pulseStart = 0;
8bool loadOn = false;
9
10void setup() {
11 pinMode(LOAD_PIN, OUTPUT);
12 digitalWrite(LOAD_PIN, LOW);
13}
14
15void loop() {
16 unsigned long now = millis();
17 if (!loadOn && now - pulseStart >= PERIOD_MS) {
18 digitalWrite(LOAD_PIN, HIGH); // ~106 mA çek / draw ~106 mA
19 loadOn = true;
20 pulseStart = now;
21 }
22 if (loadOn && now - pulseStart >= PULSE_MS) {
23 digitalWrite(LOAD_PIN, LOW); // yükü kapat / switch the load off
24 loadOn = false;
25 }
26 // projenin kodu burada, delay() kullanmadan / your project code here, without delay()
27}Поскольку в коде используется millis() вместо delay(), остальная часть проекта не блокируется; этот подход подробно разобран в статье millis() или delay(). Потребление 106 mA в течение 300 мс каждые 8 секунд добавляет в среднем всего около 4 mA. Если пауэрбанк всё равно отключается, сократи период до 5 секунд или удлини импульс до 500 мс: у каждой модели свой порог и своё время ожидания.
Отдельное питание для моторов и сервоприводов, общий GND
Моторы и сервоприводы — нагрузки, которые доставляют больше всего хлопот при питании Arduino от батарей. Сервопривод в момент начала движения даёт скачок тока в несколько сотен миллиампер, а DC-моторы при пуске или заторможенном вале берут в несколько раз больше обычного. Такой скачок может на мгновение обрушить шину 5 V; если напряжение падает достаточно низко, срабатывает детектор просадки питания (brown-out) ATmega328P, и плата сама перезагружается. Вдобавок помехи от щёток моторов портят показания датчиков. Правило простое: от пина 5V Arduino питай не больше одного маленького сервопривода, а все остальные моторы — от отдельного источника. Как устроены сервоприводы и DC-моторы, смотри в статьях сервопривод и управление DC-мотором через L298N.
| Нагрузка | Обычный ток | Пиковый ток | Рекомендуемое питание |
|---|---|---|---|
| Микросервопривод SG90 | 100–250 mA | 0,5 A и больше (при заторможенном вале) | Один — от 5V Arduino; больше — отдельные 5 V |
| Сервопривод MG996R | 0,5–0,9 A | До 2,5 A | Отдельные 5–6 V, не меньше 2–3 A на сервопривод |
| DC-мотор TT с редуктором | 70–250 mA | ~1 A (пуск, заторможенный вал) | L298N или L9110S + отдельная сборка на 6–9 V |
| Шаговый двигатель 28BYJ-48 | ~240 mA | ~240 mA | Отдельные 5 V на плату ULN2003 |
| Светодиод WS2812B (каждый) | ~20 mA (средняя яркость) | 60 mA (полный белый) | Отдельные 5 V, если светодиодов больше 30 |
| Погружной мини-насос | 100–200 mA | При пуске в несколько раз больше | Реле или MOSFET + отдельное питание |
- Выбери отдельный источник для моторов: 5–6 V для сервоприводов (4×AA NiMH или LM2596, настроенный на 5–6 V) и сборку под напряжение мотора для DC-моторов (например, 2S 18650).
- Плюс источника подключай только к красным проводам сервоприводов или ко входу питания драйвера моторов; к пину 5V Arduino его не подключай.
- Питай Arduino через её собственный вход: ту же сборку 2S можно подключить и к гнезду питания, лишь бы ток моторов не шёл через стабилизатор Arduino.
- Минус (GND) источника соедини с пином GND Arduino. Без общего GND управляющий сигнал работать не будет.
- Оранжевый или жёлтый сигнальный провод сервопривода подключи к одному из цифровых пинов Arduino (например, D9); библиотека Servo работает и на пинах без пометки PWM.
- Поставь электролитический конденсатор на 470–1000 µF параллельно питанию сервоприводов, ближе к ним; соблюдай полярность.
- Если используется L298N, подай питание моторов на клемму 12V; если оно выше 12 V, сними перемычку 5V-EN и питай Arduino от её собственного источника.

Как рассчитать ток и время работы?
Главный вопрос в проекте на батареях — «на сколько хватит?». Базовая формула проста: Время работы (ч) = Ёмкость батареи (mAh) × 0,85 / Средний ток (mA). Коэффициент 0,85 учитывает, что батарея никогда не отдаёт всю номинальную ёмкость: на больших токах и на холоде ёмкость падает, схема перестаёт работать раньше, чем батарея разрядится полностью, а преобразователи добавляют потери. Для батарей, напряжение которых проседает рано, например «кроны» 9V, реалистичнее брать 0,7. Если проект большую часть времени спит, сначала посчитай средний ток: Средний ток = (Активный ток × время активности + Ток во сне × время сна) / общее время. Чтобы не считать вручную, можно воспользоваться калькулятором времени работы от батареи: введи ёмкость, токи в активном режиме и во сне, интервал пробуждения — и получишь время работы в часах, днях или месяцах.
| Сценарий | Средний ток | Батарея | Примерное время работы |
|---|---|---|---|
| Uno + I2C LCD, всегда включено | ~75 mA | 2S 18650 (3000 mAh) | ~34 ч |
| Nano + датчик + поддержание пауэрбанка | ~29 mA (25 + 4) | Пауэрбанк на 10 000 mAh (~6000 mAh, 5 V) | ~7 суток |
| Модуль ESP32: просыпается на 5 с каждые 10 минут (120 mA), во сне 150 µA | ~1,15 mA | 18650 (3000 mAh) | ~3 месяца |
| Тот же код, отладочная плата с потреблением 5 mA во сне | ~6 mA | 18650 (3000 mAh) | ~18 суток |
| Pico + MicroPython, всегда включено | ~25 mA | 3×AA NiMH (2000 mAh) | ~68 ч |
Измерение всегда лучше догадок. Переключи мультиметр в режим измерения тока (mA) и включи его последовательно между батареей и схемой, чтобы увидеть реальное потребление; как это делается, показано в статье как пользоваться мультиметром. Если значение выше ожидаемого, сначала посмотри на потребление самой платы: на Uno USB-UART-преобразователь (ATmega16U2), светодиод питания и стабилизатор берут больше 30 mA, даже когда ATmega328P спит. Поэтому в проектах, которым нужна долгая работа от батарей, выбирают платы без USB-микросхемы, например Arduino Pro Mini; Pro Mini со снятыми светодиодом питания и стабилизатором в режиме сна потребляет считанные микроамперы.
Пошагово: переводим проект на батареи
- Пока проект работает от USB, измерь мультиметром его средний и пиковый ток; измерь и в момент, когда двигается сервопривод или мотор.
- Выдели нагрузки с большим током — моторы, сервоприводы, светодиодные ленты — и запланируй для них отдельное питание.
- Выбери вход платы: для Uno — сборка на 7–12 V в гнездо питания или стабилизированные 5 V на USB или пин 5V; для Pico — 1,8–5,5 V на VSYS.
- Рассчитай нужную ёмкость под желаемое время работы или воспользуйся калькулятором времени работы от батареи.
- Поставь выключатель в плюсовую линию батареи; убедись, что у Li-ion-сборок есть плата защиты (BMS).
- Загрузи код через USB, затем отключи USB и проверь работу от батарей; пока двигается сервопривод, проверь мультиметром напряжение на пине 5V.
- Следи за напряжением батареи в коде и выдавай предупреждение, когда оно опускается ниже заданного значения (код ниже).
Измерение напряжения батареи с Arduino
Вместо того чтобы гадать, когда сядет батарея, можно измерять её напряжение. Аналоговые входы Arduino читают не больше 5 V, поэтому сборку 2S, которая доходит до 8,4 V, нельзя подключить прямо к A0 — нужен делитель напряжения. Два резистора на 100 kΩ и 10 kΩ делят напряжение на 11: 8,4 V превращаются на A0 примерно в 0,76 V. Поскольку шина 5 V платы может уплывать по мере разряда батареи, точнее измерять относительно встроенного опорного напряжения 1,1 V, которое не зависит от напряжения питания. Номиналы резисторов под свою сборку можно подобрать в утилите делителя напряжения, а подробнее почитать в статье делитель напряжения.
1// 2S Li-ion paket gerilimini ölçme / measuring a 2S Li-ion pack voltage
2// Pil+ -> 100k -> A0 -> 10k -> GND / pack+ -> 100k -> A0 -> 10k -> GND
3const int BAT_PIN = A0;
4const int LED_PIN = 13; // pil zayıf uyarısı / low-battery warning
5const float R1 = 100000.0; // üst direnç / top resistor
6const float R2 = 10000.0; // alt direnç / bottom resistor
7const float VREF = 1.1; // dahili referans, multimetreyle düzelt / internal reference, calibrate with a multimeter
8const float LOW_V = 6.6; // 2S için alt sınır (3,3 V/hücre) / low limit for 2S (3.3 V per cell)
9
10void setup() {
11 Serial.begin(9600);
12 pinMode(LED_PIN, OUTPUT);
13 analogReference(INTERNAL); // 1,1 V referans (Uno/Nano) / 1.1 V reference (Uno/Nano)
14 analogRead(BAT_PIN); // ilk ölçümü at / discard the first reading
15 delay(10);
16}
17
18void loop() {
19 long sum = 0;
20 for (int i = 0; i < 16; i++) { // 16 ölçümün ortalaması / average of 16 readings
21 sum += analogRead(BAT_PIN);
22 delay(2);
23 }
24 float pinV = (sum / 16.0) * VREF / 1024.0;
25 float batV = pinV * (R1 + R2) / R2;
26
27 Serial.print("Pil / Battery: ");
28 Serial.print(batV, 2);
29 Serial.println(" V");
30
31 digitalWrite(LED_PIN, batV < LOW_V ? HIGH : LOW); // zayıfsa LED yanar / LED on when low
32 delay(2000);
33}Верх делителя подключи к плюсу батареи после выключателя, чтобы делитель не разряжал батарею, когда устройство выключено. Встроенное опорное напряжение 1,1 V может отличаться от микросхемы к микросхеме примерно на ±10%: сравни напряжение батареи, измеренное мультиметром, с показаниями в мониторе порта и поправь VREF (например, на 1.08). Делитель постоянно берёт около 76 µA, что практически не влияет на время работы. Код написан для Uno и Nano; на Mega опорное напряжение называется INTERNAL1V1. Порог 6,6 V соответствует 3,3 V на элемент: в этот момент элементы почти пусты, а разряд ниже 3,0 V на элемент их повреждает. Если сборка питает гнездо питания, шина 5 V начинает проседать примерно при 7 V, так что значение LOW_V, равное 7.0, тоже имеет смысл.
Питание ESP32 от батарей
Отладочные платы ESP32 работают от 3,3 V, и запитать их можно тремя способами: через USB-порт, через пин 5V (на некоторых платах VIN) или напрямую через пин 3V3. Espressif прямо указывает, что эти варианты нельзя использовать одновременно и что выбрать нужно только один. Напряжение на пине 5V проходит через LDO-стабилизатор платы на 3,3 V (на большинстве клонов это AMS1117), а пин 3V3 принимает только стабилизированные 3,0–3,6 V. При передаче по Wi-Fi ESP32 берёт пики до 240 mA, поэтому ей нужен источник, способный отдать не меньше 500 mA; иначе она перезагружается с ошибкой «Brownout detector was triggered» (сработал детектор просадки питания; подробности — в статье ошибка brownout). Не подключай одну 18650 напрямую к пину 3V3: заряженная, она даёт 4,2 V и превышает предел. Пин 5V тоже не лучший вариант: AMS1117 нужно падение около 1,1 V, поэтому по мере разряда элемента выход опускается ниже 3,3 V. Правильные варианты — 18650 с повышающим модулем на 5 V на пин 5V, стабилизатор 3,3 V с малым падением напряжения, способный отдать не меньше 500 mA, или плата ESP32 со встроенной зарядкой Li-ion. Но по-настоящему время работы определяет то, что ESP32 большую часть времени проводит в глубоком сне: в этом режиме сама микросхема берёт около 10 µA, однако USB-UART-преобразователь, светодиод и стабилизатор на отладочных платах могут поднять потребление до миллиампер. Отсюда и разница между 3 месяцами и 18 сутками в таблице выше; подробности — в статье глубокий сон ESP32.
1// ESP32: 18650 gerilimini ölç, sonra derin uykuya geç / measure the 18650, then deep sleep
2// Pil+ -> 100k -> GPIO34 -> 100k -> GND / cell+ -> 100k -> GPIO34 -> 100k -> GND
3const int BAT_PIN = 34; // yalnız giriş, ADC1 / input-only, ADC1
4const uint64_t SLEEP_US = 60ULL * 1000000ULL; // 60 saniye / 60 seconds
5
6void setup() {
7 Serial.begin(115200);
8 uint32_t mv = 0;
9 for (int i = 0; i < 16; i++) {
10 mv += analogReadMilliVolts(BAT_PIN); // kalibre milivolt / calibrated millivolts
11 }
12 float batV = (mv / 16.0) * 2.0 / 1000.0; // bölücü yarıya indirir / the divider halves it
13 Serial.printf("Pil / Battery: %.2f V\n", batV);
14
15 if (batV < 3.3) {
16 Serial.println("Pil zayif / Battery low"); // işi atla, pili koru / skip the work, protect the cell
17 } else {
18 // sensörü oku, Wi-Fi ile gönder / read the sensor, send over Wi-Fi
19 }
20
21 esp_sleep_enable_timer_wakeup(SLEEP_US); // 60 sn sonra uyan / wake up after 60 s
22 Serial.flush();
23 esp_deep_sleep_start(); // loop() hiç çalışmaz / loop() never runs
24}
25
26void loop() {
27}При каждом пробуждении код измеряет напряжение батареи, выполняет свою работу и снова засыпает по 60-секундному таймеру; поскольку ESP32 после глубокого сна запускает программу с начала, loop() не выполняется никогда. GPIO 34 — пин ADC1, работающий только на вход, и он работает при включённом Wi-Fi, а пины ADC2 вместе с Wi-Fi использовать нельзя. analogReadMilliVolts() использует заводскую калибровку микросхемы и сразу возвращает милливольты. Делитель 100 kΩ + 100 kΩ понижает 4,2 V до 2,1 V и берёт всего 21 µA; если показания шумят, поставь конденсатор 100 nF между GPIO 34 и GND. Для первых шагов с ESP32 хорошо начать со статьи Что такое ESP32?.
Питание Raspberry Pi Pico от батарей
Raspberry Pi Pico — одна из самых простых плат для работы от батарей: вместо линейного стабилизатора у неё импульсный стабилизатор buck-boost (понижающе-повышающий). Подай на пин VSYS что угодно от 1,8 до 5,5 V, и плата эффективно преобразует это в 3,3 V; она продолжает работать, даже когда вход опускается ниже 3,3 V. Значит, 2 или 3 элемента AA, одну 18650 или однобаночный LiPo можно подключить прямо между VSYS и GND без дополнительных модулей. Следить нужно только за одновременным использованием с USB: 5 V от USB (VBUS) подключены к VSYS через диод Шоттки, поэтому если батарея подключена прямо к VSYS и при этом воткнут USB, USB пытается гнать ток в батарею. Решение, которое рекомендует Raspberry Pi, — подключить батарею к VSYS через собственный диод Шоттки (например, 1N5817). Пин 3V3 отдаёт внешним схемам не больше примерно 300 mA, а если притянуть пин 3V3_EN к GND, стабилизатор выключается, а с ним и вся плата. Общий обзор платы — в статье Что такое Raspberry Pi Pico?.
1from machine import ADC, Pin
2import time
3
4vsys = ADC(29) # VSYS/3 ölçer (Pico) / measures VSYS/3 (Pico)
5usb = Pin(24, Pin.IN) # USB takılıysa 1 / 1 when USB is connected
6CONV = 3.3 / 65535 # ham değeri volta çevir / raw value to volts
7
8while True:
9 total = 0
10 for _ in range(16): # 16 ölçümün ortalaması / average of 16 readings
11 total += vsys.read_u16()
12 volts = total / 16 * CONV * 3 # kart içindeki bölücü 3'e böler / on-board divider divides by 3
13 source = "USB" if usb.value() else "Pil / Battery"
14 print("{}: VSYS = {:.2f} V".format(source, volts))
15 if not usb.value() and volts < 3.3: # 3xAA ya da 18650 için alt sınır / low limit for 3xAA or a 18650
16 print("Pil zayif! / Battery low!")
17 time.sleep(5)На Pico пин GP29 через делитель на плате измеряет треть напряжения VSYS, а GP24 читает 1, когда подключён USB. Так что без лишних деталей можно узнать и напряжение батареи, и то, от чего работает плата — от USB или от батареи. Если батарея подключена через диод Шоттки, как рекомендуется, VSYS показывает примерно на 0,2–0,3 V меньше напряжения батареи. Расчёт предполагает, что опорное напряжение АЦП равно 3,3 V; благодаря стабилизатору buck-boost оно остаётся стабильным, даже когда батарея слабеет. На Pico W пины GP29 и GP24 общие с беспроводной микросхемой, поэтому этот код там в исходном виде не заработает; там состояние USB читается через Pin("WL_GPIO2"). Чтобы продлить время работы от батареи, между измерениями используй machine.lightsleep() вместо time.sleep().
Идеи проектов на батареях
- Машинка с управлением по Bluetooth: питай и моторы, и Arduino от сборки 2S 18650; подробности — в статье как собрать машинку на Arduino.
- Робот, объезжающий препятствия: чтобы избежать перезагрузок, питай моторы через L298N по отдельной линии, а Arduino — через гнездо питания (робот, объезжающий препятствия).
- Вольтметр с индикатором заряда: выводи значение, измеренное через делитель напряжения, на LCD (как сделать вольтметр на Arduino).
- Садовая станция влажности: держи ESP32 в глубоком сне, раз в час измеряй влажность почвы — и она месяцами проработает от одной 18650.
- Портативный GPS-логгер: записывай маршрут похода с GPS NEO-6M и пауэрбанком.
- Ночник на Pico с питанием от батарей: Pico, питаемая от 3×AA через VSYS, включает светодиоды, когда в комнате темнеет.
Частые ошибки и как их исправить
| Симптом | Вероятная причина | Решение |
|---|---|---|
| Плата перезагружается, когда двигается сервопривод | Ток сервопривода обрушивает шину 5 V | Питай сервопривод отдельно, добавь общий GND и конденсатор на 470–1000 µF |
| «Крона» 9V садится за несколько часов | Ёмкость «кроны» 9V всего 400–600 mAh | Используй сборку 6×AA или 2S 18650 |
| Пауэрбанк выключается через 10–60 секунд | Ток ниже порога автоотключения | Режим малого тока или поддерживающий импульс |
| Стабилизатор сильно греется | Высокое входное напряжение и большой ток | Снизь вход до 7–9 V или получай 5 V понижающим модулем |
| Аналоговые показания плывут при питании от батарей | Вход ниже 7 V, шина 5 V проседает | Подними напряжение сборки или используй встроенное опорное 1,1 V |
| Плата греется или не включается | Переполюсовка или больше 5,5 V на пине 5V | Отключи источник, проверь полярность и напряжение мультиметром |
| ESP32 перезагружается при подключении к Wi-Fi | Источник не выдаёт пиковый ток (brownout) | Короткие толстые провода, конденсатор на 470 µF, источник помощнее |
| На Pico батарея нагревается при подключённом USB | USB гонит ток в батарею через VSYS | Добавь диод Шоттки в линию батареи |
Хорошее питание — половина надёжной работы проекта: выбери правильный вход, питай моторы отдельно, соедини земли и с самого начала рассчитай время работы от батарей. Когда захочется собрать проект на батареях, загляни в приложение BlueGrays: там есть проекты «Машинка на L298N с управлением по Bluetooth», «Робот, объезжающий препятствия», «Умная станция полива», «Цифровой вольтметр с LCD» и «Экономия батареи с глубоким сном ESP32»; каждый пошагово проводит через схему, подключение и код.
Частые вопросы
Может ли Arduino работать от батарейки 9V?
Да, «крону» 9V можно подключить к гнезду питания или пину Vin Arduino Uno, и плата спокойно работает в диапазоне 7–12 V. Но щелочная «крона» вмещает всего 400–600 mAh, поэтому одна она питает Uno примерно 6–8 часов, а с сервоприводом или мотором — гораздо меньше. Для долгой работы лучше подходят 6×AA или два последовательно соединённых элемента 18650.
Можно ли питать Arduino от пауэрбанка?
Да: достаточно подключить пауэрбанк к USB-порту Arduino кабелем USB, и плату защищает её предохранитель USB. Подвох в том, что многие пауэрбанки не замечают нагрузку меньше 50–100 mA и вскоре отключают выход. Можно выбрать модель с режимом малого тока или добавить поддерживающую схему, которая заставляет Arduino каждые несколько секунд ненадолго создавать нагрузку.
Можно ли питать Arduino от адаптера 12V?
Да, 12 V — верхняя граница рекомендуемого для Uno диапазона 7–12 V, и через гнездо питания это безопасно. Но линейный стабилизатор на плате превращает лишние 6–7 V в тепло, поэтому он перегреется, если брать с шины 5 V больше примерно 150 mA. Если нужен больший ток, используй адаптер на 9 V или получай 5 V отдельным понижающим модулем; Uno R4 спокойно работает до 24 V.
Можно ли питать Arduino через пин 5V?
Можно, но пин 5V обходит стабилизатор платы, диод от переполюсовки и предохранитель USB, так что никакой защиты нет. Подключай только стабилизированный источник, измеренный мультиметром и стабильно дающий от 4,8 до 5,2 V (например, LM2596 или повышающий модуль, настроенный на 5,0 V). Источник выше 5,5 V или подключённый наоборот может мгновенно уничтожить ATmega328P.
Может ли Arduino работать от Li-ion-аккумулятора 3,7 V?
Напрямую от 3,7 V Uno надёжно не работает: для гнезда питания это слишком мало, для пина 5V — недостаточно. Нужно либо поднять напряжение одного элемента до 5 V повышающим преобразователем и подать на USB или пин 5V, либо соединить два элемента последовательно и подключить сборку на 7,4 V к гнезду питания. А вот Pro Mini на 3,3 V (на пин RAW) и Raspberry Pi Pico (на VSYS) спокойно работают прямо от одного элемента, как и ESP32 со стабилизатором 3,3 V с малым падением напряжения.
Сколько Arduino проработает от батарей?
Время работы находят делением ёмкости на средний ток: ёмкость (mAh) × 0,85 / средний ток (mA). Например, Uno с потреблением 50 mA проработает от сборки 2S 18650 на 3000 mAh около 50 часов. ESP32 с глубоким сном на той же ёмкости продержится месяцами; калькулятор времени работы батареи в BlueGrays учитывает и ток во сне.
Что собрать после прочтения
Все проекты
Цифровой вольтметр с LCD-дисплеем
Узнай, какое напряжение даёт батарейка или блок питания, с помощью измерителя, собранного своими руками. Делитель из двух резисторов понижает высокое напряжение до уровня, который может прочитать плат

Работа с сервоприводом
Рычаг маленького сервопривода по очереди поворачивается в три положения: до упора в начало, ровно на середину и до упора в конец, задерживаясь на каждой остановке на две секунды. Arduino сообщает мото

Машинка на L298N с управлением по Bluetooth
Преврати телефон в пульт и управляй своей машинкой-роботом. Arduino получает команды из приложения-пульта на телефоне через Bluetooth-модуль и вращает колёса через драйвер моторов; машинка едет вперёд

Робот, объезжающий препятствия
Как насчёт того, чтобы собрать умную машину, которая сама находит дорогу? Робот, объезжающий препятствия, постоянно осматривает всё вокруг благодаря ультразвуковому датчику спереди. Встретив препятств

Умная станция полива
Садовник, который сам поливает растения, чтобы они не засохли, пока ты в отпуске. Датчик влажности почвы измеряет, насколько влажная земля; когда она сохнет, Arduino на несколько секунд включает водян

Глубокий сон ESP32: экономия батареи (OLED + счётчик в RTC RAM)
Режим глубокого сна (Deep Sleep) у ESP32 снижает потребление до ~10 µA, выключая процессор и большую часть периферии, — это важно для IoT-устройств на батарейках. В этом проекте используются три источника пробуждения: таймер (15 секунд), внешний пин (EXT0 — кнопка GPIO 33) и касание (T0/GPIO 4). Переменные с RTC_DATA_ATTR сохраняются во время глубокого сна — счётчики загрузок, пробуждений по таймеру и по кнопке ведутся непрерывно.

Сервопривод на ESP32 (управление потенциометром)
В этом проекте сервопривод SG90 управляется потенциометром. Угол сервопривода задаётся сопоставлением аналогового значения потенциометра с диапазоном 0–180 градусов. Библиотека ESP32Servo формирует сигналы сервопривода на подходящих выходных пинах GPIO у ESP32; этот проект использует GPIO 18. Это базовый способ управления для роборук, подвесов камер и механизмов автоматических дверей.
Другие статьи
Приложение BlueGrays
Собери эту схему шаг за шагом в телефоне
Схема подключения, код и список деталей на одном экране. 200+ проектов на Arduino, ESP32 и Pico готовы к сборке.
Наведи камеру телефона
Наведи камеру на код — откроется магазин приложений на телефоне.
или открыть магазин

